blob: 3359c6a49896aa7056614311a7b94e76dcfe52dd (
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
77
78
79
80
81
|
NAME=ez-ipupdate
COMMAND=/usr/sbin/$NAME
case "$ACTION" in
ifup|ifdown)
cleanup() {
[ -e $1 ] && {
kill -9 $(cat $1)
rm $1
}
}
ddns() {
local cfg="$1"
config_get program $cfg program
[ "$program" = "$NAME" ] && {
config_get interface $cfg interface
[ "$interface" = "$INTERFACE" ] && {
network_get_device dev "$INTERFACE" || return
config_get enabled $cfg enabled
enabled=${enabled:-1}
config_get service $cfg service
config_get pidfile $cfg pidfile
pidfile=${pidfile:-/var/run/$NAME-$service-$dev.pid}
case "$ACTION" in
ifdown)
cleanup $pidfile
;;
*)
case "$enabled" in
1|yes|true)
[ ! -e $pidfile ] && {
config_get cache $cfg cache
[ -z "$cache" ] && cache=/tmp/$NAME-$service-$dev.cache
config_get config $cfg config
[ -z "$config" ] && {
config=/var/run/$NAME-$service-$dev.conf
config_get username $cfg username
config_get password $cfg password
config_get hostname $cfg hostname
service=${service:-"dyndns"}
config_get server $cfg server
server_line=""
[ -n "$server" ] && {
server_line="server=$server"
}
cat > $config <<EOF
service-type=$service
$server_line
user=$username:$password
host=$hostname
cache-file=$cache
pid-file=$pidfile
interface=$dev
quiet
EOF
}
$COMMAND -c $config 2>&1 | logger -t $NAME &
}
;;
*)
cleanup $pidfile
;;
esac
esac
}
}
}
. /lib/functions/network.sh
config_load ddns
config_foreach ddns ddns
;;
esac
|