add packages_10.03.2 in preparation for the 10.03.2 interim release
[10.03/packages.git] / net / yaddns / files / etc / hotplug.d / iface / 25-ddns
1 #!/bin/sh
2
3 YADDNS_CONF=/tmp/yaddns.conf
4 YADDNS_PID=/var/run/yaddns.pid
5
6 prepare_yaddns_conf ()
7 {
8         . /etc/functions.sh
9         include /lib/network
10
11         > $YADDNS_CONF
12
13         SECTIONS=""
14         config_cb()
15         {
16                 SECTIONS="$SECTIONS $2"
17         }
18         config_load "ddns"
19
20         for section in $SECTIONS; do
21                 config_get enabled $section enabled
22                 if [ "$enabled" = "1" ]; then
23                         if [ -z "$header_filled" ]; then
24                                 config_get ip_source $section ip_source
25                                 #if ip source is not defined, assume we want to get ip from wan 
26                                 if [ "$ip_source" != "interface" ] && [ "$ip_source" != "web" ]; then
27                                         ip_source="network"
28                                 fi
29                                 if [ "$ip_source" = "interface" ]; then
30                                         config_get ip_interface $section ip_interface
31                                 fi
32                                 if [ "$ip_source" = "network" ]; then
33                                         if [ -z "$ip_network" ]; then
34                                                 ip_network="wan"
35                                         fi
36                                         scan_interfaces
37                                         config_load /var/state/network
38                                         config_get ip_interface $ip_network ifname
39                                 fi
40                                 if [ "$ip_source" = "web" ]; then
41                                         config_get ip_url $section ip_url
42                                         config_get check_interval $section check_interval
43                                         config_get check_unit $section check_unit
44                                         if [ -z "$check_interval" ]; then
45                                                 check_interval=600
46                                         fi
47                                         if [ -z "$check_unit" ]; then
48                                                 check_unit="seconds"
49                                         fi
50                                         if [ -z "$ip_url" ]; then
51                                                 ip_url="http://checkip.dyndns.org/"
52                                         fi
53                                         case "$check_unit" in
54                                                 "days" )
55                                                         check_interval_seconds=$(($check_interval*60*60*24))
56                                                         ;;
57                                                 "hours" )
58                                                         check_interval_seconds=$(($check_interval*60*60))
59                                                         ;;
60                                                 "minutes" )
61                                                         check_interval_seconds=$(($check_interval*60))
62                                                         ;;
63                                                 "seconds" )
64                                                         check_interval_seconds=$check_interval
65                                                         ;;
66                                                 * )
67                                                         #default is hours
68                                                         check_interval_seconds=$(($check_interval*60*60))
69                                                         ;;
70                                         esac
71                                         myip_host="`echo $ip_url | sed 's%.*//\([^:/]*\).*%\1%'`"
72                                         myip_port="`echo $ip_url | sed -n 's%.*//[^:]*:\([0-9]\+\).*%\1%; t m; b; :m p'`"
73                                         if [ -z "$myip_port" ]; then
74                                                 myip_port=80
75                                         fi
76                                         myip_path="`echo $ip_url | sed 's%.*//[^/]*\(.*\)%\1%'`"
77                                         if [ -z "$myip_path" ]; then
78                                                 myip_path="/"
79                                         fi
80                                         echo mode = \"indirect\" >> $YADDNS_CONF
81                                         echo myip_host = \"$myip_host\" >> $YADDNS_CONF
82                                         echo myip_path = \"$myip_path\" >> $YADDNS_CONF
83                                         echo myip_port = \"$myip_port\" >> $YADDNS_CONF
84                                         echo myip_upint = \"$check_interval_seconds\" >> $YADDNS_CONF
85                                 else
86                                         echo mode = \"direct\" >> $YADDNS_CONF
87                                         echo wanifname = \"$ip_interface\" >> $YADDNS_CONF
88                                 fi
89                                 echo >> $YADDNS_CONF
90                                 header_filled=1
91                         fi
92                         config_get service_name $section service_name
93                         config_get domain $section domain
94                         config_get username $section username
95                         config_get password $section password
96                         echo account \{ >> $YADDNS_CONF
97                         echo -e '\tname = '\"$section\" >> $YADDNS_CONF
98                         echo -e '\tservice = '\"$service_name\" >> $YADDNS_CONF
99                         echo -e '\tusername = '\"$username\" >> $YADDNS_CONF
100                         echo -e '\tpassword = '\"$password\" >> $YADDNS_CONF
101                         echo -e '\thostname = '\"$domain\" >> $YADDNS_CONF
102                         echo \} >> $YADDNS_CONF
103                 fi
104         done
105 }
106
107 if [ "$INTERFACE" = "wan" ] && [ "$ACTION" = "ifup" ]
108 then
109         prepare_yaddns_conf
110         pid=`pidof yaddns`
111         if [ -z "$pid" ]; then
112                 yaddns -f $YADDNS_CONF -p $YADDNS_PID -D
113         else
114                 kill -HUP $pid
115         fi
116 fi
117