mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 11:05:54 +01:00 
			
		
		
		
	first commit
This commit is contained in:
		
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								package.json
									
									
									
									
									
								
							| @@ -20,8 +20,7 @@ | |||||||
|     "connect-flash": "^0.1.1", |     "connect-flash": "^0.1.1", | ||||||
|     "cron": "~1.0.4", |     "cron": "~1.0.4", | ||||||
|     "daemon": "~1.1.0", |     "daemon": "~1.1.0", | ||||||
|     "express": "3.2.0", |     "express": "4.4.5", | ||||||
|     "express-namespace": "~0.1.1", |  | ||||||
|     "gm": "1.14.2", |     "gm": "1.14.2", | ||||||
|     "gravatar": "1.0.6", |     "gravatar": "1.0.6", | ||||||
|     "less": "~1.6.3", |     "less": "~1.6.3", | ||||||
| @@ -41,6 +40,17 @@ | |||||||
|     "prompt": "~0.2.11", |     "prompt": "~0.2.11", | ||||||
|     "request": "~2.34.0", |     "request": "~2.34.0", | ||||||
|     "rimraf": "~2.2.6", |     "rimraf": "~2.2.6", | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     "cookie-parser": "^1.0.1", | ||||||
|  |     "body-parser": "^1.0.1", | ||||||
|  |     "serve-favicon": "^2.0.1", | ||||||
|  |     "express-session": "^1.0.2", | ||||||
|  |     "csurf": "^1.1.0", | ||||||
|  |     "compression": "^1.0.1", | ||||||
|  |  | ||||||
|  |     "morgan": "^1.0.0", | ||||||
|  |  | ||||||
|     "rss": "~0.2.0", |     "rss": "~0.2.0", | ||||||
|     "semver": "~2.2.1", |     "semver": "~2.2.1", | ||||||
|     "sitemap": "~0.7.3", |     "sitemap": "~0.7.3", | ||||||
|   | |||||||
| @@ -62,6 +62,7 @@ Please use the npm module instead - require('templates.js') | |||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	function express(filename, options, fn) { | 	function express(filename, options, fn) { | ||||||
|  | 		console.log(filename, options, fn); | ||||||
| 		var fs = require('fs'), | 		var fs = require('fs'), | ||||||
| 			tpl = filename.replace(options.settings.views + '/', ''); | 			tpl = filename.replace(options.settings.views + '/', ''); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ | |||||||
| 	var winston = require('winston'), | 	var winston = require('winston'), | ||||||
| 		async = require('async'), | 		async = require('async'), | ||||||
| 		nconf = require('nconf'), | 		nconf = require('nconf'), | ||||||
| 		express = require('express'), | 		session = require('express-session'), | ||||||
| 		db, | 		db, | ||||||
| 		mongoClient, | 		mongoClient, | ||||||
| 		mongoStore; | 		mongoStore; | ||||||
| @@ -41,7 +41,7 @@ | |||||||
| 	module.init = function(callback) { | 	module.init = function(callback) { | ||||||
| 		try { | 		try { | ||||||
| 			mongoClient = require('mongodb').MongoClient; | 			mongoClient = require('mongodb').MongoClient; | ||||||
| 			mongoStore = require('connect-mongo')(express); | 			mongoStore = require('connect-mongo')({session: session}); | ||||||
| 		} catch (err) { | 		} catch (err) { | ||||||
| 			winston.error('Unable to initialize MongoDB! Is MongoDB installed? Error :' + err.message); | 			winston.error('Unable to initialize MongoDB! Is MongoDB installed? Error :' + err.message); | ||||||
| 			process.exit(); | 			process.exit(); | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
| 	var winston = require('winston'), | 	var winston = require('winston'), | ||||||
| 		nconf = require('nconf'), | 		nconf = require('nconf'), | ||||||
| 		path = require('path'), | 		path = require('path'), | ||||||
| 		express = require('express'), | 		session = require('express-session'), | ||||||
| 		utils = require('./../../public/src/utils.js'), | 		utils = require('./../../public/src/utils.js'), | ||||||
| 		redis, | 		redis, | ||||||
| 		connectRedis, | 		connectRedis, | ||||||
| @@ -40,7 +40,7 @@ | |||||||
| 	module.init = function(callback) { | 	module.init = function(callback) { | ||||||
| 		try { | 		try { | ||||||
| 			redis = require('redis'); | 			redis = require('redis'); | ||||||
| 			connectRedis = require('connect-redis')(express); | 			connectRedis = require('connect-redis')({session: session}); | ||||||
| 			reds = require('reds'); | 			reds = require('reds'); | ||||||
| 		} catch (err) { | 		} catch (err) { | ||||||
| 			winston.error('Unable to initialize Redis! Is Redis installed? Error :' + err.message); | 			winston.error('Unable to initialize Redis! Is Redis installed? Error :' + err.message); | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ var async = require('async'), | |||||||
|  |  | ||||||
| 	DATABASES = { | 	DATABASES = { | ||||||
| 		"redis": { | 		"redis": { | ||||||
| 			"dependencies": ["redis@~0.10.1", "connect-redis@~1.4"] | 			"dependencies": ["redis@~0.10.1", "connect-redis@~2.0.0"] | ||||||
| 		}, | 		}, | ||||||
| 		"mongo": { | 		"mongo": { | ||||||
| 			"dependencies": ["mongodb", "connect-mongo"] | 			"dependencies": ["mongodb", "connect-mongo"] | ||||||
|   | |||||||
| @@ -10,7 +10,8 @@ var fs = require('fs'), | |||||||
| 	winston = require('winston'), | 	winston = require('winston'), | ||||||
| 	util = require('util'), | 	util = require('util'), | ||||||
| 	socketio = require('socket.io'), | 	socketio = require('socket.io'), | ||||||
| 	meta = require('./meta'); | 	meta = require('./meta'), | ||||||
|  | 	morgan = require('morgan'); | ||||||
|  |  | ||||||
| var opts = { | var opts = { | ||||||
| 	/* | 	/* | ||||||
| @@ -124,7 +125,7 @@ var opts = { | |||||||
| 		/* | 		/* | ||||||
| 		 * Always initialize "ofn" (original function) with the original logger function | 		 * Always initialize "ofn" (original function) with the original logger function | ||||||
| 		 */ | 		 */ | ||||||
| 		opts.express.ofn = express.logger({stream : opts.streams.log.f}); | 		opts.express.ofn = morgan({stream : opts.streams.log.f}); | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	Logger.expressLogger = function(req,res,next) { | 	Logger.expressLogger = function(req,res,next) { | ||||||
|   | |||||||
| @@ -15,6 +15,12 @@ var utils = require('./../../public/src/utils'), | |||||||
| 	winston = require('winston'), | 	winston = require('winston'), | ||||||
| 	flash = require('connect-flash'), | 	flash = require('connect-flash'), | ||||||
| 	templates = require('templates.js'), | 	templates = require('templates.js'), | ||||||
|  | 	bodyParser = require('body-parser'), | ||||||
|  | 	cookieParser = require('cookie-parser'), | ||||||
|  | 	compression = require('compression'), | ||||||
|  | 	favicon = require('serve-favicon'), | ||||||
|  | 	csrf = require('csurf'), | ||||||
|  | 	session = require('express-session'), | ||||||
|  |  | ||||||
| 	relativePath, | 	relativePath, | ||||||
| 	viewsPath, | 	viewsPath, | ||||||
| @@ -188,7 +194,7 @@ module.exports = function(app, data) { | |||||||
| 	themesPath = nconf.get('themes_path'); | 	themesPath = nconf.get('themes_path'); | ||||||
| 	baseTemplatesPath = nconf.get('base_templates_path'); | 	baseTemplatesPath = nconf.get('base_templates_path'); | ||||||
|  |  | ||||||
| 	app.configure(function() { |  | ||||||
| 	app.engine('tpl', templates.__express); | 	app.engine('tpl', templates.__express); | ||||||
| 	app.set('view engine', 'tpl'); | 	app.set('view engine', 'tpl'); | ||||||
| 	app.set('views', viewsPath); | 	app.set('views', viewsPath); | ||||||
| @@ -196,15 +202,15 @@ module.exports = function(app, data) { | |||||||
|  |  | ||||||
| 	app.enable('view cache'); | 	app.enable('view cache'); | ||||||
|  |  | ||||||
| 		app.use(express.compress()); | 	app.use(compression()); | ||||||
|  |  | ||||||
| 		app.use(express.favicon(path.join(__dirname, '../../', 'public', meta.config['brand:favicon'] ? meta.config['brand:favicon'] : 'favicon.ico'))); | 	app.use(favicon(path.join(__dirname, '../../', 'public', meta.config['brand:favicon'] ? meta.config['brand:favicon'] : 'favicon.ico'))); | ||||||
| 	app.use(relativePath + '/apple-touch-icon', middleware.routeTouchIcon); | 	app.use(relativePath + '/apple-touch-icon', middleware.routeTouchIcon); | ||||||
|  |  | ||||||
| 		app.use(express.bodyParser()); | 	app.use(bodyParser()); | ||||||
| 		app.use(express.cookieParser()); | 	app.use(cookieParser()); | ||||||
|  |  | ||||||
| 		app.use(express.session({ | 	app.use(session({ | ||||||
| 		store: db.sessionStore, | 		store: db.sessionStore, | ||||||
| 		secret: nconf.get('secret'), | 		secret: nconf.get('secret'), | ||||||
| 		key: 'express.sid', | 		key: 'express.sid', | ||||||
| @@ -213,7 +219,7 @@ module.exports = function(app, data) { | |||||||
| 		} | 		} | ||||||
| 	})); | 	})); | ||||||
|  |  | ||||||
| 		app.use(express.csrf()); // todo, make this a conditional middleware | 	app.use(csrf()); | ||||||
|  |  | ||||||
| 	app.use(function (req, res, next) { | 	app.use(function (req, res, next) { | ||||||
| 		res.locals.csrf_token = req.session._csrf; | 		res.locals.csrf_token = req.session._csrf; | ||||||
| @@ -238,15 +244,13 @@ module.exports = function(app, data) { | |||||||
| 		compileTemplates(pluginTemplates); | 		compileTemplates(pluginTemplates); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 		app.use(relativePath, app.router); |  | ||||||
|  |  | ||||||
| 	app.use(relativePath, express.static(path.join(__dirname, '../../', 'public'), { | 	app.use(relativePath, express.static(path.join(__dirname, '../../', 'public'), { | ||||||
| 		maxAge: app.enabled('cache') ? 5184000000 : 0 | 		maxAge: app.enabled('cache') ? 5184000000 : 0 | ||||||
| 	})); | 	})); | ||||||
|  |  | ||||||
| 		app.use(catch404); | 	//app.use(catch404); | ||||||
| 		app.use(handleErrors); | 	//app.use(handleErrors); | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	return middleware; | 	return middleware; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ var path = require('path'), | |||||||
| 	async = require('async'), | 	async = require('async'), | ||||||
| 	fs = require('fs'), | 	fs = require('fs'), | ||||||
| 	nconf = require('nconf'), | 	nconf = require('nconf'), | ||||||
|  | 	express = require('express'), | ||||||
|  |  | ||||||
| 	user = require('../user'), | 	user = require('../user'), | ||||||
| 	topics = require('../topics'), | 	topics = require('../topics'), | ||||||
| @@ -178,17 +179,19 @@ function getRecentPosts(req, res, next) { | |||||||
| } | } | ||||||
|  |  | ||||||
| module.exports =  function(app, middleware, controllers) { | module.exports =  function(app, middleware, controllers) { | ||||||
| 	app.namespace('/api', function () { |  | ||||||
| 		app.get('/config', controllers.api.getConfig); |  | ||||||
|  |  | ||||||
| 		app.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID); | 	var router = express.Router(); | ||||||
| 		app.get('/get_templates_listing', getTemplatesListing); |  | ||||||
| 		app.get('/categories/:cid/moderators', getModerators); |  | ||||||
| 		app.get('/recent/posts/:term?', getRecentPosts); |  | ||||||
|  |  | ||||||
| 		app.post('/post/upload', uploadPost); | 	router.get('/config', controllers.api.getConfig); | ||||||
| 		app.post('/topic/thumb/upload', uploadThumb); |  | ||||||
| 		app.post('/user/:userslug/uploadpicture', middleware.authenticate, middleware.checkGlobalPrivacySettings, middleware.checkAccountPermissions, controllers.accounts.uploadPicture); |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
|  | 	router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID); | ||||||
|  | 	router.get('/get_templates_listing', getTemplatesListing); | ||||||
|  | 	router.get('/categories/:cid/moderators', getModerators); | ||||||
|  | 	router.get('/recent/posts/:term?', getRecentPosts); | ||||||
|  |  | ||||||
|  | 	router.post('/post/upload', uploadPost); | ||||||
|  | 	router.post('/topic/thumb/upload', uploadThumb); | ||||||
|  | 	router.post('/user/:userslug/uploadpicture', middleware.authenticate, middleware.checkGlobalPrivacySettings, middleware.checkAccountPermissions, controllers.accounts.uploadPicture); | ||||||
|  |  | ||||||
|  | 	app.use('/api', router); | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -1,13 +1,15 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
|  |  | ||||||
| var user = require('./../user'), | var express = require('express'), | ||||||
|  | 	user = require('./../user'), | ||||||
| 	categories = require('./../categories'), | 	categories = require('./../categories'), | ||||||
| 	topics = require('./../topics'), | 	topics = require('./../topics'), | ||||||
| 	posts = require('./../posts'); | 	posts = require('./../posts'); | ||||||
|  |  | ||||||
| module.exports = function(app, middleware, controllers) { | module.exports = function(app, middleware, controllers) { | ||||||
| 	app.namespace('/debug', function() { | 	var router = express.Router(); | ||||||
| 		app.get('/uid/:uid', function (req, res) { |  | ||||||
|  | 	router.get('/uid/:uid', function (req, res) { | ||||||
| 		if (!req.params.uid) { | 		if (!req.params.uid) { | ||||||
| 			return res.redirect('/404'); | 			return res.redirect('/404'); | ||||||
| 		} | 		} | ||||||
| @@ -23,7 +25,7 @@ module.exports = function(app, middleware, controllers) { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 		app.get('/cid/:cid', function (req, res) { | 	router.get('/cid/:cid', function (req, res) { | ||||||
| 		categories.getCategoryData(req.params.cid, function (err, data) { | 		categories.getCategoryData(req.params.cid, function (err, data) { | ||||||
| 			if (data) { | 			if (data) { | ||||||
| 				res.send(data); | 				res.send(data); | ||||||
| @@ -33,7 +35,7 @@ module.exports = function(app, middleware, controllers) { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 		app.get('/tid/:tid', function (req, res) { | 	router.get('/tid/:tid', function (req, res) { | ||||||
| 		topics.getTopicData(req.params.tid, function (err, data) { | 		topics.getTopicData(req.params.tid, function (err, data) { | ||||||
| 			if (data) { | 			if (data) { | ||||||
| 				res.send(data); | 				res.send(data); | ||||||
| @@ -43,7 +45,7 @@ module.exports = function(app, middleware, controllers) { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 		app.get('/pid/:pid', function (req, res) { | 	router.get('/pid/:pid', function (req, res) { | ||||||
| 		posts.getPostData(req.params.pid, function (err, data) { | 		posts.getPostData(req.params.pid, function (err, data) { | ||||||
| 			if (data) { | 			if (data) { | ||||||
| 				res.send(data); | 				res.send(data); | ||||||
| @@ -53,8 +55,9 @@ module.exports = function(app, middleware, controllers) { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 		app.get('/test', function(req, res) { | 	router.get('/test', function(req, res) { | ||||||
| 		res.redirect('404'); | 		res.redirect('404'); | ||||||
| 	}); | 	}); | ||||||
| 	}); |  | ||||||
|  | 	return router; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ var nconf = require('nconf'), | |||||||
| 	controllers = require('./../controllers'), | 	controllers = require('./../controllers'), | ||||||
| 	meta = require('./../meta'), | 	meta = require('./../meta'), | ||||||
| 	plugins = require('./../plugins'), | 	plugins = require('./../plugins'), | ||||||
|  | 	express = require('express'), | ||||||
|  |  | ||||||
| 	metaRoutes = require('./meta'), | 	metaRoutes = require('./meta'), | ||||||
| 	apiRoutes = require('./api'), | 	apiRoutes = require('./api'), | ||||||
| @@ -151,8 +152,11 @@ function groupRoutes(app, middleware, controllers) { | |||||||
|  |  | ||||||
|  |  | ||||||
| module.exports = function(app, middleware) { | module.exports = function(app, middleware) { | ||||||
| 	app.namespace(nconf.get('relative_path'), function() { |  | ||||||
|  | 	var router = express.Router(); | ||||||
|  |  | ||||||
| 	plugins.ready(function() { | 	plugins.ready(function() { | ||||||
|  |  | ||||||
| 		app.all('/api/*', middleware.updateLastOnlineTime, middleware.prepareAPI); | 		app.all('/api/*', middleware.updateLastOnlineTime, middleware.prepareAPI); | ||||||
| 		app.all('/api/admin/*', middleware.admin.isAdmin, middleware.prepareAPI); | 		app.all('/api/admin/*', middleware.admin.isAdmin, middleware.prepareAPI); | ||||||
| 		app.all('/admin/*', middleware.admin.isAdmin); | 		app.all('/admin/*', middleware.admin.isAdmin); | ||||||
| @@ -179,10 +183,58 @@ module.exports = function(app, middleware) { | |||||||
| 		accountRoutes(app, middleware, controllers); | 		accountRoutes(app, middleware, controllers); | ||||||
| 		userRoutes(app, middleware, controllers); | 		userRoutes(app, middleware, controllers); | ||||||
| 		groupRoutes(app, middleware, controllers); | 		groupRoutes(app, middleware, controllers); | ||||||
|  |  | ||||||
|  | 		app.use(catch404); | ||||||
|  | 		app.use(handleErrors); | ||||||
|  |  | ||||||
|  | 		app.use(nconf.get('relative_path'), router); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	if (process.env.NODE_ENV === 'development') { | 	if (process.env.NODE_ENV === 'development') { | ||||||
| 			require('./debug')(app, middleware, controllers); | 		app.use('/debug', require('./debug')(middleware, controllers)); | ||||||
| 	} | 	} | ||||||
| 	}); |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | function handleErrors(err, req, res, next) { | ||||||
|  | 	// we may use properties of the error object | ||||||
|  | 	// here and next(err) appropriately, or if | ||||||
|  | 	// we possibly recovered from the error, simply next(). | ||||||
|  | 	console.error(err.stack); | ||||||
|  |  | ||||||
|  | 	var status = err.status || 500; | ||||||
|  | 	res.status(status); | ||||||
|  |  | ||||||
|  | 	req.flash('errorMessage', err.message); | ||||||
|  |  | ||||||
|  | 	res.redirect('500'); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function catch404(req, res, next) { | ||||||
|  | 	var	isLanguage = new RegExp('^' + relativePath + '/language/[\\w]{2,}/.*.json'), | ||||||
|  | 		isClientScript = new RegExp('^' + relativePath + '\\/src\\/forum(\\/admin)?\\/.+\\.js'); | ||||||
|  |  | ||||||
|  | 	res.status(404); | ||||||
|  |  | ||||||
|  | 	if (isClientScript.test(req.url)) { | ||||||
|  | 		res.type('text/javascript').send(200, ''); | ||||||
|  | 	} else if (isLanguage.test(req.url)) { | ||||||
|  | 		res.json(200, {}); | ||||||
|  | 	} else if (req.accepts('html')) { | ||||||
|  | 		if (process.env.NODE_ENV === 'development') { | ||||||
|  | 			winston.warn('Route requested but not found: ' + req.url); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		res.redirect(relativePath + '/404'); | ||||||
|  | 	} else if (req.accepts('json')) { | ||||||
|  | 		if (process.env.NODE_ENV === 'development') { | ||||||
|  | 			winston.warn('Route requested but not found: ' + req.url); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		res.json({ | ||||||
|  | 			error: 'Not found' | ||||||
|  | 		}); | ||||||
|  | 	} else { | ||||||
|  | 		res.type('txt').send('Not found'); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -7,8 +7,7 @@ var	SocketIO = require('socket.io'), | |||||||
| 	path = require('path'), | 	path = require('path'), | ||||||
| 	fs = require('fs'), | 	fs = require('fs'), | ||||||
| 	nconf = require('nconf'), | 	nconf = require('nconf'), | ||||||
| 	express = require('express'), | 	socketCookieParser = require('cookie-parser')(nconf.get('secret')), | ||||||
| 	socketCookieParser = express.cookieParser(nconf.get('secret')), |  | ||||||
| 	winston = require('winston'), | 	winston = require('winston'), | ||||||
|  |  | ||||||
| 	db = require('../database'), | 	db = require('../database'), | ||||||
| @@ -60,7 +59,7 @@ Sockets.init = function(server) { | |||||||
| 				winston.error(err.message); | 				winston.error(err.message); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			sessionID = socket.handshake.signedCookies["express.sid"]; | 			sessionID = socket.handshake.signedCookies['express.sid']; | ||||||
| 			db.sessionStore.get(sessionID, function(err, sessionData) { | 			db.sessionStore.get(sessionID, function(err, sessionData) { | ||||||
| 				if (!err && sessionData && sessionData.passport && sessionData.passport.user) { | 				if (!err && sessionData && sessionData.passport && sessionData.passport.user) { | ||||||
| 					uid = parseInt(sessionData.passport.user, 10); | 					uid = parseInt(sessionData.passport.user, 10); | ||||||
|   | |||||||
| @@ -2,7 +2,6 @@ var path = require('path'), | |||||||
| 	fs = require('fs'), | 	fs = require('fs'), | ||||||
| 	nconf = require('nconf'), | 	nconf = require('nconf'), | ||||||
| 	express = require('express'), | 	express = require('express'), | ||||||
| 	express_namespace = require('express-namespace'), |  | ||||||
| 	WebServer = express(), | 	WebServer = express(), | ||||||
| 	server, | 	server, | ||||||
| 	winston = require('winston'), | 	winston = require('winston'), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user