Seditio Source
Root |
./othercms/ips_4.3.4/applications/nexus/sources/DomainRegistrar/Enom.php
<?php
/**
 * @brief        eNom Domain Registrar
 * @author        <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
 * @copyright    (c) Invision Power Services, Inc.
 * @license        https://www.invisioncommunity.com/legal/standards/
 * @package        Invision Community
 * @subpackage    Nexus
 * @since        08 Aug 2014
 */

namespace IPS\nexus\DomainRegistrar;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
   
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
    exit;
}

/**
 * eNom Domain Registrar
 */
class _Enom
{
   
/**
     * @brief    Username
     */
   
protected $username;
   
   
/**
     * @brief    Password
     */
   
protected $password;
   
   
/**
     * @brief    URL
     */
   
protected $url;
   
   
/**
     * Constructor
     *
     * @param    string    $username    eNom Reseller Username
     * @param    string    $password    eNom Reseller Password
     * @return    void
     */
   
public function __construct( $username, $password )
    {
       
$this->username = $username;
       
$this->password = $password;
       
       
$this->url = \IPS\Http\Url::external( 'http://' . ( \IPS\NEXUS_TEST_GATEWAYS ? 'resellertest.enom.com' : 'reseller.enom.com' ) . '/interface.asp' );
    }
   
   
/**
     * Check Domain Availablility
     *
     * @param    string    $sld    SLD
     * @param    string    $tld    TLD
     * @return    bool
     * @throws    \RuntimeException
     */
   
public function check( $sld, $tld )
    {
       
$response = $this->url->request()->post( array(
           
'command'        => 'check',
           
'uid'            => $this->username,
           
'pw'            => $this->password,
           
'sld'            => $sld,
           
'tld'            => $tld,
           
'responsetype'    => 'xml',
        ) )->
decodeXml();
       
        if (
$response->errors )
        {
            throw new \
RuntimeException( (string) $response->errors->Err1 );
        }
       
        return (string)
$response->RRPCode === '210';
    }
   
   
/**
     * Register Domain
     *
     * @param    string                    $sld            SLD
     * @param    string                    $tld            TLD
     * @param    array                    $nameservers    Nameservers
     * @param    \IPS\nexus\Customer        $customer        The customer
     * @param    \IPS\GeoLocation|NULL    $billingAddress    Billing Address
     * @return    bool
     * @throws    \RuntimeException
     */
   
public function register( $sld, $tld, array $nameservers, \IPS\nexus\Customer $customer, \IPS\GeoLocation $billingAddress = NULL )
    {
       
$send = array(
           
'command'    => 'purchase',
           
'UID'        => $this->username,
           
'PW'        => $this->password,
           
'SLD'        => $sld,
           
'TLD'        => $tld,
            );
       
$i = 1;
        foreach (
$nameservers as $s )
        {
           
$send["NS{$i}"] = $s;
           
$i++;
        }
       
$send['NumYears'] = 1;
       
$send['IgnoreNSFail'] = 'Yes';
       
$send['UseWireTransfer'] = 'Yes';
       
$send['responsetype'] = 'xml';
       
       
$response = $this->url->request( \IPS\LONG_REQUEST_TIMEOUT )->post( $send )->decodeXml();

        if (
$response->errors )
        {
            throw new \
RuntimeException( (string) $response->errors->Err1 );
        }
       
        return (string)
$response->RRPCode === '200';
    }
   
   
/**
     * Renew Domain
     *
     * @param    string    $sld    SLD
     * @param    string    $tld    TLD
     * @param    int        $years    Years to renew for
     * @return    bool
     * @throws    \RuntimeException
     */
   
public function renew( $sld, $tld, $years )
    {
       
$response = $this->url->request( \IPS\LONG_REQUEST_TIMEOUT )->post( array(
           
'command'            => 'extend',
           
'UID'                => $this->username,
           
'PW'                => $this->password,
           
'SLD'                => $sld,
           
'TLD'                => $tld,
           
'responsetype'        => 'xml',
        ) )->
decodeXml();
       
        return (string)
$response->RRPCode === '200';
    }
}