From eb27cde8c0c91de01199ec4ac27dc928f8b39d8d Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Thu, 28 Jun 2018 01:53:03 -0600 Subject: [PATCH] bugfixes and cleanup --- bin/telebitd.js | 4 +++- usr/share/install-launcher.js | 25 +++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/bin/telebitd.js b/bin/telebitd.js index 7087c1e..4a24e48 100755 --- a/bin/telebitd.js +++ b/bin/telebitd.js @@ -699,7 +699,9 @@ function sigHandler() { if (tun) { tun.end(); } - controlServer.close(); + if (controlServer) { + controlServer.close(); + } } // reverse 2FA otp diff --git a/usr/share/install-launcher.js b/usr/share/install-launcher.js index 7d1c343..224546c 100644 --- a/usr/share/install-launcher.js +++ b/usr/share/install-launcher.js @@ -28,7 +28,7 @@ Launcher.install = function (things, fn) { , telebitUser: os.userInfo().username , telebitGroup: (/^darwin/i.test(os.platform()) ? 'staff' : os.userInfo().username) , telebitRwDirs: [ - path.resolve(__dirname, '../..') + telebitRoot , path.join(os.homedir(), '.config/telebit') , path.join(os.homedir(), '.local/share/telebit') ] @@ -72,10 +72,11 @@ Launcher.install = function (things, fn) { var stdout = fs.openSync(path.join(logpath, 'info.log'), 'a'); var stderr = fs.openSync(path.join(logpath, 'error.log'), 'a'); + var killed = 0; var err; var subprocess = spawn( vars.telebitNode - , [ path.join(__dirname, '../../bin/telebitd.js') + , [ path.join(telebitRoot, 'bin/telebitd.js') , 'daemon' , '--config' , vars.telebitdConfig @@ -87,16 +88,15 @@ Launcher.install = function (things, fn) { subprocess.unref(); subprocess.on('error', function (_err) { err = _err; + killed += 1; }); subprocess.on('exit', function (code, signal) { if (!err) { err = new Error('' + code + ' ' + signal + ' failure to launch'); } + killed += 1; }); setTimeout(function () { - if (fn) { - fn(err); - return; - } + if (fn) { fn(null); return; } }, 1 * 1000); return; } @@ -145,6 +145,7 @@ Launcher.install = function (things, fn) { } , 'systemctl': function () { var launcher = path.join(os.homedir(), '.config/systemd/user/telebit.service'); + var launchername = 'telebit.service'; try { mkdirp.sync(path.join(os.homedir(), '.config/systemd/user')); installLauncher({ @@ -154,16 +155,20 @@ Launcher.install = function (things, fn) { } , vars: vars }, function () { + // IMPORTANT + // It's a dangerous to go alone, take this: + // SYSTEMD_LOG_LEVEL=debug journalctl -xef --user-unit=telebit + // (makes debugging systemd issues not "easy" per se, but possible) var launcherstr = (vars.userspace ? "" : "sudo ") + "systemctl " + (vars.userspace ? "--user " : ""); exec(launcherstr + "daemon-reload", things._execOpts, function (err, stdout, stderr) { err = getError(err, stderr); if (err) { fn(err); return; } //console.log((stdout||'').trim()); - exec(launcherstr + "enable " + launcher, things._execOpts, function (err, stdout, stderr) { + exec(launcherstr + "enable " + launchername, things._execOpts, function (err, stdout, stderr) { err = getError(err, stderr); if (err) { fn(err); return; } //console.log((stdout||'').trim()); - exec(launcherstr + "restart " + launcher, things._execOpts, function (err, stdout, stderr) { + exec(launcherstr + "restart " + launchername, things._execOpts, function (err, stdout, stderr) { err = getError(err, stderr); if (err) { fn(err); return; } //console.log((stdout||'').trim()); @@ -235,12 +240,12 @@ Launcher.install = function (things, fn) { // os.platform(), os.type() if (!/^win/i.test(os.platform())) { if (/^darwin/i.test(os.platform())) { - exec('type -p launchctl', things._execOpts, function (err, stdout, stderr) { + exec('command -v launchctl', things._execOpts, function (err, stdout, stderr) { err = getError(err, stderr); run(err, 'launchctl'); }); } else { - exec('type -p systemctl', things._execOpts, function (err, stdout, stderr) { + exec('command -v systemctl', things._execOpts, function (err, stdout, stderr) { err = getError(err, stderr); run(err, 'systemctl'); });