mirror of
https://github.com/mtan93/homebridge.git
synced 2026-03-08 05:31:55 +00:00
For now we terminate the process, but in the future we may tell the server to stop, which may possibly include some teardown logic. Handling these signals also make it easier to put Homebridge inside a docker container, as docker uses SIGTERM to tell a container process to stop, and passes SIGINT when attached to the container and receiving a Ctrl+C.
40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
var program = require('commander');
|
|
var hap = require("hap-nodejs");
|
|
var version = require('./version');
|
|
var Server = require('./server').Server;
|
|
var Plugin = require('./plugin').Plugin;
|
|
var User = require('./user').User;
|
|
var log = require("./logger")._system;
|
|
|
|
'use strict';
|
|
|
|
module.exports = function() {
|
|
|
|
var insecureAccess = false;
|
|
|
|
program
|
|
.version(version)
|
|
.option('-P, --plugin-path [path]', 'look for plugins installed at [path] as well as the default locations ([path] can also point to a single plugin)', function(p) { Plugin.addPluginPath(p); })
|
|
.option('-U, --user-storage-path [path]', 'look for homebridge user files at [path] instead of the default location (~/.homebridge)', function(p) { User.setStoragePath(p); })
|
|
.option('-D, --debug', 'turn on debug level logging', function() { require('./logger').setDebugEnabled(true) })
|
|
.option('-I, --insecure', 'allow unauthenticated requests (for easier hacking)', function() { insecureAccess = true })
|
|
.parse(process.argv);
|
|
|
|
// Initialize HAP-NodeJS with a custom persist directory
|
|
hap.init(User.persistPath());
|
|
|
|
var server = new Server(insecureAccess);
|
|
|
|
var signals = { 'SIGINT': 2, 'SIGTERM': 15 };
|
|
Object.keys(signals).forEach(function (signal) {
|
|
process.on(signal, function () {
|
|
log.info("Got %s, shutting down Homebridge...", signal);
|
|
|
|
// FIXME: Shut down server cleanly
|
|
process.exit(128 + signals[signal]);
|
|
});
|
|
});
|
|
|
|
server.run();
|
|
}
|