diff --git a/modules/registrars/cozaepp/cozaepp.php b/modules/registrars/cozaepp/cozaepp.php index eded25a99d02b3d87753d0cc65b837456d00321c..507b55f273bea8f7007d3266d918c1da6c4c002b 100644 --- a/modules/registrars/cozaepp/cozaepp.php +++ b/modules/registrars/cozaepp/cozaepp.php @@ -382,9 +382,13 @@ function cozaepp_RegisterDomain($params) { $AdminCountry = $params["admincountry"]; $AdminEmailAddress = $params["adminemail"]; $AdminPhone = $params["adminphonenumber"]; - # Our details + + # Registrar contactid hash $contactid = substr(md5($domain), 0,15); + # Admin/Tech/Billing contactid hash + $additional_contactid = substr(md5($AdminFirstName.$AdminLastName), 0,15); + # Generate XML for namseverss if ($nameserver1 = $params["ns1"]) { $add_hosts = ' @@ -476,7 +480,7 @@ function cozaepp_RegisterDomain($params) { $values["status"] = $msg; - $request = $client->request($xml = ' + $domaincreate = ' <epp:epp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xmlns:cozadomain="http://co.za/epp/extensions/cozadomain-1-0" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> @@ -485,7 +489,67 @@ function cozaepp_RegisterDomain($params) { <domain:create xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"> <domain:name>'.$domain.'</domain:name> <domain:ns>'.$add_hosts.'</domain:ns> - <domain:registrant>'.$contactid.'</domain:registrant> + <domain:registrant>'.$contactid.'</domain:registrant>'; + + # Some SLDs require the presence of admin, billing and tech contacts. + # Check if our domain has the requirement and get/create the required contact id. + $_server = _cozaepp_SldLookup($domain); + + if ($_server['additional_contacts']) { + $request = $client->request($xml = ' +<epp:epp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" + xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> + <epp:command> + <epp:create> + <contact:create xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd"> + <contact:id>'.$additional_contactid.'</contact:id> + <contact:postalInfo type="loc"> + <contact:name>'.$AdminFirstName.' '.$AdminLastName.'</contact:name> + <contact:addr> + <contact:street>'.$AdminAddress1.'</contact:street> + <contact:street>'.$AdminAddress2.'</contact:street> + <contact:city>'.$AdminCity.'</contact:city> + <contact:sp>'.$AdminStateProvince.'</contact:sp> + <contact:pc>'.$AdminPostalCode.'</contact:pc> + <contact:cc>'.$AdminCountry.'</contact:cc> + </contact:addr> + </contact:postalInfo> + <contact:voice>'.$AdminPhone.'</contact:voice> + <contact:fax></contact:fax> + <contact:email>'.$AdminEmailAddress.'</contact:email> + <contact:authInfo> + <contact:pw>AxA8AjXbAH'.rand().rand().'</contact:pw> + </contact:authInfo> + </contact:create> + </epp:create> + </epp:command> +</epp:epp> +'); + + # Parse XML result + $doc= new DOMDocument(); + $doc->loadXML($request); + logModuleCall('Cozaepp', 'RegisterDomain', $xml, $request); + + # Pull off status + $coderes = $doc->getElementsByTagName('result')->item(0)->getAttribute('code'); + $msg = $doc->getElementsByTagName('msg')->item(0)->nodeValue; + if($coderes == '1000') { + $values['contact'] = 'Contact Created'; + } else if($coderes == '2302') { + $values['contact'] = 'Contact Already exists'; + } else { + $values["error"] = "RegisterDomain/admincontact-create($additional_contactid): Code ($coderes) $msg"; + return $values; + } + + $domaincreate .= ' + <domain:contact type="admin">'.$additional_contactid.'</domain:contact> + <domain:contact type="tech">'.$additional_contactid.'</domain:contact> + <domain:contact type="billing">'.$additional_contactid.'</domain:contact>'; + } + + $domaincreate .= ' <domain:authInfo> <domain:pw>coza</domain:pw> </domain:authInfo> @@ -498,10 +562,12 @@ function cozaepp_RegisterDomain($params) { </epp:extension> </epp:command> </epp:epp> -'); +'; + + $request = $client->request($domaincreate); $doc= new DOMDocument(); $doc->loadXML($request); - logModuleCall('Cozaepp', 'RegisterDomain', $xml, $request); + logModuleCall('Cozaepp', 'RegisterDomain', $domaincreate, $request); $coderes = $doc->getElementsByTagName('result')->item(0)->getAttribute('code'); $msg = $doc->getElementsByTagName('msg')->item(0)->nodeValue;