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