« Back to WebHost Manager KB

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.

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;
}

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";
« Back to WebHost Manager KB