diff options
Diffstat (limited to 'src/usr/local/www')
-rw-r--r-- | src/usr/local/www/widgets/widgets/dyn_dns_status.widget.php | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/src/usr/local/www/widgets/widgets/dyn_dns_status.widget.php b/src/usr/local/www/widgets/widgets/dyn_dns_status.widget.php index fe501a5..c8de7df 100644 --- a/src/usr/local/www/widgets/widgets/dyn_dns_status.widget.php +++ b/src/usr/local/www/widgets/widgets/dyn_dns_status.widget.php @@ -65,30 +65,48 @@ if (!is_array($config['dyndnses']['dyndns'])) { $config['dyndnses']['dyndns'] = array(); } -$a_dyndns = &$config['dyndnses']['dyndns']; +$a_dyndns = $config['dyndnses']['dyndns']; + +if (!is_array($config['dnsupdates']['dnsupdate'])) { + $config['dnsupdates']['dnsupdate'] = array(); +} + +$a_rfc2136 = $config['dnsupdates']['dnsupdate']; + +$all_dyndns = array_merge($a_dyndns, $a_rfc2136); if ($_REQUEST['getdyndnsstatus']) { $first_entry = true; - foreach ($a_dyndns as $dyndns) { + foreach ($all_dyndns as $dyndns) { if ($first_entry) { $first_entry = false; } else { // Put a vertical bar delimiter between the echoed HTML for each entry processed. echo "|"; } - + $cache_sep = ":"; if ($dyndns['type'] == "namecheap") { $hostname = $dyndns['host'] . "." . $dyndns['domainname']; + } elseif (empty($dyndns['type'])) { + /* RFC2136, add some dummy values */ + $dyndns['type'] = '_rfc2136_'; + $dyndns['id'] = '_' . $dyndns['server']; + $hostname = $dyndns['host']; + $cache_sep = "|"; } else { $hostname = $dyndns['host']; } $filename = "{$g['conf_path']}/dyndns_{$dyndns['interface']}{$dyndns['type']}" . escapeshellarg($hostname) . "{$dyndns['id']}.cache"; if (file_exists($filename)) { - $ipaddr = dyndnsCheckIP($dyndns['interface']); - $cached_ip_s = explode(':', file_get_contents($filename)); + if (($dyndns['type'] == '_rfc2136_') && (!isset($dyndns['usepublicip']))) { + $ipaddr = get_interface_ip(get_failover_interface($dyndns['interface'])); + } else { + $ipaddr = dyndnsCheckIP($dyndns['interface']); + } + $cached_ip_s = explode($cache_sep, file_get_contents($filename)); $cached_ip = $cached_ip_s[0]; - if ($ipaddr <> $cached_ip) { + if (trim($ipaddr) != trim($cached_ip)) { print('<span class="text-danger">'); } else { print('<span class="text-success">'); @@ -114,9 +132,15 @@ if ($_REQUEST['getdyndnsstatus']) { </tr> </thead> <tbody> - <?php $dyndnsid = 0; foreach ($a_dyndns as $dyndns): + <?php $dyndnsid = 0; foreach ($all_dyndns as $dyndns): + if ($dyndns['type'] == "namecheap") { $hostname = $dyndns['host'] . "." . $dyndns['domainname']; + } elseif (empty($dyndns['type'])) { + /* RFC2136, add some dummy values */ + $dyndns['type'] = '_rfc2136_'; + $dyndns['id'] = '_' . $dyndns['server']; + $hostname = $dyndns['host']; } else { $hostname = $dyndns['host']; } ?> @@ -148,6 +172,9 @@ if ($_REQUEST['getdyndnsstatus']) { break; } } + if ($dyndns['type'] == '_rfc2136_') : ?> + RFC 2136 + <? endif; ?> </td> <td> |