forked from coolaj86/goldilocks.js
		
	Merge branch 'master' into forwarding
This commit is contained in:
		
						commit
						b3b407d161
					
				@ -6,6 +6,7 @@
 | 
			
		||||
	<string>Goldilocks</string>
 | 
			
		||||
	<key>ProgramArguments</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<string>/usr/local/bin/node</string>
 | 
			
		||||
		<string>/usr/local/bin/goldilocks</string>
 | 
			
		||||
		<string>--config</string>
 | 
			
		||||
		<string>/etc/goldilocks/goldilocks.yml</string>
 | 
			
		||||
 | 
			
		||||
@ -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 {
 | 
			
		||||
@ -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"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										0
									
								
								etc/goldilocks/goldilocks.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								etc/goldilocks/goldilocks.yml
									
									
									
									
									
										Normal file
									
								
							@ -23,11 +23,11 @@ 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
 | 
			
		||||
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.
 | 
			
		||||
@ -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.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										82
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										82
									
								
								install.sh
									
									
									
									
									
								
							@ -1,5 +1,17 @@
 | 
			
		||||
#!/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"
 | 
			
		||||
 | 
			
		||||
###############################
 | 
			
		||||
#                             #
 | 
			
		||||
#         http_get            #
 | 
			
		||||
@ -54,15 +66,12 @@ 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)
 | 
			
		||||
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"
 | 
			
		||||
@ -72,22 +81,26 @@ 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" "$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"
 | 
			
		||||
  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" "$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"
 | 
			
		||||
  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
 | 
			
		||||
  $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 -u goldilocks"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
install_for_launchd()
 | 
			
		||||
@ -96,20 +109,37 @@ 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" "$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"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
install_etc_config()
 | 
			
		||||
{
 | 
			
		||||
  if [ ! -e "$MY_ROOT/$my_app_etc_config" ]; then
 | 
			
		||||
    $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 $(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"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
install_service()
 | 
			
		||||
{
 | 
			
		||||
  install_etc_config
 | 
			
		||||
 | 
			
		||||
  installable=""
 | 
			
		||||
  if [ -d "$PREFIX/etc/systemd/system" ]; then
 | 
			
		||||
  if [ -d "$MY_ROOT/etc/systemd/system" ]; then
 | 
			
		||||
    install_for_systemd
 | 
			
		||||
    installable="true"
 | 
			
		||||
  fi
 | 
			
		||||
@ -138,5 +168,17 @@ 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"
 | 
			
		||||
$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
 | 
			
		||||
$sudo_cmd mkdir -p /etc/goldilocks
 | 
			
		||||
$sudo_cmd mkdir -p /var/log/goldilocks
 | 
			
		||||
$sudo_cmd mkdir -p /opt/goldilocks
 | 
			
		||||
 | 
			
		||||
# Install Service
 | 
			
		||||
install_service
 | 
			
		||||
install_service
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "goldilocks",
 | 
			
		||||
  "version": "2.2.0",
 | 
			
		||||
  "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": {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										48
									
								
								uninstall.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								uninstall.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,48 @@
 | 
			
		||||
#!/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 -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"
 | 
			
		||||
$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"
 | 
			
		||||
$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
 | 
			
		||||
 | 
			
		||||
# TODO trap uninstall function
 | 
			
		||||
 | 
			
		||||
echo "uninstall complete: $my_app_name"
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user