/** * Update nameservers for domain * @access public * @param Domain $domain Domain * @param IChangelist $changelist nameservers changelist * @return UpdateDomainNameserversResponse * @version v1000 */ public function UpdateDomainNameservers(Domain $domain, IChangelist $changelist) { $params = array( "name" => $this->MakeNameIDNCompatible($domain->GetHostName()), "add" => "", "del" => "" ); if ($changelist->GetAdded()) $params['add'] = "<domain:add><domain:ns>".$this->GetNSXML($changelist->GetAdded())."</domain:ns></domain:add>"; if ($changelist->GetRemoved()) $params['del'] = "<domain:rem><domain:ns>".$this->GetNSXML($changelist->GetRemoved())."</domain:ns></domain:rem>"; $this->BeforeRequest('domain-update-ns', $params, __METHOD__, $domain, $changelist); $response = $this->Request("domain-update-ns", $params); if ($response->Code == RFC3730_RESULT_CODE::OK_PENDING) $status = REGISTRY_RESPONSE_STATUS::PENDING; elseif ($response->Succeed) $status = REGISTRY_RESPONSE_STATUS::SUCCESS; else $status = REGISTRY_RESPONSE_STATUS::FAILED; return new UpdateDomainNameserversResponse($status, $response->ErrMsg, $response->Code); }
/** * This method request registry to change namservers list for domain * In order to pending operation, response must have status REGISTRY_RESPONSE_STATUS::PENDING * * @param Domain $domain Domain * @param IChangelist $changelist nameservers changelist * @return UpdateDomainNameserversResponse */ public function UpdateDomainNameservers(Domain $domain, IChangelist $changelist) { $hostname = $domain->GetHostName(); $is_idn = $this->RegistryAccessible->IsIDNHostName($hostname); $params = array('name' => $is_idn ? $this->RegistryAccessible->PunycodeEncode($hostname) : $hostname, 'add' => '', 'rem' => ''); $added = $changelist->GetAdded(); $removed = $changelist->GetRemoved(); if ($added) { $params['add'] = "<domain:add><domain:ns>" . $this->GetNSXML($added) . "</domain:ns></domain:add>"; } if ($removed) { $params['rem'] = "<domain:rem><domain:ns>" . $this->GetNSXML($removed) . "</domain:ns></domain:rem>"; } $response = $this->Request("domain-update-ns", $params); if ($response->Code == RFC3730_RESULT_CODE::OK_PENDING) { $status = REGISTRY_RESPONSE_STATUS::PENDING; } elseif ($response->Succeed) { $status = REGISTRY_RESPONSE_STATUS::SUCCESS; } else { $status = REGISTRY_RESPONSE_STATUS::FAILED; } $ret = new UpdateDomainNameserversResponse($status, $response->ErrMsg, $response->Code); $ret->Result = $status != REGISTRY_RESPONSE_STATUS::FAILED; return $ret; }
/** * Update nameservers for domain * @access public * @param Domain $domain Domain * @param IChangelist $changelist nameservers changelist * @return UpdateDomainNameserversResponse * @version v1000 */ public function UpdateDomainNameservers(Domain $domain, IChangelist $changelist) { $added = $changelist->GetAdded(); $removed = $changelist->GetRemoved(); $re = '/The speficied host is not used as a nameserver for this domain. \\[rem: ([^\\]]+)\\]/'; $br = false; do { $response = $this->DoUpdateDomainNameservers($domain, $added, $removed); if (preg_match($re, $response->ErrMsg, $match) && $removed) { $dirty_removed_host = $match[1]; foreach ($removed as $i => $ns) { if ($ns->HostName == $dirty_removed_host) { unset($removed[$i]); break; } } } else { $br = true; } } while (!$br); $status = $response->Succeed ? REGISTRY_RESPONSE_STATUS::SUCCESS : REGISTRY_RESPONSE_STATUS::FAILED; return new UpdateDomainNameserversResponse($status, $response->ErrMsg, $response->Code); }
/** * Update nameservers for domain * @access public * @param Domain $domain Domain * @param IChangelist $changelist nameservers changelist * @return bool */ public function UpdateDomainNameservers(Domain $domain, IChangelist $changelist) { $nameservers = $changelist->GetList(); foreach ((array) $changelist->GetAdded() as $k => $v) { $params["addnameserver{$k}"] = $v->HostName; } foreach ((array) $changelist->GetRemoved() as $k => $v) { $params["delnameserver{$k}"] = $v->HostName; } $params["domain"] = $this->MakeNameIDNCompatible($domain->GetHostName()); $response = $this->Request("ModifyDomain", $params); $status = $response->Succeed ? REGISTRY_RESPONSE_STATUS::SUCCESS : REGISTRY_RESPONSE_STATUS::FAILED; return new UpdateDomainNameserversResponse($status, $response->ErrMsg, $response->Code); }
/** * This method request registry to change namservers list for domain * In order to pending operation, response must have status REGISTRY_RESPONSE_STATUS::PENDING * * @param Domain $domain Domain * @param IChangelist $changelist nameservers changelist * @return UpdateDomainNameserversResponse */ public function UpdateDomainNameservers(Domain $domain, IChangelist $changelist) { $params = array('name' => $this->MakeNameIDNCompatible($domain->GetHostName()), 'subproduct' => 'dot' . strtoupper($domain->Extension), 'add' => '', 'remove' => '', 'change' => ''); if ($changelist->GetAdded()) { $params['add'] = "<domain:add><domain:ns>" . $this->GetNSXML($changelist->GetAdded()) . "</domain:ns></domain:add>"; // @see http://webta.net/support/admin/replies_view.php?id=1338 foreach ($changelist->GetAdded() as $ns) { try { if (!preg_match('/(com|net)$/', $ns->HostName)) { if ($ns instanceof NameserverHost) { $this->CreateNameserverHost($ns); } else { $nshost = new NameserverHost($ns->HostName, null); $this->CreateNameserverHost($nshost); } } } catch (Exception $ignore) { } } } if ($changelist->GetRemoved()) { $params['remove'] = "<domain:rem><domain:ns>" . $this->GetNSXML($changelist->GetRemoved()) . "</domain:ns></domain:rem>"; } $response = $this->Request("domain-update", $params); if ($response->Code == RFC3730_RESULT_CODE::OK_PENDING) { $status = REGISTRY_RESPONSE_STATUS::PENDING; } elseif ($response->Succeed) { $status = REGISTRY_RESPONSE_STATUS::SUCCESS; } else { $status = REGISTRY_RESPONSE_STATUS::FAILED; } return new UpdateDomainNameserversResponse($status, $response->ErrMsg, $response->Code); }