-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.js
67 lines (61 loc) · 1.79 KB
/
main.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
var package = require("./package.json");
var restify = require("restify");
var fs = require("fs");
var garage = require("./garage");
var proxy = require("./express-mjpeg-proxy").Proxy;
global.config = package.config; // Config is accessible from any module now
// Any console logs with have a timestamp prefix now
require("log-prefix")(function() {
var d = new Date();
return require("util").format("[%d/%d/%d %d:%d:%d] %%s",
d.getMonth() + 1, // 0 is January
d.getDate(),
d.getFullYear(),
d.getHours(),
d.getMinutes(),
d.getSeconds()
);
});
console.log("Establishing exit event handlers...");
process.on("uncaughtException", function(err) {
garage.unexportPins();
console.log("UNCAUGHT EXCEPTION!");
console.log(err.message);
console.log(err.stack);
process.exit(1);
});
process.on("SIGINT", function() {
garage.unexportPins();
console.log("Exiting.");
process.exit(0);
});
console.log("Creating server...");
try {
var server = restify.createServer({
"name": "Doorman v" + package.version,
"key": fs.readFileSync(global.config.SSL.key),
"certificate": fs.readFileSync(global.config.SSL.cert)
});
} catch (err) {
throw new Error("Couldn't create server: " + err.message);
}
console.log("Exporting pins...");
garage.unexportPins();
var result = garage.exportPins();
if (result !== true) {
throw new Error("Couldn't export pins: " + result);
}
console.log("Establishing paths...");
server.use(garage.authenticate);
server.get("/", function(req, res, next) {
res.setHeader("content-type", "application/json");
res.send(garage.metrics);
next();
});
server.get(garage.paths(), garage.toggle);
var url = global.config["livestream-url"];
server.get("/cam", new proxy(url).requestHandler);
console.log("Launching server...");
server.listen(global.config.port, function() {
console.log("Server up");
});