diff options
Diffstat (limited to 'usr/local/www/services_dyndns.php')
-rwxr-xr-x | usr/local/www/services_dyndns.php | 208 |
1 files changed, 102 insertions, 106 deletions
diff --git a/usr/local/www/services_dyndns.php b/usr/local/www/services_dyndns.php index b4fdc32..5049d63 100755 --- a/usr/local/www/services_dyndns.php +++ b/usr/local/www/services_dyndns.php @@ -1,7 +1,7 @@ <?php /* $Id$ */ /* - Copyright (C) 2008 Ermal Luçi + Copyright (C) 2008 Ermal Luçi All rights reserved. Redistribution and use in source and binary forms, with or without @@ -45,41 +45,16 @@ if (!is_array($config['dyndnses']['dyndns'])) $a_dyndns = &$config['dyndnses']['dyndns']; if ($_GET['act'] == "del") { - unset($a_dyndns[$_GET['id']]); - for($i = 0; $i < count($a_dyndns); $i++) { - $a_dyndns[$i]['id'] = $i; - } + $conf = $a_dyndns[$_GET['id']]; + @unlink("{$g['conf_path']}/dyndns_{$conf['interface']}{$conf['type']}" . escapeshellarg($conf['host']) . "{$conf['id']}.cache"); + unset($a_dyndns[$_GET['id']]); - //FIXME: Instead of rechecking all interfaces and removing the cache files, gracefully move all cache files to the appropriate ID number. - mwexec("/bin/rm {$g['conf_path']}/dyndns_*.cache"); + write_config(); + services_dyndns_configure(); - write_config(); - - services_dyndns_configure(); - - header("Location: services_dyndns.php"); - exit; -} - -function dyndnsCheckIP($int) { - - $ip_address = get_interface_ip($int); - if (is_private_ip($ip_address)) { - $hosttocheck = "checkip.dyndns.org"; - $checkip = gethostbyname($hosttocheck); - $ip_ch = curl_init("http://{$checkip}"); - curl_setopt($ip_ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ip_ch, CURLOPT_SSL_VERIFYPEER, FALSE); - curl_setopt($ip_ch, CURLOPT_INTERFACE, $ip_address); - $ip_result_page = curl_exec($ip_ch); - curl_close($ip_ch); - $ip_result_decoded = urldecode($ip_result_page); - preg_match('=Current IP Address: (.*)</body>=siU', $ip_result_decoded, $matches); - $ip_address = trim($matches[1]); - } - - return $ip_address; + header("Location: services_dyndns.php"); + exit; } $pgtitle = array(gettext("Services"), gettext("Dynamic DNS clients")); @@ -92,103 +67,124 @@ include("head.inc"); <form action="services_dyndns.php" method="post" name="iform" id="iform"> <?php if ($input_errors) print_input_errors($input_errors); ?> <table width="100%" border="0" cellpadding="0" cellspacing="0"> - <tr><td> + <tr> + <td> <?php $tab_array = array(); $tab_array[] = array(gettext("DynDns"), true, "services_dyndns.php"); $tab_array[] = array(gettext("RFC 2136"), false, "services_rfc2136.php"); display_top_tabs($tab_array); ?> - </td></tr> + </td> + </tr> <tr> - <td> - <div id="mainarea"> - <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0"> - <tr> + <td> + <div id="mainarea"> + <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0"> + <tr> <td width="5%" class="listhdrr"><?=gettext("Interface");?></td> <td width="15%" class="listhdrr"><?=gettext("Service");?></td> - <td width="20%" class="listhdrr"><?=gettext("Hostname");?></td> - <td width="20%" class="listhdrr"><?=gettext("Cached IP");?></td> - <td width="50%" class="listhdr"><?=gettext("Description");?></td> - <td width="10%" class="list"></td> + <td width="20%" class="listhdrr"><?=gettext("Hostname");?></td> + <td width="20%" class="listhdrr"><?=gettext("Cached IP");?></td> + <td width="50%" class="listhdr"><?=gettext("Description");?></td> + <td width="10%" class="list"></td> </tr> - <?php $i = 0; foreach ($a_dyndns as $dyndns): ?> - <tr ondblclick="document.location='services_dyndns_edit.php?id=<?=$i;?>'"> + <?php $i = 0; foreach ($a_dyndns as $dyndns): ?> + <tr ondblclick="document.location='services_dyndns_edit.php?id=<?=$i;?>'"> <td class="listlr"> - <?php $iflist = get_configured_interface_with_descr(); - foreach ($iflist as $if => $ifdesc) { + <?php $iflist = get_configured_interface_with_descr(); + foreach ($iflist as $if => $ifdesc) { if ($dyndns['interface'] == $if) { - echo "{$ifdesc}"; - $iface = $if; + if (!isset($dyndns['enable'])) + echo "<span class=\"gray\">{$ifdesc}</span>"; + else + echo "{$ifdesc}"; break; } } $groupslist = return_gateway_groups_array(); - foreach ($groupslist as $if => $group) { + foreach ($groupslist as $if => $group) { if ($dyndns['interface'] == $if) { - echo "{$if}"; - $iface = $if; + if (!isset($dyndns['enable'])) + echo "<span class=\"gray\">{$if}</span>"; + else + echo "{$if}"; break; } } - ?> + ?> </td> - <td class="listr"> - <?php - $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS, Namecheap, HE.net, HE.net Tunnelbroker, SelfHost, Route 53, Custom"); - $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns namecheap he-net he-net-tunnelbroker selfhost route53 custom"); - $j = 0; for ($j = 0; $j < count($vals); $j++) - if ($vals[$j] == $dyndns['type']) { - echo htmlspecialchars($types[$j]); - break; - } - ?> - </td> - <td class="listr"> - <?=htmlspecialchars($dyndns['host']);?> - </td> - <td class="listr"> - <?php - $filename = "{$g['conf_path']}/dyndns_{$iface}{$dyndns['type']}" . escapeshellarg($dyndns['host']) . "{$dyndns['id']}.cache"; - $ipaddr = dyndnsCheckIP($iface); - if(file_exists($filename)) { - $cached_ip_s = explode(":", file_get_contents($filename)); - $cached_ip = $cached_ip_s[0]; - if($ipaddr <> $cached_ip) - echo "<font color='red'>"; - else - echo "<font color='green'>"; - echo htmlspecialchars($cached_ip); - echo "</font>"; - } else { - echo "N/A"; + <td class="listr"> + <?php + $types = explode(",", DYNDNS_PROVIDER_DESCRIPTIONS); + $vals = explode(" ", DYNDNS_PROVIDER_VALUES); + for ($j = 0; $j < count($vals); $j++) + if ($vals[$j] == $dyndns['type']) { + if (!isset($dyndns['enable'])) + echo "<span class=\"gray\">".htmlspecialchars($types[$j])."</span>"; + else + echo htmlspecialchars($types[$j]); + break; } - ?> + ?> </td> - <td class="listbg"> - <?=htmlspecialchars($dyndns['descr']);?> - </td> - <td valign="middle" nowrap class="list"> <a href="services_dyndns_edit.php?id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a> - <a href="services_dyndns.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this entry?");?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a></td> - </tr> - <?php $i++; endforeach; ?> - <tr> - <td class="list" colspan="5"></td> - <td class="list"> <a href="services_dyndns_edit.php"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td> - </tr> - <tr> - <td colspan="3" class="list"><p class="vexpl"><span class="red"><strong> - <?=gettext("Note:");?><br> - </strong></span> - <?=gettext("IP addresses appearing in green are up to date with Dynamic DNS provider.");?><br> - <?=gettext("You can force an update for an IP address on the edit page for that service.");?> - </td> - <td class="list"> </td> - </tr> - </table> - </div> + <td class="listr"> + <?php + if (!isset($dyndns['enable'])) + echo "<span class=\"gray\">".htmlspecialchars($dyndns['host'])."</span>"; + else + echo htmlspecialchars($dyndns['host']); + ?> + </td> + <td class="listr"> + <?php + $filename = "{$g['conf_path']}/dyndns_{$dyndns['interface']}{$dyndns['type']}" . escapeshellarg($dyndns['host']) . "{$dyndns['id']}.cache"; + if (file_exists($filename)) { + $ipaddr = dyndnsCheckIP($dyndns['interface']); + $cached_ip_s = explode(":", file_get_contents($filename)); + $cached_ip = $cached_ip_s[0]; + if ($ipaddr <> $cached_ip) + echo "<font color='red'>"; + else + echo "<font color='green'>"; + echo htmlspecialchars($cached_ip); + echo "</font>"; + } else { + echo "N/A"; + } + ?> + </td> + <td class="listbg"> + <?php + if (!isset($dyndns['enable'])) + echo "<span class=\"gray\">".htmlspecialchars($dyndns['descr'])."</span>"; + else + echo htmlspecialchars($dyndns['descr']); + ?> + </td> + <td valign="middle" nowrap class="list"> + <a href="services_dyndns_edit.php?id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0"></a> + <a href="services_dyndns.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this entry?");?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0"></a> + </td> + </tr> + <?php $i++; endforeach; ?> + <tr> + <td class="list" colspan="5"></td> + <td class="list"> <a href="services_dyndns_edit.php"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0"></a></td> + </tr> + <tr> + <td colspan="3" class="list"><p class="vexpl"><span class="red"><strong> + <?=gettext("Note:");?><br> + </strong></span> + <?=gettext("IP addresses appearing in green are up to date with Dynamic DNS provider.");?><br> + <?=gettext("You can force an update for an IP address on the edit page for that service.");?> + </td> + <td class="list"> </td> + </tr> + </table> + </div> </td> - </tr> + </tr> </table> </form> <?php include("fend.inc"); ?> |