Author Topic: [module] WHMCS (Fix)  (Read 39223 times)

0 Members and 1 Guest are viewing this topic.

Offline
*
[module] WHMCS (Fix)
« on: March 13, 2019, 04:17:46 AM »
ihoscwp7
WHMCS Module (Fix) for Centos-WebPanel (CWP) by IHOS

Attention ! The module was created fixed for my private use, in case of error I will be happy to fix it as far as possible!

Credits

Based on Module http://wiki.centos-webpanel.com/whmcs-module-for-cwp-api

Tested on version
WHMCS: 7.7.1
CWPpro version: 0.9.8.779

Screenshot


Features:
Add Account - Working
Edit Account - Working
Suspend Account - Working
Unsuspend Account - Working
Delete Account - Working
Change Password - Working
Edit Packages - Working

Future Implementations:
#Admin Dashboard Widgets
Provide necessary and important information in your interface in the administrator's home page panel.

#Loader Functions
An example use case for this is for a Package or Plan name field, where the values need to be fetched via an API from the remote system where the Packages or Plans are defined. Without a loader function, the end user would have to manually enter the package or plan name for the product. With a loader being used, WHMCS will poll the remote API service for a list of possible values when the field is rendered to the end user and allow them to make a choice.

#Client Area Output
Product Details Page Output
Creating output to display on the same page as the product details in the client area is easy.

#Admin Services Tab
Admin Services Tab functions allow definition of extra fields to appear on the product details in the admin area. Used for informational output, or for settings and values stored in custom tables or outside WHMCS.

Installation:

[1]. Extract file ihoscwp7.zip in your WHMCS folder

WHMCS/modules/servers/

As extracted module file path will look like this WHMCS/modules/servers/ihoscwp7/ihoscwp7.php

[2]. In WHMCS

In Menu goto: Setup -> Products/Services -> Servers
Add New Server and under "Server Details"
Type = IHOS CWP7
Username: root
Password: (your server password)
Access Hash: copy your key from CWP API

[3]. Generate API Key on the CWP server

Goto Left-Menu -> CWP Settings -> API Manager

Use the following permissions:
-Add, Edit, Suspend, Unsuspend and Delete Accounts
-Edit Packages
-Change Password

Updates
Changelog

[INFO] Date: 13/03/2019
[INFO] Version Release: 1.0.0
  • Fix/Revised methods CreateAccount, SuspendAccount, UnsuspendAccount, TerminateAccount, ChangePassword, ChangePackage
  • Added detailed success and error logs in all methods
  • Added verification on file for not directly accessing
  • Added exception handling
More Info and Download: https://bitbucket.org/vinicius_ihos/ihoscwp7

! IMPORTANT
If there is any problem or you have suggestion to add or request please reply here on the forum.
Please don't send me PM's.
Any code fixes, improvements, etc. Bitbucket can be used.
« Last Edit: March 13, 2019, 04:39:42 AM by IHOS »

Offline
*
Re: [module] WHMCS (Fix)
« Reply #1 on: March 16, 2019, 03:57:29 AM »
Update! - New version available | 1.0.1

 * Date: 16/03/2019
 * Version Release: 1.0.1
 * + Added function ihoscwp7_LoaderFunction

List of Packages are now automatically loaded

ScreenShot




Offline
***
Re: [module] WHMCS (Fix)
« Reply #2 on: March 18, 2019, 01:25:15 PM »
Fantastic, I will check the module now.

Also, don't forget to submit your module to https://marketplace.whmcs.com/

Offline
***
Re: [module] WHMCS (Fix)
« Reply #3 on: March 20, 2019, 03:50:34 PM »
I have started testing your module and I am reporting first bug.

When I click on "Admin Control Panel" button, it takes me to CWP Admin login page but it does not automatically get me in.

Kindly fix it.



Offline
*****
Re: [module] WHMCS (Fix)
« Reply #4 on: March 21, 2019, 02:05:05 AM »
For now the auto login is not available for any of the environments!

Offline
***
Re: [module] WHMCS (Fix)
« Reply #5 on: March 23, 2019, 06:40:10 AM »
For now the auto login is not available for any of the environments!

OK. Have not you any API command/access for the same?

Offline
*
Re: [module] WHMCS (Fix)
« Reply #6 on: June 11, 2019, 12:54:08 PM »
i'm using CWP with WHMCS 7.7.1 however Termination not working?
any advise?

Offline
***
Re: [module] WHMCS (Fix)
« Reply #7 on: September 22, 2019, 12:27:58 PM »
For now the auto login is not available for any of the environments!

OK. Have not you any API command/access for the same?

you can download with AUTOLOGIN here: https://gitlab.com/whmcs-proyects/servers/centos-webpanel

Spammer.  Page has link for paid support

Offline
*
Re: [module] WHMCS (Fix)
« Reply #8 on: November 06, 2019, 07:10:55 AM »
I really like your idea of fetching the packages from the server into WHMCS but I was missing the autologin from the other package so I combined yours and the other one to get both worlds. If anyone is interested I can share it.

Update! - New version available | 1.0.1

 * Date: 16/03/2019
 * Version Release: 1.0.1
 * + Added function ihoscwp7_LoaderFunction

List of Packages are now automatically loaded

ScreenShot



Offline
***
Re: [module] WHMCS (Fix)
« Reply #9 on: November 07, 2019, 11:02:03 AM »
I really like your idea of fetching the packages from the server into WHMCS but I was missing the autologin from the other package so I combined yours and the other one to get both worlds. If anyone is interested I can share it.

Update! - New version available | 1.0.1

 * Date: 16/03/2019
 * Version Release: 1.0.1
 * + Added function ihoscwp7_LoaderFunction

List of Packages are now automatically loaded

ScreenShot



Yes. Please share the files.

Offline
*
Re: [module] WHMCS (Fix)
« Reply #10 on: May 22, 2020, 08:26:06 AM »
HI IHOS

i have added some code from github for auto login from client area for user panel

pls check this out
Code: [Select]
<?php
/**
 * Created by IntelliJ IDEA.
 * User: Vinicius Assis
 * E-mail: viniciusassisnascimento@gmail.com
 * Company: IHOS T.I.
 * Date: 10/03/2019
 * Time: 23:41
 *
 * Changelog
 * #############################
 * Date: 16/03/2019
 * Version Release: 1.0.1
 * + Added function ihoscwp7_LoaderFunction
 * #############################
 * Date: 13/03/2019
 * Version Release: 1.0.0
 * # Fix/Revised methods CreateAccount, SuspendAccount, UnsuspendAccount, TerminateAccount, ChangePassword, ChangePackage
 * + Added detailed success and error logs in all methods
 * + Added Verification on file for not directly accessing
 * + Added exception handling
 * #############################
 */

if (!defined("WHMCS")) {
    die(
"This file cannot be accessed directly");
}

/**
 * @return array
 */
function ihoscwp7_MetaData()
{
    return array(
        
'DisplayName' => 'IHOS CWP7',
        
'APIVersion' => '1.1'// Use API Version 1.1
        
'RequiresServer' => true,
        
'DefaultSSLPort' => '2304'// Default SSL Connection Port
        
'ServiceSingleSignOnLabel' => 'Login to Panel as User',
        
'AdminSingleSignOnLabel' => 'Login to Panel as Admin',
    );
}

/**
 * @return array
 */
function ihoscwp7_ConfigOptions()
{
    return array(
        
'PACKAGE-NUMBER' => array(
            
'Type' => 'text',
            
'Loader' => 'ihoscwp7_LoaderFunction',
            
'SimpleMode' => true,
            
'Description' => 'Package ID'
        
),
        
'Inode' => array(
            
'Type' => 'text',
            
'Default' => '0',
            
'SimpleMode' => true,
            
'Description' => 'Limit Inodes, 0 for unlimited'
        
),
        
'Nofile' => array(
            
'Type' => 'text',
            
'Default' => '100',
            
'SimpleMode' => true,
            
'Description' => 'Limit number of Open Files for account'
        
),
        
'Nproc' => array(
            
'Type' => 'text',
            
'Default' => '40',
            
'SimpleMode' => true,
            
'Description' => 'Limit number of Processes for account, don\'t use 0 as it will not allow any processes'
        
)
    );
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_CreateAccount(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'package' => $params['configoption1'],
                
'domain' => $params['domain'],
                
'key' => $params['serveraccesshash'],
                
'action' => 'add',
                
'username' => $params['username'],
                
'user' => $params['username'],
                
'pass' => $params['password'],
                
'email' => $params['clientsdetails']['email'],
                
'inode' => $params['configoption2'],
                
'nofile' => $params['configoption3'],
                
'nproc' => $params['configoption4'],
                
'server_ips' => $params['serverip']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account');
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_SuspendAccount(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'susp',
                
'user' => $params['username']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account');
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_UnsuspendAccount(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'unsp',
                
'user' => $params['username']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account');
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_TerminateAccount(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'del',
                
'user' => $params['username'],
                
'email' => $params['clientsdetails']['email']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL$url);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_ChangePassword(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'udp',
                
'user' => $params['username'],
                
'pass' => $params['password']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/changepass';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL$url);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_ChangePackage(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'udp',
                
'user' => $params['username'],
                
'package' => $params['configoption1']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/changepack';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL$url);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return string
 */
function ihoscwp7_ClientArea(array $params)
{
      
$postvars = array('key' => $params["serveraccesshash"],'action' => 'list','user' => $params["username"],'timer'=>5);
    
$postdata http_build_query($postvars);
    
$curl curl_init();
    
curl_setopt($curlCURLOPT_URL'https://' $params["serverhostname"] . ':2304/v1/user_session');
    
curl_setopt($curlCURLOPT_RETURNTRANSFER,true);
    
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
    
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
    
curl_setopt($curlCURLOPT_POSTtrue);
    
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
    
$answer curl_exec($curl);
    
$arry=(json_decode($answer,true)); //die;
    
$link=$arry['msj']['details'];
    
$linkautologin="https://{$params["serverhostname"]}:2083/{$link[0]['user']}/?user_session={$link[0]['token']}";
    
//logModuleCall('cwpwhmcs','centoswebpanel_LoginLink','https://' . $params["serverhostname"] . ':2304/v1/user_session'.$postdata,$answer);


    
$code '<form action="'.$linkautologin.'" method="GET" target="_blank">
        <input type="submit" value="Login to Control Panel" />
        <input type="hidden" id="user_session" name="user_session" value="'
.$link[0]['token'].'" />
        <input type="button" value="Login to Webmail" onClick="window.open(\'https://'
.$params["serverhostname"].'/webmail\')" />
        </form>'
;
    return 
$code;
}

/**
 * @param $params
 * @return string
 */
function ihoscwp7_AdminLink($params)
{
    
$code '<input type="button" value="Admin Control Panel" onClick="window.open(\'https://' $params['serverhostname'] . ':2031/login/index.php\')" />';

    return 
$code;
}

/**
 * @param $params
 */
function ihoscwp7_LoginLink($params)
{
   
$postvars = array('key' => $params["serveraccesshash"],'action' => 'list','user' => $params["username"],'timer'=>5);
    
$postdata http_build_query($postvars);
    
$curl curl_init();
    
curl_setopt($curlCURLOPT_URL'https://' $params["serverhostname"] . ':2304/v1/user_session');
    
curl_setopt($curlCURLOPT_RETURNTRANSFER,true);
    
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
    
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
    
curl_setopt($curlCURLOPT_POSTtrue);
    
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
    
$answer curl_exec($curl);
    
$arry=(json_decode($answer,true)); //die;
    
$link=$arry['msj']['details'];
    
$linkautologin="https://{$params["serverhostname"]}:2083/{$link[0]['user']}/?user_session={$link[0]['token']}";
    
logModuleCall('cwpwhmcs','centoswebpanel_LoginLink','https://' $params["serverhostname"] . ':2304/v1/user_session'.$postdata,$answer);

    echo 
"<a href=\"{$linkautologin}\" target=\"_blank\" style=\"color:#cc0000\">Control Panel</a>";
}

function 
ihoscwp7_LoaderFunction($params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'list'
            
);

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/packages';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL$url);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

        }

        if (
curl_error($curl)) {
            throw new 
Exception('Unable to connect: ' curl_errno($curl) . ' - ' curl_error($curl));
        } elseif (empty(
$response)) {
            throw new 
Exception('Empty response');
        }

        
curl_close($curl);

        
$packages json_decode($responsetrue);

        
$packageNames = [];
        foreach (
$packages['msj'] as $key => $package) {
            
$packageNames[$package['id']] = ucfirst($package['package_name']);
        }

        if (
is_null($packageNames)) {
            throw new 
Exception('Invalid response format');
        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$packageNames;
}
« Last Edit: May 22, 2020, 08:54:21 AM by prakash7610 »

Offline
*
Re: [module] WHMCS (Fix)
« Reply #11 on: June 28, 2020, 05:21:08 AM »
HI IHOS

i have added some code from github for auto login from client area for user panel

pls check this out
Code: [Select]
<?php
/**
 * Created by IntelliJ IDEA.
 * User: Vinicius Assis
 * E-mail: viniciusassisnascimento@gmail.com
 * Company: IHOS T.I.
 * Date: 10/03/2019
 * Time: 23:41
 *
 * Changelog
 * #############################
 * Date: 16/03/2019
 * Version Release: 1.0.1
 * + Added function ihoscwp7_LoaderFunction
 * #############################
 * Date: 13/03/2019
 * Version Release: 1.0.0
 * # Fix/Revised methods CreateAccount, SuspendAccount, UnsuspendAccount, TerminateAccount, ChangePassword, ChangePackage
 * + Added detailed success and error logs in all methods
 * + Added Verification on file for not directly accessing
 * + Added exception handling
 * #############################
 */

if (!defined("WHMCS")) {
    die(
"This file cannot be accessed directly");
}

/**
 * @return array
 */
function ihoscwp7_MetaData()
{
    return array(
        
'DisplayName' => 'IHOS CWP7',
        
'APIVersion' => '1.1'// Use API Version 1.1
        
'RequiresServer' => true,
        
'DefaultSSLPort' => '2304'// Default SSL Connection Port
        
'ServiceSingleSignOnLabel' => 'Login to Panel as User',
        
'AdminSingleSignOnLabel' => 'Login to Panel as Admin',
    );
}

/**
 * @return array
 */
function ihoscwp7_ConfigOptions()
{
    return array(
        
'PACKAGE-NUMBER' => array(
            
'Type' => 'text',
            
'Loader' => 'ihoscwp7_LoaderFunction',
            
'SimpleMode' => true,
            
'Description' => 'Package ID'
        
),
        
'Inode' => array(
            
'Type' => 'text',
            
'Default' => '0',
            
'SimpleMode' => true,
            
'Description' => 'Limit Inodes, 0 for unlimited'
        
),
        
'Nofile' => array(
            
'Type' => 'text',
            
'Default' => '100',
            
'SimpleMode' => true,
            
'Description' => 'Limit number of Open Files for account'
        
),
        
'Nproc' => array(
            
'Type' => 'text',
            
'Default' => '40',
            
'SimpleMode' => true,
            
'Description' => 'Limit number of Processes for account, don\'t use 0 as it will not allow any processes'
        
)
    );
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_CreateAccount(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'package' => $params['configoption1'],
                
'domain' => $params['domain'],
                
'key' => $params['serveraccesshash'],
                
'action' => 'add',
                
'username' => $params['username'],
                
'user' => $params['username'],
                
'pass' => $params['password'],
                
'email' => $params['clientsdetails']['email'],
                
'inode' => $params['configoption2'],
                
'nofile' => $params['configoption3'],
                
'nproc' => $params['configoption4'],
                
'server_ips' => $params['serverip']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account');
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_SuspendAccount(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'susp',
                
'user' => $params['username']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account');
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_UnsuspendAccount(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'unsp',
                
'user' => $params['username']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account');
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_TerminateAccount(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'del',
                
'user' => $params['username'],
                
'email' => $params['clientsdetails']['email']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/account';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL$url);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_ChangePassword(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'udp',
                
'user' => $params['username'],
                
'pass' => $params['password']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/changepass';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL$url);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return mixed|string
 */
function ihoscwp7_ChangePackage(array $params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'udp',
                
'user' => $params['username'],
                
'package' => $params['configoption1']
            );

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/changepack';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL$url);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

            
$response json_decode($responsetrue);
            if (
$response['status'] == 'OK') {
                
$result 'success';
            } else {
                
$result $response;
            }

        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$result;
}

/**
 * @param array $params
 * @return string
 */
function ihoscwp7_ClientArea(array $params)
{
      
$postvars = array('key' => $params["serveraccesshash"],'action' => 'list','user' => $params["username"],'timer'=>5);
    
$postdata http_build_query($postvars);
    
$curl curl_init();
    
curl_setopt($curlCURLOPT_URL'https://' $params["serverhostname"] . ':2304/v1/user_session');
    
curl_setopt($curlCURLOPT_RETURNTRANSFER,true);
    
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
    
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
    
curl_setopt($curlCURLOPT_POSTtrue);
    
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
    
$answer curl_exec($curl);
    
$arry=(json_decode($answer,true)); //die;
    
$link=$arry['msj']['details'];
    
$linkautologin="https://{$params["serverhostname"]}:2083/{$link[0]['user']}/?user_session={$link[0]['token']}";
    
//logModuleCall('cwpwhmcs','centoswebpanel_LoginLink','https://' . $params["serverhostname"] . ':2304/v1/user_session'.$postdata,$answer);


    
$code '<form action="'.$linkautologin.'" method="GET" target="_blank">
        <input type="submit" value="Login to Control Panel" />
        <input type="hidden" id="user_session" name="user_session" value="'
.$link[0]['token'].'" />
        <input type="button" value="Login to Webmail" onClick="window.open(\'https://'
.$params["serverhostname"].'/webmail\')" />
        </form>'
;
    return 
$code;
}

/**
 * @param $params
 * @return string
 */
function ihoscwp7_AdminLink($params)
{
    
$code '<input type="button" value="Admin Control Panel" onClick="window.open(\'https://' $params['serverhostname'] . ':2031/login/index.php\')" />';

    return 
$code;
}

/**
 * @param $params
 */
function ihoscwp7_LoginLink($params)
{
   
$postvars = array('key' => $params["serveraccesshash"],'action' => 'list','user' => $params["username"],'timer'=>5);
    
$postdata http_build_query($postvars);
    
$curl curl_init();
    
curl_setopt($curlCURLOPT_URL'https://' $params["serverhostname"] . ':2304/v1/user_session');
    
curl_setopt($curlCURLOPT_RETURNTRANSFER,true);
    
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
    
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
    
curl_setopt($curlCURLOPT_POSTtrue);
    
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
    
$answer curl_exec($curl);
    
$arry=(json_decode($answer,true)); //die;
    
$link=$arry['msj']['details'];
    
$linkautologin="https://{$params["serverhostname"]}:2083/{$link[0]['user']}/?user_session={$link[0]['token']}";
    
logModuleCall('cwpwhmcs','centoswebpanel_LoginLink','https://' $params["serverhostname"] . ':2304/v1/user_session'.$postdata,$answer);

    echo 
"<a href=\"{$linkautologin}\" target=\"_blank\" style=\"color:#cc0000\">Control Panel</a>";
}

function 
ihoscwp7_LoaderFunction($params)
{
    try {

        if (
$params['server'] == 1) {

            
$postvars = array(
                
'key' => $params['serveraccesshash'],
                
'action' => 'list'
            
);

            
$postdata http_build_query($postvars);

            
$url 'https://' $params['serverhostname'] . ':' $params['serverport'] . '/v1/packages';

            
$curl curl_init();
            
curl_setopt($curlCURLOPT_URL$url);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
            
curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
            
curl_setopt($curlCURLOPT_CUSTOMREQUEST'POST');
            
curl_setopt($curlCURLOPT_POSTtrue);
            
curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
            
$response curl_exec($curl);

            
logModuleCall(
                
'ihoscwp7',
                
__FUNCTION__,
                
$url '/?' $postdata,
                
$response
            
);

        }

        if (
curl_error($curl)) {
            throw new 
Exception('Unable to connect: ' curl_errno($curl) . ' - ' curl_error($curl));
        } elseif (empty(
$response)) {
            throw new 
Exception('Empty response');
        }

        
curl_close($curl);

        
$packages json_decode($responsetrue);

        
$packageNames = [];
        foreach (
$packages['msj'] as $key => $package) {
            
$packageNames[$package['id']] = ucfirst($package['package_name']);
        }

        if (
is_null($packageNames)) {
            throw new 
Exception('Invalid response format');
        }

    } catch (
Exception $e) {
        
logModuleCall(
            
'ihoscwp7',
            
__FUNCTION__,
            
$params,
            
$e->getMessage(),
            
$e->getTraceAsString()
        );

        return 
$e->getMessage();
    }

    return 
$packageNames;
}
Can you add this information to the User on CWP7?
Processor limits and file opening on missing CWP7 modules with WHMCS 7.10.2

Re: [module] WHMCS (Fix)
« Reply #12 on: September 13, 2020, 01:02:56 PM »
Hi

You can change this two line

From
Code: [Select]
                'nofile' => $params['configoption3'],
                'nproc' => $params['configoption4'],

to
Code: [Select]
                'limit_nofile' => $params['configoption3'],
                'limit_nproc' => $params['configoption4'],

CWP have new name of nofile och nproc.

Same change can be done in CWP7.php. (https://wiki.centos-webpanel.com/whmcs-module-for-cwp-api).