#!/bin/sh ### Custom user script for gogs ### First param is: ### "start" (call at start entware), ### "stop" (call before stop entware), ### ### Note the additional requirements for gogs on ddwrt: shadow user, group, sudo, daemonize PIDFILE="/opt/var/run/gogs.pid" USER="gogs" GOROOT="/opt/bin/go" GOPATH="/opt/go" ENABLED=yes PROC="gogs" DESC=$PROC PREARGS="/opt/bin/sudo -u $USER /opt/bin/daemonize" GOGSBIN="$GOPATH/src/github.com/gogs/gogs/gogs" ARGS="web" ansi_red="\033[1;31m"; ansi_white="\033[1;37m"; ansi_green="\033[1;32m"; ansi_yellow="\033[1;33m"; ansi_blue="\033[1;34m"; ansi_bell="\007"; ansi_blink="\033[5m"; ansi_std="\033[m"; ansi_rev="\033[7m"; ansi_ul="\033[4m"; case "$1" in start) # start gogs web if [ -f "$PIDFILE" ] then echo "$DESC is already running ...`pidof $PROC`" else echo -e -n "$ansi_white Starting $DESC... $ansi_std" export GOROOT=$GOROOT export GOPATH=$GOPATH export PATH=$PATH:$GOROOT/bin $PREARGS $GOGSBIN $ARGS > /dev/null 2>&1 & COUNTER=0 LIMIT=10 while [ -z "`pidof $PROC`" -a "$COUNTER" -le "$LIMIT" ]; do sleep 1; COUNTER=`expr $COUNTER + 1` done if [ -z "`pidof $PROC`" ] then echo -e " $ansi_red failed. $ansi_std" logger "Failed to start $DESC from $CALLER." return 255 else echo -e " $ansi_green done. $ansi_std" logger "Started $DESC from $CALLER." echo `pidof $PROC` > "$PIDFILE" return 0 fi fi ;; stop) echo -e -n "$ansi_white Shutting down $PROC... $ansi_std" killall $PROC 2>/dev/null if [ -f "$PIDFILE" ] then rm "$PIDFILE" fi COUNTER=0 LIMIT=10 while [ -n "`pidof $PROC`" -a "$COUNTER" -le "$LIMIT" ]; do sleep 1; COUNTER=`expr $COUNTER + 1` done ;; kill) echo -e -n "$ansi_white Killing $PROC... $ansi_std" killall -9 $PROC 2>/dev/null ;; status | check) echo -e -n "$ansi_white Checking $DESC... " if [ -n "`pidof $PROC`" ] then echo -e " $ansi_green alive. $ansi_std"; return 0 else echo -e " $ansi_red dead. $ansi_std"; return 1 fi ;; *) echo "Usage: $0 {start|stop|status}" exit 1 ;; esac