make ez-ipupdate uci aware, Signed-off-by: David Bird <david@coova.com>
authorJohn Crispin <john@openwrt.org>
Thu, 5 Jun 2008 09:45:34 +0000 (09:45 +0000)
committerJohn Crispin <john@openwrt.org>
Thu, 5 Jun 2008 09:45:34 +0000 (09:45 +0000)
SVN-Revision: 11363

net/ez-ipupdate/Makefile
net/ez-ipupdate/files/ez-ipupdate.conf
net/ez-ipupdate/files/ez-ipupdate.hotplug

index 04382b1dfbbe059c2ed847964d2efa19e8989579..8b6808012ce731019e8d7fc85ed045d94e348f88 100644 (file)
@@ -28,10 +28,6 @@ define Package/ez-ipupdate
   URL:=http://ez-ipupdate.com/
 endef
 
-define Package/ez-ipupdate/conffiles
-/etc/ez-ipupdate.conf
-endef
-
 # uses GNU configure
 
 define Build/Compile
@@ -41,8 +37,8 @@ endef
 define Package/ez-ipupdate/install
        $(INSTALL_DIR) $(1)/usr/sbin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/ez-ipupdate $(1)/usr/sbin/
-       $(INSTALL_DIR) $(1)/etc
-       $(INSTALL_CONF) ./files/ez-ipupdate.conf $(1)/etc/
+       $(INSTALL_DIR) $(1)/etc/config/
+       $(INSTALL_CONF) ./files/ez-ipupdate.config $(1)/etc/config/ddns
        $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
        $(INSTALL_BIN) ./files/ez-ipupdate.hotplug $(1)/etc/hotplug.d/iface/30-ez-ipupdate
 endef
index cb98275fd38e0c801a0f2574fa3b9cd4cfec4ee7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,8 +0,0 @@
-service-type=zoneedit
-user=myname:mypassword
-host=mydomain.com
-quiet
-
-# Do not change the lines below
-cache-file=/tmp/ez-ipupdate.cache
-pid-file=/var/run/ez-ipupdate.pid
index 352c404486ca498d9d16cecadb470a45085b2e2f..f9c96a410134fd9b55488158b90613d24a6e3de9 100644 (file)
@@ -1,14 +1,76 @@
 NAME=ez-ipupdate
-CONFIG=/etc/$NAME.conf
 COMMAND=/usr/sbin/$NAME
 
-[ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && {
-        [ -x $COMMAND ] && [ -r $CONFIG ] && {
-                               include /lib/network
-                               scan_interfaces
-                               
-                               config_get ifname wan ifname 
-                               [ -n "$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 pidfile $cfg pidfile
+                   pidfile=${pidfile:-/var/run/$NAME-$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-$dev.cache
+                                       
+                                       config_get config $cfg config
+                                       [ -z "$config" ] && {
+                                           config=/var/run/$NAME-$dev.conf
+                                           config_get service  $cfg service
+                                           config_get username $cfg username
+                                           config_get password $cfg password
+                                           config_get hostname $cfg hostname
+                                           service=${service:-"dyndns"}
+                                           cat > $config <<EOF
+service-type=$service
+user=$username:$password
+host=$hostname
+cache-file=$cache
+pid-file=$pidfile
+interface=$dev
+quiet
+EOF
+                                       }
+                                       
+                                       $COMMAND -d -c $config 2>&1 | logger -t $NAME &
+                                   }
+                                   ;;
+                               *)
+                                   cleanup $pidfile
+                                   ;;
+                           esac
+                   esac
+               }
+           }
+       }
+       
+       
+       include /lib/network
+       scan_interfaces
+       config_load ddns
+       
+       config_foreach ddns ddns
+       ;;
+esac