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); |