From 9546c489cb1827e934b0a9955373d8b9449f99d6 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 21:34:52 +0000 Subject: [PATCH 01/23] Update install.sh --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index 0250e7b..3bafd52 100644 --- a/install.sh +++ b/install.sh @@ -1,5 +1,9 @@ #!/bin/bash +if [ -z "$PREFIX" ]; then + $PREFIX="" +fi + ############################### # # # http_get # From f6ef5bcad81f8d897efb9fe7124bb4702919d420 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 21:40:05 +0000 Subject: [PATCH 02/23] add comment --- install.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index 3bafd52..fac094d 100644 --- a/install.sh +++ b/install.sh @@ -1,9 +1,14 @@ #!/bin/bash +# something or other about android and tmux using PREFIX if [ -z "$PREFIX" ]; then $PREFIX="" fi +# Not every platform has or needs sudo, gotta save them O(1)s +sudo_cmd="" +((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo" + ############################### # # # http_get # @@ -58,10 +63,6 @@ detect_http_get # # ################### -# Not every platform has or needs sudo -sudo_cmd="" -((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo" - my_app_name=goldilocks my_app_pkg_name=com.daplie.goldilocks.web my_app_dir=$(mktemp -d) From c75a073ce4c1c98e994b27944e12dbef5017afb7 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 21:44:36 +0000 Subject: [PATCH 03/23] Update install.sh --- install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index fac094d..fc55a35 100644 --- a/install.sh +++ b/install.sh @@ -1,8 +1,9 @@ #!/bin/bash # something or other about android and tmux using PREFIX +#: "${PREFIX:=''}" if [ -z "$PREFIX" ]; then - $PREFIX="" + PREFIX="" fi # Not every platform has or needs sudo, gotta save them O(1)s From d71240a2227e411003e530ba04989ec071171619 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 21:47:31 +0000 Subject: [PATCH 04/23] use MY_ROOT in place of PREFIX --- install.sh | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/install.sh b/install.sh index fc55a35..e4302a7 100644 --- a/install.sh +++ b/install.sh @@ -2,11 +2,13 @@ # something or other about android and tmux using PREFIX #: "${PREFIX:=''}" -if [ -z "$PREFIX" ]; then - PREFIX="" +MY_ROOT="" +if [ -z "${PREFIX-}" ]; then + MY_ROOT="" +else + MY_ROOT="$PREFIX" fi - -# Not every platform has or needs sudo, gotta save them O(1)s +# Not every platform has or needs sudo, gotta save them O(1)s... sudo_cmd="" ((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo" @@ -79,14 +81,14 @@ install_for_systemd() echo "Installing as systemd service" echo "" dap_dl "$installer_base/$my_app_system_service" "$my_app_dir/$my_app_system_service" - $sudo_cmd mv "$my_app_dir/$my_app_system_service" "$PREFIX/$my_app_system_service" - $sudo_cmd chown -R root:root "$PREFIX/$my_app_system_service" - $sudo_cmd chmod 644 "$PREFIX/$my_app_system_service" + $sudo_cmd mv "$my_app_dir/$my_app_system_service" "$MY_ROOT/$my_app_system_service" + $sudo_cmd chown -R root:root "$MY_ROOT/$my_app_system_service" + $sudo_cmd chmod 644 "$MY_ROOT/$my_app_system_service" dap_dl "$installer_base/$my_app_system_tmpfiles" "$my_app_dir/$my_app_system_tmpfiles" - $sudo_cmd mv "$my_app_dir/$my_app_system_tmpfiles" "$PREFIX/$my_app_system_tmpfiles" - $sudo_cmd chown -R root:root "$PREFIX/$my_app_system_tmpfiles" - $sudo_cmd chmod 644 "$PREFIX/$my_app_system_tmpfiles" + $sudo_cmd mv "$my_app_dir/$my_app_system_tmpfiles" "$MY_ROOT/$my_app_system_tmpfiles" + $sudo_cmd chown -R root:root "$MY_ROOT/$my_app_system_tmpfiles" + $sudo_cmd chmod 644 "$MY_ROOT/$my_app_system_tmpfiles" $sudo_cmd systemctl stop "${my_app_name}.service" >/dev/null 2>/dev/null $sudo_cmd systemctl daemon-reload @@ -103,11 +105,11 @@ install_for_launchd() echo "" # See http://www.launchd.info/ dap_dl "$installer_base/$my_app_launchd_service" "$my_app_dir/$my_app_launchd_service" - $sudo_cmd mv "$my_app_dir/$my_app_launchd_service" "$PREFIX/$my_app_launchd_service" - $sudo_cmd chown root:wheel "$PREFIX/$my_app_launchd_service" - $sudo_cmd chmod 0644 "$PREFIX/$my_app_launchd_service" - $sudo_cmd launchctl unload -w "$PREFIX/$my_app_launchd_service" >/dev/null 2>/dev/null - $sudo_cmd launchctl load -w "$PREFIX/$my_app_launchd_service" + $sudo_cmd mv "$my_app_dir/$my_app_launchd_service" "$MY_ROOT/$my_app_launchd_service" + $sudo_cmd chown root:wheel "$MY_ROOT/$my_app_launchd_service" + $sudo_cmd chmod 0644 "$MY_ROOT/$my_app_launchd_service" + $sudo_cmd launchctl unload -w "$MY_ROOT/$my_app_launchd_service" >/dev/null 2>/dev/null + $sudo_cmd launchctl load -w "$MY_ROOT/$my_app_launchd_service" echo "$my_app_name started with launchd" } @@ -115,7 +117,7 @@ install_for_launchd() install_service() { installable="" - if [ -d "$PREFIX/etc/systemd/system" ]; then + if [ -d "$MY_ROOT/etc/systemd/system" ]; then install_for_systemd installable="true" fi From 569e3b02d28dd59fc370428d734b4a7b7d1aa5a9 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 21:56:40 +0000 Subject: [PATCH 05/23] set all variables properly and create paths correctly --- install.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/install.sh b/install.sh index e4302a7..d6db1b6 100644 --- a/install.sh +++ b/install.sh @@ -80,15 +80,17 @@ install_for_systemd() echo "" echo "Installing as systemd service" echo "" - dap_dl "$installer_base/$my_app_system_service" "$my_app_dir/$my_app_system_service" - $sudo_cmd mv "$my_app_dir/$my_app_system_service" "$MY_ROOT/$my_app_system_service" - $sudo_cmd chown -R root:root "$MY_ROOT/$my_app_system_service" - $sudo_cmd chmod 644 "$MY_ROOT/$my_app_system_service" + mkdir -p $(dirname "$my_app_dir/$my_app_systemd_service") + dap_dl "$installer_base/$my_app_systemd_service" "$my_app_dir/$my_app_systemd_service" + $sudo_cmd mv "$my_app_dir/$my_app_systemd_service" "$MY_ROOT/$my_app_systemd_service" + $sudo_cmd chown -R root:root "$MY_ROOT/$my_app_systemd_service" + $sudo_cmd chmod 644 "$MY_ROOT/$my_app_systemd_service" - dap_dl "$installer_base/$my_app_system_tmpfiles" "$my_app_dir/$my_app_system_tmpfiles" - $sudo_cmd mv "$my_app_dir/$my_app_system_tmpfiles" "$MY_ROOT/$my_app_system_tmpfiles" - $sudo_cmd chown -R root:root "$MY_ROOT/$my_app_system_tmpfiles" - $sudo_cmd chmod 644 "$MY_ROOT/$my_app_system_tmpfiles" + mkdir -p $(dirname "$my_app_dir/$my_app_systemd_tmpfiles") + dap_dl "$installer_base/$my_app_systemd_tmpfiles" "$my_app_dir/$my_app_systemd_tmpfiles" + $sudo_cmd mv "$my_app_dir/$my_app_systemd_tmpfiles" "$MY_ROOT/$my_app_systemd_tmpfiles" + $sudo_cmd chown -R root:root "$MY_ROOT/$my_app_systemd_tmpfiles" + $sudo_cmd chmod 644 "$MY_ROOT/$my_app_systemd_tmpfiles" $sudo_cmd systemctl stop "${my_app_name}.service" >/dev/null 2>/dev/null $sudo_cmd systemctl daemon-reload @@ -104,6 +106,7 @@ install_for_launchd() echo "Installing as launchd service" echo "" # See http://www.launchd.info/ + mkdir -p $(dirname "$my_app_dir/$my_app_launchd_service") dap_dl "$installer_base/$my_app_launchd_service" "$my_app_dir/$my_app_launchd_service" $sudo_cmd mv "$my_app_dir/$my_app_launchd_service" "$MY_ROOT/$my_app_launchd_service" $sudo_cmd chown root:wheel "$MY_ROOT/$my_app_launchd_service" From 5f97e1bd67c098b7cf4193066206e1f6e8e80806 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 21:58:18 +0000 Subject: [PATCH 06/23] Add empty goldilocks.yml --- etc/goldilocks/goldilocks.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 etc/goldilocks/goldilocks.yml diff --git a/etc/goldilocks/goldilocks.yml b/etc/goldilocks/goldilocks.yml new file mode 100644 index 0000000..e69de29 From 3a96004038ae60dbe15d3719dbe95a7df23203c1 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 16:34:03 -0600 Subject: [PATCH 07/23] rookie mistake: path.join should be path.resolve --- bin/goldilocks.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/goldilocks.js b/bin/goldilocks.js index 43f6627..dde578b 100755 --- a/bin/goldilocks.js +++ b/bin/goldilocks.js @@ -32,17 +32,17 @@ function readConfigAndRun(args) { var config; if (args.config) { - filename = path.join(cwd, args.config); + filename = path.resolve(cwd, args.config); text = fs.readFileSync(filename, 'utf8'); } else { - filename = path.join(cwd, 'goldilocks.yml'); + filename = path.resolve(cwd, 'goldilocks.yml'); if (fs.existsSync(filename)) { text = fs.readFileSync(filename, 'utf8'); } else { - filename = path.join(cwd, 'goldilocks.json'); + filename = path.resolve(cwd, 'goldilocks.json'); if (fs.existsSync(filename)) { text = fs.readFileSync(filename, 'utf8'); } else { From ed9ed3d21bdf988836f40a8d34fc783cba00cffa Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 16:34:23 -0600 Subject: [PATCH 08/23] v2.2.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b26bcd1..a7d39ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "goldilocks", - "version": "2.2.0", + "version": "2.2.1", "description": "The node.js webserver that's just right, Greenlock (HTTPS/TLS/SSL via ACME/Let's Encrypt) and tunneling (RVPN) included.", "main": "bin/goldilocks.js", "repository": { From 5451cbb4dae90e3dd5834354b33be3c86c2bde56 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 16:35:24 -0600 Subject: [PATCH 09/23] v1.0.0-placeholder --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a7d39ff..197b0d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "goldilocks", - "version": "2.2.1", + "version": "1.0.0-placeholder", "description": "The node.js webserver that's just right, Greenlock (HTTPS/TLS/SSL via ACME/Let's Encrypt) and tunneling (RVPN) included.", "main": "bin/goldilocks.js", "repository": { From 1bdcd73d28974ebccea8e62734105065e932bb38 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 16:50:41 -0600 Subject: [PATCH 10/23] download etc config --- install.sh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index d6db1b6..78759e3 100644 --- a/install.sh +++ b/install.sh @@ -71,6 +71,7 @@ my_app_pkg_name=com.daplie.goldilocks.web my_app_dir=$(mktemp -d) installer_base="https://git.daplie.com/Daplie/goldilocks.js/raw/master" +my_app_etc_config="etc/${my_app_name}/${my_app_name}.yml" my_app_systemd_service="etc/systemd/system/${my_app_name}.service" my_app_systemd_tmpfiles="etc/tmpfiles.d/${my_app_name}.conf" my_app_launchd_service="Library/LaunchDaemons/${my_app_pkg_name}.plist" @@ -117,8 +118,23 @@ install_for_launchd() echo "$my_app_name started with launchd" } +install_etc_config() +{ + if [ ! -e "$MY_ROOT/$my_app_etc_config" ]; then + mkdir -p $(basename "$MY_ROOT/$my_app_etc_config") + dap_dl "$installer_base/$my_app_etc_config" "$my_app_dir/$my_app_etc_config" + $sudo_cmd mv "$my_app_dir/$my_app_etc_config" "$MY_ROOT/$my_app_etc_config" + fi + + $sudo_cmd chown -R www-data:www-data $(basename "$MY_ROOT/$my_app_etc_config") + $sudo_cmd chmod 775 $(basename "$MY_ROOT/$my_app_etc_config") + $sudo_cmd chmod 664 "$MY_ROOT/$my_app_etc_config" +} + install_service() { + install_etc_config + installable="" if [ -d "$MY_ROOT/etc/systemd/system" ]; then install_for_systemd @@ -150,4 +166,4 @@ dap_dl_bash "https://git.daplie.com/coolaj86/node-install-script/raw/master/setu npm install -g 'git+https://git@git.daplie.com/Daplie/goldilocks.js.git#v1' # Install Service -install_service \ No newline at end of file +install_service From dad2e66f525c098930370c0a3f5cefa42a29d830 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 17:01:59 -0600 Subject: [PATCH 11/23] allow empty config file --- bin/goldilocks.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/goldilocks.js b/bin/goldilocks.js index dde578b..3a3403d 100755 --- a/bin/goldilocks.js +++ b/bin/goldilocks.js @@ -56,6 +56,10 @@ function readConfigAndRun(args) { } catch(e) { try { config = require('js-yaml').safeLoad(text); + // blank config file + if ('undefined' === typeof config) { + config = {}; + } } catch(e) { throw new Error( "Could not load '" + filename + "' as JSON nor YAML" From 953bdda67ea2edf23f4e3246d7c397cc09efe5b2 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 17:04:36 -0600 Subject: [PATCH 12/23] correct basename -> dirname --- install.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index 78759e3..6b84685 100644 --- a/install.sh +++ b/install.sh @@ -98,7 +98,9 @@ install_for_systemd() $sudo_cmd systemctl start "${my_app_name}.service" $sudo_cmd systemctl enable "${my_app_name}.service" - echo "$my_app_name started with systemctl" + echo "$my_app_name started with systemctl, check its status like so" + echo " $sudo_cmd systemctl status $my_app_name" + echo " $sudo_cmd journalctl -xe" } install_for_launchd() @@ -121,13 +123,14 @@ install_for_launchd() install_etc_config() { if [ ! -e "$MY_ROOT/$my_app_etc_config" ]; then - mkdir -p $(basename "$MY_ROOT/$my_app_etc_config") + $sudo_cmd mkdir -p $(dirname "$MY_ROOT/$my_app_etc_config") + mkdir -p $(dirname "$my_app_dir/$my_app_etc_config") dap_dl "$installer_base/$my_app_etc_config" "$my_app_dir/$my_app_etc_config" $sudo_cmd mv "$my_app_dir/$my_app_etc_config" "$MY_ROOT/$my_app_etc_config" fi - $sudo_cmd chown -R www-data:www-data $(basename "$MY_ROOT/$my_app_etc_config") - $sudo_cmd chmod 775 $(basename "$MY_ROOT/$my_app_etc_config") + $sudo_cmd chown -R www-data:www-data $(dirname "$MY_ROOT/$my_app_etc_config") + $sudo_cmd chmod 775 $(dirname "$MY_ROOT/$my_app_etc_config") $sudo_cmd chmod 664 "$MY_ROOT/$my_app_etc_config" } From 0187114160df6ca2005f50d57c5bcea1a2bb2588 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 9 May 2017 01:08:36 +0000 Subject: [PATCH 13/23] Update goldilocks.service --- etc/systemd/system/goldilocks.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/systemd/system/goldilocks.service b/etc/systemd/system/goldilocks.service index 44676ea..da32141 100644 --- a/etc/systemd/system/goldilocks.service +++ b/etc/systemd/system/goldilocks.service @@ -27,7 +27,7 @@ Group=www-data # Set a sane working directory, sane flags, and specify how to reload the config file WorkingDirectory=/srv/www -ExecStart=/usr/local/bin/goldilocks --config /etc/goldilocks/goldilocks.yml +ExecStart=/usr/local/bin/node /usr/local/bin/goldilocks --config /etc/goldilocks/goldilocks.yml ExecReload=/bin/kill -USR1 $MAINPID # Limit the number of file descriptors and processes; see `man systemd.exec` for more limit settings. From 388733568d2a1e7421a872336cfe9d283ba5a7a6 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 9 May 2017 01:27:37 +0000 Subject: [PATCH 14/23] create directories that may not exist --- install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/install.sh b/install.sh index 6b84685..d5df59d 100644 --- a/install.sh +++ b/install.sh @@ -168,5 +168,11 @@ dap_dl_bash "https://git.daplie.com/coolaj86/node-install-script/raw/master/setu # Install npm install -g 'git+https://git@git.daplie.com/Daplie/goldilocks.js.git#v1' +# Set perms +$sudo_cmd mkdir -p /srv/www +$sudo_cmd mkdir -p /etc/goldilocks +$sudo_cmd mkdir -p /var/log/goldilocks +$sudo_cmd mkdir -p /opt/goldilocks + # Install Service install_service From ea3506c352ee8354268a320f417998380d9c5a70 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 9 May 2017 01:29:23 +0000 Subject: [PATCH 15/23] fix #18 use node binary and don't list files and dirs that don't exist --- etc/systemd/system/goldilocks.service | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/etc/systemd/system/goldilocks.service b/etc/systemd/system/goldilocks.service index da32141..12e8a39 100644 --- a/etc/systemd/system/goldilocks.service +++ b/etc/systemd/system/goldilocks.service @@ -23,7 +23,7 @@ User=www-data Group=www-data # If we need to pass environment variables in the future -; Environment=GOLDILOCKS_PATH=/opt/goldilocks +Environment=GOLDILOCKS_PATH=/srv/www # Set a sane working directory, sane flags, and specify how to reload the config file WorkingDirectory=/srv/www @@ -46,11 +46,12 @@ ProtectSystem=full # … except TLS/SSL, ACME, and Let's Encrypt certificates # and /var/log/goldilocks, because we want a place where logs can go. # This merely retains r/w access rights, it does not add any new. Must still be writable on the host! -ReadWriteDirectories=/etc/goldilocks /etc/acme /etc/letsencrypt /etc/ssl /var/log/goldilocks /opt/goldilocks /srv/www +ReadWriteDirectories=/etc/goldilocks /etc/ssl /srv/www /var/log/goldilocks +# you may also want to add other directories such as /opt/goldilocks /etc/acme /etc/letsencrypt # Note: in v231 and above ReadWritePaths has been renamed to ReadWriteDirectories ; ReadWritePaths=/etc/goldilocks /var/log/goldilocks -; + # The following additional security directives only work with systemd v229 or later. # They further retrict privileges that can be gained. # Note that you may have to add capabilities required by any plugins in use. @@ -65,4 +66,4 @@ NoNewPrivileges=true ; NoNewPrivileges=true [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target \ No newline at end of file From 5af64078ce5484bc2187d4d1b2baeb2ebaf7a572 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 9 May 2017 01:39:45 +0000 Subject: [PATCH 16/23] Update journalctl for systemd --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index d5df59d..8cc18be 100644 --- a/install.sh +++ b/install.sh @@ -100,7 +100,7 @@ install_for_systemd() echo "$my_app_name started with systemctl, check its status like so" echo " $sudo_cmd systemctl status $my_app_name" - echo " $sudo_cmd journalctl -xe" + echo " $sudo_cmd journalctl -xe -u goldilocks" } install_for_launchd() From b57b18f5ed08a6f5c5fd7595ab40554adbad7d0e Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 19:52:34 -0600 Subject: [PATCH 17/23] whitespace --- etc/systemd/system/goldilocks.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/systemd/system/goldilocks.service b/etc/systemd/system/goldilocks.service index 12e8a39..640dadc 100644 --- a/etc/systemd/system/goldilocks.service +++ b/etc/systemd/system/goldilocks.service @@ -66,4 +66,4 @@ NoNewPrivileges=true ; NoNewPrivileges=true [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=multi-user.target From e70da5af223c027e719017a1703d2164fc44be24 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 20:06:25 -0600 Subject: [PATCH 18/23] update with uninstaller --- install.sh | 6 ++++++ uninstall.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 uninstall.sh diff --git a/install.sh b/install.sh index 8cc18be..573abe0 100644 --- a/install.sh +++ b/install.sh @@ -168,6 +168,12 @@ dap_dl_bash "https://git.daplie.com/coolaj86/node-install-script/raw/master/setu # Install npm install -g 'git+https://git@git.daplie.com/Daplie/goldilocks.js.git#v1' +# Unistall +dap_dl "https://git.daplie.com/Daplie/goldilocks.js/raw/master/uninstall.sh" "./goldilocks-uninstall.sh" +$sudo_cmd chmod 755 "./goldilocks-uninstall.sh" +$sudo_cmd chown root:root "./goldilocks-uninstall.sh" +$sudo_cmd mv "./goldilocks-uninstall.sh" "/usr/local/bin/" + # Set perms $sudo_cmd mkdir -p /srv/www $sudo_cmd mkdir -p /etc/goldilocks diff --git a/uninstall.sh b/uninstall.sh new file mode 100644 index 0000000..189c8b3 --- /dev/null +++ b/uninstall.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# something or other about android and tmux using PREFIX +#: "${PREFIX:=''}" +MY_ROOT="" +if [ -z "${PREFIX-}" ]; then + MY_ROOT="" +else + MY_ROOT="$PREFIX" +fi +# Not every platform has or needs sudo, gotta save them O(1)s... +sudo_cmd="" +((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo" + +# you don't want any oopsies when an rm -rf is involved... +set -e +set -u + +my_app_name=goldilocks +my_app_pkg_name=com.daplie.goldilocks.web + +my_app_etc_config="etc/${my_app_name}/${my_app_name}.yml" +my_app_systemd_service="etc/systemd/system/${my_app_name}.service" +my_app_systemd_tmpfiles="etc/tmpfiles.d/${my_app_name}.conf" +my_app_launchd_service="Library/LaunchDaemons/${my_app_pkg_name}.plist" +my_app_upstart_service="etc/init.d/${my_app_name}.conf" + + +$sudo_cmd rm -f /usr/local/bin/goldilocks +$sudo_cmd rm -rf /usr/local/lib/node_modules/goldilocks + +$sudo_cmd rm -f "$MY_ROOT/$my_app_etc_config" +$sudo_cmd rmdir -p $(dirname "$MY_ROOT/$my_app_etc_config") +$sudo_cmd rm -f "$MY_ROOT/$my_app_systemd_service" +$sudo_cmd rm -f "$MY_ROOT/$my_app_systemd_tmpfiles" +$sudo_cmd rm -f "$MY_ROOT/$my_app_launchd_service" +$sudo_cmd rm -f "$MY_ROOT/$my_app_upstart_service" + +$sudo_cmd rm -rf /opt/$my_app_name +$sudo_cmd rm -rf /var/log/$my_app_name + +# TODO flag for --purge +#rm -rf /etc/goldilocks From c7924ca164daa251aae929cbe7395e7655879c82 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 20:08:25 -0600 Subject: [PATCH 19/23] rename goldilocks-uninstall -> uninstall-goldilocks --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index 573abe0..e524083 100644 --- a/install.sh +++ b/install.sh @@ -169,10 +169,10 @@ dap_dl_bash "https://git.daplie.com/coolaj86/node-install-script/raw/master/setu npm install -g 'git+https://git@git.daplie.com/Daplie/goldilocks.js.git#v1' # Unistall -dap_dl "https://git.daplie.com/Daplie/goldilocks.js/raw/master/uninstall.sh" "./goldilocks-uninstall.sh" -$sudo_cmd chmod 755 "./goldilocks-uninstall.sh" -$sudo_cmd chown root:root "./goldilocks-uninstall.sh" -$sudo_cmd mv "./goldilocks-uninstall.sh" "/usr/local/bin/" +dap_dl "https://git.daplie.com/Daplie/goldilocks.js/raw/master/uninstall.sh" "./goldilocks-uninstall" +$sudo_cmd chmod 755 "./goldilocks-uninstall" +$sudo_cmd chown root:root "./goldilocks-uninstall" +$sudo_cmd mv "./goldilocks-uninstall" "/usr/local/bin/uninstall-goldilocks" # Set perms $sudo_cmd mkdir -p /srv/www From b14c90501ba27cdfa48c0f2675a73dcdafe08607 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 20:09:15 -0600 Subject: [PATCH 20/23] ignore failure to remove full parent path --- uninstall.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uninstall.sh b/uninstall.sh index 189c8b3..315955c 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -30,7 +30,7 @@ $sudo_cmd rm -f /usr/local/bin/goldilocks $sudo_cmd rm -rf /usr/local/lib/node_modules/goldilocks $sudo_cmd rm -f "$MY_ROOT/$my_app_etc_config" -$sudo_cmd rmdir -p $(dirname "$MY_ROOT/$my_app_etc_config") +$sudo_cmd rmdir -p $(dirname "$MY_ROOT/$my_app_etc_config") 2>/dev/null $sudo_cmd rm -f "$MY_ROOT/$my_app_systemd_service" $sudo_cmd rm -f "$MY_ROOT/$my_app_systemd_tmpfiles" $sudo_cmd rm -f "$MY_ROOT/$my_app_launchd_service" From 0b877f9c9c0ca91b163ccdcfd4e33e73e8bc57ba Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 20:11:06 -0600 Subject: [PATCH 21/23] print when complete --- uninstall.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/uninstall.sh b/uninstall.sh index 315955c..7997124 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -30,7 +30,7 @@ $sudo_cmd rm -f /usr/local/bin/goldilocks $sudo_cmd rm -rf /usr/local/lib/node_modules/goldilocks $sudo_cmd rm -f "$MY_ROOT/$my_app_etc_config" -$sudo_cmd rmdir -p $(dirname "$MY_ROOT/$my_app_etc_config") 2>/dev/null +$sudo_cmd rmdir -p $(dirname "$MY_ROOT/$my_app_etc_config") 2>/dev/null || true $sudo_cmd rm -f "$MY_ROOT/$my_app_systemd_service" $sudo_cmd rm -f "$MY_ROOT/$my_app_systemd_tmpfiles" $sudo_cmd rm -f "$MY_ROOT/$my_app_launchd_service" @@ -41,3 +41,7 @@ $sudo_cmd rm -rf /var/log/$my_app_name # TODO flag for --purge #rm -rf /etc/goldilocks + +# TODO trap uninstall function + +echo "uninstall complete: $my_app_name" From 569b2c49c24859897165b64b78f6005a03c8e1a2 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 8 May 2017 20:12:12 -0600 Subject: [PATCH 22/23] uninstall uninstaller, duh --- uninstall.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/uninstall.sh b/uninstall.sh index 7997124..a577bec 100644 --- a/uninstall.sh +++ b/uninstall.sh @@ -27,6 +27,7 @@ my_app_upstart_service="etc/init.d/${my_app_name}.conf" $sudo_cmd rm -f /usr/local/bin/goldilocks +$sudo_cmd rm -f /usr/local/bin/uninstall-goldilocks $sudo_cmd rm -rf /usr/local/lib/node_modules/goldilocks $sudo_cmd rm -f "$MY_ROOT/$my_app_etc_config" From b1c1aba7a5993e49f273f6d3cb9d85b285cd9448 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 9 May 2017 10:26:20 -0600 Subject: [PATCH 23/23] add node as first argument --- Library/LaunchDaemons/com.daplie.goldilocks.web.plist | 1 + 1 file changed, 1 insertion(+) diff --git a/Library/LaunchDaemons/com.daplie.goldilocks.web.plist b/Library/LaunchDaemons/com.daplie.goldilocks.web.plist index 8dab4cd..6746afe 100644 --- a/Library/LaunchDaemons/com.daplie.goldilocks.web.plist +++ b/Library/LaunchDaemons/com.daplie.goldilocks.web.plist @@ -6,6 +6,7 @@ Goldilocks ProgramArguments + /usr/local/bin/node /usr/local/bin/goldilocks --config /etc/goldilocks/goldilocks.yml