![]() |
|
|
The CommuniGate Pro CLI API can be used to automate the Server management and to integrate the CommuniGate Pro and other services.
The following document, scripts and samples should help you to integrate CommuniGate Pro with programs and CGI scripts written in the Perl language.
The CLI.pm Perl module is the main component for CommuniGate Pro scripting. It contains the package CGP::CLI and includes the routines to connect to the CommuniGate Pro server over the network, to send CommuniGate Pro CLI commands and to convert command parameters from the Perl internal format into the CommuniGate Pro CLI format, and to convert command results back into the Perl internal format.
You should use the new CGP::CLI command to establish an authenticated connection with the CommuniGate Pro server and to create an interface object. Then you send commands to the server by calling various interface object methods.
Installation: Simply copy the CLI.pm file into one of the @INC directories. The list of @INC directories is displayed by perl -V command.
Note: The CGP::CLI class uses IO::Socket::INET class. Depending on your Perl setup, you may need to modify your CLI.pm file and change the use IO::Socket; line into use IO::Socket::INET;.
Note: The CLI.pm uses Digest::MD5 module. If you don't have MD5 module installed, you'll have to download and install it.
You can use the following sample scripts that employ the CGP::CLI package:
|
Returns:
a reference to a new class or undefined.
Example:
my $cli = new CGP::CLI( { PeerAddr => 'company.com',
PeerPort => 106,
login => 'postmaster@company.com',
password => 'pass',
SecureLogin => 0
} )
|| die "Can't login to CGPro: ".$CGP::ERR_STRING."\n";
Example:
$CGP::SECURE_LOGIN=0; $CGP::WEBUSER_LOGIN=1;
Example:
$cli->Logout();
Returns:
the result code of the last CommuniGate Pro CLI operation. OK code is 200.
Example:
if($cli->getErrCode!=200) { print "Something's wrong..."; }
Returns:
result message string from the last command.
Example:
print "The last result message is ".$cli->getErrMessage."\n";
Returns:
TRUE if the result code is 200, FALSE otherwise.
Returns:
the full text of the last command sent to CGPro via CGP::CLI.
Parameters:
Returns:
TRUE or FALSE.
Example:
$cli->SendCommand('CreateAccount john@domain.com {RealName="John X Smith";}')
|| die "Error: ".$cli->getErrMessage.", quitting";
Returns:
The reference to the output data.
Example:
$cli->SendCommand("ListAccounts")
|| die "Error: ".$cli->getErrMessage.", quitting";
$AccountList=$cli->GetResponseData();
foreach(keys %$AccountList) { print "$_\n"; }
my $data=$cli->ListDomainObjects('company.com',1000,undef,'ACCOUNTS ALIASES FORWARDERS','')
|| die "ListDomainObjects failed: ".$cli->getErrMessage.", quitting";
print "Accoints: $data->[0]\n";
print "Aliases: $data->[2]\n";
print "Forwarders: $data->[3]\n";
print "Objects are:\n";
foreach(keys %{$objects=$data->[1]} ) {
print " $_\n";
}
$AccountList = $cli->ListAccounts('company.com')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach(keys %$AccountList) { print "$_\n"; }
my $UserData = {
AccessModes => [ qw(Mail POP IMAP PWD WebMail WebSite) ],
RealName => 'John X. Smith',
MaxAccountSize => '100K',
};
$cli->CreateAccount(accountName => 'john',settings => $UserData, )
|| die "Error: ".$cli->getErrMessage.", quitting";
$Domain = 'company.com';
$cli->RenameAccount("johnsmith\@$Domain","js\@$Domain")
|| die "Can't rename: ".$cli->getErrMessage.", quitting";
$cli->DeleteAccount("js")
|| die "Can't delete: ".$cli->getErrMessage.", quitting";
if($Settings=$cli->GetAccountSettings('user')) {
print "The settings are:\n";
foreach (keys %$Settings) {
print " $_ = \"@$Settings{$_}\"\n";
}
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->UpdateAccountSettings('john',{Password => 'pass',MaxAccountSize => 'Default'})
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->SetAccountPassword('john','newPass')
|| die "Error: ".$cli->getErrMessage.", quitting";
print($cli->VerifyAccountPassword('john','newPass') ? "correct\n" : "wrong\n");
if($Aliases=$cli->GetAccountAliases('user')) {
print " $_\n" foreach (@$Aliases);
} else {
($cli->isSuccess) ? print "No aliases\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->SetAccountAliases('john',['js','jsmith','john_smith'])
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Aliases=$cli->GetAccountTelnums('user')) {
print " $_\n" foreach (@$Aliases);
} else {
($cli->isSuccess) ? print "No telnums\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->SetAccountTelnums('john',['11110000','11110011'])
|| die "Error: ".$cli->getErrMessage.", quitting";
my $Rules=$cli->GetAccountMailRules('john')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach my $Rule (@$Rules) {
my $conditions=$Rule->[2],$actions=$Rule->[3];
print "\nName='$Rule->[1]' Priority=$Rule->[0]\n";
print " If\n ";
foreach my $cond (@$conditions) {
print " $_ " foreach (@$cond);
print "\n ";
}
print "Then\n ";
foreach my $actn (@$actions) {
print " $_ " foreach (@$actn);
print "\n ";
}
}
my @Rules =(
[ 5, '#Vacation',
[['Human Generated', '---']],
[['Reply with', "Sorry, I'm on vacation"]]
],
[ 5,'Mark Important Messages',
[ ['Subject', 'is', '*important*'] ],
[ ['Mark', 'Flagged'],
['FingerNotify', '123.45.67.89'],
['Forward to', 'my@home.address']
]
]
);
$cli->SetAccountMailRules('jonh',\@Rules)
|| die "Error: ".$cli->getErrMessage.", quitting";
my $records=$cli->GetAccountRPOPs('john')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach(keys %$records) {
print "Record: $_\n";
my $rec=@$records{$_};
foreach(keys %$rec) {
print " $_=@$rec{$_}\n";
}
}
my $records=$cli->GetAccountRPOPs('john')
|| die "Error: ".$cli->getErrMessage.", quitting";
my $newRecord={authName=>'john',domain=>'host.com',password=>'passw', APOP=>'YES',period=>'1200s'};
@$records{'polling host.com'}=$newRecord;
$cli->SetAccountRPOPs('john',$records)
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Rights=$cli->GetAccountRights('john')) {
print "$_ " foreach (@$Rights); print "\n";
} else {
($cli->isSuccess) ? print "No rights\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->SetAccountRights('john',['UserAccounts', 'ServerSettings', 'Monitor'])
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Data=$cli->GetAccountInfo('john')) {
print "The data are:\n";
foreach (keys %$Data) {
print " $_ = \"@$Data{$_}\"\n";
}
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
if($Data=$cli->GetAccountInfo('john','LastLogin')) {
print "John\'s last login was on $Data\n";
} else {
($cli->isSuccess) ? print "No such info\n"
: die "Error: ".$cli->getErrMessage.", quitting";
if($Settings=$cli->GetAccountPrefs('john')) {
print "The settings are:\n";
foreach (keys %$Settings) {
print " $_ = \"@$Settings{$_}\"\n";
}
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
$Account='John';
my %Settings=(
Frames => 'YES',
DraftsBox => 'DRAFTS',
SentBox => 'OUTBOX',
Signature => 'Sincerely yours,\e '.$Account
);
$cli->UpdateAccountPrefs($Account,\%Settings) ||
die "Error: ".$cli->getErrMessage.", quitting";
if($path=$cli->GetAccountLocation('user')) {
print "The account directory is $path\n";
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
my $GroupsList = $cli->ListGroups('company.com')
|| die "Can't get the groups list: ".$cli->getErrMessage.", quitting";
print "The group(s):\n";
print " $_\n" foreach(@$GroupsList);
my %Settings=(
RealName => "Sales staff",
Members => ['john', 'susan', 'sales_box#mary', 'bill@partner.dom'],
FinalDelivery => 'YES',
RemoveToAndCc => 'YES',
SetReplyTo => 'YES',
);
$cli->CreateGroup('sales',\%Settings) ||
die "Error: ".$cli->getErrMessage.", quitting";
$cli->RenameGroup('sales','support')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->DeleteGroup('support')
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Settings=$cli->GetGroup('sales')) {
print "The settings are:\n";
foreach (keys %$Settings) {
my $data=@$Settings{$_};
print " $_ = ";
if(ref ($data) eq 'ARRAY') {
foreach my $member (@$data) {
print "\'$member\' ";
}
print "\n";
} else {
print "\"$data\"\n";
}
}
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
$Settings=$cli->GetGroup('sales')
|| die "Error: ".$cli->getErrMessage.", quitting";
@$Settings{'Members'}=[] unless(@$Settings{'Members'});
my $Members=@$Settings{'Members'};
push(@$Members,'sales_box#mary@company.com');
$cli->SetGroup('sales',$Settings) ||
die "Error: ".$cli->getErrMessage.", quitting";
my $ForwardersList = $cli->ListForwarders('company.com')
|| die "Can't get the forwarders list: ".$cli->getErrMessage.", quitting";
print "The forwarder(s):\n";
print " $_\n" foreach(@$ForwardersList);
$cli->CreateForwarder('john','john@external.site.com')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->DeleteForwarder('john')
|| die "Error: ".$cli->getErrMessage.", quitting";
if($data=$cli->GetForwarder('john')) {
print "Address is \"$data\"\n";
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
my $DomainList = $cli->ListDomains()
|| die "Can't get the domain list: ".$cli->getErrMessage.", quitting";
print "The domain(s):\n";
print " $_\n" foreach(@$DomainList);
my $MainDomainName=$cli->MainDomainName()
|| die "Error: ".$cli->getErrMessage.", quitting";
print "The main domain name is $MainDomainName\n";
if($Settings=$cli->GetDomainSettings) {
print "The domain settings are:\n";
print " $_ = \"@$Settings{$_}\"\n" foreach (keys %$Settings);
} else {
die "Error: ".$cli->getErrMessage.", quitting" if(!$cli->isSuccess);
}
$cli->UpdateDomainSettings(domain => 'www.company.com',
settings => { WebUserCache => "NO" })
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->CreateDomain('mail.company.com',{AutoSignup => 'YES'})
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->RenameDomain('old.company.com','new.company.com')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->DeleteDomain('test.company.com',1)
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Aliases=$cli->GetDomainAliases('company.com')) {
print "The aliases are:\n";
print " $_\n" foreach (@$Aliases);
} else {
($cli->isSuccess) ? print "No aliases\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
my @Aliases=(
'mail.company.com',
'smtp.company.com'
);
$cli->SetDomainAliases('company.com',\@Aliases)
|| die "Error: ".$cli->getErrMessage.", quitting";
my $DomainList = $cli->ListAdminDomains('company.com')
|| die "Can't get the list of admin domains: ".$cli->getErrMessage.", quitting";
print "The admin domain(s):\n";
print " $_\n" foreach(@$DomainList);
if($Settings=$cli->GetDirectoryIntegration) {
print "The directory integration settings are:\n";
foreach (keys %$Settings) {
my $data=@$Settings{$_};
print " $_ = ";
if(ref ($data) eq 'ARRAY') {
print join(",",@$data)."\n";
}elsif(ref($data) eq 'HASH') {
print "{";
print "$_=@$data{$_};" foreach (keys %$data);
print "}\n";
} else {
print "\"$data\"\n";
}
}
} else {
die "Error: ".$cli->getErrMessage.", quitting" if(!$cli->isSuccess);
}
$Settings=$cli->GetDirectoryIntegration()
|| die "Error: ".$cli->getErrMessage.", quitting";
my $Attributes=@$Settings{'CustomAttributes'};
push(@$Attributes,"MyAttr");
$cli->SetDirectoryIntegration($Settings)
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Defaults=$cli->GetDomainDefaults()) {
print "The default domain settings are:\n";
print " $_ = \"@$Defaults{$_}\"\n" foreach (keys %$Defaults);
} else {
($cli->isSuccess) ? print "No default domain settings.\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->UpdateDomainDefaults({MailToUnknown => "Rejected"})
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Defaults=$cli->GetServerAccountDefaults()) {
print "The default settings are:\n";
print " $_ = \"@$Defaults{$_}\"\n" foreach (keys %$Defaults);
} else {
($cli->isSuccess) ? print "No default settings.\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->UpdateServerAccountDefaults({AccessModes => "All"})
|| die "Error: ".$cli->getErrMessage.", quitting";
if($path=$cli->GetDomainLocation('company.com')) {
print "The domain directory is /var/CommuniGate/$path\n";
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
if($Defaults=$cli->GetAccountDefaults) {
print "The account defaults are:\n";
print " $_ = \"@$Defaults{$_}\"\n" foreach (keys %$Defaults);
} else {
die "Error: ".$cli->getErrMessage.", quitting" if(!$cli->isSuccess);
}
$cli->UpdateAccountDefaults(domain => 'company.com',
settings => {MaxAccountSize => '100K'})
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Defaults=$cli->GetAccountDefaultPrefs()) {
print "The WebUser defaults are:\n";
print " $_ = \"@$Defaults{$_}\"\n" foreach (keys %$Defaults);
} else {
die "Error: ".$cli->getErrMessage.", quitting" if(!$cli->isSuccess);
}
my %Settings=(
Charset => 'ISO-8859-1',
Fields => [ qw(From Sender Subject Date To Cc) ]
);
$cli->UpdateAccountDefaultPrefs(settings=>\%Settings)
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Template=$cli->GetAccountTemplate) {
print "The template account settings are:\n";
print " $_ = \"@$Template{$_}\"\n" foreach (keys %$Template);
} else {
die "Error: ".$cli->getErrMessage.", quitting" if(!$cli->isSuccess);
}
$cli->UpdateAccountTemplate(domain => 'company.com',
settings => { RealName => 'Unnamed',Password => ''})
|| die "Error: ".$cli->getErrMessage.", quitting";
my $Boxes= $cli->ListMailboxes(accountName=>'john',filter=>'INBOX*')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach (sort keys %$Boxes) {
print "$_\n";
my $data=@$Boxes{$_};
if(ref $data eq 'ARRAY') {
$data=@$data[0];
}
if(ref $data eq 'HASH') {
foreach (keys %$data) {
print " $_ = @$data{$_}\n";
}
}
}
$cli->CreateMailbox('john','SharedItems')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->RenameMailbox('john','myItems','SharedItems')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->DeleteMailbox('john','SharedItems')
|| die "Error: ".$cli->getErrMessage.", quitting";
my $info = $cli->GetMailboxInfo('john','SharedItems')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach (sort keys %$info) {
my $data=@$info{$_};
if(ref $data eq 'HASH') {
print " $_:\n";
foreach (keys %$data) {
print " $_ = @$data{$_}\n";
}
} else {
print " $_ = @$info{$_}\n";
}
}
my $acl = $cli->GetMailboxACL('john','SharedItems')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach (keys %$acl) {
print " $_ = @$acl{$_}\n";
}
my %newACL=(
"boss" => 'ipcda',
"+susan" => 'lrsw',
);
$cli->SetMailboxACL('john','SharedItems',\%newACL)
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Rights= $cli->GetMailboxRights('john','SharedItems','boss')) {
print "The rights = $Rights\n";
} else {
($cli->isSuccess) ? print "The boss account has no rights to access this mailbox\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->SetMailboxClass('john','Calendar','IPF.Appointment')
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Subscription= $cli->GetMailboxSubscription('john')) {
print "The subscription: ".join(",",@$Subscription)."\n";
} else {
($cli->isSuccess) ? print "This account has no subscribed mailboxes\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$Subscription= $cli->GetMailboxSubscription('john')
|| die "Error: ".$cli->getErrMessage.", quitting";
push(@$Subscription,'~user@company.com/INBOX');
$cli->SetMailboxSubscription('john',$Subscription)
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Aliases=$cli->GetMailboxAliases('john')) {
print "The aliases are:\n";
foreach (keys %$Aliases) {
print " $_ = @$Aliases{$_}\n";
}
} else {
($cli->isSuccess) ? print "No aliases\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$Aliases=$cli->GetMailboxAliases('john')
|| die "Error: ".$cli->getErrMessage.", quitting";
@$Aliases{'ExternalBox'}='~user@company.com/INBOX';
$cli->SetMailboxAliases('john',$Aliases)
|| die "Error: ".$cli->getErrMessage.", quitting";
$Alerts=$cli->GetDomainAlerts('company.com')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach(keys %$Alerts) {
my ($xx,$yr,$mn,$dy,$hr,$min,$sec)=split(/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/);
print "$dy.$mn.$yr $hr:$min:$sec - @$Alerts{$_}\n";
}
my %Alerts =(
'19991225235959' => 'Merry Christmas!',
'20000101000000' => 'Happy New Year!',
);
$cli->SetDomainAlerts('company.com',\%Alerts)
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->PostDomainAlert('company.com',"We're shutting down in 10 minutes!")
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->PostDomainAlert('company.com','20000101000000')
|| die "Can't remove the NewYear alert: ".$cli->getErrMessage.", quitting";
$data=$cli->ReadStorageFile('john','logo.gif')
|| die "Error: ".$cli->getErrMessage.", quitting";
print "File data=$data->[0]\n";
print "File modification date: @$data[1] size: @$data[2]\n";
$cli->RenameStorageFile('john','StalkerLogo.gif','logo.gif')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->DeleteStorageFile('john','logo.gif')
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Files=$cli->ListStorageFiles('john')) {
print "The files are:\n";
print " $_\n" foreach (keys %$Files);
} else {
($cli->isSuccess) ? print "No web files.\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$data=$cli->GetStorageFileInfo('john')
|| die "Error: ".$cli->getErrMessage.", quitting";
print "There are $data->[1] files $data->[0] bytes total\n";
if($Lists=$cli->ListLists('company.com')) {
print "The lists are:\n";
print " $_\n" foreach (@$Lists);
} else {
($cli->isSuccess) ? print "No lists.\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$Lists=$cli->GetDomainLists('company.com'))
|| die "Error: ".$cli->getErrMessage.", quitting";
print "The lists are:\n";
foreach (keys %$Lists) {
my $nSubs=@$Lists{$_};
$nSubs='unknown' if $nSubs==-1;
print " $_ ($nSubs)\n";
}
$Lists=$cli->GetAccountLists('listmaster'))
|| die "Error: ".$cli->getErrMessage.", quitting";
print "The lists are:\n";
foreach (keys %$Lists) {
my $nSubs=@$Lists{$_};
$nSubs='unknown' if $nSubs==-1;
print " $_ ($nSubs)\n";
}
$cli->CreateList('TestList@company.com','john')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->RenameList('TestList@company.com','InfoList')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->DeleteList('InfoList@company.com')
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Settings=$cli->GetList('TestList@company.com')) {
print "The list settings are:\n";
print " $_ = \"@$Settings{$_}\"\n" foreach (keys %$Settings);
} else {
($cli->isSuccess) ? print "Nothing...\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->UpdateList('TestList@company.com',{RealName => "the test list"})
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->List("myList", 'subscribe',
'"John Smith" <john@company.com>',
'silently','confirm')
|| die "Can't subscribe John: ".$cli->getErrMessage.", quitting";
my $subscribers=$cli->ListSubscribers("myList", '', 10)
|| die "Can't list subscribers: ".$cli->getErrMessage.", quitting";
print " $_\n" foreach(@$subscribers);
if($Infos=$cli->GetSubscriberInfo('TestList@company.com','user@domain.com')) {
print "The subscriber info:\n";
foreach (keys %$Infos) {
print " $_ = \"@$Infos{$_}\"\n";
}
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->SetPostingMode('TestList@company.com','user@domain.com',"UNMODERATED")
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->ProcessBounce('TestList@company.com','user@domain.com',0)
|| die "Error: ".$cli->getErrMessage.", quitting";
my $Files= $cli->ListDomainSkins('company.com')
|| die "Error: ".$cli->getErrMessage.", quitting";
print (($_ eq '') ? "Basic skin\n" : "$_\n") foreach (@$Files);
$cli->CreateDomainSkin('company.com',"mySkin1")
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->RenameDomainSkin('company.com',"mySkin1","mySkin")
|| die "Error: ".$cli->getErrMessage.", quitting";
my $Files= $cli->ListDomainSkinFiles('company.com',"MySkin")
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach (sort keys %$Files) {
print "$_\n";
my $data=@$Files{$_};
if(ref $data eq 'HASH') {
foreach (keys %$data) {
print " $_ = @$data{$_}\n";
}
}
}
my $Data = $cli->ReadDomainSkinFile('company.com',"MySkin",'logo.gif')
|| die "Error: ".$cli->getErrMessage.", quitting";
print "Date (YyyyMmDdHhMmSs): @$Data[1]\n";
print "Base64 data: @$Data[0]\n";
use MIME::Base64;
$cli->StoreDomainSkinFile('company.com',"MySkin",'logo.gif',encode_base64($data, ""))
|| die "Error: ".$cli->getErrMessage.", quitting";
my $Files= $cli->ListServerSkins()
|| die "Error: ".$cli->getErrMessage.", quitting";
print (($_ eq '') ? "Basic skin\n" : "$_\n") foreach (@$Files);
my $Files= $cli->ListWebUserInterface('company.com')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach (sort keys %$Files) {
print "$_\n";
my $data=@$Files{$_};
if(ref $data eq 'HASH') {
foreach (keys %$data) {
print " $_ = @$data{$_}\n";
}
}
}
my $FileData= $cli->GetWebUserInterface('*','default.html')
|| die "Error: ".$cli->getErrMessage.", quitting";
print $FileData;
$cli->DeleteWebUserInterface('*','default.html')
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->ClearWebUserCache('company.com')
|| die "Error: ".$cli->getErrMessage.", quitting";
my $sessionID=$cli->CreateWebUserSession('user','127.0.0.1',0)
|| die "Error: ".$cli->getErrMessage.", quitting";
print "$sessionID\n";
$cli->CreateDomainPBX('company.com',"japanese")
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->DeleteDomainPBX('company.com',"japanese")
|| die "Error: ".$cli->getErrMessage.", quitting";
my $Files= $cli->ListDomainPBXFiles('company.com','japanese')
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach (sort keys %$Files) {
print "$_\n";
my $data=@$Files{$_};
if(ref $data eq 'HASH') {
foreach (keys %$data) {
print " $_ = @$data{$_}\n";
}
}
}
Note:To retrieve a file from a national subset, specify the name as language/fileName.
use MIME::Base64;
$cli->StoreDomainPBXFile('company.com','sound.wav',encode_base64($data, ""))
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->RemoveAccountSubset('user','RepliedAddresses')
|| die "Can't remove: ".$cli->getErrMessage;
my $data=$cli->Balance('user',{ op=>'credit', balance=>'newBalance', amount=>'100' } )
|| die "Can't credit: ".$cli->getErrMessage;
my $data=$cli->Roster('user',{ what=>'List' } )
|| die "Can't get buddies list: ".$cli->getErrMessage;
print "The buddies are:\n";
foreach (sort keys %$data) {
print "$_ $data->{$_}->{RealName}\n";
}
if($Settings=$cli->GetModule('SMTP')) {
print "The SMTP settings are:\n";
print " $_ = \"@$Settings{$_}\"\n" foreach (keys %$Settings);
} else {
($cli->isSuccess) ? print "Nothing...\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->UpdateModule("SMTP",{LogLevel => 3})
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Data = $cli->GetBlacklistedIPs()) {
$Data =~ s/\\e/\n/g;
print "$Data\n";
} else {
($cli->isSuccess) ? print "No addresses entered\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->SetBlacklistedIPs('11.22.33.44\e33.44.55.66')
|| die "Error: ".$cli->getErrMessage.", quitting";
my $Rules=$cli->GetServerMailRules()
|| die "Error: ".$cli->getErrMessage.", quitting";
foreach my $Rule (@$Rules) {
my $conditions=$Rule->[2],$actions=$Rule->[3];
print "\nName='$Rule->[1]' Priority=$Rule->[0]\n";
print " If\n ";
foreach my $cond (@$conditions) {
print " $_ " foreach (@$cond);
print "\n ";
}
print "Then\n ";
foreach my $actn (@$actions) {
print " $_ " foreach (@$actn);
print "\n ";
}
}
my @Rules =(
[ 5,'Size Limit',
[ ['Message Size', 'greater than', '10M] ],
[ ['Reject with', 'Your message is too big!'],
]
],
[ 5,'Save Outgoing',
[ ['Return-Path', 'is', '<*@mydomain.com>] ],
[ ['Store in', '~security/outgoing'],
]
]
);
$cli->SetServerMailRules(\@Rules)
|| die "Error: ".$cli->getErrMessage.", quitting";
$cli->RefreshOSData()
|| die "Error: ".$cli->getErrMessage.", quitting";
my $routerData=$cli->GetRouterTable()
|| die "Error: ".$cli->getErrMessage.", quitting";
$routerData=~s/\\e/\n/g;
print "$routerData\n";
my $routerData=$cli->GetRouterTable()
|| die "Error: ".$cli->getErrMessage.", quitting";
$routerData.='\e' if(substr($routerData,-2,2) ne '\e');
$routerData.='<addr1>=addr1@domain.com\e';
$cli->SetRouterTable($routerData)
|| die "Error: ".$cli->getErrMessage.", quitting";
if($Settings=$cli->GetRouterSettings()) {
print "The settings are:\n";
foreach (keys %$Settings) {
print " $_ = \"@$Settings{$_}\"\n";
}
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}
my $data=$cli->Route('user@domain.net','mail')
|| die "Error: ".$cli->getErrMessage.", quitting";
print "Module =$data->[0]\n";
print "Host =$data->[1]\n";
print "Address =$data->[2]\n";
my $data=$cli->GetStatElement('1.3.6.1.4.1.5678.2.1.1.1.1.10')
|| die "Error: ".$cli->getErrMessage.", quitting";
print "Incoming SMTP messages: $data\n";
my $data=$cli->GetNextStatName('1.3.6.1.4.1.5678.2.1.1.1.1.10')
|| die "Error: ".$cli->getErrMessage.", quitting";
print "Next name is: $data\n";
$cli->Shutdown;
if($nMessages=$cli->GetAccountStat('user@company.com','MessagesReceived')) {
my $nBytes=$cli->GetAccountStat('user@company.com','BytesReceived');
print "The user had received $nMessages messages $nBytes bytes total.\n";
} else {
($cli->isSuccess) ? print "The user had received no messages.\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->ResetAccountStat('user@company.com','MessagesReceived')
|| die "Error: ".$cli->getErrMessage;
if($nMessages=$cli->GetDomainStat('company.com','MessagesReceived')) {
my $nBytes=$cli->GetDomainStat('company.com','BytesReceived');
print "The user had received $nMessages messages $nBytes bytes total.\n";
} else {
($cli->isSuccess) ? print "The domain had received no messages.\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
$cli->ResetDomainStat('*')
|| die "Error: ".$cli->getErrMessage;
$cli->WriteLog(2,'my test log message')
|| die "Can't write to log: ".$cli->getErrMessage;
$cli->ReleaseSMTPQueue('mail.domain.com')
|| die "Can't release queue: ".$cli->getErrMessage;
$cli->RejectQueueMessage('123456','your message is rejected')
|| die "Can't reject message: ".$cli->getErrMessage;
my $data=$cli->GetCurrentController()
|| die "Can't learn where's the cluster controller: ".$cli->getErrMessage;
print "The Controller is $data\n";
if($data=$cli->GetTempClientIPs()) {
print "The temp client IPs are: $data\n";
} else {
($cli->isSuccess) ? print "Currently there're no temp client IPs.\n"
: die "Error: ".$cli->getErrMessage.", quitting";
}
my $data=$cli->GetTempBlacklistedIPs();
if($cli->isSuccess) {
$data .="\\e11.22.33.44\\e22.33.44.55";
$cli->SetTempBlacklistedIPs($data);
} else {
die "Error: ".$cli->getErrMessage.", quitting";
}