| @@ -1,4 +1,4 @@ | |||||
| #! /bin/sh | |||||
| #!/bin/sh | |||||
| ### BEGIN INIT INFO | ### BEGIN INIT INFO | ||||
| # Provides: gitea | # Provides: gitea | ||||
| # Required-Start: $syslog $network | # Required-Start: $syslog $network | ||||
| @@ -24,6 +24,8 @@ WORKINGDIR=/home/git/gitea | |||||
| DAEMON=$WORKINGDIR/$NAME | DAEMON=$WORKINGDIR/$NAME | ||||
| DAEMON_ARGS="web" | DAEMON_ARGS="web" | ||||
| USER=git | USER=git | ||||
| USERBIND="setcap cap_net_bind_service=+ep" | |||||
| STOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/1/KILL/5}" | |||||
| # Read configuration variable file if it is present | # Read configuration variable file if it is present | ||||
| [ -r /etc/default/$NAME ] && . /etc/default/$NAME | [ -r /etc/default/$NAME ] && . /etc/default/$NAME | ||||
| @@ -31,96 +33,54 @@ USER=git | |||||
| # Exit if the package is not installed | # Exit if the package is not installed | ||||
| [ -x "$DAEMON" ] || exit 0 | [ -x "$DAEMON" ] || exit 0 | ||||
| # 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() | do_start() | ||||
| { | { | ||||
| # Return | |||||
| # 0 if daemon has been started | |||||
| # 1 if daemon was already running | |||||
| # 2 if daemon could not be started | |||||
| sh -c "USER=$USER start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\ | |||||
| --test --chdir $WORKINGDIR --chuid $USER \\ | |||||
| --exec $DAEMON -- $DAEMON_ARGS > /dev/null \\ | |||||
| || return 1" | |||||
| sh -c "USER=$USER start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\ | |||||
| --background --chdir $WORKINGDIR --chuid $USER \\ | |||||
| --exec $DAEMON -- $DAEMON_ARGS \\ | |||||
| || return 2" | |||||
| $USERBIND $DAEMON | |||||
| sh -c "USER=$USER start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\ | |||||
| --background --chdir $WORKINGDIR --chuid $USER \\ | |||||
| --exec $DAEMON -- $DAEMON_ARGS" | |||||
| } | } | ||||
| # | |||||
| # Function that stops the daemon/service | |||||
| # | |||||
| do_stop() | 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/1/KILL/5 --pidfile $PIDFILE --name $NAME | |||||
| RETVAL="$?" | |||||
| [ "$RETVAL" = 2 ] && return 2 | |||||
| start-stop-daemon --stop --quiet --oknodo --retry=0/1/KILL/5 --exec $DAEMON | |||||
| [ "$?" = 2 ] && return 2 | |||||
| # Many daemons don't delete their pidfiles when they exit. | |||||
| rm -f $PIDFILE | |||||
| return "$RETVAL" | |||||
| start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PIDFILE --name $NAME --oknodo | |||||
| rm -f $PIDFILE | |||||
| } | } | ||||
| do_status() | |||||
| { | |||||
| if [ -f $PIDFILE ]; then | |||||
| if kill -0 $(cat "$PIDFILE"); then | |||||
| echo "$NAME is running, PID is $(cat $PIDFILE)" | |||||
| else | |||||
| echo "$NAME process is dead, but pidfile exists" | |||||
| fi | |||||
| else | |||||
| echo "$NAME is not running" | |||||
| fi | |||||
| } | |||||
| case "$1" in | case "$1" in | ||||
| start) | |||||
| [ "$SERVICEVERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" | |||||
| do_start | |||||
| case "$?" in | |||||
| 0|1) [ "$SERVICEVERBOSE" != no ] && log_end_msg 0 ;; | |||||
| 2) [ "$SERVICEVERBOSE" != no ] && log_end_msg 1 ;; | |||||
| esac | |||||
| ;; | |||||
| stop) | |||||
| [ "$SERVICEVERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" | |||||
| do_stop | |||||
| case "$?" in | |||||
| 0|1) [ "$SERVICEVERBOSE" != no ] && log_end_msg 0 ;; | |||||
| 2) [ "$SERVICEVERBOSE" != no ] && log_end_msg 1 ;; | |||||
| esac | |||||
| ;; | |||||
| status) | |||||
| status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? | |||||
| ;; | |||||
| restart|force-reload) | |||||
| 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|status|restart|force-reload}" >&2 | |||||
| exit 3 | |||||
| ;; | |||||
| start) | |||||
| echo "Starting $DESC" "$NAME" | |||||
| do_start | |||||
| ;; | |||||
| stop) | |||||
| echo "Stopping $DESC" "$NAME" | |||||
| do_stop | |||||
| ;; | |||||
| status) | |||||
| do_status | |||||
| ;; | |||||
| restart) | |||||
| echo "Restarting $DESC" "$NAME" | |||||
| do_stop | |||||
| do_start | |||||
| ;; | |||||
| *) | |||||
| echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2 | |||||
| exit 2 | |||||
| ;; | |||||
| esac | esac | ||||
| : | |||||
| exit 0 | |||||