diff --git a/ddclient b/ddclient index 15b8a2e..c442b5f 100755 --- a/ddclient +++ b/ddclient @@ -76,35 +76,60 @@ my %builtinweb = ( 'myonlineportal' => { 'url' => 'https://myonlineportal.net/checkip', }, ); my %builtinfw = ( - 'watchguard-soho' => { - 'name' => 'Watchguard SOHO FW', - 'url' => '/pubnet.htm', - 'skip' => 'NAME=IPAddress VALUE=', + '2wire' => { + 'name' => '2Wire 1701HG Gateway', + 'url' => '/xslt?PAGE=B01', + 'skip' => 'Internet Address:', }, - 'netopia-r910' => { - 'name' => 'Netopia R910 FW', - 'url' => '/WanEvtLog', - 'skip' => 'local:', + '3com-3c886a' => { + 'name' => '3com 3c886a 56k Lan Modem', + 'url' => '/stat3.htm', + 'skip' => 'IP address in use', }, - 'smc-barricade' => { - 'name' => 'SMC Barricade FW', - 'url' => '/status.htm', - 'skip' => 'IP Address', + '3com-oc-remote812' => { + 'name' => '3com OfficeConnect Remote 812', + 'url' => '/callEvent', + 'skip' => '.*LOCAL', }, - 'smc-barricade-alt' => { - 'name' => 'SMC Barricade FW (alternate config)', - 'url' => '/status.HTM', - 'skip' => 'WAN IP', + 'alcatel-510' => { + 'name' => 'Alcatel Speed Touch 510', + 'url' => '/cgi/ip/', + 'skip' => 'ppp', }, - 'smc-barricade-7401bra' => { - 'name' => 'SMC Barricade 7401BRA FW', - 'url' => '/admin/wan1.htm', - 'skip' => 'IP Address', + 'alcatel-stp' => { + 'name' => 'Alcatel Speed Touch Pro', + 'url' => '/cgi/router/', + 'skip' => 'Brt', }, - 'netgear-rt3xx' => { - 'name' => 'Netgear FW', - 'url' => '/mtenSysStatus.html', - 'skip' => 'IP Address', + 'allnet-1298' => { + 'name' => 'Allnet 1298', + 'url' => '/cgi/router/', + 'skip' => 'WAN', + }, + 'cayman-3220h' => { + 'name' => 'Cayman 3220-H DSL', + 'url' => '/shell/show+ip+interfaces', + 'skip' => '.*inet', + }, + 'dlink-524' => { + 'name' => 'D-Link DI-524', + 'url' => '/st_device.html', + 'skip' => 'WAN.*?Addres', + }, + 'dlink-604' => { + 'name' => 'D-Link DI-604', + 'url' => '/st_devic.html', + 'skip' => 'WAN.*?IP.*Address', + }, + 'dlink-614' => { + 'name' => 'D-Link DI-614+', + 'url' => '/st_devic.html', + 'skip' => 'WAN', + }, + 'e-tech' => { + 'name' => 'E-tech Router', + 'url' => '/Status.htm', + 'skip' => 'Public IP Address', }, 'elsa-lancom-dsl10' => { 'name' => 'ELSA LanCom DSL/10 DSL FW', @@ -126,6 +151,16 @@ my %builtinfw = ( 'url' => '/Status.htm', 'skip' => 'WAN.*?Address', }, + 'linksys-rv042-wan1' => { + 'name' => 'Linksys RV042 Dual Homed Router WAN Port 2', + 'url' => '/home.htm', + 'skip' => 'WAN1 IP', + }, + 'linksys-rv042-wan2' => { + 'name' => 'Linksys RV042 Dual Homed Router WAN Port 2', + 'url' => '/home.htm', + 'skip' => 'WAN2 IP', + }, 'linksys-ver2' => { 'name' => 'Linksys FW version 2', 'url' => '/RouterStatus.htm', @@ -136,6 +171,11 @@ my %builtinfw = ( 'url' => '/Status_Router.htm', 'skip' => 'WAN.*?Address', }, + 'linksys-wcg200' => { + 'name' => 'Linksys WCG200 FW', + 'url' => '/RgStatus.asp', + 'skip' => 'WAN.IP.*?Address', + }, 'linksys-wrt854g' => { 'name' => 'Linksys WRT854G FW', 'url' => '/Status_Router.asp', @@ -151,145 +191,105 @@ my %builtinfw = ( 'url' => '/MainPage?id=6', 'skip' => 'ppp-0', }, - '3com-3c886a' => { - 'name' => '3com 3c886a 56k Lan Modem', - 'url' => '/stat3.htm', - 'skip' => 'IP address in use', - }, - 'sohoware-nbg800' => { - 'name' => 'SOHOWare BroadGuard NBG800', - 'url' => '/status.htm', - 'skip' => 'Internet IP', - }, - 'xsense-aero' => { - 'name' => 'Xsense Aero', - 'url' => '/A_SysInfo.htm', - 'skip' => 'WAN.*?IP Address', - }, - 'alcatel-stp' => { - 'name' => 'Alcatel Speed Touch Pro', - 'url' => '/cgi/router/', - 'skip' => 'Brt', - }, - 'alcatel-510' => { - 'name' => 'Alcatel Speed Touch 510', - 'url' => '/cgi/ip/', - 'skip' => 'ppp', - }, - 'allnet-1298' => { - 'name' => 'Allnet 1298', - 'url' => '/cgi/router/', - 'skip' => 'WAN', - }, - '3com-oc-remote812' => { - 'name' => '3com OfficeConnect Remote 812', - 'url' => '/callEvent', - 'skip' => '.*LOCAL', - }, - 'e-tech' => { - 'name' => 'E-tech Router', - 'url' => '/Status.htm', - 'skip' => 'Public IP Address', - }, - 'cayman-3220h' => { - 'name' => 'Cayman 3220-H DSL', - 'url' => '/shell/show+ip+interfaces', - 'skip' => '.*inet', - }, - 'vigor-2200usb' => { - 'name' => 'Vigor 2200 USB', - 'url' => '/doc/online.sht', - 'skip' => 'PPPoA', - }, - 'dlink-614' => { - 'name' => 'D-Link DI-614+', - 'url' => '/st_devic.html', - 'skip' => 'WAN', - }, - 'dlink-604' => { - 'name' => 'D-Link DI-604', - 'url' => '/st_devic.html', - 'skip' => 'WAN.*?IP.*Address', - }, - 'olitec-SX200' => { - 'name' => 'olitec-SX200', - 'url' => '/doc/wan.htm', - 'skip' => 'st_wan_ip[0] = "', - }, - 'westell-6100' => { - 'name' => 'Westell C90-610015-06 DSL Router', - 'url' => '/advstat.htm', - 'skip' => 'IP.+?Address', - }, - '2wire' => { - 'name' => '2Wire 1701HG Gateway', - 'url' => '/xslt?PAGE=B01', - 'skip' => 'Internet Address:', - }, - 'linksys-rv042-wan1' => { - 'name' => 'Linksys RV042 Dual Homed Router WAN Port 2', - 'url' => '/home.htm', - 'skip' => 'WAN1 IP', - }, - 'linksys-rv042-wan2' => { - 'name' => 'Linksys RV042 Dual Homed Router WAN Port 2', - 'url' => '/home.htm', - 'skip' => 'WAN2 IP', + 'netgear-dg834g' => { + 'name' => 'netgear-dg834g', + 'url' => '/setup.cgi?next_file=s_status.htm&todo=cfg_init', + 'skip' => '', }, 'netgear-rp614' => { 'name' => 'Netgear RP614 FW', 'url' => '/sysstatus.html', 'skip' => 'IP Address', }, - 'watchguard-edge-x' => { - 'name' => 'Watchguard Edge X FW', - 'url' => '/netstat.htm', - 'skip' => 'inet addr:', - }, - 'dlink-524' => { - 'name' => 'D-Link DI-524', - 'url' => '/st_device.html', - 'skip' => 'WAN.*?Addres', - }, - 'rtp300' => { - 'name' => 'Linksys RTP300', - 'url' => '/cgi-bin/webcm?getpage=%2Fusr%2Fwww_safe%2Fhtml%2Fstatus%2FRouter.html', - 'skip' => 'Internet.*?IP Address', - }, - 'netgear-wpn824' => { - 'name' => 'Netgear WPN824 FW', - 'url' => '/RST_status.htm', + 'netgear-rt3xx' => { + 'name' => 'Netgear FW', + 'url' => '/mtenSysStatus.html', 'skip' => 'IP Address', }, - 'linksys-wcg200' => { - 'name' => 'Linksys WCG200 FW', - 'url' => '/RgStatus.asp', - 'skip' => 'WAN.IP.*?Address', - }, - 'netgear-dg834g' => { - 'name' => 'netgear-dg834g', - 'url' => '/setup.cgi?next_file=s_status.htm&todo=cfg_init', - 'skip' => '', - }, 'netgear-wgt624' => { 'name' => 'Netgear WGT624', 'url' => '/RST_st_dhcp.htm', 'skip' => 'IP Address', }, - 'sveasoft' => { - 'name' => 'Sveasoft WRT54G/WRT54GS', - 'url' => '/Status_Router.asp', - 'skip' => 'var wan_ip', + 'netgear-wpn824' => { + 'name' => 'Netgear WPN824 FW', + 'url' => '/RST_status.htm', + 'skip' => 'IP Address', + }, + 'netopia-r910' => { + 'name' => 'Netopia R910 FW', + 'url' => '/WanEvtLog', + 'skip' => 'local:', + }, + 'olitec-SX200' => { + 'name' => 'olitec-SX200', + 'url' => '/doc/wan.htm', + 'skip' => 'st_wan_ip[0] = "', + }, + 'rtp300' => { + 'name' => 'Linksys RTP300', + 'url' => '/cgi-bin/webcm?getpage=%2Fusr%2Fwww_safe%2Fhtml%2Fstatus%2FRouter.html', + 'skip' => 'Internet.*?IP Address', + }, + 'sitecom-dc202' => { + 'name' => 'Sitecom DC-202 FW', + 'url' => '/status.htm', + 'skip' => 'Internet IP Address', + }, + 'smc-barricade' => { + 'name' => 'SMC Barricade FW', + 'url' => '/status.htm', + 'skip' => 'IP Address', }, 'smc-barricade-7004vbr' => { 'name' => 'SMC Barricade FW (7004VBR model config)', 'url' => '/status_main.stm', 'skip' => 'var wan_ip=', }, - 'sitecom-dc202' => { - 'name' => 'Sitecom DC-202 FW', + 'smc-barricade-7401bra' => { + 'name' => 'SMC Barricade 7401BRA FW', + 'url' => '/admin/wan1.htm', + 'skip' => 'IP Address', + }, + 'smc-barricade-alt' => { + 'name' => 'SMC Barricade FW (alternate config)', + 'url' => '/status.HTM', + 'skip' => 'WAN IP', + }, + 'sohoware-nbg800' => { + 'name' => 'SOHOWare BroadGuard NBG800', 'url' => '/status.htm', - 'skip' => 'Internet IP Address', + 'skip' => 'Internet IP', + }, + 'sveasoft' => { + 'name' => 'Sveasoft WRT54G/WRT54GS', + 'url' => '/Status_Router.asp', + 'skip' => 'var wan_ip', + }, + 'vigor-2200usb' => { + 'name' => 'Vigor 2200 USB', + 'url' => '/doc/online.sht', + 'skip' => 'PPPoA', + }, + 'watchguard-edge-x' => { + 'name' => 'Watchguard Edge X FW', + 'url' => '/netstat.htm', + 'skip' => 'inet addr:', + }, + 'watchguard-soho' => { + 'name' => 'Watchguard SOHO FW', + 'url' => '/pubnet.htm', + 'skip' => 'NAME=IPAddress VALUE=', + }, + 'westell-6100' => { + 'name' => 'Westell C90-610015-06 DSL Router', + 'url' => '/advstat.htm', + 'skip' => 'IP.+?Address', + }, + 'xsense-aero' => { + 'name' => 'Xsense Aero', + 'url' => '/A_SysInfo.htm', + 'skip' => 'WAN.*?IP Address', }, ); @@ -313,328 +313,195 @@ sub setv { 'type' => shift, 'required' => shift, 'cache' => shift, - 'config' => shift, 'default' => shift, 'minimum' => shift, }; } my %variables = ( 'global-defaults' => { - 'daemon' => setv(T_DELAY, 0, 0, 1, $daemon_default, interval('60s')), - 'foreground' => setv(T_BOOL, 0, 0, 1, 0, undef), - 'file' => setv(T_FILE, 0, 0, 1, "$etc$program.conf", undef), - 'cache' => setv(T_FILE, 0, 0, 1, "$cachedir$program.cache", undef), - 'pid' => setv(T_FILE, 0, 0, 1, "", undef), - 'proxy' => setv(T_FQDNP, 0, 0, 1, '', undef), - 'protocol' => setv(T_PROTO, 0, 0, 1, 'dyndns2', undef), + 'daemon' => setv(T_DELAY, 0, 0, $daemon_default, interval('60s')), + 'foreground' => setv(T_BOOL, 0, 0, 0, undef), + 'file' => setv(T_FILE, 0, 0, "$etc$program.conf", undef), + 'cache' => setv(T_FILE, 0, 0, "$cachedir$program.cache", undef), + 'pid' => setv(T_FILE, 0, 0, "", undef), + 'proxy' => setv(T_FQDNP, 0, 0, '', undef), + 'protocol' => setv(T_PROTO, 0, 0, 'dyndns2', undef), - 'use' => setv(T_USE, 0, 0, 1, 'ip', undef), - 'ip' => setv(T_IP, 0, 0, 1, undef, undef), - 'if' => setv(T_IF, 0, 0, 1, 'ppp0', undef), - 'if-skip' => setv(T_STRING,1, 0, 1, '', undef), - 'web' => setv(T_STRING,0, 0, 1, 'dyndns', undef), - 'web-skip' => setv(T_STRING,1, 0, 1, '', undef), - 'fw' => setv(T_ANY, 0, 0, 1, '', undef), - 'fw-skip' => setv(T_STRING,1, 0, 1, '', undef), - 'fw-login' => setv(T_LOGIN, 1, 0, 1, '', undef), - 'fw-password' => setv(T_PASSWD,1, 0, 1, '', undef), - 'cmd' => setv(T_PROG, 0, 0, 1, '', undef), - 'cmd-skip' => setv(T_STRING,1, 0, 1, '', undef), + 'use' => setv(T_USE, 0, 0, 'ip', undef), + 'ip' => setv(T_IP, 0, 0, undef, undef), + 'if' => setv(T_IF, 0, 0, 'ppp0', undef), + 'if-skip' => setv(T_STRING,1, 0, '', undef), + 'web' => setv(T_STRING,0, 0, 'dyndns', undef), + 'web-skip' => setv(T_STRING,1, 0, '', undef), + 'fw' => setv(T_ANY, 0, 0, '', undef), + 'fw-skip' => setv(T_STRING,1, 0, '', undef), + 'fw-login' => setv(T_LOGIN, 1, 0, '', undef), + 'fw-password' => setv(T_PASSWD,1, 0, '', undef), + 'cmd' => setv(T_PROG, 0, 0, '', undef), + 'cmd-skip' => setv(T_STRING,1, 0, '', undef), - 'timeout' => setv(T_DELAY, 0, 0, 1, interval('120s'), interval('120s')), - 'retry' => setv(T_BOOL, 0, 0, 0, 0, undef), - 'force' => setv(T_BOOL, 0, 0, 0, 0, undef), - 'ssl' => setv(T_BOOL, 0, 0, 0, 0, undef), - 'ipv6' => setv(T_BOOL, 0, 0, 0, 0, undef), - 'syslog' => setv(T_BOOL, 0, 0, 1, 0, undef), - 'facility' => setv(T_STRING,0, 0, 1, 'daemon', undef), - 'priority' => setv(T_STRING,0, 0, 1, 'notice', undef), - 'mail' => setv(T_EMAIL, 0, 0, 1, '', undef), - 'mail-failure' => setv(T_EMAIL, 0, 0, 1, '', undef), + 'timeout' => setv(T_DELAY, 0, 0, interval('120s'), interval('120s')), + 'retry' => setv(T_BOOL, 0, 0, 0, undef), + 'force' => setv(T_BOOL, 0, 0, 0, undef), + 'ssl' => setv(T_BOOL, 0, 0, 0, undef), + 'ipv6' => setv(T_BOOL, 0, 0, 0, undef), + 'syslog' => setv(T_BOOL, 0, 0, 0, undef), + 'facility' => setv(T_STRING,0, 0, 'daemon', undef), + 'priority' => setv(T_STRING,0, 0, 'notice', undef), + 'mail' => setv(T_EMAIL, 0, 0, '', undef), + 'mail-failure' => setv(T_EMAIL, 0, 0, '', undef), - 'exec' => setv(T_BOOL, 0, 0, 1, 1, undef), - 'debug' => setv(T_BOOL, 0, 0, 1, 0, undef), - 'verbose' => setv(T_BOOL, 0, 0, 1, 0, undef), - 'quiet' => setv(T_BOOL, 0, 0, 1, 0, undef), - 'help' => setv(T_BOOL, 0, 0, 1, 0, undef), - 'test' => setv(T_BOOL, 0, 0, 1, 0, undef), - 'geturl' => setv(T_STRING,0, 0, 0, '', undef), + 'exec' => setv(T_BOOL, 0, 0, 1, undef), + 'debug' => setv(T_BOOL, 0, 0, 0, undef), + 'verbose' => setv(T_BOOL, 0, 0, 0, undef), + 'quiet' => setv(T_BOOL, 0, 0, 0, undef), + 'help' => setv(T_BOOL, 0, 0, 0, undef), + 'test' => setv(T_BOOL, 0, 0, 0, undef), + 'geturl' => setv(T_STRING,0, 0, '', undef), - 'postscript' => setv(T_POSTS, 0, 0, 1, '', undef), + 'postscript' => setv(T_POSTS, 0, 0, '', undef), }, 'service-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'members.dyndns.org', undef), - 'login' => setv(T_LOGIN, 1, 0, 1, '', undef), - 'password' => setv(T_PASSWD,1, 0, 1, '', undef), - 'host' => setv(T_STRING,1, 1, 1, '', undef), + 'server' => setv(T_FQDNP, 1, 0, 'members.dyndns.org', undef), + 'login' => setv(T_LOGIN, 1, 0, '', undef), + 'password' => setv(T_PASSWD,1, 0, '', undef), + 'host' => setv(T_STRING,1, 1, '', undef), - 'use' => setv(T_USE, 0, 0, 1, 'ip', undef), - 'if' => setv(T_IF, 0, 0, 1, 'ppp0', undef), - 'if-skip' => setv(T_STRING,0, 0, 1, '', undef), - 'web' => setv(T_STRING,0, 0, 1, 'dyndns', undef), - 'web-skip' => setv(T_STRING,0, 0, 1, '', undef), - 'fw' => setv(T_ANY, 0, 0, 1, '', undef), - 'fw-skip' => setv(T_STRING,0, 0, 1, '', undef), - 'fw-login' => setv(T_LOGIN, 0, 0, 1, '', undef), - 'fw-password' => setv(T_PASSWD,0, 0, 1, '', undef), - 'cmd' => setv(T_PROG, 0, 0, 1, '', undef), - 'cmd-skip' => setv(T_STRING,0, 0, 1, '', undef), - 'ipv6' => setv(T_BOOL, 0, 0, 0, 0, undef), - 'ip' => setv(T_IP, 0, 1, 0, undef, undef), - 'wtime' => setv(T_DELAY, 0, 1, 1, 0, interval('30s')), - 'mtime' => setv(T_NUMBER,0, 1, 0, 0, undef), - 'atime' => setv(T_NUMBER,0, 1, 0, 0, undef), - 'status' => setv(T_ANY, 0, 1, 0, '', undef), - 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('30s'), 0), - 'max-interval' => setv(T_DELAY, 0, 0, 1, interval('25d'), 0), - 'min-error-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), + 'use' => setv(T_USE, 0, 0, 'ip', undef), + 'if' => setv(T_IF, 0, 0, 'ppp0', undef), + 'if-skip' => setv(T_STRING,0, 0, '', undef), + 'web' => setv(T_STRING,0, 0, 'dyndns', undef), + 'web-skip' => setv(T_STRING,0, 0, '', undef), + 'fw' => setv(T_ANY, 0, 0, '', undef), + 'fw-skip' => setv(T_STRING,0, 0, '', undef), + 'fw-login' => setv(T_LOGIN, 0, 0, '', undef), + 'fw-password' => setv(T_PASSWD,0, 0, '', undef), + 'cmd' => setv(T_PROG, 0, 0, '', undef), + 'cmd-skip' => setv(T_STRING,0, 0, '', undef), + 'ipv6' => setv(T_BOOL, 0, 0, 0, undef), + 'ip' => setv(T_IP, 0, 1, undef, undef), + 'wtime' => setv(T_DELAY, 0, 1, 0, interval('30s')), + 'mtime' => setv(T_NUMBER,0, 1, 0, undef), + 'atime' => setv(T_NUMBER,0, 1, 0, undef), + 'status' => setv(T_ANY, 0, 1, '', undef), + 'min-interval' => setv(T_DELAY, 0, 0, interval('30s'), 0), + 'max-interval' => setv(T_DELAY, 0, 0, interval('25d'), 0), + 'min-error-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), - 'warned-min-interval' => setv(T_ANY, 0, 1, 0, 0, undef), - 'warned-min-error-interval' => setv(T_ANY, 0, 1, 0, 0, undef), + 'warned-min-interval' => setv(T_ANY, 0, 1, 0, undef), + 'warned-min-error-interval' => setv(T_ANY, 0, 1, 0, undef), }, 'dyndns-common-defaults' => { - 'static' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'wildcard' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'mx' => setv(T_OFQDN, 0, 1, 1, '', undef), - 'backupmx' => setv(T_BOOL, 0, 1, 1, 0, undef), + 'static' => setv(T_BOOL, 0, 1, 0, undef), + 'wildcard' => setv(T_BOOL, 0, 1, 0, undef), + 'mx' => setv(T_OFQDN, 0, 1, '', undef), + 'backupmx' => setv(T_BOOL, 0, 1, 0, undef), }, 'easydns-common-defaults' => { - 'wildcard' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'mx' => setv(T_OFQDN, 0, 1, 1, '', undef), - 'backupmx' => setv(T_BOOL, 0, 1, 1, 0, undef), + 'wildcard' => setv(T_BOOL, 0, 1, 0, undef), + 'mx' => setv(T_OFQDN, 0, 1, '', undef), + 'backupmx' => setv(T_BOOL, 0, 1, 0, undef), }, 'noip-common-defaults' => { - 'static' => setv(T_BOOL, 0, 1, 1, 0, undef), + 'static' => setv(T_BOOL, 0, 1, 0, undef), }, 'noip-service-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'dynupdate.no-ip.com',undef), - 'login' => setv(T_LOGIN, 1, 0, 1, '', undef), - 'password' => setv(T_PASSWD,1, 0, 1, '', undef), - 'host' => setv(T_STRING,1, 1, 1, '', undef), - 'ip' => setv(T_IP, 0, 1, 0, undef, undef), - 'wtime' => setv(T_DELAY, 0, 1, 1, 0, interval('30s')), - 'mtime' => setv(T_NUMBER,0, 1, 0, 0, undef), - 'atime' => setv(T_NUMBER,0, 1, 0, 0, undef), - 'status' => setv(T_ANY, 0, 1, 0, '', undef), - 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('30s'), 0), - 'max-interval' => setv(T_DELAY, 0, 0, 1, interval('25d'), 0), - 'min-error-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), - 'warned-min-interval' => setv(T_ANY, 0, 1, 0, 0, undef), - 'warned-min-error-interval' => setv(T_ANY, 0, 1, 0, 0, undef), + 'server' => setv(T_FQDNP, 1, 0, 'dynupdate.no-ip.com',undef), + 'login' => setv(T_LOGIN, 1, 0, '', undef), + 'password' => setv(T_PASSWD,1, 0, '', undef), + 'host' => setv(T_STRING,1, 1, '', undef), + 'ip' => setv(T_IP, 0, 1, undef, undef), + 'wtime' => setv(T_DELAY, 0, 1, 0, interval('30s')), + 'mtime' => setv(T_NUMBER,0, 1, 0, undef), + 'atime' => setv(T_NUMBER,0, 1, 0, undef), + 'status' => setv(T_ANY, 0, 1, '', undef), + 'min-interval' => setv(T_DELAY, 0, 0, interval('30s'), 0), + 'max-interval' => setv(T_DELAY, 0, 0, interval('25d'), 0), + 'min-error-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), + 'warned-min-interval' => setv(T_ANY, 0, 1, 0, undef), + 'warned-min-error-interval' => setv(T_ANY, 0, 1, 0, undef), }, 'zoneedit-service-common-defaults' => { - 'zone' => setv(T_OFQDN, 0, 0, 1, undef, undef), + 'zone' => setv(T_OFQDN, 0, 0, undef, undef), }, 'dtdns-common-defaults' => { - 'login' => setv(T_LOGIN, 0, 0, 0, 'unused', undef), - 'client' => setv(T_STRING,0, 1, 1, $program, undef), + 'login' => setv(T_LOGIN, 0, 0, 'unused', undef), + 'client' => setv(T_STRING,0, 1, $program, undef), }, 'nsupdate-common-defaults' => { - 'ttl' => setv(T_NUMBER,0, 1, 0, 600, undef), - 'zone' => setv(T_STRING,1, 1, 1, '', undef), - 'tcp' => setv(T_BOOL, 0, 1, 1, 0, undef), + 'ttl' => setv(T_NUMBER,0, 1, 600, undef), + 'zone' => setv(T_STRING,1, 1, '', undef), + 'tcp' => setv(T_BOOL, 0, 1, 0, undef), }, 'cloudflare-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'api.cloudflare.com/client/v4', undef), - 'zone' => setv(T_FQDN, 1, 0, 1, '', undef), - 'login' => setv(T_LOGIN, 0, 0, 1, 'token', undef), - 'static' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'wildcard' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'mx' => setv(T_OFQDN, 0, 1, 1, '', undef), - 'backupmx' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'ttl' => setv(T_NUMBER,1, 0, 1, 1, undef), + 'server' => setv(T_FQDNP, 1, 0, 'api.cloudflare.com/client/v4', undef), + 'zone' => setv(T_FQDN, 1, 0, '', undef), + 'login' => setv(T_LOGIN, 0, 0, 'token', undef), + 'static' => setv(T_BOOL, 0, 1, 0, undef), + 'wildcard' => setv(T_BOOL, 0, 1, 0, undef), + 'mx' => setv(T_OFQDN, 0, 1, '', undef), + 'backupmx' => setv(T_BOOL, 0, 1, 0, undef), + 'ttl' => setv(T_NUMBER,1, 0, 1, undef), }, 'googledomains-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'domains.google.com', undef), + 'server' => setv(T_FQDNP, 1, 0, 'domains.google.com', undef), }, 'duckdns-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'www.duckdns.org', undef), - 'login' => setv(T_LOGIN, 0, 0, 0, 'unused', undef), + 'server' => setv(T_FQDNP, 1, 0, 'www.duckdns.org', undef), + 'login' => setv(T_LOGIN, 0, 0, 'unused', undef), }, 'freemyip-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'freemyip.com', undef), - 'login' => setv(T_LOGIN, 0, 0, 0, 'unused', undef), + 'server' => setv(T_FQDNP, 1, 0, 'freemyip.com', undef), + 'login' => setv(T_LOGIN, 0, 0, 'unused', undef), }, 'woima-common-defaults' => { - 'static' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'wildcard' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'mx' => setv(T_OFQDN, 0, 1, 1, '', undef), - 'backupmx' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'custom' => setv(T_BOOL, 0, 1, 1, 0, undef), - 'script' => setv(T_STRING,1, 1, 1, '/nic/update', undef), + 'static' => setv(T_BOOL, 0, 1, 0, undef), + 'wildcard' => setv(T_BOOL, 0, 1, 0, undef), + 'mx' => setv(T_OFQDN, 0, 1, '', undef), + 'backupmx' => setv(T_BOOL, 0, 1, 0, undef), + 'custom' => setv(T_BOOL, 0, 1, 0, undef), + 'script' => setv(T_STRING,1, 1, '/nic/update', undef), }, 'woima-service-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'dyn.woima.fi', undef), - 'login' => setv(T_LOGIN, 1, 0, 1, '', undef), - 'password' => setv(T_PASSWD,1, 0, 1, '', undef), - 'ip' => setv(T_IP, 0, 1, 0, undef, undef), - 'wtime' => setv(T_DELAY, 0, 1, 1, 0, interval('30s')), - 'mtime' => setv(T_NUMBER,0, 1, 0, 0, undef), - 'atime' => setv(T_NUMBER,0, 1, 0, 0, undef), - 'status' => setv(T_ANY, 0, 1, 0, '', undef), - 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('30s'), 0), - 'max-interval' => setv(T_DELAY, 0, 0, 1, interval('25d'), 0), - 'min-error-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), - 'warned-min-interval' => setv(T_ANY, 0, 1, 0, 0, undef), - 'warned-min-error-interval' => setv(T_ANY, 0, 1, 0, 0, undef), + 'server' => setv(T_FQDNP, 1, 0, 'dyn.woima.fi', undef), + 'login' => setv(T_LOGIN, 1, 0, '', undef), + 'password' => setv(T_PASSWD,1, 0, '', undef), + 'ip' => setv(T_IP, 0, 1, undef, undef), + 'wtime' => setv(T_DELAY, 0, 1, 0, interval('30s')), + 'mtime' => setv(T_NUMBER,0, 1, 0, undef), + 'atime' => setv(T_NUMBER,0, 1, 0, undef), + 'status' => setv(T_ANY, 0, 1, '', undef), + 'min-interval' => setv(T_DELAY, 0, 0, interval('30s'), 0), + 'max-interval' => setv(T_DELAY, 0, 0, interval('25d'), 0), + 'min-error-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), + 'warned-min-interval' => setv(T_ANY, 0, 1, 0, undef), + 'warned-min-error-interval' => setv(T_ANY, 0, 1, 0, undef), }, 'yandex-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'pddimp.yandex.ru', undef), + 'server' => setv(T_FQDNP, 1, 0, 'pddimp.yandex.ru', undef), }, 'dnsmadeeasy-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'cp.dnsmadeeasy.com', undef), - 'script' => setv(T_STRING,1, 1, 1, '/servlet/updateip', undef), + 'server' => setv(T_FQDNP, 1, 0, 'cp.dnsmadeeasy.com', undef), + 'script' => setv(T_STRING,1, 1, '/servlet/updateip', undef), }, 'dondominio-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'dondns.dondominio.com', undef), + 'server' => setv(T_FQDNP, 1, 0, 'dondns.dondominio.com', undef), }, 'ovh-common-defaults' => { - 'server' => setv(T_FQDNP, 1, 0, 1, 'www.ovh.com', undef), - 'script' => setv(T_STRING,1, 1, 1, '/nic/update', undef), - 'login' => setv(T_LOGIN, 1, 0, 1, '', undef), - 'password' => setv(T_PASSWD,1, 0, 1, '', undef), + 'server' => setv(T_FQDNP, 1, 0, 'www.ovh.com', undef), + 'script' => setv(T_STRING,1, 1, '/nic/update', undef), + 'login' => setv(T_LOGIN, 1, 0, '', undef), + 'password' => setv(T_PASSWD,1, 0, '', undef), }, ); my %services = ( - 'dyndns1' => { - 'updateable' => \&nic_dyndns2_updateable, - 'update' => \&nic_dyndns1_update, - 'examples' => \&nic_dyndns1_examples, - 'variables' => merge( - $variables{'dyndns-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, - 'dyndns2' => { - 'updateable' => \&nic_dyndns2_updateable, - 'update' => \&nic_dyndns2_update, - 'examples' => \&nic_dyndns2_examples, - 'variables' => merge( - { 'custom' => setv(T_BOOL, 0, 1, 1, 0, undef), }, - { 'script' => setv(T_STRING, 1, 1, 1, '/nic/update', undef), }, - $variables{'dyndns-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, - 'noip' => { - 'updateable' => undef, - 'update' => \&nic_noip_update, - 'examples' => \&nic_noip_examples, - 'variables' => merge( - { 'custom' => setv(T_BOOL, 0, 1, 1, 0, undef), }, - $variables{'noip-common-defaults'}, - $variables{'noip-service-common-defaults'}, - ), - }, - 'dslreports1' => { - 'updateable' => undef, - 'update' => \&nic_dslreports1_update, - 'examples' => \&nic_dslreports1_examples, - 'variables' => merge( - { 'host' => setv(T_NUMBER, 1, 1, 1, 0, undef) }, - $variables{'service-common-defaults'}, - ), - }, - 'hammernode1' => { - 'updateable' => undef, - 'update' => \&nic_hammernode1_update, - 'examples' => \&nic_hammernode1_examples, - 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'dup.hn.org', undef) }, - { 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), }, - $variables{'service-common-defaults'}, - ), - }, - 'zoneedit1' => { - 'updateable' => undef, - 'update' => \&nic_zoneedit1_update, - 'examples' => \&nic_zoneedit1_examples, - 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'dynamic.zoneedit.com', undef) }, - { 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), }, - $variables{'service-common-defaults'}, - $variables{'zoneedit-service-common-defaults'}, - ), - }, - 'easydns' => { - 'updateable' => undef, - 'update' => \&nic_easydns_update, - 'examples' => \&nic_easydns_examples, - 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'members.easydns.com', undef) }, - { 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), }, - $variables{'easydns-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, - 'namecheap' => { - 'updateable' => undef, - 'update' => \&nic_namecheap_update, - 'examples' => \&nic_namecheap_examples, - 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'dynamicdns.park-your-domain.com', undef) }, - { 'min-interval' => setv(T_DELAY, 0, 0, 1, 0, interval('5m')), }, - $variables{'service-common-defaults'}, - ), - }, - 'nfsn' => { - 'updateable' => undef, - 'update' => \&nic_nfsn_update, - 'examples' => \&nic_nfsn_examples, - 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'api.nearlyfreespeech.net', undef) }, - { 'min_interval' => setv(T_FQDNP, 0, 0, 1, 0, interval('5m')) }, - { 'ttl' => setv(T_NUMBER, 1, 0, 1, 300, undef) }, - { 'zone' => setv(T_FQDN, 1, 0, 1, undef, undef) }, - $variables{'service-common-defaults'}, - ), - }, - 'sitelutions' => { - 'updateable' => undef, - 'update' => \&nic_sitelutions_update, - 'examples' => \&nic_sitelutions_examples, - 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'www.sitelutions.com', undef) }, - { 'min-interval' => setv(T_DELAY, 0, 0, 1, 0, interval('5m')), }, - $variables{'service-common-defaults'}, - ), - }, - 'freedns' => { - 'updateable' => undef, - 'update' => \&nic_freedns_update, - 'examples' => \&nic_freedns_examples, - 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'freedns.afraid.org', undef) }, - { 'min-interval' => setv(T_DELAY, 0, 0, 1, 0, interval('5m')), }, - $variables{'service-common-defaults'}, - ), - }, 'changeip' => { 'updateable' => undef, 'update' => \&nic_changeip_update, 'examples' => \&nic_changeip_examples, 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'nic.changeip.com', undef) }, - { 'min-interval' => setv(T_DELAY, 0, 0, 1, 0, interval('5m')), }, - $variables{'service-common-defaults'}, - ), - }, - 'dtdns' => { - 'updateable' => undef, - 'update' => \&nic_dtdns_update, - 'examples' => \&nic_dtdns_examples, - 'variables' => merge( - $variables{'dtdns-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, - 'nsupdate' => { - 'updateable' => undef, - 'update' => \&nic_nsupdate_update, - 'examples' => \&nic_nsupdate_examples, - 'variables' => merge( - { 'login' => setv(T_LOGIN, 1, 0, 1, '/usr/bin/nsupdate', undef), }, - $variables{'nsupdate-common-defaults'}, + { 'server' => setv(T_FQDNP, 1, 0, 'nic.changeip.com', undef) }, + { 'min-interval' => setv(T_DELAY, 0, 0, 0, interval('5m')), }, $variables{'service-common-defaults'}, ), }, @@ -643,59 +510,12 @@ my %services = ( 'update' => \&nic_cloudflare_update, 'examples' => \&nic_cloudflare_examples, 'variables' => merge( - { 'server' => setv(T_FQDNP, 1, 0, 1, 'api.cloudflare.com/client/v4', undef) }, - { 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), }, + { 'server' => setv(T_FQDNP, 1, 0, 'api.cloudflare.com/client/v4', undef) }, + { 'min-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), }, $variables{'cloudflare-common-defaults'}, $variables{'service-common-defaults'}, ), }, - 'googledomains' => { - 'updateable' => undef, - 'update' => \&nic_googledomains_update, - 'examples' => \&nic_googledomains_examples, - 'variables' => merge( - { 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), }, - $variables{'googledomains-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, - 'duckdns' => { - 'updateable' => undef, - 'update' => \&nic_duckdns_update, - 'examples' => \&nic_duckdns_examples, - 'variables' => merge( - $variables{'duckdns-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, - 'freemyip' => { - 'updateable' => undef, - 'update' => \&nic_freemyip_update, - 'examples' => \&nic_freemyip_examples, - 'variables' => merge( - $variables{'freemyip-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, - 'woima' => { - 'updateable' => undef, - 'update' => \&nic_woima_update, - 'examples' => \&nic_woima_examples, - 'variables' => merge( - $variables{'woima-common-defaults'}, - $variables{'woima-service-common-defaults'}, - ), - }, - 'yandex' => { - 'updateable' => undef, - 'update' => \&nic_yandex_update, - 'examples' => \&nic_yandex_examples, - 'variables' => merge( - { 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), }, - $variables{'yandex-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, 'dnsmadeeasy' => { 'updateable' => undef, 'update' => \&nic_dnsmadeeasy_update, @@ -714,6 +534,145 @@ my %services = ( $variables{'service-common-defaults'}, ), }, + 'dslreports1' => { + 'updateable' => undef, + 'update' => \&nic_dslreports1_update, + 'examples' => \&nic_dslreports1_examples, + 'variables' => merge( + { 'host' => setv(T_NUMBER, 1, 1, 0, undef) }, + $variables{'service-common-defaults'}, + ), + }, + 'dtdns' => { + 'updateable' => undef, + 'update' => \&nic_dtdns_update, + 'examples' => \&nic_dtdns_examples, + 'variables' => merge( + $variables{'dtdns-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, + 'duckdns' => { + 'updateable' => undef, + 'update' => \&nic_duckdns_update, + 'examples' => \&nic_duckdns_examples, + 'variables' => merge( + $variables{'duckdns-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, + 'dyndns1' => { + 'updateable' => \&nic_dyndns2_updateable, + 'update' => \&nic_dyndns1_update, + 'examples' => \&nic_dyndns1_examples, + 'variables' => merge( + $variables{'dyndns-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, + 'dyndns2' => { + 'updateable' => \&nic_dyndns2_updateable, + 'update' => \&nic_dyndns2_update, + 'examples' => \&nic_dyndns2_examples, + 'variables' => merge( + { 'custom' => setv(T_BOOL, 0, 1, 0, undef), }, + { 'script' => setv(T_STRING, 1, 1, '/nic/update', undef), }, + $variables{'dyndns-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, + 'easydns' => { + 'updateable' => undef, + 'update' => \&nic_easydns_update, + 'examples' => \&nic_easydns_examples, + 'variables' => merge( + { 'server' => setv(T_FQDNP, 1, 0, 'members.easydns.com', undef) }, + { 'min-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), }, + $variables{'easydns-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, + 'freedns' => { + 'updateable' => undef, + 'update' => \&nic_freedns_update, + 'examples' => \&nic_freedns_examples, + 'variables' => merge( + { 'server' => setv(T_FQDNP, 1, 0, 'freedns.afraid.org', undef) }, + { 'min-interval' => setv(T_DELAY, 0, 0, 0, interval('5m')), }, + $variables{'service-common-defaults'}, + ), + }, + 'freemyip' => { + 'updateable' => undef, + 'update' => \&nic_freemyip_update, + 'examples' => \&nic_freemyip_examples, + 'variables' => merge( + $variables{'freemyip-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, + 'googledomains' => { + 'updateable' => undef, + 'update' => \&nic_googledomains_update, + 'examples' => \&nic_googledomains_examples, + 'variables' => merge( + { 'min-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), }, + $variables{'googledomains-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, + 'hammernode1' => { + 'updateable' => undef, + 'update' => \&nic_hammernode1_update, + 'examples' => \&nic_hammernode1_examples, + 'variables' => merge( + { 'server' => setv(T_FQDNP, 1, 0, 'dup.hn.org', undef) }, + { 'min-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), }, + $variables{'service-common-defaults'}, + ), + }, + 'namecheap' => { + 'updateable' => undef, + 'update' => \&nic_namecheap_update, + 'examples' => \&nic_namecheap_examples, + 'variables' => merge( + { 'server' => setv(T_FQDNP, 1, 0, 'dynamicdns.park-your-domain.com', undef) }, + { 'min-interval' => setv(T_DELAY, 0, 0, 0, interval('5m')), }, + $variables{'service-common-defaults'}, + ), + }, + 'nfsn' => { + 'updateable' => undef, + 'update' => \&nic_nfsn_update, + 'examples' => \&nic_nfsn_examples, + 'variables' => merge( + { 'server' => setv(T_FQDNP, 1, 0, 'api.nearlyfreespeech.net', undef) }, + { 'min_interval' => setv(T_FQDNP, 0, 0, 0, interval('5m')) }, + { 'ttl' => setv(T_NUMBER, 1, 0, 300, undef) }, + { 'zone' => setv(T_FQDN, 1, 0, undef, undef) }, + $variables{'service-common-defaults'}, + ), + }, + 'noip' => { + 'updateable' => undef, + 'update' => \&nic_noip_update, + 'examples' => \&nic_noip_examples, + 'variables' => merge( + { 'custom' => setv(T_BOOL, 0, 1, 0, undef), }, + $variables{'noip-common-defaults'}, + $variables{'noip-service-common-defaults'}, + ), + }, + 'nsupdate' => { + 'updateable' => undef, + 'update' => \&nic_nsupdate_update, + 'examples' => \&nic_nsupdate_examples, + 'variables' => merge( + { 'login' => setv(T_LOGIN, 1, 0, '/usr/bin/nsupdate', undef), }, + $variables{'nsupdate-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, 'ovh' => { 'updateable' => undef, 'update' => \&nic_ovh_update, @@ -723,6 +682,46 @@ my %services = ( $variables{'service-common-defaults'}, ), }, + 'sitelutions' => { + 'updateable' => undef, + 'update' => \&nic_sitelutions_update, + 'examples' => \&nic_sitelutions_examples, + 'variables' => merge( + { 'server' => setv(T_FQDNP, 1, 0, 'www.sitelutions.com', undef) }, + { 'min-interval' => setv(T_DELAY, 0, 0, 0, interval('5m')), }, + $variables{'service-common-defaults'}, + ), + }, + 'woima' => { + 'updateable' => undef, + 'update' => \&nic_woima_update, + 'examples' => \&nic_woima_examples, + 'variables' => merge( + $variables{'woima-common-defaults'}, + $variables{'woima-service-common-defaults'}, + ), + }, + 'yandex' => { + 'updateable' => undef, + 'update' => \&nic_yandex_update, + 'examples' => \&nic_yandex_examples, + 'variables' => merge( + { 'min-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), }, + $variables{'yandex-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, + 'zoneedit1' => { + 'updateable' => undef, + 'update' => \&nic_zoneedit1_update, + 'examples' => \&nic_zoneedit1_examples, + 'variables' => merge( + { 'server' => setv(T_FQDNP, 1, 0, 'dynamic.zoneedit.com', undef) }, + { 'min-interval' => setv(T_DELAY, 0, 0, interval('5m'), 0), }, + $variables{'service-common-defaults'}, + $variables{'zoneedit-service-common-defaults'}, + ), + }, ); $variables{'merged'} = merge($variables{'global-defaults'}, $variables{'service-common-defaults'},