-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
79 lines (63 loc) · 1.49 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
'use strict';
const _ = require('lodash');
const config = require('config');
const express = require('express');
const fs = require('fs');
const http = require('http');
const moment = require('moment');
const SteamID = require('steamid');
const GROUPS = config.get('groups');
var app = express();
var server = http.Server(app);
app.get('/:group', function(req, res) {
if (!_.has(GROUPS, req.params.group)) {
res.sendStatus(500);
return;
}
let group = GROUPS[req.params.group];
let steamID;
try {
steamID = new SteamID(req.query.user);
}
catch (err) {
res.sendStatus(403);
return;
}
let steam64 = steamID.getSteamID64();
let matchingUsers = _.filter(group.users, ['user', steam64]);
for (let user of matchingUsers) {
if (_.has(user, 'expires') && moment().isAfter(user.expires)) {
continue;
}
if (user.member) {
res.sendStatus(200);
return;
}
else {
res.sendStatus(403);
return;
}
}
if (_.has(group, 'membershipDefault') && group.membershipDefault) {
res.sendStatus(200);
}
else {
res.sendStatus(403);
}
});
try {
fs.unlinkSync(config.get('server.listen'));
}
catch (err) {
// ignore
}
server.listen(config.get('server.listen'));
try {
fs.chmodSync(config.get('server.listen'), '775');
}
catch (err) {
// ignore
}
process.on('exit', function() {
server.close();
});