source: packages/net/ez-ipupdate/files/ez-ipupdate.hotplug @ 20783

Last change on this file since 20783 was 20783, checked in by florian, 6 years ago

[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@…>

  • Property svn:eol-style set to native
File size: 1.6 KB
Line 
1NAME=ez-ipupdate
2COMMAND=/usr/sbin/$NAME
3
4case "$ACTION" in
5    ifup|ifdown)
6        cleanup() {
7            [ -e $1 ] && {
8                kill -9 $(cat $1)
9                rm $1
10            }
11        }
12
13        ddns() {
14            local cfg="$1"
15            config_get program $cfg program
16            [ "$program" = "$NAME" ] && {
17                config_get interface $cfg interface
18                [ "$interface" = "$INTERFACE" ] && {
19                    config_get dev "$INTERFACE" ifname
20
21                    config_get enabled $cfg enabled
22                    enabled=${enabled:-1}
23
24                    config_get service  $cfg service
25
26                    config_get pidfile $cfg pidfile
27                    pidfile=${pidfile:-/var/run/$NAME-$service-$dev.pid}
28
29                    case "$ACTION" in
30                        ifdown)
31                            cleanup $pidfile
32                            ;;
33                        *)
34                            case "$enabled" in
35                                1|yes|true)
36                                    [ ! -e $pidfile ] && {
37                                        config_get cache $cfg cache
38                                        [ -z "$cache" ] && cache=/tmp/$NAME-$service-$dev.cache
39
40                                        config_get config $cfg config
41                                        [ -z "$config" ] && {
42                                            config=/var/run/$NAME-$service-$dev.conf
43                                            config_get username $cfg username
44                                            config_get password $cfg password
45                                            config_get hostname $cfg hostname
46                                            service=${service:-"dyndns"}
47                                            config_get server   $cfg server
48                                            server_line=""
49                                            [ -n "$server" ] && {
50                                                server_line="server=$server"
51                                            }
52                                            cat > $config <<EOF
53service-type=$service
54$server_line
55user=$username:$password
56host=$hostname
57cache-file=$cache
58pid-file=$pidfile
59interface=$dev
60quiet
61EOF
62                                        }
63
64                                        $COMMAND -c $config 2>&1 | logger -t $NAME &
65                                    }
66                                    ;;
67                                *)
68                                    cleanup $pidfile
69                                    ;;
70                            esac
71                    esac
72                }
73            }
74        }
75
76
77        include /lib/network
78        scan_interfaces
79        config_load ddns
80
81        config_foreach ddns ddns
82        ;;
83esac
Note: See TracBrowser for help on using the repository browser.