|
|
@@ -28,17 +28,23 @@ if (!defined('WHMCS')) {
|
|
|
function siteBuilder_MetaData() {
|
|
|
return array(
|
|
|
'DisplayName' => 'ThurData SiteBuilder Provisioning',
|
|
|
- 'APIVersion' => '1.2',
|
|
|
'DefaultNonSSLPort' => '80',
|
|
|
'DefaultSSLPort' => '443',
|
|
|
- 'RequiresServer' => true,
|
|
|
- 'ServiceSingleSignOnLabel' => 'Login to siteBuilder',
|
|
|
- 'AdminSingleSignOnLabel' => 'Login to siteBuilder Admin'
|
|
|
+ 'RequiresServer' => true
|
|
|
);
|
|
|
}
|
|
|
-
|
|
|
+/**
|
|
|
+ * Create tables if neccessary
|
|
|
+ * Define siteBuilder product configuration options.
|
|
|
+ *
|
|
|
+ * @see https://developers.whmcs.com/provisioning-modules/config-options/
|
|
|
+ *
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
function siteBuilder_ConfigOptions() {
|
|
|
+ // check for tables and create if neccessary
|
|
|
siteBuilderCreateTables();
|
|
|
+ // return ConfigOptions
|
|
|
return ["BuilderURL" => [
|
|
|
"FriendlyName" => "Builder URL", # Full Builder URL (prefix//hostname:port/)
|
|
|
"Type" => "text", # Text Box
|
|
|
@@ -80,6 +86,7 @@ function siteBuilder_ConfigOptions() {
|
|
|
*/
|
|
|
function siteBuilder_Testconnection($params) {
|
|
|
$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
|
|
|
+ // ping remota API
|
|
|
$response = $siteBuilder->ping($params['serverusername'], $params['serverpassword']);
|
|
|
if($response['response']['answer'] == 'pong') {
|
|
|
return array(
|
|
|
@@ -94,7 +101,7 @@ function siteBuilder_Testconnection($params) {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Provision a new account of a siteBuilder server.
|
|
|
+ * Provision a new siteBuilder account
|
|
|
*
|
|
|
* Attempt to provision a new siteBuilder account. This is
|
|
|
* called any time provisioning is requested inside of WHMCS. Depending upon the
|
|
|
@@ -113,10 +120,13 @@ function siteBuilder_CreateAccount($params) {
|
|
|
$username = strtolower(substr($params['clientsdetails']['firstname'],0,2) . substr($params['clientsdetails']['lastname'],0,3)) . $params['serviceid'];
|
|
|
$userdomain = $params['domain'];
|
|
|
// set DNS
|
|
|
+ /* disabled on dev, has to be already set in test env
|
|
|
$response = siteBuildersetDNS($params, $userdomain);
|
|
|
if($response != 'success') {
|
|
|
return $response;
|
|
|
}
|
|
|
+ */
|
|
|
+ // update service
|
|
|
try {
|
|
|
Capsule::table('tblhosting')
|
|
|
->where('id', '=', $params['serviceid'])
|
|
|
@@ -135,7 +145,8 @@ function siteBuilder_CreateAccount($params) {
|
|
|
$e->getMessage()
|
|
|
);
|
|
|
return 'Error: could save username & password in database';
|
|
|
- }
|
|
|
+ }
|
|
|
+ // add account to database
|
|
|
try {
|
|
|
Capsule::table('sitePro_acc')
|
|
|
->insert(
|
|
|
@@ -156,14 +167,17 @@ function siteBuilder_CreateAccount($params) {
|
|
|
return 'Error: could save username & serviceid in database';
|
|
|
}
|
|
|
$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
|
|
|
+ // create siteBuilder account
|
|
|
$response = $siteBuilder->create($params['username'], $params['domain'], $params['serverusername'], $params['serverpassword']);
|
|
|
if($response['status'] != '200') {
|
|
|
return 'Error: ' . $response['response']['error'];
|
|
|
}
|
|
|
+ // create siteBuilder base config for new account
|
|
|
$response = $siteBuilder->init($params['username'], $params['domain'], $params['serverusername'], $params['serverpassword']);
|
|
|
if($response['status'] != '200') {
|
|
|
return 'Error: ' . $response['response']['error'];
|
|
|
}
|
|
|
+ // set quota for new account
|
|
|
$response = $siteBuilder->setQuota($params['username'], $params['configoption3'], $params['serverusername'], $params['serverpassword']);
|
|
|
if($response['status'] != '200') {
|
|
|
return 'Error: ' . $response['response']['error'];
|
|
|
@@ -172,7 +186,7 @@ function siteBuilder_CreateAccount($params) {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Removes a siteBuilder account.
|
|
|
+ * Removes a siteBuilder account and undeploy all related sites
|
|
|
*
|
|
|
* Called when a termination is requested. This can be invoked automatically for
|
|
|
* overdue products if enabled, or requested manually by an admin user.
|
|
|
@@ -184,6 +198,7 @@ function siteBuilder_CreateAccount($params) {
|
|
|
* @return string 'success' or an error message
|
|
|
*/
|
|
|
function siteBuilder_TerminateAccount($params) {
|
|
|
+ // check if account is suspended
|
|
|
try {
|
|
|
$active = Capsule::table('sitePro_acc')
|
|
|
->where('account',$params['username'])
|
|
|
@@ -206,35 +221,27 @@ function siteBuilder_TerminateAccount($params) {
|
|
|
$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
|
|
|
if(!empty($sites)) {
|
|
|
foreach($sites as $site) {
|
|
|
- /* $response = $siteBuilder->undeploy($params['username'], $site, $params['serverusername'], $params['serverpassword']);
|
|
|
+ $response = $siteBuilder->undeploy($params['username'], $site, $params['serverusername'], $params['serverpassword']);
|
|
|
if($response['status'] != '200') {
|
|
|
return 'Error: ' . $response['response'];
|
|
|
- } */
|
|
|
-
|
|
|
- logModuleCall(
|
|
|
- 'siteBuilder',
|
|
|
- __FUNCTION__,
|
|
|
- $params,
|
|
|
- 'debug',
|
|
|
- $site
|
|
|
- );
|
|
|
-
|
|
|
+ }
|
|
|
}
|
|
|
- try {
|
|
|
- Capsule::table('sitePro_site')
|
|
|
- ->where('relid',$params['serviceid'])
|
|
|
- ->delete();
|
|
|
- } catch (\Exception $e) {
|
|
|
- logModuleCall(
|
|
|
- 'siteBuilder',
|
|
|
- __FUNCTION__,
|
|
|
- $params,
|
|
|
- 'Error: could remove domains from database',
|
|
|
- $e->getMessage()
|
|
|
- );
|
|
|
- return 'Error: could remove domains from database';
|
|
|
- }
|
|
|
}
|
|
|
+ // cleanup database
|
|
|
+ try {
|
|
|
+ Capsule::table('sitePro_site')
|
|
|
+ ->where('relid',$params['serviceid'])
|
|
|
+ ->delete();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ logModuleCall(
|
|
|
+ 'siteBuilder',
|
|
|
+ __FUNCTION__,
|
|
|
+ $params,
|
|
|
+ 'Error: could remove site from database',
|
|
|
+ $e->getMessage()
|
|
|
+ );
|
|
|
+ return 'Error: could remove site from database';
|
|
|
+ }
|
|
|
// terminate account
|
|
|
$response = $siteBuilder->terminate($params['username'], $params['domain']);
|
|
|
if($response['status'] != '200') {
|
|
|
@@ -254,7 +261,6 @@ function siteBuilder_TerminateAccount($params) {
|
|
|
);
|
|
|
return 'Error: could remove account from database';
|
|
|
}
|
|
|
-
|
|
|
return 'success';
|
|
|
}
|
|
|
|
|
|
@@ -272,6 +278,7 @@ function siteBuilder_TerminateAccount($params) {
|
|
|
* @return string 'success' or an error message
|
|
|
*/
|
|
|
function siteBuilder_SuspendAccount($params) {
|
|
|
+ // disable default site
|
|
|
$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
|
|
|
$status = $siteBuilder->isenabled($params['username'],$params['domain']);
|
|
|
if($status['status'] != '200') {
|
|
|
@@ -283,6 +290,7 @@ function siteBuilder_SuspendAccount($params) {
|
|
|
return 'Error: ' . $response['response']['error'];
|
|
|
}
|
|
|
}
|
|
|
+ // set account to disabled in database
|
|
|
try {
|
|
|
Capsule::table('sitePro_acc')
|
|
|
->where('account',$params['username'])
|
|
|
@@ -302,7 +310,6 @@ function siteBuilder_SuspendAccount($params) {
|
|
|
// disable all sites but not change status in DB for unsuspend restoring
|
|
|
$sites = getSites($params['serviceid']);
|
|
|
if(!empty($sites)) {
|
|
|
- $siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
|
|
|
foreach($sites as $site) {
|
|
|
$response = $siteBuilder->disable($params['username'], $site, $params['serverusername'], $params['serverpassword']);
|
|
|
if($response['status'] != '200') {
|
|
|
@@ -314,7 +321,7 @@ function siteBuilder_SuspendAccount($params) {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Set a siteBuilder account to status active.
|
|
|
+ * Set a siteBuilder account to status active and enable active sites
|
|
|
*
|
|
|
* Called when an un-suspension is requested. This is invoked
|
|
|
* automatically upon payment of an overdue invoice for a product, or
|
|
|
@@ -327,6 +334,13 @@ function siteBuilder_SuspendAccount($params) {
|
|
|
* @return string 'success' or an error message
|
|
|
*/
|
|
|
function siteBuilder_UnsuspendAccount($params) {
|
|
|
+ $siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
|
|
|
+ // enable deafult site
|
|
|
+ $response = $siteBuilder->enable($params['username'], $params['domain'], $params['serverusername'], $params['serverpassword']);
|
|
|
+ if($response['status'] != '200') {
|
|
|
+ return 'Error: ' . $response['response']['error'];
|
|
|
+ }
|
|
|
+ // set account to enabled in database
|
|
|
try {
|
|
|
Capsule::table('sitePro_acc')
|
|
|
->where('account',$params['username'])
|
|
|
@@ -346,7 +360,6 @@ function siteBuilder_UnsuspendAccount($params) {
|
|
|
// enable active sites
|
|
|
$sites = getSitesEnabled($params['serviceid']);
|
|
|
if(!empty($sites)) {
|
|
|
- $siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
|
|
|
foreach($sites as $site) {
|
|
|
$response = $siteBuilder->enable($params['username'], $site, $params['serverusername'], $params['serverpassword']);
|
|
|
if($response['status'] != '200') {
|
|
|
@@ -354,7 +367,6 @@ function siteBuilder_UnsuspendAccount($params) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return 'success';
|
|
|
}
|
|
|
|