-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
154 lines (115 loc) · 3.59 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
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
146
147
148
149
150
151
152
153
154
var express = require('express'),
controller = require('./controller');
var isServer = true;
var name = null;
var listenPort = 3333;
var serverPort = null;
var serverIP = null;
var clientIP = null;
var processorPlugin = null;
//these guys are global (as they will contain cached info) and will need to be available throughout the system scope
client_helper = require('./client_helper');
server_helper = require('./server_helper');
shared_helper = require('./shared_helper');
process.argv.forEach(function (val, index, array) {
if (val.toLowerCase() == 'mode=server')
isServer = true;
if (val.toLowerCase() == 'mode=client')
isServer = false;
if (val.toLowerCase().substring(0, 4) == 'name')
name = val.toLowerCase().split('=')[1];
if (val.toLowerCase().substring(0, 4) == 'port')
listenPort = val.toLowerCase().split('=')[1];
if (val.toLowerCase().substring(0, 11) == 'server_port')
serverPort = val.toLowerCase().split('=')[1];
if (val.toLowerCase().substring(0, 9) == 'server_ip')
serverIP = val.toLowerCase().split('=')[1];
if (val.toLowerCase().substring(0, 9) == 'client_ip')
clientIP = val.toLowerCase().split('=')[1];
if (val.toLowerCase().substring(0, 6) == 'plugin')
processorPlugin = val.toLowerCase().split('=')[1];
});
//SOME VALIDATION
if (isServer == false && serverPort == null)
{
console.log('please include the server_port= parameter');
process.exit(1);
}
if (isServer == false && processorPlugin == null)
{
processorPlugin = 'standard';
}
//check if our plugin exists
if (isServer == false)
{
try
{
var testPlugin = require('./plugins/' + processorPlugin);
}
catch(e)
{
console.log('No plugin file with the name ' + processorPlugin + ' exists');
process.exit(1);
}
}
if (isServer == false && serverIP == null)
{
console.log('please include the server_ip= parameter');
process.exit(1);
}
if (name == null)
{
console.log('please include the name= parameter');
process.exit(1);
}
var app = express();
//we need this to parse the body of the http request
app.use(express.bodyParser());
//do we want to use cookies
app.use(express.cookieParser());
//__dirname - global path to the directory the app is running in, so we can share our landing page
app.use(express.static(__dirname+'/public'));
// - we set up a route that catches all incoming posts and pass it to the controller
app.post('/:controller_method', controller.execute_post);
app.get('/:controller_method', controller.execute_get);
server = require('http').createServer(app);
server.listen(listenPort);
console.log('Hub node listening on port ' + listenPort);
var ip = server.address();
console.log('address: ' + ip);
console.log(ip);
if (isServer)
{
var io = require('socket.io').listen(server);
console.log('running as a server, socket.io is up');
io.sockets.on('connection', function (socket) {
server_helper.initializeSocket(socket);
});
}
else
{
var loadClient = function(address){
try
{
//we are running in client mode - lets register with the server
console.log('System in client mode - registering with server: ' + serverIP + ' over port ' + serverPort);
client_helper.register({name:name, port: listenPort, serverIP:serverIP, serverPort:serverPort, plugin:processorPlugin}, function(e, response){
if (!e)
console.log('registration successful');
else
console.log('registration failed: ' + e);
});
}
catch(e)
{
console.log('Client registration failed: ' + e);
}
}
if (clientIP == null)
client_helper.getLocalAddress(function(address){
loadClient(address);
});
else
loadClient(clientIP);
}
console.log('System started');