description "Hush Daemon"

start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]

env HUSHD_BIN="/usr/bin/hushd"
env HUSHD_USER="hush"
env HUSHD_GROUP="hush"
env HUSHD_PIDDIR="/var/run/hushd"
# upstart can't handle variables constructed with other variables
env HUSHD_PIDFILE="/var/run/hushd/hushd.pid"
env HUSHD_CONFIGFILE="/etc/hush/hush.conf"
env HUSHD_DATADIR="/var/lib/hushd"

expect fork

respawn
respawn limit 5 120
kill timeout 60

pre-start script
    # this will catch non-existent config files
    # hushd will check and exit with this very warning, but it can do so
    # long after forking, leaving upstart to think everything started fine.
    # since this is a commonly encountered case on install, just check and
    # warn here.
    if ! grep -qs '^rpcpassword=' "$HUSHD_CONFIGFILE" ; then
        echo "ERROR: You must set a secure rpcpassword to run hushd."
        echo "The setting must appear in $HUSHD_CONFIGFILE"
        echo
        echo "This password is security critical to securing wallets "
        echo "and must not be the same as the rpcuser setting."
        echo "You can generate a suitable random password using the following"
        echo "command from the shell:"
        echo
        echo "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'"
        echo
        exit 1
    fi

    mkdir -p "$HUSHD_PIDDIR"
    chmod 0755 "$HUSHD_PIDDIR"
    chown $HUSHD_USER:$HUSHD_GROUP "$HUSHD_PIDDIR"
    chown $HUSHD_USER:$HUSHD_GROUP "$HUSHD_CONFIGFILE"
    chmod 0660 "$HUSHD_CONFIGFILE"
end script

exec start-stop-daemon \
    --start \
    --pidfile "$HUSHD_PIDFILE" \
    --chuid $HUSHD_USER:$HUSHD_GROUP \
    --exec "$HUSHD_BIN" \
    -- \
    -pid="$HUSHD_PIDFILE" \
    -conf="$HUSHD_CONFIGFILE" \
    -datadir="$HUSHD_DATADIR" \
    -disablewallet \
    -daemon

