Using the Cpanel::Accounting perl module.


The Cpanel::Accounting perl module is designed to give programs that need access to create/remove/modify accounts an easy way to implement this in their perl program.


For security reasons if you are connecting to a remote server you should set the usessl varible to 1.

You must have the Net::SSLeay perl module installed for this to work.


Cpanel::Accounting supports the following methods

new

Create a new Cpanel::Accounting Object


showversion

Shows what version of WHM the remote server is running.


listaccts

Lists currently active accounts.


listpkgs

Lists packages avalible for creation.


addpkg

Add a Package.


editpkg

Edit a package.


createacct

Creates a new account on the server.


killacct

Terminates an account on the server.


suspend

Suspends an account on the server.


unsuspend

Unsuspends an account on the server.


Below is a sample perl program.

#!/usr/bin/perl

BEGIN {

        push (@INC,"/usr/local/cpanel);

}

use Cpanel::Accounting;


my($whm) = Cpanel::Accounting->new;

$whm->{host} = localhost;

$whm->{user} = <USERNAME HERE>;

$whm->{accesshash} = '<REMOTE ACCESS KEY HERE>';

$whm->{usessl} = 1;


my %ACCTS = $whm->listaccts();    

if ($whm->{error} ne “”) {

        print There was an error while processing your request: Cpanel::Accounting returned [$whm->{error}]\n;

        exit;

}


#$name,$hasshell,$bwlimit,$quota,$ip,$cgi,$frontpage,$cpmod,$maxftp,$maxsql,$maxpop,$maxlst,$maxsub,$maxpark,$maxaddon

$response = $whm->editpkg("testpkg2",0,50000,5000,0,1,1,"bluelagoon",10,10,10,10,10,10,10);    

if ($whm->{error} ne “”) {

        print There was an error while processing your request: Cpanel::Accounting returned [$whm->{error}]\n;

        exit;

}


foreach $acct (sort keys %ACCTS) {

        @ACCTCT = @{$ACCTS{$acct}};

        print $acct @ACCTCT\n;

}


$response = $whm->killacct(<USERNAME TO TERMINATE>);

if ($whm->{error} ne “”) {

        print There was an error while processing your request: Cpanel::Accounting returned [$whm->{error}]\n;

        exit;

}

print $response;

       



my %PKGS = $whm->listpkgs();

if ($whm->{error} ne “”) {

        print There was an error while processing your request: Cpanel::Accounting returned [$whm->{error}]\n;

        exit;

}

foreach $package (sort keys %PKGS) {

        @PKCTS = @{$PKGS{$package}};

        print $package @PKCTS\n;

}


$response = $whm->createacct(<DOMAIN NAME HERE>,"<USERNAME HERE>,"<PASSWORD HERE>,"<PACKAGE HERE>);

if ($whm->{error} ne “”) {

        print There was an error while processing your request: Cpanel::Accounting returned [$whm->{error}]\n;

        exit;

}      

print $response;


$response = $whm->suspend('<USERNAME HERE>');

if ($whm->{error} ne “”) {

        print There was an error while processing your request: Cpanel::Accounting returned [$whm->{error}]\n;

        exit;

}      

print $response . \n;


$response = $whm->unsuspend('<USERNAME HERE>');

if ($whm->{error} ne “”) {

        print There was an error while processing your request: Cpanel::Accounting returned [$whm->{error}]\n;

        exit

}

print $response . \n;