-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
114 lines (90 loc) · 2.42 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
'use strict';
var cfg = require('./config.json');
var express = require('express');
var sessions = require('client-sessions');
var passport = require('passport');
var path = require('path');
var jade = require('jade');
var routesIndex = require('./routes/index');
var routesSocial = require('./routes/social');
GLOBAL.U = {
db : require('./model/db')(cfg.db),
async : require('async'),
model : {
user : require('./model/user'),
site : require('./model/site'),
material : require('./model/material')
},
lib : require('./lib')
};
var staticRoute = cfg.staticRoute;
var staticPath = 'public';
var revision = 1;
var app = express();
app.use(require('express-domain-middleware'));
app.engine('jade', jade.__express);
app.set('views', path.resolve(process.cwd(), 'templates'));
app.set('view engine', 'jade');
app.use(express.methodOverride());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.cookieParser(cfg.session.secret));
app.use(sessions(cfg.session));
// Passport:
app.use(passport.initialize());
app.use(passport.session());
app.use(path.join('/', staticRoute), express.static(staticPath));
app.locals.isDebug = cfg.isDebug ? true : false;
app.locals.revision = revision;
app.locals.staticFile = function (file) {
while (file.charAt(0) === '/') {
file = file.slice(1);
}
return path.join('/', staticRoute, file) + '?v=' + revision;
};
app.locals.staticDir = function (dir) {
if ( ! dir) {
dir = '';
}
while (dir.charAt(0) === '/') {
dir = dir.slice(1);
}
return path.join('/', staticRoute, dir);
};
app.use(function(req, res, next) {
res.ok = function(code){
return function(err,data){
if (err) {
console.error('ok error ', err.stack || err);
return res.error(err);
}
try{
return code(data);
} catch (e) {
res.error(e);
}
};
};
Function.prototype.ok = res.ok;
next();
});
//
var routes = require('./routes');
app.use(function(req, res, next) {
app.router(req, res, next);
});
routes(app);
// обработка ошибок на уровне express
app.use(function(err, req, res, next) {
console.log('error', err);
if (res.error) {
res.error(err);
} else {
res.status(500).send('Sorry, something wrong!');
}
});
var server = app.listen(cfg.port, cfg.host, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});