mirror of
https://github.com/unraid/webgui.git
synced 2026-02-21 17:29:15 -06:00
Revised service reload functionality
This approach ensures the services are only reloaded once and not multiple times as happened before
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
#!/bin/bash
|
||||
SERVICES="sshd avahidaemon samba rpc nfsd ntpd nginx"
|
||||
|
||||
[[ -n $1 && -e /tmp/atjob.tmp ]] && exit 0
|
||||
for cmd in $SERVICES; do
|
||||
[[ $cmd == $1 ]] && option=renew || option=reload
|
||||
if /etc/rc.d/rc.$cmd update; then
|
||||
/etc/rc.d/rc.$cmd $option >/dev/null 2>&1
|
||||
/etc/rc.d/rc.$cmd reload >/dev/null 2>&1
|
||||
fi
|
||||
done
|
||||
touch /tmp/atjob.tmp
|
||||
exit 0
|
||||
|
||||
@@ -44,13 +44,6 @@ fi
|
||||
echo -n >$ini
|
||||
# clear update information
|
||||
data=
|
||||
dhcp=
|
||||
# get interface name
|
||||
if [[ -n $1 ]]; then
|
||||
tag=$1
|
||||
else
|
||||
tag=$interface
|
||||
fi
|
||||
|
||||
# loop thru all defined interfaces (=1 in case of legacy)
|
||||
for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
@@ -123,7 +116,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
echo "DESCRIPTION:0=\"${DESCRIPTION[$i]}\"" >>$ini
|
||||
echo "PROTOCOL:0=\"${PROTOCOL[$i]}\"" >>$ini
|
||||
echo "USE_DHCP:0=\"${USE_DHCP[$i]}\"" >>$ini
|
||||
flag=
|
||||
if [[ ${USE_DHCP[$i]} == yes ]]; then
|
||||
# get dhcp assigned ipv4 address & mask
|
||||
NET=($(ip -4 addr show $IFACE|awk '/inet /{sub("/"," ",$2);print $2;exit}'))
|
||||
@@ -140,7 +132,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
((x++))
|
||||
done
|
||||
fi
|
||||
[[ "${PROTOCOL[$i]}" == *"ipv4"* ]] && flag=1
|
||||
else
|
||||
# get static assigned ipv4 address & mask
|
||||
echo "IPADDR:0=\"${IPADDR[$i]}\"" >>$ini
|
||||
@@ -166,7 +157,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
((x++))
|
||||
done
|
||||
fi
|
||||
[[ "${PROTOCOL[$i]}" == *"ipv6"* ]] && flag=1
|
||||
else
|
||||
# get static assigned ipv6 address & prefix
|
||||
echo "IPADDR6:0=\"${IPADDR6[$i]}\"" >>$ini
|
||||
@@ -175,7 +165,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
echo "METRIC6:0=\"${METRIC6[$i]}\"" >>$ini
|
||||
echo "PRIVACY6:0=\"\"" >>$ini
|
||||
fi
|
||||
[[ -n $flag && ($tag == $IFACE || $tag == init) ]] && dhcp=1
|
||||
echo "MTU=\"${MTU[$i]}\"" >>$ini
|
||||
if [[ -n ${VLANS[$i]} ]]; then
|
||||
# process VLAN interfaces
|
||||
@@ -185,7 +174,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
echo "DESCRIPTION:$j=\"${DESCRIPTION[$i,$j]}\"" >>$ini
|
||||
echo "PROTOCOL:$j=\"${PROTOCOL[$i,$j]}\"" >>$ini
|
||||
echo "USE_DHCP:$j=\"${USE_DHCP[$i,$j]}\"" >>$ini
|
||||
flag=
|
||||
if [[ ${USE_DHCP[$i,$j]} == yes ]]; then
|
||||
DEV=$IFACE.${VLANID[$i,$j]}
|
||||
# get dhcp assigned ipv4 address & mask
|
||||
@@ -196,7 +184,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
echo "GATEWAY:$j=\"$GW\"" >>$ini
|
||||
echo "METRIC:$j=\"${METRIC[$i,$j]}\"" >>$ini
|
||||
data="${data}${ETH}_I_IPADDR:$j=${NET[0]} ${ETH}_S_NETMASK:$j=$(mask ${NET[1]}) ${ETH}_I_GATEWAY:$j=$GW "
|
||||
[[ "${PROTOCOL[$i,$j]}" == *"ipv4"* ]] && flag=1
|
||||
else
|
||||
# get static assigned ipv4 address & mask
|
||||
echo "IPADDR:$j=\"${IPADDR[$i,$j]}\"" >>$ini
|
||||
@@ -216,7 +203,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
echo "METRIC6:$j=\"${METRIC6[$i,$j]}\"" >>$ini
|
||||
echo "PRIVACY6:$j=\"${PRIVACY6[$i,$j]}\"" >>$ini
|
||||
data="${data}${ETH}_I_IPADDR6:$j=${NET6[0]} ${ETH}_I_NETMASK6:$j=${NET6[1]} ${ETH}_I_GATEWAY6:$j=$GW6 "
|
||||
[[ "${PROTOCOL[$i,$j]}" == *"ipv6"* ]] && flag=1
|
||||
else
|
||||
# get static assigned ipv6 address & prefix
|
||||
echo "IPADDR6:$j=\"${IPADDR6[$i,$j]}\"" >>$ini
|
||||
@@ -225,7 +211,6 @@ for ((i=0;i<${SYSNICS:-1};i++)); do
|
||||
echo "METRIC6:$j=\"${METRIC6[$i,$j]}\"" >>$ini
|
||||
echo "PRIVACY6:$j=\"\"" >>$ini
|
||||
fi
|
||||
[[ -n $flag && ($tag == $IFACE || $tag == init) ]] && dhcp=1
|
||||
done
|
||||
else
|
||||
# interface without VLANs
|
||||
@@ -235,10 +220,9 @@ done
|
||||
# atomically update file
|
||||
/usr/bin/mv $ini ${ini%.*}
|
||||
|
||||
# the following section is executed on static only or on dhcp hook
|
||||
if [[ (-n $1 && -z $dhcp) || (-z $1 && -n $dhcp) ]]; then
|
||||
$reload >/dev/null 2>&1 &
|
||||
fi
|
||||
# delayed execution
|
||||
rm -f /tmp/atjob.tmp
|
||||
echo "sleep 40;$reload job"|at -M now 2>/dev/null
|
||||
|
||||
# send update information
|
||||
if [[ -n $interface && -n $data && -e /var/run/nginx.socket ]]; then
|
||||
|
||||
Reference in New Issue
Block a user