Skip to content
Snippets Groups Projects
Forked from awit-whmcs / whmcs-coza-epp
68 commits behind the upstream repository.
cozaeppsync.php 6.61 KiB
<?
# Copyright (c) 2012, AllWorldIT
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


# Official Website:
# http://devlabs.linuxassist.net/projects/whmcs-coza-epp

# Lead developer:
# Nigel Kukard <nkukard@lbsd.net>


# ! ! P L E A S E   N O T E  ! !

# * If you make changes to this file, please consider contributing
#   anything useful back to the community. Don't be a sour prick.

# * If you find this module useful please consider making a
#   donation to support modules like this.


# WHMCS hosting, theming, module development, payment gateway
# integration, customizations and consulting all available from
# http://allworldit.com



# This file brings in a few constants we need
require_once dirname(__FILE__) . '/../../../dbconnect.php';
# Setup include dir
$include_path = ROOTDIR . '/modules/registrars/cozaepp';
set_include_path($include_path . PATH_SEPARATOR . get_include_path());
# Include EPP stuff we need
require_once 'cozaepp.php';
# Additional functions we need
require_once ROOTDIR . '/includes/functions.php';
# Include registrar functions aswell
require_once ROOTDIR . '/includes/registrarfunctions.php';

# Grab module parameters
$params = getregistrarconfigoptions('cozaepp');

# Grab the configuration setting for DomainSyncEnabled
$query = "select value from tblconfiguration where setting = 'DomainSyncEnabled'";
$res = mysql_query($query);
$row = mysql_fetch_array($res);

if (!empty($row) && !$row['value'] == 'on') {
	echo("COZAEPP domain sync disabled due to system setting");
	exit(0);
}

echo("COZA-EPP Domain Sync Report\n");
echo("---------------------------------------------------\n");

# Request balance from registrar
try {
	$client = _cozaepp_Client();

	# Pull list of domains which are registered using this module
	$queryresult = mysql_query("SELECT domain FROM tbldomains WHERE registrar = 'cozaepp'");
	while($data = mysql_fetch_array($queryresult)) {
		$domains[] = trim(strtolower($data['domain']));
	}

	# Loop with each one
	foreach($domains as $domain) {
		sleep(1);

		# Query domain
		$output = $client->request('
<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" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
	<epp:command>
		<epp:info>
			<domain:info xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
				<domain:name hosts="all">'.$domain.'</domain:name>
			</domain:info>
		</epp:info>
	</epp:command>
</epp:epp>
	');

		$doc= new DOMDocument();
		$doc->loadXML($output);
		$coderes = $doc->getElementsByTagName('result')->item(0)->getAttribute('code');
		if($coderes == '1000') {
			if( $doc->getElementsByTagName('status')) {
				if($doc->getElementsByTagName('status')->item(0)) {
					$statusres = $doc->getElementsByTagName('status')->item(0)->getAttribute('s');
					$createdate = substr($doc->getElementsByTagName('crDate')->item(0)->nodeValue,0,10);
					$nextduedate = substr($doc->getElementsByTagName('exDate')->item(0)->nodeValue,0,10);
				} else {
					$status = "Domain $domain not registered!";
					continue;
				}
			}
		} else {
			echo "Domain check on $domain not successful: "._cozaepp_message($coderes)." (File a bug report here: http://devlabs.linuxassist.net/projects/whmcs-coza-epp/issues/new)";
			continue;
		}

		# Checking for transfer status if transfer in progress
		$output = $client->request($xml = '
<epp:epp xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
  <epp:command>
    <epp:transfer op="query">
      <domain:transfer>
        <domain:name>'.$domain.'</domain:name>
      </domain:transfer>
    </epp:transfer>
  </epp:command>
</epp:epp>');

		$transferstatus = '';

		# parsing for transfer status
		$doc= new DOMDocument();
		$doc->loadXML($output);
		$coderes = $doc->getElementsByTagName('result')->item(0)->getAttribute('code');
		if($coderes == '1000') {
			if( $doc->getElementsByTagName('trnData')) {
				if($doc->getElementsByTagName('trnData')->item(0)->getElementsByTagName('trStatus')->item(0)) {
					$transferstatus = $doc->getElementsByTagName('trnData')->item(0)->getElementsByTagName('trStatus')->item(0)->nodeValue;
				} else {
					$transferstatus = "Domain $domain not being transfered!";
					continue;
				}
			}
		} else {
			echo "Domain check on $domain not successful: "._cozaepp_message($coderes)." (File a bug report here: http://devlabs.linuxassist.net/projects/whmcs-coza-epp/issues/new)";
			continue;
		}

		# This is the template we going to use below for our updates
		$querytemplate = "UPDATE tbldomains SET status = '%s', registrationdate = '%s', expirydate = '%s', nextduedate = '%s' WHERE domain = '%s'";

		# Check status and update
		if ($statusres == "ok" || $transferstatus == "clientApproved") {
			mysql_query(sprintf($querytemplate,"Active",
					mysql_real_escape_string($createdate),
					mysql_real_escape_string($nextduedate),
					mysql_real_escape_string($nextduedate),
					mysql_real_escape_string($domain)
			));
			echo "Updated $domain expiry to $nextduedate\n";

		} elseif ($statusres == "serverHold" || $transferstatus == "pending") {
			mysql_query(sprintf($querytemplate,"Pending",
					mysql_real_escape_string($createdate),
					mysql_real_escape_string($nextduedate),
					mysql_real_escape_string($nextduedate),
					mysql_real_escape_string($domain)
			));
			echo "Domain $domain is PENDING (Registration: $createdate, Expiry: $nextduedate)\n";

		} elseif ($statusres == "expired" || $statusres == "pendingDelete" || $statusres == "inactive") {
			mysql_query(sprintf($querytemplate,"Expired",
					mysql_real_escape_string($createdate),
					mysql_real_escape_string($nextduedate),
					mysql_real_escape_string($nextduedate),
					mysql_real_escape_string($domain)
			));
			echo "Domain $domain is EXPIRED (Registration: $createdate, Expiry: $nextduedate)\n";

		} else {
			echo "Domain $domain has unknown status '$statusres' (File a bug report here: http://devlabs.linuxassist.net/projects/whmcs-coza-epp/issues/new)\n";
		}
	}

} catch (Exception $e) {
	echo("ERROR: ".$e->getMessage()."\n");
	exit;
}

?>