forked from jadonk/bonescript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
85 lines (75 loc) · 2.71 KB
/
Copy pathserver.js
File metadata and controls
85 lines (75 loc) · 2.71 KB
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
// Copyright (C) 2011 - Texas Instruments, Jason Kridner
//
//
var fs = require('fs');
var http = require('http');
var winston = require('winston');
var express = require('express');
var events = require('events');
var crypto = require('crypto');
var socketHandlers = require('./socket_handlers');
var serverEmitter = new events.EventEmitter();
var debug = process.env.DEBUG ? true : false;
myrequire('systemd', function () {
if (debug) winston.debug("Startup as socket-activated service under systemd not enabled");
});
var serverStart = function (port, directory, passphrase, callback) {
if (port === undefined) {
port = (process.env.LISTEN_PID > 0) ? 'systemd' : ((process.env.PORT) ? process.env.PORT : 80);
}
if (directory === undefined) {
directory = (process.env.SERVER_DIR) ? process.env.SERVER_DIR : '/usr/share/bone101';
}
var passphrase_hash;
if (passphrase) {
if (passphrase.hash) //whether passphrase supplied as hash/text
passphrase_hash = passphrase.data;
else
passphrase_hash = crypto.createHash('sha256').update(passphrase.data).digest("hex"); //generate hash
}
var server = mylisten(port, directory, passphrase_hash);
serverEmitter.on('newListner', addServerListener);
function addServerListener(event, listener) {
console.log('got here'); //TODO: not getting here
if (debug) winston.debug('Got request to add listener to ' + event);
var serverEvent = event.replace(/^server\$/, '');
if (serverEvent) {
if (debug) winston.debug('Adding listener to server$' + serverEvent);
server.on(serverEvent, listener);
}
}
if (callback) {
callback({
server: server,
serverEmitter: serverEmitter
});
}
return (serverEmitter);
};
function mylisten(port, directory, passphrase_hash) {
winston.info("Opening port " + port + " to serve up " + directory);
var app = express();
app.get('/bonescript.js', socketHandlers.socketJSReqHandler);
app.use('/bone101', express.static(directory));
app.use('/bone101/static', express.static(directory + "/static"));
app.use(express.static(directory));
var server = http.createServer(app);
socketHandlers.addSocketListeners(server, serverEmitter, passphrase_hash);
server.listen(port);
return (server);
}
function myrequire(packageName, onfail) {
var y = {};
try {
y = require(packageName);
y.exists = true;
} catch (ex) {
y.exists = false;
if (debug) winston.debug("Optional package '" + packageName + "' not loaded");
if (onfail) onfail();
}
return (y);
}
module.exports = {
serverStart: serverStart
}