Changeset View
Changeset View
Standalone View
Standalone View
support/aphlict/server/aphlict_server.js
| Show First 20 Lines • Show All 93 Lines • ▼ Show 20 Lines | var ssl_config = { | ||||
| enabled: (config['ssl-key'] || config['ssl-cert']) | enabled: (config['ssl-key'] || config['ssl-cert']) | ||||
| }; | }; | ||||
| // Load the SSL certificates (if any were provided) now, so that runs with | // Load the SSL certificates (if any were provided) now, so that runs with | ||||
| // `--test` will see any errors. | // `--test` will see any errors. | ||||
| if (ssl_config.enabled) { | if (ssl_config.enabled) { | ||||
| ssl_config.key = fs.readFileSync(config['ssl-key']); | ssl_config.key = fs.readFileSync(config['ssl-key']); | ||||
| ssl_config.cert = fs.readFileSync(config['ssl-cert']); | ssl_config.cert = fs.readFileSync(config['ssl-cert']); | ||||
| } else { | |||||
| ssl_config.key = null; | |||||
| ssl_config.cert = null; | |||||
| } | } | ||||
| var servers = []; | |||||
| servers.push({ | |||||
| type: 'client', | |||||
| port: config['client-port'], | |||||
| listen: config['client-host'], | |||||
| 'ssl.key': ssl_config.key, | |||||
| 'ssl.certificate': ssl_config.cert | |||||
| }); | |||||
| servers.push({ | |||||
| type: 'admin', | |||||
| port: config['admin-port'], | |||||
| listen: config['admin-host'], | |||||
| 'ssl.key': null, | |||||
| 'ssl.cert': null | |||||
| }); | |||||
| // If we're just doing a configuration test, exit here before starting any | // If we're just doing a configuration test, exit here before starting any | ||||
| // servers. | // servers. | ||||
| if (config.test) { | if (config.test) { | ||||
| debug.log('Configuration test OK.'); | debug.log('Configuration test OK.'); | ||||
| set_exit_code(0); | set_exit_code(0); | ||||
| return; | return; | ||||
| } | } | ||||
| var server; | var aphlict_servers = []; | ||||
| if (ssl_config.enabled) { | var aphlict_clients = []; | ||||
| server = https.createServer({ | var aphlict_admins = []; | ||||
| key: ssl_config.key, | |||||
| cert: ssl_config.cert | var ii; | ||||
| }, function(req, res) { | for (ii = 0; ii < servers.length; ii++) { | ||||
| res.writeHead(501); | var server = servers[ii]; | ||||
| res.end('HTTP/501 Use Websockets\n'); | var is_client = (server.type == 'client'); | ||||
| }); | |||||
| var http_server; | |||||
| if (server['ssl.key']) { | |||||
| var https_config = { | |||||
| key: server['ssl.key'], | |||||
| cert: server['ssl.cert'] | |||||
| }; | |||||
| http_server = https.createServer(https_config); | |||||
| } else { | } else { | ||||
| server = http.createServer(function() {}); | http_server = http.createServer(); | ||||
| } | } | ||||
| var client_server = new JX.AphlictClientServer(server); | var aphlict_server; | ||||
| var admin_server = new JX.AphlictAdminServer(); | if (is_client) { | ||||
| aphlict_server = new JX.AphlictClientServer(http_server); | |||||
| } else { | |||||
| aphlict_server = new JX.AphlictAdminServer(http_server); | |||||
| } | |||||
| client_server.setLogger(debug); | aphlict_server.setLogger(debug); | ||||
| admin_server.setLogger(debug); | aphlict_server.listen(server.port, server.listen); | ||||
| admin_server.setClientServer(client_server); | |||||
| client_server.listen(config['client-port'], config['client-host']); | aphlict_servers.push(aphlict_server); | ||||
| admin_server.listen(config['admin-port'], config['admin-host']); | |||||
| if (is_client) { | |||||
| aphlict_clients.push(aphlict_server); | |||||
| } else { | |||||
| aphlict_admins.push(aphlict_server); | |||||
| } | |||||
| } | |||||
| for (ii = 0; ii < aphlict_admins.length; ii++) { | |||||
| var admin_server = aphlict_admins[ii]; | |||||
| admin_server.setClientServers(aphlict_clients); | |||||
| } | |||||
| debug.log('Started Server (PID %d)', process.pid); | debug.log('Started Server (PID %d)', process.pid); | ||||