diff --git a/utilities/lufi.default b/utilities/lufi.default new file mode 100644 index 0000000..bbe05c2 --- /dev/null +++ b/utilities/lufi.default @@ -0,0 +1,6 @@ +# LDIR is the path where you installed Lutim +# It has to end with a final / +LDIR=/var/www/lufi/ + +# USER is the user who will launch Lutim +USER=www-data diff --git a/utilities/lufi.init b/utilities/lufi.init new file mode 100755 index 0000000..01916d0 --- /dev/null +++ b/utilities/lufi.init @@ -0,0 +1,197 @@ +#!/bin/sh +# vim: set ts=4 sw=4 sts=4 tw=0: +# vim: set expandtab: + +### BEGIN INIT INFO +# Provides: lufi +# Required-Start: $local_fs $remote_fs $network $syslog +# Required-Stop: $local_fs $remote_fs $network $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts lufi with hypnotoad +# Description: starts lufi with hypnotoad +### END INIT INFO + + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=script/lufi +NAME=lufi +DESC=lufi + +if [ -f "/etc/default/lufi" ] +then + . /etc/default/lufi + if [ -z $LDIR ] + then + echo "LDIR variable is empty, please fill it in /etc/default/lufi" + exit 0 + fi + if [ -z $USER ] + then + echo "USER variable is empty, please fill it in /etc/default/lufi" + exit 0 + fi +else + echo "Missing /etc/default/lufi file" + exit 0 +fi + +if [ ! -f "$LDIR$DAEMON" ] +then + echo "Missing $LDIR$DAEMON file" + exit 0 +fi + +set -e + +. /lib/lsb/init-functions + +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + + cd $LDIR + su $USER -c "carton exec hypnotoad $DAEMON >/dev/null 2>&1" + return "$?" +} + +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 + + cd $LDIR + su $USER -c "carton exec hypnotoad -s $DAEMON >/dev/null 2>&1" + return "$?" +} + +do_status() +{ + cd $LDIR + if [ -f "script/hypnotoad.pid" ] + then + pgrep -lf $DAEMON >/dev/null 2>&1 + if [ "$?" = "0" ]; then + log_progress_msg "$NAME is running" + else + log_failure_msg "$NAME is NOT running but PID file exists" + fi + else + log_failure_msg "$NAME is NOT running" + fi +} + +case "$1" in + start) + log_daemon_msg "Starting $NAME" + cd $LDIR + if [ -f "script/hypnotoad.pid" ] + then + pgrep -lf $DAEMON >/dev/null 2>&1 + if [ "$?" = "0" ] + then + log_progress_msg "$NAME is already running. Unable to start." + log_end_msg 1; + else + do_start + case "$?" in + 0|1) + log_progress_msg "done" + log_end_msg 0 + ;; + 2) + log_failure_msg "failed" + log_end_msg 1 + ;; + esac + fi + else + do_start + case "$?" in + 0|1) + log_progress_msg "done" + log_end_msg 0 + ;; + 2) + log_failure_msg "failed" + log_end_msg 1 + ;; + esac + fi + ;; + stop) + log_daemon_msg "Stopping $NAME" + cd $LDIR + if [ -f "script/hypnotoad.pid" ] + then + pgrep -lf $DAEMON >/dev/null 2>&1 + if [ "$?" = "0" ]; then + do_stop + case "$?" in + 0|1) + log_progress_msg "done" + log_end_msg 0 + ;; + *) + log_failure_msg "failed" + log_end_msg 1 + ;; + esac + else + log_failure_msg "$NAME is NOT running. Unable to stop" + log_end_msg 1 + fi + else + log_failure_msg "$NAME is NOT running. Unable to stop" + log_end_msg 1 + fi + ;; + status) + log_daemon_msg "Checking $NAME status" + do_status + log_end_msg 0 + ;; + reload) + log_daemon_msg "Reloading $NAME" + do_start + sleep 1 + case "$?" in + 0|1) + log_progress_msg "done" + log_end_msg 0 + ;; + 2) + log_failure_msg "failed" + log_end_msg 1 + ;; + esac + ;; + restart) + log_daemon_msg "Restarting $NAME" + do_stop + sleep 6 + do_start + case "$?" in + 0|1) + log_progress_msg "done" + log_end_msg 0 + ;; + 2) + log_failure_msg "failed"; + log_end_msg 1 + ;; + esac + ;; + *) + echo "Usage: $0 {start|stop|status|reload|restart}" >&2 + exit 3 + ;; +esac + +exit 0 diff --git a/utilities/lufi.service b/utilities/lufi.service new file mode 100644 index 0000000..362aa4f --- /dev/null +++ b/utilities/lufi.service @@ -0,0 +1,18 @@ +[Unit] +Description=File hosting service with encryption +Documentation=https://git.framasoft.org/luc/lufi +Requires=network.target +After=network.target + +[Service] +Type=forking +User=www-data +RemainAfterExit=yes +WorkingDirectory=/var/www/lufi/ +PIDFile=/var/www/lufi/script/hypnotoad.pid +ExecStart=/usr/local/bin/carton exec hypnotoad script/lufi +ExecStop=/usr/local/bin/carton exec hypnotoad -s script/lufi +ExecReload=/usr/local/bin/carton exec hypnotoad script/lufi + +[Install] +WantedBy=multi-user.target diff --git a/utilities/lufi_upstart.conf b/utilities/lufi_upstart.conf new file mode 100644 index 0000000..af4c173 --- /dev/null +++ b/utilities/lufi_upstart.conf @@ -0,0 +1,28 @@ +# -*- upstart -*- +description "lufi" +author "Luc Didry " + +start on (networking) +stop on runlevel [!2345] + +script + if [ -f "/etc/default/lufi" ] + then + . /etc/default/lufi + if [ -z $LDIR ] + then + echo "LDIR variable is empty, please fill it in /etc/default/lufi" + exit 0 + fi + if [ -z $USER ] + then + echo "USER variable is empty, please fill it in /etc/default/lufi" + exit 0 + fi + else + echo "Missing /etc/default/lufi file" + exit 0 + fi + cd $LDIR + su $USER -c "carton exec hypnotoad -f script/lufi" +end script