Внешнее управление аккаунтами WHM

WHM имеет механизм внешнего управления аккаунтами, позволяющий получать список, создавать, удалять, блокировать и разблокировать аккаунты.
Внешнее управление аккаунтами доступно в скриптах perl и php. Внешнее управление реализуется через соотвествующие модули perl и php.
Для идентификации доступа к функциям внешнего управления WHM используется ключ удаленного управления (Remote Access Key).

Установка ключа удаленного управления (Remote Access Key)
Remote Access Key используется для скриптов автоматического создания аккаунтов, создания биллинговых систем и других приложений, обращающихся к WebHost Manager для создания, изменения или удаления аккаунтов. Данную технологию можно использовать как в Рerl так и в PHP скриптах.

Для создания Remote Access Key необходимо:

1 Зайти в WHM
2 Выбрать пункт Cluster / Remote Access.
3 Щелкнуть на пункт Setup Remote Access Key.
4 Для создания нового ключа, щелкнуть на Generate New Key. Полученный ключ скопировать и вставить в создаваемый скрипт.

Доступны следующие функции php для внешнего управления WHM:

showversion Возвращает версию WHM на удаленном сервере.
listaccts Возвращает ассоциативный массив активных аккаунтов и пакетов доступных для создания аккаунтов.
createacct создает новый аккаунт.
killacct удаляет аккаунт.
suspend блокирует аккаунт.
unsuspend разблокирует аккаунт.

Пример PHP:
Пример выводит список имеющихся аккаунтов и пакетов.

#!/usr/local/cpanel/3rdparty/bin/php
<?php
require '/usr/local/cpanel/Cpanel/Accounting.php.inc';
$host = "localhost";
$user = "";
$accesshash = '';
$accts = listaccts($host,$user,$accesshash,0);
print_r($accts);
$pkgs = listpkgs($host,$user,$accesshash,0);
print_r($pkgs);
?>


Доступны следующие функции php для внешнего управления WHM:

new создает новый объект  Cpanel::Accounting.
showversion возвращает версию WHM.
listaccts возвращает ассоциативный массив аккаунтов.
listpkgs возвращает ассоциативный массив пакетов.
addpkg добавляет новый пакет.
editpkg позволяет отредактировать пакет.
createacct создает новый аккаунт.
killacct удаляет аккаунт.
suspend блокирует аккаунт.
unsuspend разблокирует аккаунт.

Пример Perl:
Пример демонстрирует работу с аккаунтами в Perl.

#!/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 @ACCTCTn”;
}
$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 @PKCTSn”;
}
$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”;