tmit
01.02.2012, 16.29
Giusto per informazione e curiosità ho scritto la procedura corretta (non ottimizzata) per poter impostare i DNS autoritativi di un dominio in OVH che utilizza i DNS di OVH in modalità VANITY tramite gestione dei Glue Registry.
Qui di seguito il codice PHP
Qui di seguito il codice PHP
Codice PHP:
$user = "XY0123456-OVH";
$pass = "1234567890";
$dom = "dominio.tld";
$wsdl = "https://www.ovh.com/soapi/soapi-re-1.30.wsdl";
try {
// creo connessione via Soap
$soap = new SoapClient( $wsdl );
// autenticazione
$sid = $soap->login($user, $pass,"it", false);
echo "[*] login OK\n";
// richiedo quali sono i DNS autoritativi del dominio
$res = $soap->domainDnsList($sid, $dom);
// registro host e IP dei server DNS autoritativi
$ovh_hostns1 = $res[0]->name;
$ovh_hostns2 = $res[1]->name;
$ovh_ipns1 = gethostbyname( $ovh_hostns1 );
$ovh_ipns2 = gethostbyname( $ovh_hostns2 );
$dom_host1 = "ns1.".$dom;
$dom_host2 = "ns2.".$dom;
echo "[*] Dominio: $dom\n";
echo "[*] DNSauth loaded
\t$ovh_hostns1 ( $ovh_ipns1 )
\t$ovh_hostns2 ( $ovh_ipns2 )\n";
echo "[*] DNSauth request
\t$dom_host1 ( $ovh_ipns1 )
\t$dom_host2 ( $ovh_ipns2 )\n\n";
//zoneExport
$zoneDNS = $soap->zoneExport($sid, $dom);
echo "[*] zoneExport successfull\n";
// modifica (non ottimizzata) dei record NS nella zona
$pattern = "/IN NS ns(.*).ovh.net./i";
$replacement = "IN NS " . $dom_host1 . ".";
$zoneDNS = preg_replace($pattern, $replacement, $zoneDNS);
$pattern = "/IN NS dns(.*).ovh.net./i";
$replacement = "IN NS " . $dom_host2 . ".";
$zoneDNS = preg_replace($pattern, $replacement, $zoneDNS);
// append record A per risoluzione inversa dei NS in Glue
$zoneDNS .=
"ns1 IN A " . $ovh_ipns1 . " \r\n" .
"ns2 IN A " . $ovh_ipns2 . " ";
echo "[*] zoneModify successfull\n";
// fix zona
$fix_zoneDNS = preg_replace("/\r\n/i", "\n", $zoneDNS);
$a_zoneDNS = preg_split("/\n/", $fix_zoneDNS);
foreach( $a_zoneDNS as $record )
{ $fixxedZone[] = preg_replace('/\s\s+/', ' ', $record); }
$a_zoneDNS = array_unique( $fixxedZone );
$zoneDNS = implode("\r\n", $a_zoneDNS);
echo "[*] fixZone successfull\n";
// importa nuova zona DNS
/* void */ $soap->zoneImport($sid, $dom, $zoneDNS);
echo "[*] zoneImport successfull\n";
// stampa nuova zona DNS generata
echo "\n\n";
echo "[*] --- zoneExport report ---\n";
print_r( $soap->zoneExport($sid, $dom) );
echo "[*] --- zoneExport report ---\n";
echo "\n\n";
// richiesta di Glue Registry via HostCreate
$res = $soap->domainHostAdd($sid, $dom, $dom_host1, $ovh_ipns1);
echo "[*] domainHostAdd ( $res ) successfull\n";
$res = $soap->domainHostAdd($sid, $dom, $dom_host2, $ovh_ipns2);
echo "[*] domainHostAdd ( $res ) successfull\n";
// richiesta di DNS Update al registry
$res = $soap->domainDnsUpdate($sid, $dom,
$dom_host1, $ovh_ipns1,
$dom_host2, $ovh_ipns2);
echo "[*] domainDnsUpdate ( $res ) successfull\n";
// logout
$soap->logout($sid);
echo "\n[*]logout successfull\n";
} catch(SoapFault $fault) { echo $fault; }