mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-19 06:50:21 +01:00
Compare commits
36 Commits
context-de
...
v0.7.x
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6856a5e66b | ||
|
|
5705012bcd | ||
|
|
6e7a817fa4 | ||
|
|
f7648c2ed7 | ||
|
|
bb25e2690e | ||
|
|
fe11e55c16 | ||
|
|
4de7529241 | ||
|
|
944fc6e2f8 | ||
|
|
ffa0544036 | ||
|
|
2a99721d01 | ||
|
|
6fff745c5c | ||
|
|
c93781c38a | ||
|
|
4bcf7792f8 | ||
|
|
93fb36b99d | ||
|
|
56b79a974a | ||
|
|
418b9bf02f | ||
|
|
258d562c3e | ||
|
|
f1b097ded6 | ||
|
|
ef750e2ebd | ||
|
|
67d9209b99 | ||
|
|
98c1390e7f | ||
|
|
a3d17d14fd | ||
|
|
307eb19d01 | ||
|
|
f475d6e3b8 | ||
|
|
b4465b7df1 | ||
|
|
aa001b5926 | ||
|
|
5c253c1efa | ||
|
|
59b14669c4 | ||
|
|
3e386e7668 | ||
|
|
43b90c5679 | ||
|
|
58b8c32fe9 | ||
|
|
1b88a6a523 | ||
|
|
8ecd90729e | ||
|
|
a5b8a656e9 | ||
|
|
2cae7995e7 | ||
|
|
19ca796915 |
18
nodebb
18
nodebb
@@ -5,8 +5,7 @@ var colors = require('colors'),
|
|||||||
argv = require('minimist')(process.argv.slice(2)),
|
argv = require('minimist')(process.argv.slice(2)),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
async = require('async'),
|
async = require('async'),
|
||||||
touch = require('touch'),
|
touch = require('touch');
|
||||||
npm = require('npm');
|
|
||||||
|
|
||||||
var getRunningPid = function(callback) {
|
var getRunningPid = function(callback) {
|
||||||
fs.readFile(__dirname + '/pidfile', {
|
fs.readFile(__dirname + '/pidfile', {
|
||||||
@@ -119,15 +118,12 @@ switch(process.argv[2]) {
|
|||||||
case 'upgrade':
|
case 'upgrade':
|
||||||
async.series([
|
async.series([
|
||||||
function(next) {
|
function(next) {
|
||||||
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date\n'.yellow);
|
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date... '.yellow);
|
||||||
npm.load({
|
require('child_process').execFile('/usr/bin/env', ['npm', 'i', '--production'], next);
|
||||||
loglevel: 'silent'
|
|
||||||
}, function() {
|
|
||||||
npm.commands.install(next);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
function(next) {
|
function(next) {
|
||||||
process.stdout.write('2. '.bold + 'Updating NodeBB data store schema\n'.yellow);
|
process.stdout.write('OK\n'.green);
|
||||||
|
process.stdout.write('2. '.bold + 'Updating NodeBB data store schema.\n'.yellow);
|
||||||
var upgradeProc = cproc.fork('app.js', ['--upgrade'], {
|
var upgradeProc = cproc.fork('app.js', ['--upgrade'], {
|
||||||
cwd: __dirname,
|
cwd: __dirname,
|
||||||
silent: false
|
silent: false
|
||||||
@@ -136,7 +132,7 @@ switch(process.argv[2]) {
|
|||||||
upgradeProc.on('close', next)
|
upgradeProc.on('close', next)
|
||||||
},
|
},
|
||||||
function(next) {
|
function(next) {
|
||||||
process.stdout.write('3. '.bold + 'Storing upgrade date in "package.json"\n'.yellow);
|
process.stdout.write('3. '.bold + 'Storing upgrade date in "package.json"... '.yellow);
|
||||||
touch(__dirname + '/package.json', {}, next);
|
touch(__dirname + '/package.json', {}, next);
|
||||||
}
|
}
|
||||||
], function(err) {
|
], function(err) {
|
||||||
@@ -145,6 +141,8 @@ switch(process.argv[2]) {
|
|||||||
} else {
|
} else {
|
||||||
var message = 'NodeBB Upgrade Complete!',
|
var message = 'NodeBB Upgrade Complete!',
|
||||||
spaces = new Array(Math.floor(process.stdout.columns / 2) - (message.length / 2) + 1).join(' ');
|
spaces = new Array(Math.floor(process.stdout.columns / 2) - (message.length / 2) + 1).join(' ');
|
||||||
|
|
||||||
|
process.stdout.write('OK\n'.green);
|
||||||
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
|
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
3607
npm-shrinkwrap.json
generated
Normal file
3607
npm-shrinkwrap.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
|||||||
"name": "nodebb",
|
"name": "nodebb",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"description": "NodeBB Forum",
|
"description": "NodeBB Forum",
|
||||||
"version": "0.7.3-dev",
|
"version": "0.7.3",
|
||||||
"homepage": "http://www.nodebb.org",
|
"homepage": "http://www.nodebb.org",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
"header.tags": "话题",
|
"header.tags": "话题",
|
||||||
"header.popular": "热门",
|
"header.popular": "热门",
|
||||||
"header.users": "会员",
|
"header.users": "会员",
|
||||||
"header.groups": "小组",
|
"header.groups": "群组",
|
||||||
"header.chats": "聊天",
|
"header.chats": "聊天",
|
||||||
"header.notifications": "通知",
|
"header.notifications": "通知",
|
||||||
"header.search": "搜索",
|
"header.search": "搜索",
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
"watched": "已订阅",
|
"watched": "已订阅",
|
||||||
"followers": "粉丝",
|
"followers": "粉丝",
|
||||||
"following": "关注",
|
"following": "关注",
|
||||||
"aboutme": "About me",
|
"aboutme": "关于我",
|
||||||
"signature": "签名档",
|
"signature": "签名档",
|
||||||
"gravatar": "头像",
|
"gravatar": "头像",
|
||||||
"birthday": "生日",
|
"birthday": "生日",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
var languages = {},
|
var languages = {},
|
||||||
regexes = {
|
regexes = {
|
||||||
match: /\[\[\w+:[^\]]+?\]\]/g,
|
match: /\[\[\w+:.*?\]\]/g,
|
||||||
split: /[,][\s]*/,
|
split: /[,][\s]*/,
|
||||||
replace: /\]+$/
|
replace: /\]+$/
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var meta = require('./../meta'),
|
var async = require('async'),
|
||||||
user = require('./../user'),
|
|
||||||
plugins = require('./../plugins'),
|
|
||||||
widgets = require('../widgets'),
|
|
||||||
|
|
||||||
validator = require('validator'),
|
validator = require('validator'),
|
||||||
nconf = require('nconf');
|
nconf = require('nconf'),
|
||||||
|
|
||||||
|
meta = require('../meta'),
|
||||||
|
user = require('../user'),
|
||||||
|
posts = require('../posts'),
|
||||||
|
topics = require('../topics'),
|
||||||
|
categories = require('../categories'),
|
||||||
|
privileges = require('../privileges'),
|
||||||
|
plugins = require('../plugins'),
|
||||||
|
helpers = require('./helpers'),
|
||||||
|
widgets = require('../widgets');
|
||||||
|
|
||||||
var apiController = {};
|
var apiController = {};
|
||||||
|
|
||||||
@@ -126,4 +132,37 @@ apiController.renderWidgets = function(req, res, next) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
apiController.getObject = function(req, res, next) {
|
||||||
|
var methods = {
|
||||||
|
post: {
|
||||||
|
canRead: privileges.posts.can,
|
||||||
|
data: posts.getPostData
|
||||||
|
},
|
||||||
|
topic: {
|
||||||
|
canRead: privileges.topics.can,
|
||||||
|
data: topics.getTopicData
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
canRead: privileges.categories.can,
|
||||||
|
data: categories.getCategoryData
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (!methods[req.params.type]) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
async.parallel({
|
||||||
|
canRead: async.apply(methods[req.params.type].canRead, 'read', req.params.id, req.uid),
|
||||||
|
data: async.apply(methods[req.params.type].data, req.params.id)
|
||||||
|
}, function (err, results) {
|
||||||
|
if (err || !results.data) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
if (!results.canRead) {
|
||||||
|
return helpers.notAllowed(req, res);
|
||||||
|
}
|
||||||
|
res.json(results.data);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
module.exports = apiController;
|
module.exports = apiController;
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ var async = require('async'),
|
|||||||
helpers = require('./helpers');
|
helpers = require('./helpers');
|
||||||
|
|
||||||
var Controllers = {
|
var Controllers = {
|
||||||
posts: require('./posts'),
|
|
||||||
topics: require('./topics'),
|
topics: require('./topics'),
|
||||||
categories: require('./categories'),
|
categories: require('./categories'),
|
||||||
unread: require('./unread'),
|
unread: require('./unread'),
|
||||||
@@ -42,9 +41,9 @@ Controllers.home = function(req, res, next) {
|
|||||||
if (route === 'categories') {
|
if (route === 'categories') {
|
||||||
Controllers.categories.list(req, res, next);
|
Controllers.categories.list(req, res, next);
|
||||||
} else if (route === 'recent') {
|
} else if (route === 'recent') {
|
||||||
Controllers.categories.recent(req, res, next);
|
Controllers.recent.get(req, res, next);
|
||||||
} else if (route === 'popular') {
|
} else if (route === 'popular') {
|
||||||
Controllers.categories.popular(req, res, next);
|
Controllers.popular.get(req, res, next);
|
||||||
} else {
|
} else {
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
var async = require('async'),
|
|
||||||
|
|
||||||
posts = require('../posts'),
|
|
||||||
privileges = require('../privileges'),
|
|
||||||
helpers = require('./helpers'),
|
|
||||||
postsController = {};
|
|
||||||
|
|
||||||
postsController.getPost = function(req, res, next) {
|
|
||||||
async.parallel({
|
|
||||||
canRead: function(next) {
|
|
||||||
privileges.posts.can('read', req.params.pid, req.uid, next);
|
|
||||||
},
|
|
||||||
postData: function(next) {
|
|
||||||
posts.getPostData(req.params.pid, next);
|
|
||||||
}
|
|
||||||
}, function(err, results) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
if (!results.postData) {
|
|
||||||
return helpers.notFound(req, res);
|
|
||||||
}
|
|
||||||
if (!results.canRead) {
|
|
||||||
return helpers.notAllowed(req, res);
|
|
||||||
}
|
|
||||||
|
|
||||||
res.json(results.postData);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = postsController;
|
|
||||||
@@ -15,7 +15,10 @@ module.exports = function(app, middleware, controllers) {
|
|||||||
router.get('/widgets/render', controllers.api.renderWidgets);
|
router.get('/widgets/render', controllers.api.renderWidgets);
|
||||||
|
|
||||||
router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID);
|
router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID);
|
||||||
router.get('/post/:pid', controllers.posts.getPost);
|
router.get('/:type/pid/:id', controllers.api.getObject);
|
||||||
|
router.get('/:type/tid/:id', controllers.api.getObject);
|
||||||
|
router.get('/:type/cid/:id', controllers.api.getObject);
|
||||||
|
|
||||||
router.get('/categories/:cid/moderators', getModerators);
|
router.get('/categories/:cid/moderators', getModerators);
|
||||||
router.get('/recent/posts/:term?', getRecentPosts);
|
router.get('/recent/posts/:term?', getRecentPosts);
|
||||||
router.get('/unread/total', middleware.authenticate, controllers.unread.unreadTotal);
|
router.get('/unread/total', middleware.authenticate, controllers.unread.unreadTotal);
|
||||||
|
|||||||
@@ -403,7 +403,7 @@ Upgrade.upgrade = function(callback) {
|
|||||||
}
|
}
|
||||||
async.parallel([
|
async.parallel([
|
||||||
async.apply(db.sortedSetAdd, 'groups:visible:createtime', groupData.createtime, groupName),
|
async.apply(db.sortedSetAdd, 'groups:visible:createtime', groupData.createtime, groupName),
|
||||||
async.apply(db.sortedSetAdd, 'groups:visible:memberCount', groupData.memberCount, groupName),
|
async.apply(db.sortedSetAdd, 'groups:visible:memberCount', groupData.memberCount || 0, groupName),
|
||||||
async.apply(db.sortedSetAdd, 'groups:visible:name', 0, groupName.toLowerCase() + ':' + groupName)
|
async.apply(db.sortedSetAdd, 'groups:visible:name', 0, groupName.toLowerCase() + ':' + groupName)
|
||||||
], next);
|
], next);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -136,6 +136,8 @@ module.exports = function(User) {
|
|||||||
if (!user) {
|
if (!user) {
|
||||||
return next(null, user);
|
return next(null, user);
|
||||||
}
|
}
|
||||||
|
// temporary: see http://www.stopforumspam.com/forum/viewtopic.php?id=6392
|
||||||
|
user.ip = user.ip.replace('::ffff:', '');
|
||||||
|
|
||||||
request('http://api.stopforumspam.org/api?ip=' + user.ip + '&email=' + user.email + '&username=' + user.username + '&f=json', function (err, response, body) {
|
request('http://api.stopforumspam.org/api?ip=' + user.ip + '&email=' + user.email + '&username=' + user.username + '&f=json', function (err, response, body) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user