blob: 9cbadf44a21fdb6d28273628acae23fb9a75bf20 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#!/bin/ash
#
# Default handlers for config files
#
HANDLERS_config='
wireless) reload_wireless;;
network) reload_network;;
system) reload_system;;
'
HANDLERS_file='
hosts) rm -f /etc/hosts; mv $config /etc/hosts; killall -HUP dnsmasq ;;
ethers) rm -f /etc/ethers; mv $config /etc/ethers; killall -HUP dnsmasq ;;
firewall) mv /tmp/.webif/file-firewall /etc/config/firewall && /etc/init.d/S45firewall;;
'
# for some reason a for loop with "." doesn't work
eval "$(cat /usr/lib/webif/apply-*.sh 2>&-)"
reload_network() {
echo '@TR<<Reloading>> @TR<<networking settings>> ...'
grep '^wan_' config-network >&- 2>&- && {
ifdown wan
ifup wan
killall -HUP dnsmasq
}
grep '^lan_' config-network >&- 2>&- && {
ifdown lan
ifup lan
killall dnsmasq
/etc/init.d/S??dnsmasq
}
}
reload_wireless() {
echo '@TR<<Reloading>> @TR<<wireless settings>> ...'
killall nas >&- 2>&- && sleep 2
(
/sbin/wifi
[ -f /etc/init.d/S41wpa ] && /etc/init.d/S41wpa
) >&- 2>&- <&-
}
reload_system() {
echo '@TR<<Applying>> @TR<<system settings>> ...'
echo "$(nvram get wan_hostname)" > /proc/sys/kernel/hostname
}
cd /tmp/.webif
# file-* other config files
for config in $(ls file-* 2>&-); do
name=${config#file-}
echo "@TR<<Processing>> @TR<<config file>>: $name"
eval 'case "$name" in
'"$HANDLERS_file"'
esac'
done
# config-* simple config files
(
cd /proc/self
cat /tmp/.webif/config-* 2>&- | grep '=' >&- 2>&- && {
cat /tmp/.webif/config-* 2>&- | tee fd/1 | xargs -n1 nvram set
echo "@TR<<Committing>> NVRAM ..."
nvram commit
}
)
for config in $(ls config-* 2>&-); do
name=${config#config-}
eval 'case "$name" in
'"$HANDLERS_config"'
esac'
done
sleep 2
rm -f config-*
|