From a2c0a6b6eb6e10d8b131dd7fb72fa8b4f8e257cf Mon Sep 17 00:00:00 2001 From: Christopher York Date: Tue, 29 Jan 2013 12:02:08 -0600 Subject: [PATCH] Fixed: Using incorrect table name format for addons Changed: Addons no longer store the Enterprise Server credentials Fixed: Error codes not resolving to the correct response text --- .../includes/hooks/websitepanel_addons.php | 12 +++--- .../includes/hooks/websitepanel_sync.php | 6 ++- .../websitepanel_addons.php | 42 +++++++++++++------ .../websitepanel_sync/websitepanel_sync.php | 24 +++++++++-- .../websitepanel/websitepanel.functions.php | 28 ++++++++++++- 5 files changed, 89 insertions(+), 23 deletions(-) diff --git a/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_addons.php b/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_addons.php index 5d628e81..52ddeef0 100644 --- a/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_addons.php +++ b/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_addons.php @@ -46,15 +46,17 @@ function websitepanel_addons_AddonActivation($params) { // Sanity check to make sure the associated service is WebsitePanel based product // And that the addon purchased has an associated WebsitePanel addon - $results = full_query("SELECT h.id AS `id` FROM `tblhosting` AS h, `tblwspaddons` AS w, `tblservers` AS s WHERE h.id = {$params['serviceid']} AND h.server = s.id AND s.type = 'websitepanel' AND w.whmcs_id = {$params['addonid']}"); + $results = full_query("SELECT h.id AS `id` FROM `tblhosting` AS h, `mod_wspaddons` AS w, `tblservers` AS s WHERE h.id = {$params['serviceid']} AND h.server = s.id AND s.type = 'websitepanel' AND w.whmcs_id = {$params['addonid']}"); if (mysql_num_rows($results) > 0) { // Include the WebsitePanel ES Class require_once(ROOTDIR . '/modules/servers/websitepanel/websitepanel.class.php'); + require_once(ROOTDIR . '/modules/servers/websitepanel/websitepanel.functions.php'); // Retrieve the WebsitePanel Addons module settings $modSettings = websitepanel_addons_GetSettings(); - if (empty($modSettings['username']) || empty($modSettings['password']) || empty($modSettings['serverhost']) || empty($modSettings['serverport'])) + $srvSettings = websitepanel_GetServerSettings(); + if (empty($modSettings['serverhost']) || empty($modSettings['serverport']) || empty($srvSettings['username']) || empty($srvSettings['password'])) { // The module is disabled or has not yet been configured - stop return; @@ -71,7 +73,7 @@ function websitepanel_addons_AddonActivation($params) } // Create the WebsitePanel object instance - $wsp = new WebsitePanel($modSettings['username'], $modSettings['password'], $modSettings['serverhost'], $modSettings['serverport'], (($modSettings['serversecured']) == 'on' ? TRUE : FALSE)); + $wsp = new WebsitePanel($srvSettings['username'], $srvSettings['password'], $modSettings['serverhost'], $modSettings['serverport'], (($modSettings['serversecured']) == 'on' ? TRUE : FALSE)); // Grab the user's details from WebsitePanel in order to get the user's id $user = $wsp->get_user_by_username($username); @@ -89,7 +91,7 @@ function websitepanel_addons_AddonActivation($params) } // Get the associated WebsitePanel addon id - $results = select_query('tblwspaddons', 'wsp_id,is_ipaddress', array('whmcs_id' => $params['addonid'])); + $results = select_query('mod_wspaddons', 'wsp_id,is_ipaddress', array('whmcs_id' => $params['addonid'])); $addon = mysql_fetch_array($results); $addonPlanId = $addon['wsp_id']; $addonIsIpAddress = $addon['is_ipaddress']; @@ -129,7 +131,7 @@ function websitepanel_addons_GetSettings() $results = select_query('tbladdonmodules', 'setting,value', array('module' => 'websitepanel_addons')); while (($row = mysql_fetch_array($results)) != false) { - $settings[$row['setting']] = $row['value']; + $settings[$row[0]] = $row[1]; } return $settings; } \ No newline at end of file diff --git a/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_sync.php b/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_sync.php index 46a7a10e..0de3f28d 100644 --- a/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_sync.php +++ b/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_sync.php @@ -50,17 +50,19 @@ function websitepanel_sync_ClientEdit($params) { // Include the WebsitePanel ES Class require_once(ROOTDIR . '/modules/servers/websitepanel/websitepanel.class.php'); + require_once(ROOTDIR . '/modules/servers/websitepanel/websitepanel.functions.php'); // Retrieve the WebsitePanel Addons module settings $modSettings = websitepanel_sync_GetSettings(); - if (empty($modSettings['username']) || empty($modSettings['password']) || empty($modSettings['serverhost']) || empty($modSettings['serverport'])) + $srvSettings = websitepanel_GetServerSettings(); + if (empty($modSettings['serverhost']) || empty($modSettings['serverport']) || empty($srvSettings['username']) || empty($srvSettings['password'])) { // The module is disabled or has not yet been configured - stop return; } // Create the WebsitePanel object instance - $wsp = new WebsitePanel($modSettings['username'], $modSettings['password'], $modSettings['serverhost'], $modSettings['serverport'], (($modSettings['serversecured']) == 'on' ? TRUE : FALSE)); + $wsp = new WebsitePanel($srvSettings['username'], $srvSettings['password'], $modSettings['serverhost'], $modSettings['serverport'], (($modSettings['serversecured']) == 'on' ? TRUE : FALSE)); // Get all WSP users with the old email $items = (array)$wsp->get_users_paged_recursive(1, 'Email', $params['olddata']['email'], 0, 0, ''); diff --git a/WebsitePanel.WHMCSModule/modules/addons/websitepanel_addons/websitepanel_addons.php b/WebsitePanel.WHMCSModule/modules/addons/websitepanel_addons/websitepanel_addons.php index 6bee05b3..13ce02bb 100644 --- a/WebsitePanel.WHMCSModule/modules/addons/websitepanel_addons/websitepanel_addons.php +++ b/WebsitePanel.WHMCSModule/modules/addons/websitepanel_addons/websitepanel_addons.php @@ -46,13 +46,11 @@ function websitepanel_addons_config() { $configarray = array('name' => 'WebsitePanel Addons Automation', 'description' => 'Automates WHMCS product addons with WebsitePanel', - 'version' => '1.0', + 'version' => '1.2', 'author' => 'Christopher York', 'fields' => array('serverhost' => array('FriendlyName', 'Enterprise Server Host', 'Type' => 'text', 'Size' => 25, 'Description' => 'Enterprise Server hostname / IP address', 'Default' => '127.0.0.1'), 'serverport' => array('FriendlyName', 'Enterprise Server Port', 'Type' => 'text', 'Size' => 4, 'Description' => 'Enterprise Server port', 'Default' => 9002), 'serversecured' => array('FriendlyName', 'Use Secured Connection', 'Type' => 'yesno', 'Description' => 'Tick to use SSL secured connection'), - 'username' => array('FriendlyName', 'Username', 'Type' => 'text', 'Size' => 25, 'Description' => 'Enterprise Server username', 'Default' => 'serveradmin'), - 'password' => array('FriendlyName', 'Password', 'Type' => 'password', 'Size' => 25, 'Description' => 'Enterprise Server password') ) ); return $configarray; @@ -67,7 +65,7 @@ function websitepanel_addons_config() function websitepanel_addons_activate() { // Create the WebsitePanel Addons table - $query = "CREATE TABLE `tblwspaddons` ( + $query = "CREATE TABLE `mod_wspaddons` ( `whmcs_id` int(11) NOT NULL, `wsp_id` int(11) NOT NULL, `is_ipaddress` bit(1) NOT NULL DEFAULT b'0', @@ -94,9 +92,8 @@ function websitepanel_addons_activate() */ function websitepanel_addons_deactivate() { - // Create the WebsitePanel Addons table - $query = 'DROP TABLE `tblwspaddons`'; - $result = full_query($query); + // Drop the WebsitePanel Addons table + $result = full_query('DROP TABLE `mod_wspaddons`'); // Check the results to verify that the table has been created properly if (!$result) @@ -109,6 +106,27 @@ function websitepanel_addons_deactivate() } } +/** + * websitepanel_addons_upgrade + * + * @param $vars array + * @access public + * @return array + */ +function websitepanel_addons_upgrade($vars) +{ + + $version = $vars['version']; + + // Adjust the table name and remove the WebsitePanel credentials + if ($version < 1.2) + { + full_query('RENAME TABLE `tblwspaddons` TO `mod_wspaddons`'); + full_query("DELETE FROM `tbladdonmodules` WHERE `module` = 'websitepanel_addons' AND `setting` = 'username'"); + full_query("DELETE FROM `tbladdonmodules` WHERE `module` = 'websitepanel_addons' AND `setting` = 'password'"); + } +} + /** * websitepanel_addons_output * @@ -120,24 +138,24 @@ function websitepanel_addons_output($params) // Delete the requested WebsitePanel addon if (isset($_GET['action']) && $_GET['action'] == 'delete') { - delete_query('tblwspaddons', array('whmcs_id' => $_GET['id'])); + delete_query('mod_wspaddons', array('whmcs_id' => $_GET['id'])); } // Add the requested WebsitePanel addon if ($_POST && isset($_POST['action']) && $_POST['action'] == 'add') { // Sanity check to make sure the WHMCS addon ID exists - $results = select_query('tbladdons', 'id', array('id' => $_POST['whmcs_id'])); + $results = select_query('mod_wspaddons', 'id', array('id' => $_POST['whmcs_id'])); if (mysql_num_rows($results) > 0) { - $results = select_query('tblwspaddons', 'whmcs_id', array('whmcs_id' => $_POST['whmcs_id'])); + $results = select_query('mod_wspaddons', 'whmcs_id', array('whmcs_id' => $_POST['whmcs_id'])); if (mysql_num_rows($results) > 0) { echo '

Duplicate WHMCS Addon ID. The WHMCS Addon ID Is Assigned To Another WebsitePanel Addon.

'; } else { - insert_query('tblwspaddons', array('whmcs_id' => $_POST['whmcs_id'], 'wsp_id' => $_POST['wsp_id'], 'is_ipaddress' => $_POST['is_ipaddress'])); + insert_query('mod_wspaddons', array('whmcs_id' => $_POST['whmcs_id'], 'wsp_id' => $_POST['wsp_id'], 'is_ipaddress' => $_POST['is_ipaddress'])); } } else @@ -147,7 +165,7 @@ function websitepanel_addons_output($params) } // Get all the assigned addons and display them to the user - $results = full_query('SELECT a.name AS `name`, a.id AS `whmcs_id`, w.wsp_id AS `wsp_id` FROM `tbladdons` AS a, `tblwspaddons` AS w WHERE w.whmcs_id = a.id'); + $results = full_query('SELECT a.name AS `name`, a.id AS `whmcs_id`, w.wsp_id AS `wsp_id` FROM `tbladdons` AS a, `mod_wspaddons` AS w WHERE w.whmcs_id = a.id'); // Build the table / data grid echo '
'; diff --git a/WebsitePanel.WHMCSModule/modules/addons/websitepanel_sync/websitepanel_sync.php b/WebsitePanel.WHMCSModule/modules/addons/websitepanel_sync/websitepanel_sync.php index 8822fa44..1db0d327 100644 --- a/WebsitePanel.WHMCSModule/modules/addons/websitepanel_sync/websitepanel_sync.php +++ b/WebsitePanel.WHMCSModule/modules/addons/websitepanel_sync/websitepanel_sync.php @@ -46,14 +46,32 @@ function websitepanel_sync_config() { $configarray = array('name' => 'WebsitePanel Sync Automation', 'description' => 'Syncs WHMCS client details / contact changes with WebsitePanel', - 'version' => '1.0', + 'version' => '1.2', 'author' => 'Christopher York', 'fields' => array('serverhost' => array('FriendlyName', 'Enterprise Server Host', 'Type' => 'text', 'Size' => 25, 'Description' => 'Enterprise Server hostname / IP address', 'Default' => '127.0.0.1'), 'serverport' => array('FriendlyName', 'Enterprise Server Port', 'Type' => 'text', 'Size' => 4, 'Description' => 'Enterprise Server port', 'Default' => 9002), 'serversecured' => array('FriendlyName', 'Use Secured Connection', 'Type' => 'yesno', 'Description' => 'Tick to use SSL secured connection'), - 'username' => array('FriendlyName', 'Username', 'Type' => 'text', 'Size' => 25, 'Description' => 'Enterprise Server username', 'Default' => 'serveradmin'), - 'password' => array('FriendlyName', 'Password', 'Type' => 'password', 'Size' => 25, 'Description' => 'Enterprise Server password') ) ); return $configarray; +} + +/** + * websitepanel_addons_upgrade + * + * @param $vars array + * @access public + * @return array + */ +function websitepanel_sync_upgrade($vars) +{ + + $version = $vars['version']; + + // Remove the WebsitePanel credentials + if ($version < 1.2) + { + full_query("DELETE FROM `tbladdonmodules` WHERE `module` = 'websitepanel_sync' AND `setting` = 'username'"); + full_query("DELETE FROM `tbladdonmodules` WHERE `module` = 'websitepanel_sync' AND `setting` = 'password'"); + } } \ No newline at end of file diff --git a/WebsitePanel.WHMCSModule/modules/servers/websitepanel/websitepanel.functions.php b/WebsitePanel.WHMCSModule/modules/servers/websitepanel/websitepanel.functions.php index 6305669a..2c73b195 100644 --- a/WebsitePanel.WHMCSModule/modules/servers/websitepanel/websitepanel.functions.php +++ b/WebsitePanel.WHMCSModule/modules/servers/websitepanel/websitepanel.functions.php @@ -45,8 +45,13 @@ */ function websitepanel_GetErrorMessage($code) { - global $esErrorCodes; + // Error codes + $esErrorCodes = array(); + // Include the common / known error codes + require_once(ROOTDIR . '/modules/servers/websitepanel/websitepanel.errorcodes.php'); + + // Check if the error code exists, if not return the code if (array_key_exists($code, $esErrorCodes)) { return $esErrorCodes[$code]; @@ -167,4 +172,25 @@ function websitepanel_CalculateUsage($result, $usageType) } } return $total; +} + +/** + * websitepanel_GetServerSettings + * + * @access public + * @return array + */ +function websitepanel_GetServerSettings() +{ + $settings = array('username' => '', 'password' => ''); + + // Retrieve the settings from the modules configuration table + $results = select_query('tblservers', 'username,password', array('type' => 'websitepanel')); + if (mysql_num_rows($results) != 0) + { + $row = mysql_fetch_array($results, MYSQL_ASSOC); + $settings['username'] = $row['username']; + $settings['password'] = decrypt($row['password']); + } + return $settings; } \ No newline at end of file