X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/tripe/blobdiff_plain/808702d218ba5999dbc8cef769a79d1fb9be1e63..3cdc3f3a27e8c4f4fe692009d868c773d298a68c:/tripe-init.in diff --git a/tripe-init.in b/tripe-init.in index 8c4730e5..b02b8269 100755 --- a/tripe-init.in +++ b/tripe-init.in @@ -10,11 +10,19 @@ set -e [ -f @initconfig@ ] && . @initconfig@ : ${prefix=@prefix@} ${exec_prefix=@exec_prefix@} : ${bindir=@bindir@} ${sbindir=@sbindir@} -: ${TRIPEDIR=@configdir@} +: ${TRIPEDIR=@configdir@} ${tripesock=@socketdir@/tripesock} +: ${pidfile=@pidfile@} : ${tripe=$sbindir/tripe} ${tripectl=$bindir/tripectl} PATH=/usr/bin:/usr/sbin:/bin:/sbin:$bindir export PATH TRIPEDIR +# --- Give up if there's no key --- + +if test ! -f $TRIPEDIR/keyring || test ! -f $TRIPEDIR/keyring.pub; then + echo >&2 "Not starting/stopping TrIPE: keyring files missing" + exit 0 +fi + # --- Check it will work, or at least stands a fighting chance --- # # Having loads of different tunnel types doesn't help any. @@ -98,13 +106,13 @@ esac case "$1" in start) echo -n "Starting TrIPE VPN daemon:" - if $tripectl help >/dev/null 2>/dev/null; then + if $tripectl version >/dev/null 2>/dev/null; then echo " already running" exit 0 fi $tripectl -D -s -p$tripe \ -f${logfile-@logfile@} \ - -P${pidfile-@pidfile@} \ + -P$pidfile \ ${keytag+-S-t}$keytag \ ${addr+-S-b}$addr \ ${port+-S-p}${port} \ @@ -135,8 +143,19 @@ case "$1" in ;; stop) echo -n "Stopping TrIPE VPN daemon:" - $tripectl quit - echo " done" + if test ! -S $tripesock; then + echo " not running" + elif $tripectl quit >/dev/null 2>&1; then + echo " done" + elif test ! -f $pidfile; then + echo " stale socket found: removing" + rm -f $tripesock + elif kill `cat $pidfile`; then + echo " done (killed violently)" + else + echo " it doesn't want do die!" + exit 1 + fi ;; status) for i in `$tripectl list`; do