$ip = $_SERVER["REMOTE_ADDR"];
$user = "autodnsuser"; // AutoDNS-User
$pass = "autodnspasswort"; // Passwort des AutoDNS-Users
$context = "4"; // Default Contxt: 4
$domain = "dyndomain.de"; // Domain die verwendet werden soll
$ns = "a.ns14.net"; // InternetX-Nameserver der bei der Domain verwendet wird
$u = $_GET["hostname"];
define( 'HOST', 'https://gateway.autodns.com' );
$authXML = " ". $user .
" " . $pass .
" " . $context .
" ";
$requestXML = "" . $authXML .
" 0205
" . $domain .
" " . $ns .
" ";
$updateXML = "" . $authXML .
" 0202
";
function requestCurl( $data ) {
$ch = curl_init( HOST );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
if( !$data = curl_exec( $ch )) {
echo 'Curl execution error.', curl_error( $ch ) ."\n";
return FALSE;
}
curl_close( $ch );
return $data;
}
$xmlInput = requestCurl( $requestXML );
// Zone laden
$dom=new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadXML($xmlInput);
$zone=$dom->getElementsByTagName('zone');
// changed und created tags entfernen
$node=$dom->getElementsByTagName('changed')->item(0);
$node->parentNode->removeChild($node);
$node=$dom->getElementsByTagName('created')->item(0);
$node->parentNode->removeChild($node);
// update template laden
$dom2=new DOMDocument();
$dom2->preserveWhiteSpace = false;
$dom2->loadXML($updateXML);
$zone2=$dom2->getElementsByTagName('zone');
// zone hinzfuegen
$new=$dom->getElementsByTagName("zone")->item(0);
$new=$dom2->importNode($new,TRUE);
$node=$dom2->getElementsByTagName("task")->item(0)->appendChild($new);
// IP anpassen
foreach( $dom2->getElementsByTagName("rr") as $node) {
if ( $node->getElementsByTagName("name")->item(0)->nodeValue == $u &&
$node->getElementsByTagName("type")->item(0)->nodeValue == "A" ) {
if ($node->getElementsByTagName("value")->item(0)->nodeValue != $ip) {
$node->getElementsByTagName("value")->item(0)->nodeValue = $ip;
requestCurl( $dom2->saveXML() );
error_log("Neue IP fuer " . $u . ": " .$ip);
}
else {
error_log("IP unveraendert " . $u . ": " .$ip);
}
die("OK " .$u . " " . $ip);
}
}
?>