From 5196079fe83d9efe5974b0c187bb995bb4611873 Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Sat, 29 Sep 2012 09:23:27 +0000
Subject: [PATCH] Added script to sync renewal dates with COZA

---
 cozaeppsync.php | 133 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 133 insertions(+)
 create mode 100755 cozaeppsync.php

diff --git a/cozaeppsync.php b/cozaeppsync.php
new file mode 100755
index 0000000..beff606
--- /dev/null
+++ b/cozaeppsync.php
@@ -0,0 +1,133 @@
+<?
+# 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';
+# We need pear for the error handling
+require_once "PEAR.php";
+
+
+# Grab module parameters
+$params = getregistrarconfigoptions('cozaepp');
+
+echo("COZA-EPP Domain Sync Report\n");
+echo("---------------------------------------------------\n");
+
+# Request balance from registrar
+if (PEAR::isError($client = _cozaepp_Client())) {
+	echo("ERROR: ".$client->getMessage()."\n");
+	exit;
+}
+
+
+# Pull list of domains which are registered using this module
+$queryresult = mysql_query("SELECT domain FROM tbldomains WHERE registrar = 'cozaepp' AND status <> 'Pending Transfer'");
+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;
+	}
+
+
+	# This is the template we going to use below for our updates
+	$querytempalte = "UPDATE tbldomains SET status = %s, registrationdate = %s, expirydate = %s, nextduedate = %s, WHERE domain = %s";
+
+	# Check status and update
+	if ($statusres == "ok") {
+		mysql_query(sprintf($querytemplate,"Active",$createdate,$nextduedate,$nextduedate,$domain));
+		echo "Updated $domain expiry to $nextduedate\n";
+
+	} elseif ($statusres == "serverHold") {
+		mysql_query(sprintf($querytemplate,"Pending",$createdate,$nextduedate,$nextduedate,$domain));
+		echo "Domain $domain is PENDING (Registration: $createdate, Expiry: $nextduedate)\n";
+
+	} elseif ($statusres == "expired") {
+		mysql_query(sprintf($querytemplate,"Expired",$createdate,$nextduedate,$nextduedate,$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";
+	}
+}
+
+
+?>
-- 
GitLab