Files
server/opt/drweb/scripts/include/services.sh
2026-01-07 20:52:11 +01:00

181 lines
3.3 KiB
Bash

IsServiceEnable() {
# 0 if enable
# 1 if disable
# 2 if other
service="$1"
retval=0
case `GetPlatform` in
*freebsd*)
[ -e "/etc/rc.conf" ] && rcconf="/etc/rc.conf"
;;
esac
if [ -n "$rcconf" ] ; then
if [ -f "$rcconf" ] ; then
rcservname="`echo "$service" | $SED "s|-|_|g"`"
. "$rcconf"
status=`eval echo "\$${rcservname}_enable"`
if [ "$status" = "YES" ] ; then
retval=0
else
retval=1
fi
else
printf "$check_autostart_srt" "$rcconf" "$service"
retval=2
fi
else
if [ -f "$CONFDIR/$service.enable" ] ; then
. "$CONFDIR/$service.enable"
if [ $ENABLE -eq 1 ] ; then
retval=0
else
retval=1
fi
else
retval=0
fi
fi
return $retval
}
ToggleServiceStartup() {
if [ $# -ne 2 ] ; then
echo "ToggleServiceStartup: Must be 2 arguments -- ToggleServiceStartup <service name> <on|off>"
return 2
fi
service="$1"
case "$2" in
on)
rcvalue="YES"
printf_str="`eval_gettext \"enable\"`"
sed_before=0
sed_after=1
;;
off)
rcvalue="NO"
printf_str="`eval_gettext \"disable\"`"
sed_before=1
sed_after=0
;;
esac
rcconf=""
retval=0
case `GetPlatform` in
*freebsd*)
[ -e "/etc/rc.conf" ] && rcconf="/etc/rc.conf"
;;
esac
if [ -n "$rcconf" ] ; then
if [ -f "$rcconf" ] ; then
rcservname="`echo "$service" | $SED "s|-|_|g"`"
if grep ${rcservname}_enable= "$rcconf" >/dev/null; then
echo "$rcconf already contains an entry for \"${rcservname}_enable\". Please check manually whether it is correct or not."
retval=0
else
echo "#Automaticaly added by DrWeb configuration script." >> "$rcconf"
echo "${rcservname}_enable=\"$rcvalue\"" >> "$rcconf"
retval=0
fi
else
printf "$toggle_autostart_str" "$rcconf" "$printf_str" "$service"
retval=1
fi
else
if [ -f "$CONFDIR/$service.enable" ] ; then
$SED "s|$sed_before|$sed_after|g" "$CONFDIR/$service.enable" > "$CONFDIR/$service.enable.tmp" 2>/dev/null
mv "$CONFDIR/$service.enable.tmp" "$CONFDIR/$service.enable"
retval=0
else
retval=0
fi
fi
return $retval
}
EnableService() {
retval=0
ToggleServiceStartup "$1" on
retval=$?
return $retval
}
DisableService() {
retval=0
ToggleServiceStartup "$1" off
retval=$?
return $retval
}
ToggleServiceStatus() {
retval=0
if [ $# -ne 2 ] ; then
echo "ToggleServiceStatus: Must be 2 arguments -- ToggleServiceStatus <service name> <start|stop>"
return 2
fi
service="$1"
action="$2"
case "$action" in
start)
init_append="start"
;;
stop)
init_append="stop"
;;
*)
return 1
;;
esac
case "$service" in
drwebd)
service_init="$DRWEBD_INIT"
;;
drweb-icapd)
service_init="$ICAPD_INIT"
;;
drweb-monitor)
service_init="$MONITOR_INIT"
;;
drweb-spider)
service_init="$SPIDER_INIT"
;;
*)
service_init="$SOFTWAREDIR/init.d/$service"
;;
esac
if [ -x "$service_init" ] ; then
"$service_init" "$init_append"
retval=$?
else
printf "`eval_gettext \"Init-script for service %s is not found.\n\"`" "$service"
retval=2
fi
return $retval
}
StartService() {
retval=0
ToggleServiceStatus "$1" "start"
retval=$?
return $retval
}
StopService() {
retval=0
ToggleServiceStatus "$1" "stop"
retval=$?
return $retval
}
ServiceList() {
if [ -d "$SOFTWAREDIR/init.d" ] ; then
ls "$SOFTWAREDIR/init.d" | $SED -e 's|^[0-9]*\.\(.*\)|\1|g' -e 's|\.sh||g' | sort -r
else
echo ""
fi
}