-
Notifications
You must be signed in to change notification settings - Fork 0
/
router-admin.js
79 lines (69 loc) · 1.85 KB
/
router-admin.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
/**
* Github Status microservice
*/
'use strict';
const Cluster = require('@microservice-framework/microservice-cluster');
const Microservice = require('@microservice-framework/microservice');
const MongoClient = require('mongodb').MongoClient;
const debugF = require('debug');
var debug = {
log: debugF('router:log'),
debug: debugF('router:debug')
};
require('dotenv').config();
var mservice = new Microservice({
mongoUrl: process.env.MONGO_URL + process.env.MONGO_PREFIX + process.env.MONGO_OPTIONS,
mongoTable: process.env.MONGO_TABLE,
secureKey: process.env.SECURE_KEY,
schema: process.env.SCHEMA
});
var mControlCluster = new Cluster({
pid: process.env.PIDFILE,
port: process.env.PORT,
count: process.env.WORKERS,
hostname: process.env.HOSTNAME,
callbacks: {
validate: mservice.validate,
POST: mservice.post,
GET: mservice.get,
PUT: mservice.put,
DELETE: mservice.delete,
SEARCH: mservice.search
}
});
if (mControlCluster.isMaster) {
var interval = 6000;
if (process.env.INTERVAL) {
interval = process.env.INTERVAL;
}
setInterval(cleanRouteTable , interval);
}
/**
* Update route infor each 10 sec.
*/
function cleanRouteTable() {
debug.log('Clean routes');
MongoClient.connect(process.env.MONGO_URL + process.env.MONGO_PREFIX + process.env.MONGO_OPTIONS,
function(err, db) {
if (err) {
// If error, do nothing.
debug.debug('Error %s', err.message);
return;
}
var collection = db.collection(process.env.MONGO_TABLE);
var query = {
changed: {
$lt: Date.now() - 60 * 1000
}
};
collection.deleteMany(query, function(err, results) {
db.close();
if (err) {
// If error, do nothing.
debug.debug('Error %s', err.message);
return;
}
debug.log('Deleted %s routes', results.deletedCount);
});
});
}