summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjim-p <jim@pingle.org>2010-08-30 23:40:17 -0400
committerjim-p <jim@pingle.org>2010-08-30 23:40:17 -0400
commit61c30081675657a9eb76b309cde2b75eeb5d5511 (patch)
tree7b7174107004b06ede2b61571180844f8117c6b0
parent2f384448b09eb135e44d7881e93e0798b3009eec (diff)
downloadpfsense-61c30081675657a9eb76b309cde2b75eeb5d5511.zip
pfsense-61c30081675657a9eb76b309cde2b75eeb5d5511.tar.gz
First try at a dyndns update type for Namecheap.com servers.
-rw-r--r--etc/inc/dyndns.class28
-rwxr-xr-xusr/local/www/services_dyndns.php4
-rw-r--r--usr/local/www/services_dyndns_edit.php14
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]);?>
OpenPOWER on IntegriCloud