diff --git a/conf/init.syncthing b/conf/init.syncthing deleted file mode 100644 index 49a0a1d..0000000 --- a/conf/init.syncthing +++ /dev/null @@ -1,162 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: skeleton -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Example initscript -# Description: This file should be used to construct scripts to be -# placed in /etc/init.d. -### END INIT INFO - -# Author: Foo Bar -# -# Please remove the "Author" lines above and replace them -# with your own name if you copy and modify this script. - -# Do NOT "set -e" - -# PATH should only include /usr/* if it runs after the mountnfs.sh script -PATH=/sbin:/usr/sbin:/bin:/usr/bin -DESC="Syncthing daemonisation service" -NAME=syncthing -DAEMON=/usr/bin/$NAME -GUIADDRESS="GUIADDRESSTOCHANGE" -DAEMON_ARGS=" -gui-address="$GUIADDRESS" & " -PIDFILE=/var/run/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME -DAEMONUSER=debian-syncthing -LOGFILE=/var/log/$NAME.log - -# Exit if the package is not installed -[ -x "$DAEMON" ] || exit 0 - -# Read configuration variable file if it is present -[ -r /etc/default/$NAME ] && . /etc/default/$NAME - -# Load the VERBOSE setting and other rcS variables -. /lib/init/vars.sh - -# Define LSB log_* functions. -# Depend on lsb-base (>= 3.2-14) to ensure that this file is present -# and status_of_proc is working. -. /lib/lsb/init-functions - -# -# Function that starts the daemon/service -# -do_start() -{ - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - start-stop-daemon --start --quiet --chuid $DAEMONUSER --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ - || return 1 - start-stop-daemon --start --quiet --chuid $DAEMONUSER --pidfile $PIDFILE --make-pidfile --exec $DAEMON -- \ - $DAEMON_ARGS >> $LOGFILE 2>&1 \ - || return 2 & - # Add code here, if necessary, that waits for the process to be ready - # to handle requests from services started subsequently which depend - # on this one. As a last resort, sleep for some time. -} - -# -# Function that stops the daemon/service -# -do_stop() -{ - # Return - # 0 if daemon has been stopped - # 1 if daemon was already stopped - # 2 if daemon could not be stopped - # other if a failure occurred - start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME - RETVAL="$?" - [ "$RETVAL" = 2 ] && return 2 - # Wait for children to finish too if this is a daemon that forks - # and if the daemon is only ever run from this initscript. - # If the above conditions are not satisfied then add some other code - # that waits for the process to drop all resources that could be - # needed by services started subsequently. A last resort is to - # sleep for some time. - start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON - [ "$?" = 2 ] && return 2 - # Many daemons don't delete their pidfiles when they exit. - rm -f $PIDFILE - return "$RETVAL" -} - -# -# Function that sends a SIGHUP to the daemon/service -# -do_reload() { - # - # If the daemon can reload its configuration without - # restarting (for example, when it is sent a SIGHUP), - # then implement that here. - # - start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME - return 0 -} - -case "$1" in - start) - [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" - do_start - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac - ;; - stop) - [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac - ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - #reload|force-reload) - # - # If do_reload() is not implemented then leave this commented out - # and leave 'force-reload' as an alias for 'restart'. - # - #log_daemon_msg "Reloading $DESC" "$NAME" - #do_reload - #log_end_msg $? - #;; - restart|force-reload) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # - log_daemon_msg "Restarting $DESC" "$NAME" - do_stop - case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 - ;; - esac - ;; - *) - #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 - exit 3 - ;; -esac - - diff --git a/conf/logrotate.conf b/conf/logrotate.conf index 514f203..0e3846b 100644 --- a/conf/logrotate.conf +++ b/conf/logrotate.conf @@ -8,7 +8,7 @@ compress delaycompress postrotate - invoke-rc.d syncthing restart > /dev/null + systemctl restart syncthing > /dev/null endscript } diff --git a/conf/nginx.conf b/conf/nginx.conf index c769938..49486de 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,7 +1,10 @@ location PATHTOCHANGE/ { - proxy_pass http://127.0.0.1:PORTTOCHANGE/; - proxy_set_header Host $host; - proxy_buffering off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + proxy_pass http://localhost:PORTTOCHANGE/; # Include SSOWAT user panel. include conf.d/yunohost_panel.conf.inc; diff --git a/scripts/install b/scripts/install index 9f94662..0f8d264 100644 --- a/scripts/install +++ b/scripts/install @@ -1,19 +1,17 @@ #!/bin/bash +# Configurable variables +SYNCHOME="/home/yunohost.app/syncthing" +SYNCUSER=debian-syncthing +SYNCPORT=22000 +GUIPORT=8384 + # Retrieve arguments domain=$1 path=$2 # channel: release or devel. will add choise on install CHANNEL=release - -# Configurable variables -VERSION="0.11.5" -SYNCHOME="/home/yunohost.syncthing" -USER=debian-syncthing -SYNCPORT=22000 -GUIPORT=8384 - sudo yunohost app checkurl $domain$path -a syncthing if [[ ! $? -eq 0 ]]; then echo $domain$path is not available. Please choose another url for Syncthing. @@ -38,31 +36,29 @@ fi # Open port in firewall sudo yunohost firewall allow TCP $SYNCPORT > /dev/null 2>&1 -# Create $USER user to run syncthing service -sudo useradd -m -d $SYNCHOME/ -s /bin/bash $USER +# Create $SYNCUSER user to run syncthing service +sudo useradd -m -d $SYNCHOME/ -s /bin/bash $SYNCUSER # Make directories and set rights -sudo mkdir -p $SYNCHOME/{bin,storage} -sudo chown -R $USER:$USER $SYNCHOME/ +sudo chown -R $SYNCUSER:$SYNCUSER $SYNCHOME/ sudo find $SYNCHOME/ -type f | while read LINE; do sudo chmod 640 "$LINE" ; done sudo find $SYNCHOME/ -type d | while read LINE; do sudo chmod 750 "$LINE" ; done # Download and install syncthing binary sudo apt-get install curl +## Add the release PGP keys: curl -s https://syncthing.net/release-key.txt | sudo apt-key add - -echo "deb http://apt.syncthing.net/ syncthing $CHANNEL" | sudo tee /etc/apt/sources.list.d/syncthing-$CHANNEL.list +## Add the "release" channel to your APT sources: +echo "deb http://apt.syncthing.net/ syncthing $CHANNEL" | sudo tee /etc/apt/sources.list.d/syncthing.list +## Update and install syncthing: sudo apt-get update -qq sudo apt-get install syncthing -y --force-yes # Install and monitor service -GUIADDRESS="127.0.0.1:$GUIPORT" -sed -i "s@GUIADDRESSTOCHANGE@$GUIADDRESS@g" ../conf/init.syncthing -sudo cp ../conf/init.syncthing /etc/init.d/syncthing -sudo chmod 0755 /etc/init.d/syncthing -sudo update-rc.d syncthing defaults +sudo systemctl enable syncthing@$SYNCUSER.service #~ sudo yunohost service add -l /var/log/syncthing.log syncthing sudo yunohost service add syncthing -sudo service syncthing start +sudo systemctl start syncthing@$SYNCUSER.service # Configure logrotate if present if [ -d "/etc/logrotate.d" ]; then @@ -70,9 +66,16 @@ if [ -d "/etc/logrotate.d" ]; then sudo chmod 0755 /etc/logrotate.d/syncthing fi -# Configure Nginx and reload +# Configure Nginx sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf sed -i "s@PORTTOCHANGE@$GUIPORT@g" ../conf/nginx.conf sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/syncthing.conf -sudo service nginx reload + +# Remove acces to all users +sudo yunohost app removeaccess well-known + +# Reload nginx and update ssowatch +sudo systemctl reload nginx.service +sudo yunohost app ssowatconf + echo $? diff --git a/scripts/remove b/scripts/remove index cea831a..8644d4e 100644 --- a/scripts/remove +++ b/scripts/remove @@ -1,21 +1,22 @@ #!/bin/bash -SYNCHOME="/home/yunohost.syncthing" +# Configurable variables +SYNCHOME="/home/yunohost.app/syncthing" SYNCUSER=debian-syncthing SYNCPORT=22000 +GUIPORT=8384 # Stop and remove syncthing service -sudo service syncthing stop +sudo systemctl stop syncthing@$SYNCUSER.service sudo yunohost service remove syncthing -sudo update-rc.d -f syncthing remove -sudo rm -f /etc/init.d/syncthing +sudo systemctl disable syncthing@$SYNCUSER.service # Remove syncthing binairy -sudo apt-get autoremove syncthing -y -sudo rm /etc/apt/sources.list.d/syncthing-release.list -sudo apt-get update +sudo apt-get autoremove syncthing -y --purge +sudo rm /etc/apt/sources.list.d/syncthing.list +sudo apt-get update -qq -# Backup syncthign SYNCHOME directory +# Backup syncthing SYNCHOME directory sudo mv $SYNCHOME $SYNCHOME.old # sudo rm -rf $SYNCHOME @@ -36,5 +37,7 @@ domain=$(sudo yunohost app setting syncthing domain) sudo rm /etc/nginx/conf.d/$domain.d/syncthing.conf # Reload nginx and update ssowatch -sudo service nginx reload +sudo systemctl reload nginx.service sudo yunohost app ssowatconf + +echo $? diff --git a/scripts/upgrade b/scripts/upgrade index 02bb6d8..3a8831f 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,8 +1,10 @@ #!/bin/bash # Configurable variables -USER=debian-syncthing -SYNCHOME="/home/yunohost.syncthing" +SYNCHOME="/home/yunohost.app/syncthing" +SYNCUSER=debian-syncthing +SYNCPORT=22000 +GUIPORT=8384 # Retrieve arguments domain=$(sudo yunohost app setting syncthing domain) @@ -11,17 +13,24 @@ path=$(sudo yunohost app setting syncthing path) # Remove trailing "/" for next commands path=${path%/} -# Update syncthing sysvinit script -sudo cp -f ../conf/init.syncthing /etc/init.d/syncthing -sudo chmod 0755 /etc/init.d/syncthing -sudo update-rc.d syncthing defaults -sudo yunohost service add syncthing -sudo service syncthing restart - # Upgrade official debian package +sudo apt-get update -qq sudo apt-get upgrade syncthing -y # Update and reload Nginx sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/syncthing.conf sudo service nginx reload + + +# Update Nginx configuration +sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf +sed -i "s@PORTTOCHANGE@$GUIPORT@g" ../conf/nginx.conf +sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/syncthing.conf + + +# And reload +sudo service nginx reload +sudo yunohost app ssowatconf + +echo $?