Add RFC 2136 support to the DynDNS widget

This commit is contained in:
jim-p 2016-02-03 13:55:52 -05:00
parent 934795aed4
commit 9207dc4d93

View File

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