NAME=ez-ipupdate
-CONFIG=/etc/$NAME.conf
COMMAND=/usr/sbin/$NAME
-[ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && {
- [ -x $COMMAND ] && [ -r $CONFIG ] && {
- eval "ifname=\"\${${INTERFACE}_ifname}\""
- $COMMAND -c $CONFIG -i $ifname 2>&1 | logger -t $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" ] && {
+ config_get dev "$INTERFACE" ifname
+
+ 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
+ cat > $config <<EOF
+service-type=$service
+${server:+server=$server}
+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
+ }
+ }
+ }
+
+
+ include /lib/network
+ scan_interfaces
+ config_load ddns
+
+ config_foreach ddns ddns
+ ;;
+esac