PHP EditDNS Updater for Linux
Dec 18, 2008 Code, Linux, Software
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 <? $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/
ADS!!!

April 25th, 2011 at 4:49 pm
Check this PHP wrapper for the API
http://labs.oventi.net/editdns