-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
38 lines (32 loc) · 1.67 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
var http = require('http');
var fs = require('fs');
var Schema = require('protobuf').Schema;
var dgram = require('dgram');
var nano = require('nano');
var ConfigLoader = require('./config_loader');
var HttpServer = require('./http_server');
var UDPServerUsesCouchDB = require('./udp_server');
var CouchPersistanceLayer = require('./couch_persistance_layer');
var MemoryPersistanceLayer = require('./memory_persistance_layer');
var IPAnalyzer = require('./ip_analyzer');
var UniqueFilter = require('./unique_filter');
var configLoader = ConfigLoader(fs, JSON);
var config = configLoader.loadConfig();
var httpPort = config.httpPort=='process.env.PORT' ? process.env.PORT : config.httpPort;
var nanoDB = nano(config.couchDBURL).db;
var lookoutCouch = nanoDB.use(config.couchDBDatabase);
var nodeUDPServer = dgram.createSocket('udp4');
var ipEventProto = fs.readFileSync(config.ipEventProtoDescPath);
var schema = new Schema(ipEventProto);
var IpEvent = schema[config.ipEventSchemaFullyQualifiedName];
var uniqueFilter = UniqueFilter();
var persistanceLayer = config.persistanceType.toLowerCase()=='memory'
? MemoryPersistanceLayer({}, console)
: CouchPersistanceLayer(config.eventsToQueueBeforeUploadToCouch, lookoutCouch, config.numberOfNewRecordsBeforeViewRecomputation, uniqueFilter);
var ipAnalyzer = IPAnalyzer(config.blockSize);
var httpServer = HttpServer(lookoutCouch, persistanceLayer, ipAnalyzer, console);
var udpServer = UDPServerUsesCouchDB(nodeUDPServer, config.udpPort, config.udpHost, persistanceLayer, IpEvent);
http.createServer(httpServer.handleHTTPRequest).listen(httpPort, function() {
console.log('http server listening on port '+httpPort);
});
udpServer.beginListening();