-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathproject_manager.js
More file actions
145 lines (124 loc) · 3.8 KB
/
project_manager.js
File metadata and controls
145 lines (124 loc) · 3.8 KB
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// server.js
// var html = require('html');
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var fs = require('fs');
var path = require('path');
var app = express();
// var engines = require('consolidate');
global.appRoot = path.resolve(__dirname);
global.moduleGroup = process.argv[2];
var argv = require('minimist')(process.argv.slice(2));
if(!global.moduleGroup)
{
console.log('No module group is given.\n Try: node openode <modulegroup>');
process.exit(1);
}
if(!fs.existsSync('./modules/'+global.moduleGroup))
{
console.log('Module group "'+global.moduleGroup+'" not found in the module folder.');
process.exit(1);
}
else
global.module_group_path = path.join(global.appRoot,'modules',global.moduleGroup);
// app.set('view engine','jade');
app.set('views', __dirname + '/public');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
var port = process.env.PORT || argv.port || 8081;
var router = express.Router();
// var ssn;
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var cookie_secret=require('crypto').randomBytes(64).toString('hex');
app.use(session({
// secret:'arsnetkoarenstanwhdiabhisrdhbarsn',
// secret:require('crypto').randomBytes(64).toString('hex'),
secret: cookie_secret,
// resave: true,
// saveUninitialized:true
resave: false,
saveUninitialized: true,
// cookie: { secure: true }
name: 'session1_'+global.moduleGroup,
}));
// app.use(express.cookieParser());
// var cookieParser = require('cookie-parser');
// app.use(cookieParser(cookie_secret));
/* ******************************* */
var security = require('./js/security.js');
var server = require('./js/server.js');
var logger = require('./js/log.js');
var routing = require('./js/routing.js');
var project_meta = require('./js/projects_meta.js');
var projects = require('./js/projects.js');
// var algorithm = require('./algorithm.js');
/* ******************************* */
routing.setup(app);
security.load_users();
// router.get('/aaa', function(req, res) {
// res.json({ message: 'welcome to our api!' });
// });
// app.use('/api', router);
app.get('/',function(req,res)
{
if(!security.verify_authentication(req,res))
return ;
res.render('index.html');
});
app.get('/project/:project_id',function(req,res)
{
if(!security.verify_authentication(req,res))
return ;
var project_id = req.params.project_id;
var user_id=security.user_id(req);
projects.browse(project_id,user_id,res);
});
app.get('/project_json/:project_id',function(req,res)
{
if(!security.verify_authentication(req,res))
return ;
var project_id = req.params.project_id;
var user_id=security.user_id(req);
projects.show_json(project_id,user_id,res);
});
app.get('/admin',function(req,res){
var ssn = req.session;
if(ssn.email) {
res.write('<h1>Hello '+ssn.email+'</h1>');
res.end('<a href="+">Logout</a>');
} else {
res.write('<h1>login first.</h1>');
res.end('<a href="+">Login</a>');
}
});
app.use(express.static(path.join(__dirname, 'public')));
var mg_config = require(path.join(global.module_group_path,'mg_config.js'));
mg_config.extra_routing(app);
var production = process.env.NODE_ENV === 'production'
if(!production) {
var chokidar = require('chokidar')
var watcher = chokidar.watch('.')
watcher.on('ready', function()
{
watcher.on('all', function()
{
var count=0;
Object.keys(require.cache).forEach(function(id)
{
if (/[\/\\]modules[\/\\]/.test(id))
{
delete require.cache[id]
count++;
}
// console.log("cache id: "+id)
})
if(count>0)
console.log('Clearing '+count+' modules cache from server')
})
})
}
app.listen(port);
console.log('http://localhost:'+port);
logger.info('server started.');