/** * Update nameservers for domain * @access public * @param Domain $domain Domain * @param IChangelist $changelist nameservers changelist * @return Domain */ public function UpdateDomainNameservers(Domain $domain, IChangelist $changes) { if (!$changes->HasChanges()) { throw new Exception(_("No changes in nameserver list")); } $this->FireEvent('BeforeUpdateDomainNameservers', $domain, $changes); $this->FireEvent('BeforeUpdateDomain', $domain, $this->DBDomain->GetInitialState($domain)); $added = $changes->GetAdded(); foreach ($added as $ns) { try { if ($ns instanceof NameserverHost == false) { $this->CreateNameserver($ns); } } catch (ObjectExistsException $e) { // Ignore errors } catch (NotImplementedException $e) { // Ignore errors } } $Resp = $this->RegModule->UpdateDomainNameservers($domain, $changes); $this->ValidateModuleResponse($Resp, 'UpdateDomainNameserversResponse'); if ($Resp->IsFailed()) { Log::Log(sprintf('UpdateDomainNameservers failed. Registry error: %s', $Resp->ErrMsg), E_USER_ERROR); throw new RegistryException($Resp->ErrMsg, $Resp->Code); } if ($Resp->Result) { if ($Resp->Succeed()) { $domain->SetNameserverList($changes->GetList()); $this->DBDomain->Save($domain); // db operation $this->FireEvent('DomainOperation', $domain, self::OP_UPDATE); $this->FireEvent('DomainUpdated', $domain); } else { if ($Resp->Pending()) { $this->AddPendingOperation($domain, self::OP_UPDATE, $Resp->OperationId); } } } else { throw new RegistryException(_('Registry was unable to update nameservers')); } return $domain; }
/** * 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) { $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); }
/** * 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('DOMAIN' => $domain->Name, 'TLD' => $this->Extension); foreach (array_values($changelist->GetList()) as $i => $ns) { $params['DNS SERVER NAME ' . ($i + 1)] = $ns->HostName; } $Resp = $this->Request('ALTER DOMAIN', $params); $status = $Resp->Succeed ? REGISTRY_RESPONSE_STATUS::SUCCESS : REGISTRY_RESPONSE_STATUS::FAILED; $Ret = new UpdateDomainNameserversResponse($status, $Resp->ErrMsg, $Resp->Code); $Ret->Result = $Resp->Succeed; return $Ret; }
/** * Method is called before UpdateDomainFlags request * * @param Domain $domain * @param IChangelist $changes flags changelist */ public function OnBeforeUpdateDomainFlags(Domain $domain, IChangelist $changes) { $this->Request('OnBeforeUpdateDomainFlags', array('domain' => $domain->ToArray(), 'changes' => $changes->ToArray())); }
/** * 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); }
/** * 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); }
/** * 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) { $nshost_list = $changelist->GetList(); if (sizeof($nshost_list) != 2) { throw new Exception(_('Domain must have 2 namservers')); } $params = array('name' => $domain->GetHostName(), 'type' => $this->GetDomainType(), 'ns1' => strtolower($nshost_list[0]->HostName), 'ns2' => strtolower($nshost_list[1]->HostName), 'pw' => $domain->AuthCode); $response = $this->Request('domain-update-ns', $params); $status = $response->Succeed ? REGISTRY_RESPONSE_STATUS::SUCCESS : REGISTRY_RESPONSE_STATUS::FAILED; $ret = new UpdateDomainNameserversResponse($status, $response->ErrMsg, $response->Code); $ret->Result = $response->Succeed; return $ret; }
/** * Change nameservers for specific domain * This operation supports pending status. If you return response object with Status = REGISTRY_RESPONSE_STATUS.PENDING, you must return response later during a poll. * See IRegistryModuleClientPollable::PollUpdateDomain(). * * @param Domain $domain Domain * @param IChangelist $changelist Changes in a list of nameservers * @return UpdateDomainNameserversResponse */ public function UpdateDomainNameservers(Domain $domain, IChangelist $changelist) { $nameservers = $changelist->GetList(); if (!$nameservers) { throw new Exception(_("Enom can't assign empty list of nameservers to domain")); } $params = array('SLD' => $this->MakeNameIDNCompatible($domain->Name), 'TLD' => $this->Extension); $n = 1; foreach ($nameservers as $nameserver) { if ($nameserver->HostName) { $params["NS{$n}"] = $nameserver->HostName; $n++; } } $Resp = $this->Request('ModifyNS', $params); $status = $Resp->Succeed ? REGISTRY_RESPONSE_STATUS::SUCCESS : REGISTRY_RESPONSE_STATUS::FAILED; $Ret = new UpdateDomainNameserversResponse($status, $Resp->ErrMsg, $Resp->Code); $Ret->Result = $Resp->Code == 200; return $Ret; }