$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); } } ?>