summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2016-02-03 13:55:52 -0500
committerjim-p <jimp@pfsense.org>2016-02-03 13:55:52 -0500
commit9207dc4d9369e2bf5a133ff2b89296d57cd2ac15 (patch)
tree4a056cd830d36483ec641598a688fc60d1d48906
parent934795aed447c7ca18ae885038b544a20cf99d8a (diff)
downloadpfsense-9207dc4d9369e2bf5a133ff2b89296d57cd2ac15.zip
pfsense-9207dc4d9369e2bf5a133ff2b89296d57cd2ac15.tar.gz
Add RFC 2136 support to the DynDNS widget
-rw-r--r--src/usr/local/www/widgets/widgets/dyn_dns_status.widget.php41
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>
OpenPOWER on IntegriCloud