summaryrefslogtreecommitdiffstats
path: root/net/ez-ipupdate/files/ez-ipupdate.hotplug
blob: 3359c6a49896aa7056614311a7b94e76dcfe52dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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" ] && {
		    network_get_device dev "$INTERFACE" || return

		    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
		}
	    }
	}

	. /lib/functions/network.sh

	config_load ddns
	config_foreach ddns ddns
	;;
esac