Bekijk Volledige Versie : Aanmaken contact DNS BE
Beste,
Heeft een van jullie enig idee wat de onderstaande foutmelding inhoud.
Ik heb gezocht bij dns be zelf maar daar kan ik geen foutcode lijst vinden.
string(10) "t1-a003345" *** Connecting to: ssl://epp.registry.tryout.dns.be:33128 *** OK, Waiting for greeting... dns.be 2011-12-28T17:34:36.450Z 1.0 en urn:ietf:params:xml:ns:contact-1.0 urn:ietf:params:xml:ns:domain-1.0 http://www.dns.be/xml/epp/nsgroup-1.0 http://www.dns.be/xml/epp/registrar-1.0 http://www.dns.be/xml/epp/dnsbe-1.0 urn:ietf:params:xml:ns:secDNS-1.1 http://www.dns.be/xml/epp/keygroup-1.0 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> id123 Wietse van Ginkel De dreef 9 Amersfoort 9746 DD NL +31.335656889 wietse@pronet-solutions.nl licensee nl >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Invalid authorization information dnsbe-0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< cannot add contact: 2202: Invalid authorization information:
Met vriendelijke groet,
Wietse
Post even de hele XML/EPP communicatie.
(neem aan dat er geen vertrouwelijke dingen in staan, gezien je de tryout server gebruikt)
Bestand wat een domein zou moeten registreren
<?php
include_once "configs/db_tables.php";
require_once "includes/database.php";
require_once "includes/class.database.php";
require_once "includes/functions.php";
require_once "includes/class.phpmailer.php";
require_once "includes/class.phpmailer.php";
require_once "includes/class.error_log.php";
include_once "includes/class.dashboard.php";
require_once "includes/class.domainsHandle.php";
require_once "includes/class.registars.php";
require_once "includes/class.nameservers.php";
require_once "includes/class.handlers.php";
require_once "includes/dnsbe.php";
$dnsbe = new Dnsbe();
$dnsbe->login();
define( 'TABLE_ERROR_LOGS', 'error_log' );
$domainsHandle = new domains();
$registars = new registars();
$reg = $registars->getRegistar('dnsbe');
$nameserver = new nameservers();
$handler = new handlers();
$dashboard = new dashboard;
$dom = $domainsHandle->getDomainsByRegistar($reg, "registreren");
if(count($dom) > 0){
foreach($dom as $domain){
$domeinnaam = $domain['domeinnaam'] . $domain['domeinextensie'];
$period = (int)$domainsHandle->getDomainPeriodForRegistar($domain['domeinextensie']);
if($domain['type'] == 0){
$ns0 = $nameserver->getNameserverById($domain['ns1']);
$ns1 = $nameserver->getNameserverById($domain['ns2']);
$ns2 = $nameserver->getNameserverById($domain['ns3']);
$nameservers = array(
$ns0['nameserver'],
$ns1['nameserver'],
);
$ownerGegevens = $handler->getHandlers($domain['owner']);
$adminGegevens = $handler->getHandlers($domain['administratief']);
$techGegevens = $handler->getHandlers($domain['technisch']);
foreach($ownerGegevens as $owner){
if(!empty($owner['fax'])) $fax = '+31.' . substr($owner["fax"],1);
else $fax = '';
$own['name'] = $owner["handler_voornaam"] . " " . $owner["handler_achternaam"];
$own['org'] = '';
$own['street1'] = $owner["handler_adres"];
$own['city'] = $owner["handler_woonplaats"];
$own['pc'] = $owner["handler_postcode"];
$own['cc'] = "NL";
$own['voice'] = '+31.' . substr($owner["handler_telefoonnummer"],1);
$own['fax'] = $fax;
$own['email'] = $owner["handler_email"];
$own['type'] = "licensee";
$own['lang'] = "nl";
}
// CREATE LICENSEE CONTACT
if (! $dnsbe->contact_create($own)){
$dashboard->insert_message($domain['klantid'],'Domeinnaam niet geregistreerd','Domein ' . $domeinnaam . ' is niet geregistreerd, kan domeinhouder contact niet aanmaken<br />' . $dnsbe->errstr());
die("1 cannot add contact: " . $dnsbe->errstr());
}
$registrant_id = $own['id'];
foreach($adminGegevens as $admin){
if(!empty($admin['fax'])) $fax = '+31.' . substr($admin["fax"],1);
else $fax = '';
$ad['name'] = $admin["handler_voornaam"] . " " . $admin["handler_achternaam"];
$ad['org'] = '';
$ad['street1'] = $admin["handler_adres"];
$ad['city'] = $admin["handler_woonplaats"];
$ad['pc'] = $admin["handler_postcode"];
$ad['cc'] = "NL";
$ad['voice'] = '+31.' . substr($admin["handler_telefoonnummer"],1);
$ad['fax'] = $fax;
$ad['email'] = $admin["handler_email"];
$ad['type'] = "onsite";
$ad['lang'] = "nl";
}
// CREATE ONSITE CONTACT
if (! $dnsbe->contact_create($ad)) {
$dashboard->insert_message($domain['klantid'],'Domeinnaam niet geregistreerd','Domein ' . $domeinnaam . ' is niet geregistreerd, kan administratief contact niet aanmaken<br />' . $dnsbe->errstr());
die("2 cannot add contact: " . $dnsbe->errstr());
}
$onsite_id = $ad['id'];
foreach($techGegevens as $tech){
if(!empty($tech['fax'])) $fax = '+31.' . substr($tech["fax"],1);
else $fax = '';
$tec['name'] = $tech["handler_voornaam"] . " " . $tech["handler_achternaam"];
$tec['org'] = '';
$tec['street1'] = $tech["handler_adres"];
$tec['city'] = $tech["handler_woonplaats"];
$tec['pc'] = $tech["handler_postcode"];
$tec['cc'] = "NL";
$tec['voice'] = '+31.' . substr($tech["handler_telefoonnummer"],1);
$tec['fax'] = $fax;
$tec['email'] = $tech["handler_email"];
$tec['type'] = "licensee";
$tec['lang'] = "nl";
}
// CONTROLEER OF DOMEIN NOG VRIJ IS
$domain['name'] = $domeinnaam;
$domain['registrant'] = $registrant_id;
$domain['contact_billing'] = $fw_billing;
$domain['contact_tech'] = $fw_tech;
$domain['contact_onsite'] = $onsite_id;
$domain['period_unit'] = 'y'; // overbodig voor DNSBE
$domain['period'] = 1; // overbodig voor DNSBE
// nameservers
if (!empty($_POST["ns1"]))
{
// hostname
$domain['nameservers'][0]['hostname'] = $ns0['nameserver'];
// gluerecord check
if (eregi('\.' . $domain['name'] . '$', $domain['nameservers'][0]['hostname'])) {
if (empty($ns0['nameserver_ip'])) {
$dashboard->insert_message($domain['klantid'],'Domeinnaam niet geregistreerd','Domein ' . $domeinnaam . ' is niet geregistreerd, kan mist glue-record voor NS1<br />' . $dnsbe->errstr());
die("Missing glue-record for NS1");
} else {
$domain['nameservers'][0]['ipaddr'] = $ns0['nameserver_ip'];
$domain['nameservers'][0]['addr_type'] = "v4";
}
}
}
if (!empty($_POST["ns2"]))
{
// hostname
$domain['nameservers'][1]['hostname'] = $ns1['nameserver'];
// gluerecord check
if (eregi('\.' . $domain['name'] . '$', $domain['nameservers'][1]['hostname'])) {
if (empty($ns1['nameserver_ip'])) {
$dashboard->insert_message($domain['klantid'],'Domeinnaam niet geregistreerd','Domein ' . $domeinnaam . ' is niet geregistreerd, kan mist glue-record voor NS2<br />' . $dnsbe->errstr());
die("Missing glue-record for NS2");
} else {
$domain['nameservers'][1]['ipaddr'] = $ns1['nameserver_ip'];
$domain['nameservers'][1]['addr_type'] = "v4";
}
}
}
if (!empty($_POST["ns3"]))
{
// hostname
$domain['nameservers'][2]['hostname'] = $ns2['nameserver'];
// gluerecord check
if (eregi('\.' . $domain['name'] . '$', $domain['nameservers'][2]['hostname'])) {
if (empty($ns2['nameserver_ip'])) {
$dashboard->insert_message($domain['klantid'],'Domeinnaam niet geregistreerd','Domein ' . $domeinnaam . ' is niet geregistreerd, kan mist glue-record voor NS3<br />' . $dnsbe->errstr());
die("Missing glue-record for NS3");
} else {
$domain['nameservers'][2]['ipaddr'] = $ns2['nameserver_ip'];
$domain['nameservers'][2]['addr_type'] = "v4";
}
}
}
if (! $dnsbe->domain_check($domain['name'], $avail)) {
$dashboard->insert_message($domain['klantid'],'Domeinnaam niet geregistreerd','Domein ' . $domeinnaam . ' is niet geregistreerd, kan de domeinnaam niet controleren<br />' . $dnsbe->errstr());
die("Cannot check domain: " . $dnsbe->errstr());
}
if (! $avail) {
$dashboard->insert_message($domain['klantid'],'Domeinnaam niet geregistreerd','Domein ' . $domeinnaam . ' is niet geregistreerd, domeinnaam niet beschikbaar<br />' . $dnsbe->errstr());
die("Domain: " . $domain['name'] . " is not available!\n");
}
// REGISTREER DOMEINNAAM
if (! $dnsbe->domain_create($domain)) {
$dashboard->insert_message($domain['klantid'],'Domeinnaam niet geregistreerd','Domein ' . $domeinnaam . ' is niet geregistreerd.<br />' . $dnsbe->errstr());
die("Cannot create domain: " . $dnsbe->errstr());
}
}
// UITLOGGEN
$dnsbe->logout();
$dashboard->insert_message($domain['klantid'],'Domeinnaam geregistreerd','Domein ' . $domeinnaam . ' is geregistreerd.');
}
}
?>
Xml wat het contact zou moeten aanmaken
<epp xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd http://www.dns.be/xml/epp/dnsbe-1.0 dnsbe-1.0.xsd" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
<command>
<create>
<contact:create>
<contact:id>id123</contact:id>
<contact:postalInfo type="loc">
<contact:name>{$name}</contact:name>
<contact:org>{$org}</contact:org>
<contact:addr>
<contact:street>{$street1}</contact:street>
<contact:street>{$street2}</contact:street>
<contact:city>{$city}</contact:city>
<contact:pc>{$pc}</contact:pc>
<contact:cc>{$cc}</contact:cc>
</contact:addr>
</contact:postalInfo>
<contact:voice>{$voice}</contact:voice>
<contact:fax>{$fax}</contact:fax>
<contact:email>{$email}</contact:email>
<contact:authInfo>
<contact:pw></contact:pw>
</contact:authInfo>
</contact:create>
</create>
<extension>
<dnsbe:ext>
<dnsbe:create>
<dnsbe:contact>
<dnsbe:type>{$type}</dnsbe:type>
<dnsbe:vat>{$vat}</dnsbe:vat>
<dnsbe:lang>{$lang}</dnsbe:lang>
</dnsbe:contact>
</dnsbe:create>
</dnsbe:ext>
</extension>
</command>
</epp>
Gehele epp project kan ik niet posten dit zijn simpel weg gewoon teveel bestanden.
Indien je een link wil om te zien hoe het eruit ziet kan ik je deze in pm sturen.
Alvast bedankt.
Met "communicatie" bedoel ik: alles wat er daadwerkelijk over de lijn gaat, vanaf het moment van verbinden tot en met de fout.
Helaas kan je door de SSL geen standaard sniffer tooltjes gebruiken, maar schrijf zelf even alles wat je naar de server stuurt, en van de server ontvangt naar een log bestandje. (fopen/fwrite)
Kan uit je code niet opmaken of je wel daadwerkelijk checked of het login commando wel goed is gegaan, voordat je verder gaat met het versturen van het commando om het contact aan te maken.
En XML modelletjes zijn mooi, maar je kan ik er niet aan zien of alle velden wel daadwerkelijke ingevuld worden (en speciale tekens wel netjes ge'escaped).
Daarvoor heb je toch echt de uiteindelijke XML die verstuurd wordt nodig.
Beste hierbij nog even de output van de xml
*** Connecting to: ssl://epp.registry.tryout.dns.be:33128
*** OK, Waiting for greeting...
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<greeting>
<svID>dns.be</svID>
<svDate>2011-12-28T18:58:43.056Z</svDate>
<svcMenu>
<version>1.0</version>
<lang>en</lang>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
<svcExtension>
<extURI>http://www.dns.be/xml/epp/nsgroup-1.0</extURI>
<extURI>http://www.dns.be/xml/epp/registrar-1.0</extURI>
<extURI>http://www.dns.be/xml/epp/dnsbe-1.0</extURI>
<extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
<extURI>http://www.dns.be/xml/epp/keygroup-1.0</extURI>
</svcExtension>
</svcMenu>
<dcp>
<access>
<all/>
</access>
<statement>
<purpose>
<admin/>
<prov/>
</purpose>
<recipient>
<ours/>
<public/>
</recipient>
<retention>
<stated/>
</retention>
</statement>
</dcp>
</greeting>
</epp>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<epp xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd http://www.dns.be/xml/epp/dnsbe-1.0 dnsbe-1.0.xsd" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
<command>
<create>
<contact:create>
<contact:id>id123</contact:id>
<contact:postalInfo type="loc">
<contact:name>Wietse van Ginkel</contact:name>
<contact:org></contact:org>
<contact:addr>
<contact:street>De dreef 9</contact:street>
<contact:street></contact:street>
<contact:city>Amersfoort</contact:city>
<contact:pc>9746 DD</contact:pc>
<contact:cc>NL</contact:cc>
</contact:addr>
</contact:postalInfo>
<contact:voice>+31.335656889</contact:voice>
<contact:fax></contact:fax>
<contact:email>wietse@pronet-solutions.nl</contact:email>
<contact:authInfo>
<contact:pw></contact:pw>
</contact:authInfo>
</contact:create>
</create>
<extension>
<dnsbe:ext>
<dnsbe:create>
<dnsbe:contact>
<dnsbe:type>licensee</dnsbe:type>
<dnsbe:vat></dnsbe:vat>
<dnsbe:lang>nl</dnsbe:lang>
</dnsbe:contact>
</dnsbe:create>
</dnsbe:ext>
</extension>
</command>
</epp>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="2202">
<msg>Invalid authorization information</msg>
</result>
<trID>
<svTRID>dnsbe-0</svTRID>
</trID>
</response>
</epp>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1 cannot add contact: 2202: Invalid authorization information:
Kan uit je code niet opmaken of je wel daadwerkelijk checked of het login commando wel goed is gegaan, voordat je verder gaat met het versturen van het commando om het contact aan te maken.
Kan ik ook in je output nog steeds niet terugvinden.
Heb je het inloggen bewust weggeknipt, of is er geen inlogpoging geweest?
Verwacht zoiets tussen de greeting en het aanmaken van het contact:
TO SERVER:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:eppcom="urn:ietf:params
:xml:ns:eppcom-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xmlns:d
nsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
<command>
<login>
<clID>***********</clID>
<pw>*******************</pw>
<options>
<version>0.9</version>
<lang>en</lang>
</options>
<svcs>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
<svcExtension>
<extURI>http://www.dns.be/xml/epp/nsgroup-1.0</extURI>
<extURI>http://www.dns.be/xml/epp/build/20041020</extURI>
</svcExtension>
</svcs>
</login>
</command>
</epp>
FROM SERVER:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<extension>
<dnsbe:ext>
<dnsbe:result>
<dnsbe:msg>login succeeded</dnsbe:msg>
</dnsbe:result>
</dnsbe:ext>
</extension>
<trID>
<svTRID>dnsbe-0</svTRID>
</trID>
</response>
</epp>
Ik heb net nog even het volgende stukje code in mijn script gezet en het lijkt dat het inloggen niet goed gaat. Maar ik kan niet ontdekken wat ik fout doe.
if (! $dnsbe->login()) die("Login Failure: " . $dnsbe->errstr());
maar de output van de xml kan ik ook niet terug vinden
function login()
{
$this->sock = new Epp();
$server = SERVER;
$port = PORT;
$timeout = 30;
if (DEBUG > 0) echo "*** Connecting to: $server:$port\n";
if (($ok = $this->sock->connect($server, $port, $timeout)) != 0) {
$this->errmsgtxt = "Failed to connect to $server:$port";
return false;
}
if (DEBUG > 0) echo "*** OK, Waiting for greeting...\n";
$buf = $this->sock->readEppString();
if (DEBUG > 1) echo $buf;
$xml = XML_unserialize($buf);
$svID = $xml['epp']['greeting']['svID'];
foreach ($xml['epp']['greeting']['svcMenu']['svcExtension']['extURI'] as $ext) {
if (preg_match("/build/", $ext)) {
$build = $ext;
break;
}
}
if (! $build) {
$this->errmsgtxt = "Could not determine server build";
return false;
}
if (DEBUG > 0) echo "*** OK $svID (build $build)\n";
$login = new Smarty;
$login->assign('login', LOGIN);
$login->assign('pass', PASS);
$login->assign('build', $build);
if (DEBUG > 0) echo "*** Authenticating as '" . LOGIN . "'...\n";
if (! $this->_send_recv($login->fetch('login.tpl'), "1000", $xml))
return false;
else
return true;
}
Je code is niet geschikt voor nieuwere DNS.be releases.
Greeting ziet er tegenwoordig zo uit:
From server:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<greeting>
<svID>dns.be</svID>
<svDate>2011-12-23T19:33:16.045Z</svDate>
<svcMenu>
<version>1.0</version>
<lang>en</lang>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
<svcExtension>
<extURI>http://www.dns.be/xml/epp/nsgroup-1.0</extURI>
<extURI>http://www.dns.be/xml/epp/registrar-1.0</extURI>
<extURI>http://www.dns.be/xml/epp/dnsbe-1.0</extURI>
<extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
<extURI>http://www.dns.be/xml/epp/keygroup-1.0</extURI>
</svcExtension>
</svcMenu>
<dcp>
<access>
<all/>
</access>
<statement>
<purpose>
<admin/>
<prov/>
</purpose>
<recipient>
<ours/>
<public/>
</recipient>
<retention>
<stated/>
</retention>
</statement>
</dcp>
</greeting>
</epp>
Je kan dus geen server build nummer meer uit de greeting halen.
Ok, hoe kom ik nu aan de nieuwe functie en bestanden?
Ok, hoe kom ik nu aan de nieuwe functie en bestanden?
Zelf schrijven?
Tech. specs staan op de dns.be site.
Probleem is die tijd heb ik niet meer, en groot budget heb ik ook niet :S
Probleem is die tijd heb ik niet meer, en groot budget heb ik ook niet :S
Dan lijkt me het niet handig om registrar te worden van een TLD waarbij je een minimaal aantal transacties per jaar moet hebben.
Gewoon ergens reseller worden?
Het is niet voor mij. Dat is het punt.
Het is niet voor mij. Dat is het punt.
Eerlijk tegenover je opdrachtgever zijn, en aangeven dat je de opdracht niet (binnen de deadline) kan voltooien?
Een volledige EPP implementatie schrijf je niet binnen een nachtje.
Zet eens een dummy waarde in de contact:pw tag. Volgens de docs zou het niet nodig zijn, maar ik meen me te herinneren dat in oudere releases dit toch nodig was. Gewoon dus <contact:pw>foo</contact:pw> ofzo.