more work

v1.18.x
Baris Usakli 11 years ago
parent 636551d2e9
commit c9308efbec

@ -74,25 +74,26 @@
} }
meta.configs.init(function () { meta.configs.init(function () {
// Initial setup for Redis & Reds
var reds = require('reds'),
RDB = require('./src/redis.js');
reds.createClient = function () { //
return reds.client || (reds.client = RDB); // TODO : figure out reds search after dbal is complete
}; //
//var reds = require('reds'),
var templates = require('./public/src/templates.js'), // db = require('./src/database');
translator = require('./public/src/translator.js'), /*reds.createClient = function () {
webserver = require('./src/webserver.js'), return reds.client || (reds.client = db);
};*/
var templates = require('./public/src/templates'),
translator = require('./public/src/translator'),
webserver = require('./src/webserver'),
SocketIO = require('socket.io').listen(global.server, { log: false, transports: ['websocket', 'xhr-polling', 'jsonp-polling', 'flashsocket'], 'browser client minification': true}), SocketIO = require('socket.io').listen(global.server, { log: false, transports: ['websocket', 'xhr-polling', 'jsonp-polling', 'flashsocket'], 'browser client minification': true}),
websockets = require('./src/websockets.js'), websockets = require('./src/websockets'),
posts = require('./src/posts.js'),
plugins = require('./src/plugins'), // Don't remove this - plugins initializes itself plugins = require('./src/plugins'), // Don't remove this - plugins initializes itself
Notifications = require('./src/notifications'), notifications = require('./src/notifications'),
Upgrade = require('./src/upgrade'); upgrade = require('./src/upgrade');
Upgrade.check(function(schema_ok) { upgrade.check(function(schema_ok) {
if (schema_ok || nconf.get('check-schema') === false) { if (schema_ok || nconf.get('check-schema') === false) {
websockets.init(SocketIO); websockets.init(SocketIO);
@ -117,7 +118,7 @@
templates.ready(webserver.init); templates.ready(webserver.init);
}); });
Notifications.init(); notifications.init();
} else { } else {
winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:'); winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:');
winston.warn(' node app --upgrade'); winston.warn(' node app --upgrade');

@ -111,10 +111,13 @@
redisClient.hdel(key, field, callback); redisClient.hdel(key, field, callback);
} }
module.incrObjectField = function(key, field, value, callback) { module.incrObjectField = function(key, field, callback) {
redisClient.hincrby(key, field, value, callback); redisClient.hincrby(key, field, 1, callback);
} }
module.incrObjectFieldBy = function(key, field, value, callback) {
redisClient.hincrby(key, field, value, callback);
}
module.setAdd = function(key, value, callback) { module.setAdd = function(key, value, callback) {
redisClient.sadd(key, value, callback); redisClient.sadd(key, value, callback);
@ -132,6 +135,16 @@
redisClient.smembers(key, callback); redisClient.smembers(key, callback);
} }
module.sortedSetAdd = function(key, score, value, callback) {
redisClient.zadd(key, score, value, callback);
}
module.sortedSetRemove = function(key, value, callback) {
redisClient.zrem(key, value, callback);
}
}(exports)); }(exports));

@ -10,7 +10,7 @@ var bcrypt = require('bcrypt'),
utils = require('./../public/src/utils'), utils = require('./../public/src/utils'),
plugins = require('./plugins'), plugins = require('./plugins'),
RDB = require('./redis'), db = require('./database'),
meta = require('./meta'), meta = require('./meta'),
emailjsServer = emailjs.server.connect(meta.config['email:smtp:host'] || '127.0.0.1'), emailjsServer = emailjs.server.connect(meta.config['email:smtp:host'] || '127.0.0.1'),
Groups = require('./groups'), Groups = require('./groups'),
@ -65,16 +65,18 @@ var bcrypt = require('bcrypt'),
} }
], function(err, results) { ], function(err, results) {
if (err) { if (err) {
return callback(err, null); return callback(err);
} }
RDB.incr('global:next_user_id', function(err, uid) { db.incrObjectField('global', 'nextUserId', function(err, uid) {
RDB.handle(err); if(err) {
return callback(err);
}
var gravatar = User.createGravatarURLFromEmail(email); var gravatar = User.createGravatarURLFromEmail(email);
var timestamp = Date.now(); var timestamp = Date.now();
RDB.hmset('user:' + uid, { db.setObject('user:' + uid, {
'uid': uid, 'uid': uid,
'username': username, 'username': username,
'userslug': userslug, 'userslug': userslug,
@ -96,20 +98,20 @@ var bcrypt = require('bcrypt'),
'showemail': 0 'showemail': 0
}); });
RDB.hset('username:uid', username, uid); db.setObjectField('username:uid', username, uid);
RDB.hset('userslug:uid', userslug, uid); db.setObjectField('userslug:uid', userslug, uid);
if (email !== undefined) { if (email !== undefined) {
RDB.hset('email:uid', email, uid); db.setObjectField('email:uid', email, uid);
User.sendConfirmationEmail(email); User.sendConfirmationEmail(email);
} }
plugins.fireHook('action:user.create', {uid: uid, username: username, email: email, picture: gravatar, timestamp: timestamp}); plugins.fireHook('action:user.create', {uid: uid, username: username, email: email, picture: gravatar, timestamp: timestamp});
RDB.incr('usercount'); db.incrObjectField('global', 'usercount');
RDB.zadd('users:joindate', timestamp, uid); db.sortedSetAdd('users:joindate', timestamp, uid);
RDB.zadd('users:postcount', 0, uid); db.sortedSetAdd('users:postcount', 0, uid);
RDB.zadd('users:reputation', 0, uid); db.sortedSetAdd('users:reputation', 0, uid);
userSearch.index(username, uid); userSearch.index(username, uid);
@ -134,11 +136,11 @@ var bcrypt = require('bcrypt'),
}; };
User.getUserField = function(uid, field, callback) { User.getUserField = function(uid, field, callback) {
RDB.hget('user:' + uid, field, callback); db.getObjectField('user:' + uid, field, callback);
}; };
User.getUserFields = function(uid, fields, callback) { User.getUserFields = function(uid, fields, callback) {
RDB.hmgetObject('user:' + uid, fields, callback); db.getObjectFields('user:' + uid, fields, callback);
}; };
User.getMultipleUserFields = function(uids, fields, callback) { User.getMultipleUserFields = function(uids, fields, callback) {
@ -168,7 +170,10 @@ var bcrypt = require('bcrypt'),
}; };
User.getUserData = function(uid, callback) { User.getUserData = function(uid, callback) {
RDB.hgetall('user:' + uid, function(err, data) { db.getObject('user:' + uid, function(err, data) {
if(err) {
return callback(err);
}
if (data && data.password) { if (data && data.password) {
delete data.password; delete data.password;
@ -253,8 +258,8 @@ var bcrypt = require('bcrypt'),
return next(err); return next(err);
} }
RDB.hdel('email:uid', userData.email); db.deleteObjectField('email:uid', userData.email);
RDB.hset('email:uid', data.email, uid); db.setObjectField('email:uid', data.email, uid);
User.setUserField(uid, field, data[field]); User.setUserField(uid, field, data[field]);
if (userData.picture !== userData.uploadedpicture) { if (userData.picture !== userData.uploadedpicture) {
returnData.picture = gravatarpicture; returnData.picture = gravatarpicture;

@ -14,7 +14,7 @@ var path = require('path'),
pkg = require('../package.json'), pkg = require('../package.json'),
utils = require('../public/src/utils'), utils = require('../public/src/utils'),
RDB = require('./redis'), db = require('./database'),
user = require('./user'), user = require('./user'),
categories = require('./categories'), categories = require('./categories'),
posts = require('./posts'), posts = require('./posts'),
@ -140,7 +140,9 @@ var path = require('path'),
})); }));
app.use(express.bodyParser()); // Puts POST vars in request.body app.use(express.bodyParser()); // Puts POST vars in request.body
app.use(express.cookieParser()); // If you want to parse cookies (res.cookies) app.use(express.cookieParser()); // If you want to parse cookies (res.cookies)
app.use(express.session({
// TODO : this uses redis
/*app.use(express.session({
store: new RedisStore({ store: new RedisStore({
client: RDB, client: RDB,
ttl: 60 * 60 * 24 * 30 ttl: 60 * 60 * 24 * 30
@ -150,7 +152,16 @@ var path = require('path'),
cookie: { cookie: {
maxAge: 60 * 60 * 24 * 30 * 1000 // 30 days maxAge: 60 * 60 * 24 * 30 * 1000 // 30 days
} }
}));*/
app.use(express.cookieSession({
secret: nconf.get('secret'),
key: 'express.sid',
cookie: {
maxAge: 60 * 60 * 24 * 30 * 1000 // 30 days
}
})); }));
app.use(express.csrf()); app.use(express.csrf());
// Local vars, other assorted setup // Local vars, other assorted setup
@ -172,33 +183,33 @@ var path = require('path'),
function(next) { function(next) {
async.parallel([ async.parallel([
function(next) { function(next) {
// Theme configuration
RDB.hmget('config', 'theme:type', 'theme:id', 'theme:staticDir', 'theme:templates', function(err, themeData) { db.getObjectFields('config', ['theme:type', 'theme:id', 'theme:staticDir', 'theme:templates'], function(err, themeData) {
var themeId = (themeData[1] || 'nodebb-theme-vanilla'); var themeId = (themeData['theme:id'] || 'nodebb-theme-vanilla');
// Detect if a theme has been selected, and handle appropriately // Detect if a theme has been selected, and handle appropriately
if (!themeData[0] || themeData[0] === 'local') { if (!themeData['theme:type'] || themeData['theme:type'] === 'local') {
// Local theme // Local theme
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
winston.info('[themes] Using theme ' + themeId); winston.info('[themes] Using theme ' + themeId);
} }
// Theme's static directory // Theme's static directory
if (themeData[2]) { if (themeData['theme:staticDir']) {
app.use('/css/assets', express.static(path.join(__dirname, '../node_modules', themeData[1], themeData[2]), { app.use('/css/assets', express.static(path.join(__dirname, '../node_modules', themeData['theme:id'], themeData['theme:staticDir']), {
maxAge: app.enabled('cache') ? 5184000000 : 0 maxAge: app.enabled('cache') ? 5184000000 : 0
})); }));
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
winston.info('Static directory routed for theme: ' + themeData[1]); winston.info('Static directory routed for theme: ' + themeData['theme:id']);
} }
} }
if (themeData[3]) { if (themeData['theme:templates']) {
app.use('/templates', express.static(path.join(__dirname, '../node_modules', themeData[1], themeData[3]), { app.use('/templates', express.static(path.join(__dirname, '../node_modules', themeData['theme:id'], themeData['theme:templates']), {
maxAge: app.enabled('cache') ? 5184000000 : 0 maxAge: app.enabled('cache') ? 5184000000 : 0
})); }));
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
winston.info('Custom templates directory routed for theme: ' + themeData[1]); winston.info('Custom templates directory routed for theme: ' + themeData['theme:id']);
} }
} }

Loading…
Cancel
Save