コード例 #1
0
ファイル: class.Registry.php プロジェクト: rchicoria/epp-drs
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
		/**
		 * 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);
		}
コード例 #4
0
 /**
  * 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);
 }
コード例 #5
0
 /**
  * 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;
 }
コード例 #6
0
 /**
  * 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()));
 }
コード例 #7
0
 /**
  * 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);
 }
コード例 #8
0
 /**
  * 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);
 }
コード例 #9
0
 /**
  * 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;
 }
コード例 #10
0
 /**
  * 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;
 }