use internal server unless specified, closes #7041
[openwrt/svn-archive/archive.git] / net / ez-ipupdate / files / ez-ipupdate.hotplug
index c305458b1a632ce0ff53894df5ebb7f30e184219..8f924f154fce49fe093c8288c6ba0f9ba02fe539 100644 (file)
@@ -1,10 +1,79 @@
 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