packages/net/ez-ipupdate/files/ez-ipupdate.hotplug
florian a75cc984a0 [package] ez-ipudate: fix config generator to permit default server
This patch allows ez-ipupdate to use the default server for the specified DDNS
service type when no server hostname is supplied by the user.

In detail:

The default config file supplied in the ez-ipupdate package does not include a
"server" line, and ez-ipupdate itself does not require an explicit server
(since it will select a server based on the service type).

Unfortunately, if the user simply fills in the blanks in the OpenWrt-supplied
ez-ipupdate config, the service will silently fail to start because the hotplug
 script inserts a line in the generated config which states "server=", and
ez-ipupdate doesn't like a blank server setting.

The above scenario doesn't seem like a good user experience, so this is a
small patch to the hotplug script to omit the "server" line (and let
ez-ipupdate select its own default) in the event that the user has not
specified a server.

Signed-off-by: Scott Dudley <spmsink@hotmail.com>

git-svn-id: svn://svn.openwrt.org/openwrt/packages@20783 3c298f89-4303-0410-b956-a3cf2f4a3e73
2010-04-10 18:33:10 +00:00

84 lines
1.6 KiB
Plaintext

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" ] && {
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
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
}
}
}
include /lib/network
scan_interfaces
config_load ddns
config_foreach ddns ddns
;;
esac