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 variable 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 available 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} = “”;

$whm->{accesshash} = '';

$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(“”);

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(“”,"“,"”,"”);

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('');

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('');

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

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

        exit

}

print $response . “\n”;