![]() |
|
|
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:
|
There are more scripts in the Script Repository Page
Returns:
a reference to a new class or undefined.
Example:
my $cli = new CGP::CLI( { PeerAddr => 'company.com', PeerPort => 106, login => '[email protected]', password => 'pass', SecureLogin => 0, SSLTransport => 1 } ) || die "Can't login to CGPro: ".$CGP::ERR_STRING."\n";
Example:
$CGP::SECURE_LOGIN=0; $CGP::WEBUSER_LOGIN=1; $CGP::SSL_TRANSPORT=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 [email protected] {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', '[email protected]'] ] ] ); $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 [email protected]$records{$_}; foreach(keys %$rec) { print " [email protected]$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', '[email protected]'], 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 [email protected]$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 [email protected]$Settings{'Members'}; push(@$Members,'sales_box#[email protected]'); $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','[email protected]') || 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->CreateDomainStorage("Volume1",'SHARED') || die "Can't create mount point: ".$cli->getErrMessage.", quitting";
my $data=$cli->ListDomainStorage('SHARED'); die "Error: ".$cli->getErrMessage.", quitting" if(!$cli->isSuccess); print "mount point: $_\n" foreach(@$data);
$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";
$cli->CreateDomainStorage('test.company.com',"my_dir") || die "Can't create mount point: ".$cli->getErrMessage.", quitting"; my $data=$cli->ListAccountStorage('test.company.com'); die "Error: ".$cli->getErrMessage.", quitting" if(!$cli->isSuccess); print "mount point: $_\n" foreach(@$data);
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 [email protected]$Settings{$_}; print " $_ = "; if(ref ($data) eq 'ARRAY') { print join(",",@$data)."\n"; }elsif(ref($data) eq 'HASH') { print "{"; print "[email protected]$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 [email protected]$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 [email protected]$Boxes{$_}; if(ref $data eq 'ARRAY') { [email protected]$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 [email protected]$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,'[email protected]/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'}='[email protected]/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 [email protected]$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 [email protected]$Lists{$_}; $nSubs='unknown' if $nSubs==-1; print " $_ ($nSubs)\n"; }
$cli->CreateList('[email protected]','john') || die "Error: ".$cli->getErrMessage.", quitting";
$cli->RenameList('[email protected]','InfoList') || die "Error: ".$cli->getErrMessage.", quitting";
$cli->DeleteList('[email protected]') || die "Error: ".$cli->getErrMessage.", quitting";
if($Settings=$cli->GetList('[email protected]')) { 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('[email protected]',{RealName => "the test list"}) || die "Error: ".$cli->getErrMessage.", quitting";
$cli->List("myList", 'subscribe', '"John Smith" <[email protected]>', '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('[email protected]','[email protected]')) { print "The subscriber info:\n"; foreach (keys %$Infos) { print " $_ = \"@$Infos{$_}\"\n"; } } else { die "Error: ".$cli->getErrMessage.", quitting"; }
$cli->SetPostingMode('[email protected]','[email protected]',"UNMODERATED") || die "Error: ".$cli->getErrMessage.", quitting";
$cli->ProcessBounce('[email protected]','[email protected]',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 [email protected]$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 [email protected]$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";
my $data=$cli->ListAccountSessions('user') || die "Error: ".$cli->getErrMessage; print "The sessions are:\n"; print "$_\n" foreach(@$data);
my $data=$cli->GetSession('1-pIX3cdbUQIGg79Nx03b4') || die "Error: ".$cli->getErrMessage; print "The sessions data are: ".$cli->printWords($data)."\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 [email protected]$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>[email protected]\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('[email protected]','mail') || die "Error: ".$cli->getErrMessage.", quitting"; print "Module =$data->[0]\n"; print "Host =$data->[1]\n"; print "Address =$data->[2]\n";
my $data=$cli->GetIPState('127.0.0.1','TEMP'); || die "Error: ".$cli->getErrMessage.", quitting"; print "The state is: '$data'\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('[email protected]','MessagesReceived')) { my $nBytes=$cli->GetAccountStat('[email protected]','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('[email protected]','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;
my $data=$cli->ListCLICommands() || die "Error: ".$cli->getErrMessage; print "The commands are: ".join(', ',@$data)."\n";
my $data=$cli->Echo( { a=>'b', c=>['d','e'], } ) || die "Error: ".$cli->getErrMessage; print "The object is: ".$cli->printWords($data)."\n";
my $data=$cli->GetVersion() || die "Error: ".$cli->getErrMessage; print "The version is: ".$data."\n";
my $data=$cli->GetCurrentTime() || die "Error: ".$cli->getErrMessage; print "The time is: ".$data."\n";
my $data=$cli->TestLoop(5) || die "Error: ".$cli->getErrMessage; print "The speed is ".$data." loops per second\n";
$cli->SetTrace(FileIO,"ON") || 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;
$cli->RejectQueueMessages('[email protected]','NONDN') || die "Can't reject messages: ".$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"; }
$cli->TempBlacklistIP("111.111.1.1",0);
my $data=$cli->GetTempBlacklistedIPs(); if($cli->isSuccess) { $data .="\\e11.22.33.44-100\\e22.33.44.55-200"; $cli->SetTempBlacklistedIPs($data); } else { die "Error: ".$cli->getErrMessage.", quitting"; }