closes #707, closes #686

This commit is contained in:
Baris Soner Usakli
2013-12-31 17:01:51 -05:00
parent 9d452241ad
commit d43f3cebc6
14 changed files with 116 additions and 29 deletions

View File

@@ -20,6 +20,7 @@ var request = require('request'),
try {
var response = JSON.parse(body);
if(response.success) {
callback(null, response.data);
} else {

View File

@@ -212,6 +212,12 @@ var async = require('async'),
}, {
field: 'allowRegistration',
value: 1
}, {
field: 'allowFileUploads',
value: 0,
}, {
filed: 'maximumFileSize',
value: 2048
}, {
field: 'minimumTitleLength',
value: 3

View File

@@ -12,6 +12,8 @@ var db = require('./database'),
meta = require('./meta'),
async = require('async'),
path = require('path'),
fs = require('fs'),
nconf = require('nconf'),
validator = require('validator'),
winston = require('winston'),
@@ -358,6 +360,10 @@ var db = require('./database'),
Posts.uploadPostImage = function(image, callback) {
if(!meta.config.imgurClientID) {
return callback('imgurClientID not set', null);
}
if(!image) {
return callback('invalid image', null);
}
@@ -374,6 +380,37 @@ var db = require('./database'),
});
}
Posts.uploadPostFile = function(file, callback) {
if(!meta.config.allowFileUploads) {
return callback('File uploads are not allowed');
}
if(!file) {
return callback('invalid file');
}
var buffer = new Buffer(file.data, 'base64');
if(buffer.length > parseInt(meta.config.maximumFileSize, 10) * 1024) {
return callback('File too big');
}
var filename = 'upload-' + utils.generateUUID() + path.extname(file.name);
var uploadPath = path.join(nconf.get('base_dir'), nconf.get('upload_path'), filename);
fs.writeFile(uploadPath, buffer, function (err) {
if(err) {
callback(err.message, null);
} else {
callback(null, {
url: nconf.get('upload_url') + filename,
name: file.name
});
}
});
}
Posts.getPostsByUid = function(uid, start, end, callback) {
user.getPostIds(uid, start, end, function(err, pids) {
if(err) {

View File

@@ -40,6 +40,8 @@ var path = require('path'),
config.useOutgoingLinksPage = meta.config.useOutgoingLinksPage;
config.allowGuestPosting = meta.config.allowGuestPosting;
config.allowRegistration = meta.config.allowRegistration || '1';
config.allowFileUploads = meta.config.allowFileUploads;
config.maximumFileSize = meta.config.maximumFileSize;
config.emailSetup = !!meta.config['email:from'];
res.json(200, config);

View File

@@ -530,6 +530,11 @@ var fs = require('fs'),
user.getUserData(uid, function (err, data) {
if (data) {
data.joindate = new Date(parseInt(data.joindate, 10)).toISOString();
if(data.lastonline) {
data.lastonline = new Date(parseInt(data.lastonline, 10)).toISOString();
} else {
data.lastonline = data.joindate;
}
if (!data.birthday) {
data.age = '';

View File

@@ -14,7 +14,7 @@ var db = require('./database'),
Upgrade.check = function(callback) {
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema
var latestSchema = new Date(2013, 11, 31).getTime();
var latestSchema = new Date(2014, 0, 1).getTime();
db.get('schemaDate', function(err, value) {
if (parseInt(value, 10) >= latestSchema) {

View File

@@ -183,6 +183,13 @@ var path = require('path'),
// Authentication Routes
auth.initialize(app);
app.use(function(req, res, next) {
if(req.user) {
user.setUserField(req.user.uid, 'lastonline', Date.now());
}
next();
})
next();
},
function(next) {

View File

@@ -638,6 +638,10 @@ websockets.init = function(io) {
posts.uploadPostImage(data, callback);
});
socket.on('api:posts.uploadFile', function(data, callback) {
posts.uploadPostFile(data, callback);
});
socket.on('api:posts.getRawPost', function(data, callback) {
posts.getPostField(data.pid, 'content', function(err, raw) {
callback({