OVH Community, your new community space.

Glue Registry DNS VANITY via SOAPI


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

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; }