diff --git a/README.md b/README.md index 6436584..9f63734 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ vi lutim.conf ``` ## Configuration + * hypnotoad: address and port to listen to, user and group which runs hypnotoad (if you run LUTIm with a different user from what is defined here, be sure that the user which launchs hypnotoad is able to setuid/setgid to the defined user/group, otherwise it will not work and you'll have 100% CPU consumption. Launch hypnotoad with the root user or with the user which is defined here); * contact: write something which make people able to contact you (contact form URL, email address, whatever) ; * secrets: an array of random string. Used by Mojolicious for encrypting session cookies. @@ -76,10 +77,23 @@ vi lutim.conf * always\_encrypt: if set to 1, all images will be encrypted. ## Usage + +### Command line ``` carton exec hypnotoad script/lutim ``` +### Init script +``` +cp utilities/lutim.init /etc/init.d/lutim +cp utilities/lutim.default /etc/default/lutim +chmod +x /etc/init.d/lutim +chown root:root /etc/init.d/lutim /etc/default/lutim +vim /etc/default/lutim + +/etc/init.d/lutim start +``` + ## Update ``` git pull diff --git a/utilities/lutim.default b/utilities/lutim.default new file mode 100644 index 0000000..db9072f --- /dev/null +++ b/utilities/lutim.default @@ -0,0 +1,3 @@ +# LDIR is the path where you installed Lutim +# It has to end with a final / +LDIR=/var/lutim/ diff --git a/utilities/lutim.init b/utilities/lutim.init new file mode 100755 index 0000000..21b88b1 --- /dev/null +++ b/utilities/lutim.init @@ -0,0 +1,191 @@ +#!/bin/sh +# vim: set ts=4 sw=4 sts=4 tw=0: +# vim: set expandtab: + +### BEGIN INIT INFO +# Provides: lutim +# 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 lutim with hypnotoad +# Description: starts lutim with hypnotoad +### END INIT INFO + + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=script/lutim +NAME=lutim +DESC=lutim + +if [ -f "/etc/default/lutim" ] +then + . /etc/default/lutim + if [ -z $LDIR ] + then + echo "LDIR variable is empty, please fill it in /etc/default/lutim" + exit 0 + fi +else + echo "Missing /etc/default/lutim 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 + 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 + 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_progress_msg "$NAME is NOT running" + fi + else + log_progress_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_progress_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_progress_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_progress_msg "failed" + log_end_msg 1 + ;; + esac + else + log_progress_msg "$NAME is NOT running. Unable to stop" + log_end_msg 1 + fi + else + log_progress_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 + case "$?" in + 0|1) + log_progress_msg "done" + log_end_msg 0 + ;; + 2) + log_progress_msg "failed" + log_end_msg 1 + ;; + esac + ;; + restart) + log_daemon_msg "Restarting $NAME" + do_stop + sleep 1 + do_start + case "$?" in + 0|1) + log_progress_msg "done" + log_end_msg 0 + ;; + 2) + log_progress_msg "failed"; + log_end_msg 1 + ;; + esac + ;; + *) + echo "Usage: $0 {start|stop|status|reload|restart}" >&2 + exit 3 + ;; +esac + +exit 0