/
app.js
141 lines (117 loc) · 4.17 KB
/
app.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
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
var App = {};
App = require('./config.js');
var openid = require('openid');
var url = require('url');
var querystring = require('querystring');
var relyingParty = new openid.RelyingParty(
'http://dev2.nova-initia.com:3080/verify', // Verification URL (yours)
null, // Realm (optional, specifies realm for OpenID authentication)
false, // Use stateless verification
false, // Strict mode
[]); // List of extensions to enable and include
App.mongoose.models.base = {};
var $ = App.$;
var mongooseTypes = require("mongoose-types");
App.mongoose.connect("mongodb://"+App.db.host+"/"+App.db.name);
mongooseTypes.loadTypes(App.mongoose);
App.mongoose = require('./models/BarrelModel.js')(App.mongoose);
App.mongoose = require('./models/ClassModel.js')(App.mongoose);
App.mongoose = require('./models/DomainModel.js')(App.mongoose);
App.mongoose = require('./models/DoorwayModel.js')(App.mongoose);
App.mongoose = require('./models/MessageModel.js')(App.mongoose);
App.mongoose = require('./models/PageModel.js')(App.mongoose);
App.mongoose = require('./models/SignpostModel.js')(App.mongoose);
App.mongoose = require('./models/SpiderModel.js')(App.mongoose);
App.mongoose = require('./models/ToolModel.js')(App.mongoose);
App.mongoose = require('./models/TrapModel.js')(App.mongoose);
App.mongoose = require('./models/UserModel.js')(App.mongoose);
var server = App.express.createServer();
server.use(App.express.logger());
server.use(App.express.bodyParser());
server.use(App.express.cookieParser());
server.use(server.router);
var validKeys = [];
server.get('/auth', function(req, res) {
var lastkey = randomString(64);
validKeys.push(lastkey);
res.send(lastkey);
});
server.post('/login', function(req, res) {
var data;
var UserModel = App.mongoose.model('User');
if(req.body) {
data = req.body;
if(data && typeof(data.lastkey)!='undefined') {
if(validKeys.indexOf(data.lastkey)>-1) {
validKeys.splice(validKeys.indexOf(data.lastkey),1);
UserModel.findOne({"_id":data.user,"pass":data.pass}, function(err, doc) {
var newKey = randomString(64);
doc.key = data.lastkey = newKey;
doc.save();
res.send(newKey);
});
}
} else {
data = {};
data.lastkey = '';
res.send(data.lastkey);
}
}
});
server.get('/signposts/:id', function (req, res) {
var signpostId = req.params.id;
var SignpostModel = App.mongoose.model('Signpost');
SignpostModel.findOne({'_id' : signpostId},function(err, docs) {
res.send(docs);
});
});
server.get('/signposts', function (req, res) {
var SignpostModel = App.mongoose.model('Signpost');
SignpostModel.find({},function(err, docs) {
res.send(docs);
});
});
server.put('/signposts', function (req, res) {
var SignpostModel = App.mongoose.model('Signpost');
var newSignpost = new SignpostModel(req.body);
res.send(newSignpost.save());
});
server.get('/users', function (req, res) {
var UserModel = App.mongoose.model('User');
UserModel.find({},function(err, docs) {
res.send(docs);
});
});
server.get('/users/:id', function (req, res) {
var userId = req.params.id;
var UserModel = App.mongoose.model('User');
UserModel.findOne({'_id' : userId },function(err, docs) {
res.send(docs);
});
});
server.get('/users/:id/toggleShield', function (req, res) {
var userId = req.params.id;
var UserModel = App.mongoose.model('User');
UserModel.findOne({'_id' : userId },function(err, docs) {
foundUser = new UserModel(docs);
foundUser.set("toogleShield","");
console.log(JSON.stringify(foundUser));
res.send(foundUser);
});
});
server.listen(App.web.port);
var randomString = function (bits) {
var chars, rand, i, ret;
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-';
ret = '';
// in v8, Math.random() yields 32 pseudo-random bits (in spidermonkey it gives 53)
while (bits > 0) {
// 32-bit integer
rand = Math.floor(Math.random() * 0x100000000);
// base 64 means 6 bits per character, so we use the top 30 bits from rand to give 30/6=5 characters.
for (i = 26; i > 0 && bits > 0; i -= 6, bits -= 6) {
ret += chars[0x3F & rand >>> i];
}
}
return ret;
};