mirror of
https://github.com/PirateBox-Dev/PirateBoxScripts_Webserver.git
synced 2023-12-14 07:22:58 +01:00
Droopy always does the chmod operation, if the option is set. On partitions with FAT it is not possible to execute this operation. Droopy may ran into issue in that situation. With that fix, the option won't be set on droopy start to prevent any chmod operation on FAT partitions. Fixes #154
296 lines
8.5 KiB
Bash
Executable file
296 lines
8.5 KiB
Bash
Executable file
#! /bin/sh
|
|
# /etc/init.d/piratebox
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: piratebox
|
|
# Required-Start: $all
|
|
# Required-Stop: $network $local_fs
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 6 1 0
|
|
# Short-Description: All services around piratebox
|
|
# Description: Based on /opt/piratebox/conf/piratebox.conf starts several services
|
|
### END INIT INFO
|
|
|
|
###
|
|
# Default start-stop script for piratebox services on a laptop
|
|
# written by Matthias Strubel (matthias.strubel@aod-rpg.de) 2011-02-22
|
|
# licenced by gpl, feel free to improve and send me comments
|
|
|
|
. /lib/lsb/init-functions
|
|
|
|
|
|
[ -f /etc/default/rcS ] && . /etc/default/rcS
|
|
|
|
# PATH for /opt piratebox folder
|
|
PATH=$PATH:/opt/piratebox/bin
|
|
|
|
PIDFILE_DROOPY=/var/run/piratebox_droopy.pid
|
|
PIDFILE_HOSTAPN=/var/run/piratebox_hostapn.pid
|
|
PIDFILE_DNSMASQ=/var/run/piratebox_dnsmasq.pid
|
|
PIDFILE_LIGHTTPD=/opt/piratebox/tmp/lighttpd.pid
|
|
PIDFILE_SHOUTBOX=/opt/piratebox/tmp/shoutbox_daemon.pid
|
|
PIDFILE_RADVD=/opt/piratebox/tmp/radvd.pid
|
|
PIDFILE_IRC=/opt/piratebox/tmp/irc.pid
|
|
|
|
PIRATEBOX=/opt/piratebox
|
|
CONF=$PIRATEBOX/conf/piratebox.conf
|
|
CONF_IRC=$PIRATEBOX/conf/irc.conf
|
|
#CONF_DROOPY=/opt/piratebox/conf/droopy.conf #not used
|
|
CONF_APN=$PIRATEBOX/conf/hostapd.conf
|
|
|
|
#Some extra config files for dnsmasq
|
|
CONF_DNSMASQ=$PIRATEBOX/conf/dnsmasq_generated.conf
|
|
|
|
CONF_RADVD=$PIRATEBOX/conf/radvd_generated.conf
|
|
|
|
CONF_LIGHTTPD=$PIRATEBOX/conf/lighttpd/lighttpd.conf
|
|
|
|
export PYTHONPATH=:$PYTHONPATH:$PIRATEBOX_PYTHONPATH
|
|
|
|
|
|
# Some things that run always
|
|
touch /var/lock/piratebox
|
|
|
|
if [ -f $CONF ] ; then
|
|
. $CONF
|
|
else
|
|
log_failure_msg "Configuration file not found"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
if [ -f $PIRATEBOX/conf/init_done ] ; then
|
|
INIT=OK
|
|
else
|
|
$PIRATEBOX/bin/hooks/hook_pre_init.sh "$CONF"
|
|
$PIRATEBOX/bin/install_piratebox.sh "$CONF" part2
|
|
$PIRATEBOX/bin/hooks/hook_post_init.sh "$CONF"
|
|
touch $PIRATEBOX/conf/init_done
|
|
fi
|
|
|
|
|
|
# Recreate the content folder, if it was deleted
|
|
# only if it is not already existing.
|
|
# This can be any time.
|
|
if [ ! -d $WWW_CONTENT ] ; then
|
|
$PIRATEBOX/bin/install_piratebox.sh "$CONF" content
|
|
fi
|
|
|
|
# Command Line for DNSMASQ, use extra config file generated from command above
|
|
CMD_DNSMASQ="-x $PIDFILE_DNSMASQ -C $CONF_DNSMASQ "
|
|
|
|
# Carry out specific functions when asked to by the system
|
|
case "$1" in
|
|
start)
|
|
log_daemon_msg "Starting script piratebox "
|
|
echo ""
|
|
|
|
# Generate hosts & dnsmasq file
|
|
$PIRATEBOX/bin/generate_config_files.sh "$CONF"
|
|
|
|
$PIRATEBOX/bin/hooks/hook_piratebox_start.sh "$CONF"
|
|
|
|
echo "Empty tmp folder"
|
|
find $PIRATEBOX/tmp/ -exec rm {} \;
|
|
|
|
if [ "$CUSTOM_DIRLIST_COPY" = "yes" ]; then
|
|
echo "Copy over design files"
|
|
$PIRATEBOX/bin/distribute_files.sh $SHARE_FOLDER/Shared
|
|
fi
|
|
|
|
if [ "$PBX_JSON_GENERATION" = "yes" ]; then
|
|
$PIRATEBOX_FOLDER/bin/json_generation.sh $CONF
|
|
fi
|
|
|
|
if [ "$DO_IW" = "yes" ] ; then
|
|
log_daemon_msg " Setting up Interface (iw) "
|
|
iw $PHY_IF interface add $INTERFACE type managed
|
|
fi
|
|
|
|
if [ "$PROBE_INTERFACE" = yes ] ; then
|
|
log_daemon_msg " Probing wlan"
|
|
#Setting up WLAN Interface
|
|
piratebox_setup_wlan.sh $CONF probe
|
|
fi
|
|
if [ $? -ne 0 ] ; then
|
|
log_failure_msg "failed probe Interface"
|
|
else
|
|
|
|
# Only activate
|
|
if [ "$USE_APN" = "yes" ] ; then
|
|
log_daemon_msg "Starting hostap... "
|
|
start-stop-daemon -m --start --background --pidfile $PIDFILE_HOSTAPN --exec /usr/sbin/hostapd -- $CONF_APN
|
|
log_end_msg $?
|
|
fi
|
|
|
|
if [ "$DO_IFCONFIG" = yes ] ; then
|
|
log_daemon_msg " Setting up wlan"
|
|
#Setting up WLAN Interface
|
|
piratebox_setup_wlan.sh $CONF start
|
|
if [ $? -ne 0 ] ; then
|
|
log_failure_msg "failed setting up Interface"
|
|
exit 99
|
|
fi
|
|
fi
|
|
|
|
#BRIDGE
|
|
if [ "$DO_BRIDGE" = "yes" ] ; then
|
|
log_daemon_msg "Adding $INTERFACE to bridge $BRIDGE // brctl addif $BRIDGE $INTERFACE "
|
|
sleep 1
|
|
BR_CMD="brctl addif $BRIDGE $INTERFACE"
|
|
( $BR_CMD ; )
|
|
log_end_msg $?
|
|
fi
|
|
|
|
if [ "$USE_DNSMASQ" = "yes" ] ; then
|
|
log_daemon_msg "Starting dnsmasq... "
|
|
# pidfile is written by dnsmasq
|
|
start-stop-daemon --start --quiet --exec /usr/sbin/dnsmasq -- $CMD_DNSMASQ
|
|
log_end_msg $?
|
|
fi
|
|
|
|
#Setting up firewall rules
|
|
log_daemon_msg "Setting up firewall rules..."
|
|
$PIRATEBOX_FOLDER/bin/firewall.sh -s
|
|
log_end_msg $?
|
|
|
|
|
|
if [ "$IPV6_ENABLE" == "yes" ] && [ "$IPV6_ADVERT" == "radvd" ] ; then
|
|
log_daemon_msg "Starting radvd..."
|
|
start-stop-daemon --start --quiet --exec radvd -- -p $PIDFILE_RADVD -C $CONF_RADVD
|
|
log_end_msg $?
|
|
fi
|
|
|
|
|
|
if [ "$DROOPY_ENABLED" = "yes" ] ; then
|
|
#Start here the PirateBox-Parts droopy i.e.
|
|
log_daemon_msg "Starting droopy..."
|
|
#Delete 0 Byte Files
|
|
delete_empty.sh $UPLOADFOLDER
|
|
find $UPLOADFOLDER/ -iname tmp\* -exec rm {} \;
|
|
|
|
DROOPY_USER=""
|
|
if [ "$DROOPY_USE_USER" = "yes" ] ; then
|
|
DROOPY_USER=" -c $LIGHTTPD_USER:$LIGHTTPD_GROUP "
|
|
fi
|
|
DROOPY_DO_CHMOD=""
|
|
test -n "$DROOPY_CHMOD" && DROOPY_DO_CHMOD="--chmod $DROOPY_CHMOD"
|
|
start-stop-daemon $DROOPY_USER -m --start --background --pidfile $PIDFILE_DROOPY --exec $PIRATEBOX/bin/droopy -- -d "$UPLOADFOLDER" -m "$DROOPY_TXT" $DROOPY_DO_CHMOD $DROOPY_USERDIR $DROOPY_PORT
|
|
log_end_msg $?
|
|
fi
|
|
|
|
#Do shoutbox stuff
|
|
$PIRATEBOX/bin/shoutbox_stuff.sh $WWW_FOLDER $CONF
|
|
|
|
|
|
#Start here the lighttpd i.e.
|
|
log_daemon_msg "Starting lighttpd..."
|
|
start-stop-daemon --start --quiet --pidfile $PIDFILE_LIGHTTPD --exec /usr/sbin/lighttpd -- -f $CONF_LIGHTTPD
|
|
log_end_msg $?
|
|
|
|
#Start Global Chat daemon if needed.
|
|
if [ "$GLOBAL_CHAT" = "yes" ] ; then
|
|
log_daemon_msg "Starting global chat service..."
|
|
start-stop-daemon -m --start --background --pidfile $PIDFILE_SHOUTBOX --startas $PIRATEBOX/bin/shoutbox_daemon.sh -- $CONF
|
|
log_end_msg $?
|
|
fi
|
|
|
|
#Start IRC Server
|
|
if [ "$ENABLE_IRC_SERVER" = "yes" ] ; then
|
|
|
|
. $CONF_IRC
|
|
|
|
IRC_PARMS="--daemon --motd $IRC_MOTD "
|
|
|
|
if [ ! -z $STATEDIR ] ; then
|
|
IRC_PARMS=" $IRCPARMS --statedir $STATEDIR "
|
|
fi
|
|
|
|
log_daemon_msg "Starting Miniircd..."
|
|
start-stop-daemon $DROOPY_USER -m -S -p $PIDFILE_IRC -x $PIRATEBOX/bin/miniircd.py -- $IRC_PARMS
|
|
log_end_msg $?
|
|
fi
|
|
fi
|
|
|
|
$PIRATEBOX/bin/hooks/hook_piratebox_start_done.sh "$CONF"
|
|
|
|
;;
|
|
stop)
|
|
log_daemon_msg "Stopping script piratebox"
|
|
echo ""
|
|
|
|
$PIRATEBOX/bin/hooks/hook_piratebox_stop.sh "$CONF"
|
|
|
|
if [ "$ENABLE_IRC_SERVER" = "yes" ] ; then
|
|
log_daemon_msg "Stopping IRC..."
|
|
start-stop-daemon -K -q -p $PIDFILE_IRC
|
|
log_end_msg $?
|
|
fi
|
|
|
|
log_daemon_msg "Removing firewall rules..."
|
|
$PIRATEBOX_FOLDER/bin/firewall.sh -k
|
|
log_end_msg $?
|
|
|
|
if [ "$USE_APN" = "yes" ] ; then
|
|
log_daemon_msg "Stopping hostap... "
|
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE_HOSTAPN --oknodo --startas "hostapd"
|
|
log_end_msg $?
|
|
fi
|
|
if [ "$USE_DNSMASQ" = "yes" ] ; then
|
|
log_daemon_msg "Stopping dnsmasq..."
|
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE_DNSMASQ
|
|
log_end_msg $?
|
|
fi
|
|
|
|
if [ -e $PIDFILE_RADVD ] ; then
|
|
log_daemon_msg "Stopping radvd..."
|
|
start-stop-daemon --stop --quite --pidfile $PIDFILE_RADVD
|
|
log_end_msg $?
|
|
fi
|
|
|
|
#Stop Global Chat daemon
|
|
if [ "$GLOBAL_CHAT" = "yes" ] ; then
|
|
log_daemon_msg "Stopping global chat service..."
|
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE_SHOUTBOX
|
|
log_end_msg $?
|
|
fi
|
|
|
|
log_daemon_msg "Stopping lighttpd..."
|
|
start-stop-daemon --stop --retry 30 --quiet --pidfile $PIDFILE_LIGHTTPD
|
|
log_end_msg $?
|
|
|
|
if [ "$DROOPY_ENABLED" = "yes" ] ; then
|
|
#Kill Droopy
|
|
log_daemon_msg "Stopping droopy... "
|
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE_DROOPY --oknodo --startas "python /opt/piratebox/bin/droopy"
|
|
log_end_msg $?
|
|
fi
|
|
|
|
if [ "$DO_IFCONFIG" = yes ] ; then
|
|
piratebox_setup_wlan.sh $CONF stop
|
|
fi
|
|
|
|
if [ "$DO_IW" = "yes" ] ; then
|
|
iw dev $INTERFACE del
|
|
fi
|
|
|
|
# REMOVE BRIDGE
|
|
if [ "$DO_BRIDGE" = "yes" ] ; then
|
|
log_daemon_msg "Remove Bridge..."
|
|
BR_CMD="brctl delif $BRIDGE $INTERFACE"
|
|
( $BR_CMD ; )
|
|
log_end_msg $?
|
|
fi
|
|
|
|
$PIRATEBOX/bin/hooks/hook_piratebox_stop_done.sh "$CONF"
|
|
|
|
|
|
;;
|
|
*)
|
|
echo "Usage: /etc/init.d/piratebox {start|stop}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|