181 lines
3.3 KiB
Bash
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
|
|
}
|