diff options
author | jim-p <jim@pingle.org> | 2010-08-30 23:40:17 -0400 |
---|---|---|
committer | jim-p <jim@pingle.org> | 2010-08-30 23:40:17 -0400 |
commit | 61c30081675657a9eb76b309cde2b75eeb5d5511 (patch) | |
tree | 7b7174107004b06ede2b61571180844f8117c6b0 | |
parent | 2f384448b09eb135e44d7881e93e0798b3009eec (diff) | |
download | pfsense-61c30081675657a9eb76b309cde2b75eeb5d5511.zip pfsense-61c30081675657a9eb76b309cde2b75eeb5d5511.tar.gz |
First try at a dyndns update type for Namecheap.com servers.
-rw-r--r-- | etc/inc/dyndns.class | 28 | ||||
-rwxr-xr-x | usr/local/www/services_dyndns.php | 4 | ||||
-rw-r--r-- | usr/local/www/services_dyndns_edit.php | 14 |
3 files changed, 39 insertions, 7 deletions
diff --git a/etc/inc/dyndns.class b/etc/inc/dyndns.class index 2e90386..0168d3e 100644 --- a/etc/inc/dyndns.class +++ b/etc/inc/dyndns.class @@ -17,6 +17,7 @@ * - StaticCling (staticcling.org) * - DNSexit (dnsexit.com) * - OpenDNS (opendns.com) + * - Namecheap (namecheap.com) * +----------------------------------------------------+ * Requirements: * - PHP version 4.0.2 or higher with CURL Library @@ -148,6 +149,7 @@ case 'staticcling': case 'dnsexit': case 'opendns': + case 'namecheap': $this->_update(); break; default: @@ -416,6 +418,20 @@ curl_close($ch); $this->_checkStatus($data); break; + case 'namecheap': + /* Example: + https://dynamicdns.park-your-domain.com/update?host=[host_name]&domain=[domain.com]&password=[domain_password]&ip=[your_ip] + */ + $needsIP = FALSE; + log_error("Namecheap: DNS update() starting."); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); + list($hostname, $domain) = explode(".", $this->_dnsHost, 2); + $server = "https://dynamicdns.park-your-domain.com/update?host={$hostname}&domain={$domain}&password={$this->_dnsPass}&ip={$this->_dnsIP}"; + curl_setopt($ch, CURLOPT_URL, $server); + $data = curl_exec($ch); + if (@curl_error($ch)) log_error("Curl error occurred: " . curl_error($ch)); + curl_close($ch); + $this->_checkStatus($data); default: break; } @@ -719,6 +735,18 @@ $this->_debug($data); } break; + case 'namecheap': + if (preg_match("/internal server error/i", $data)) { + $status = "phpDynDNS: (Error) Server side error."; + } else if (preg_match('/success/i', $data)) { + $status = "phpDynDNS: (Success) IP Address Updated Successfully!"; + $successful_update = true; + } else { + $status = "phpDynDNS: (Unknown Response)"; + log_error("phpDynDNS: PAYLOAD: {$data}"); + $this->_debug($data); + } + break; } if($successful_update == true) { diff --git a/usr/local/www/services_dyndns.php b/usr/local/www/services_dyndns.php index d591a20..c1a25d4 100755 --- a/usr/local/www/services_dyndns.php +++ b/usr/local/www/services_dyndns.php @@ -114,8 +114,8 @@ include("head.inc"); </td> <td class="listlr"> <?php - $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS"); - $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns"); + $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS, Namecheap"); + $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns namecheap"); $j = 0; for ($j = 0; $j < count($vals); $j++) if ($vals[$j] == $dyndns['type']) { echo htmlspecialchars($types[$j]); diff --git a/usr/local/www/services_dyndns_edit.php b/usr/local/www/services_dyndns_edit.php index 24c0267..2b374dd 100644 --- a/usr/local/www/services_dyndns_edit.php +++ b/usr/local/www/services_dyndns_edit.php @@ -80,14 +80,18 @@ if ($_POST) { /* input validation */ $reqdfields = array(); $reqdfieldsn = array(); - $reqdfields = array_merge($reqdfields, explode(" ", "host username password type")); - $reqdfieldsn = array_merge($reqdfieldsn, array(gettext("Hostname"),gettext("Username"),gettext("Password"),gettext("Service type"))); + $reqdfields = array("host", "password", "type"); + $reqdfieldsn = array(gettext("Hostname"),gettext("Password"),gettext("Service type")); + if ($pconfig['type'] != "namecheap") { + $reqdfields[] = "username"; + $reqdfieldsn[] = gettext("Username"); + } do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); if (($_POST['mx'] && !is_domain($_POST['mx']))) $input_errors[] = gettext("The MX contains invalid characters."); - if (($_POST['username'] && !is_dyndns_username($_POST['username'])) || $_POST['username'] == "") + if (($_POST['username'] && !is_dyndns_username($_POST['username'])) || (($pconfig['type'] != "namecheap") && ($_POST['username'] == ""))) $input_errors[] = gettext("The username contains invalid characters."); if (!$input_errors) { @@ -153,8 +157,8 @@ include("head.inc"); <td width="78%" class="vtable"> <select name="type" class="formselect" id="type"> <?php - $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS"); - $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns"); + $types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS, Namecheap"); + $vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns namecheap"); $j = 0; for ($j = 0; $j < count($vals); $j++): ?> <option value="<?=$vals[$j];?>" <?php if ($vals[$j] == $pconfig['type']) echo "selected";?>> <?=htmlspecialchars($types[$j]);?> |