This is a simple PHP script which will update your dynamic DNS records using EditDNS.
Features:
– You can configure as many records as you want.
– Supports HTTP and HTTPS.
– For PHP 4x and higher compiled with sockets.
– Simple validation.
Here is the code: (editdns.php)
#!/usr/bin/php -q
<?php
$port = 443; // use 80 if you dont wanna use SSL
// add as many arrays as you want, first element is the record
// and the second is the password
// $data[] = array('myrecord1.domain.com','mypass1');
// $data[] = array('myrecord2.domain.com','mypass2');
// ... etc etc etc ;)
$data[] = array('somerecord.resolveme.com','blahblah123');
$sleep = 1; // seconds we should sleep before updating another record
// main loop
if (!is_array($data)) die("Nothing to do\n");
foreach ($data as $v) {
echo "Updating $v[0] ... ";
if(_send($port,"p=$v[1]&r=$v[0]")) echo "[OK]\n";
sleep($sleep);
}
function _send($port=443,$args="") {
if ($port == 443) $proto = "ssl";
else $proto = "http";
$fp = fsockopen("$proto://dyndns.editdns.net",$port,$errno,$errstr,10);
if (!$fp) die("\nCouldn't establish connection\n");
$out = "POST /api/dynLinux.php HTTP/1.0\r\n";
$out .= "Host: dyndns.editdns.net\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: ".strlen($args)."\r\n";
$out .= "Connection: Close\r\n\r\n";
$out .= $args;
//echo $out;
fwrite($fp, $out);
while (!feof($fp)) {
$res .= fgets($fp,1024);
}
fclose($fp);
$parts = explode("\r\n\r\n",trim($res));
//print_r($parts);
// checking output
if (preg_match("/record has been updated|record already exists/i",$parts[1])) return 1;
// anything else should be an error
echo "[ERROR]\n\t$parts[1]\n";
return 0;
}
?>
Save it, chmod +x and play with it.
Old sources:
http://forums.nerdie.net/showthread.php?t=616
http://xux.in/blog/post/ip-updater-for-editdnsnet/