forked from claylo/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCLI.php
2538 lines (2237 loc) · 104 KB
/
CLI.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?php
/*
CLI.php - Version 1.0b5
PHP Class interface to CommuniGate Pro CLI.
A translation of CLI.pm
Derived from:
CLI.pm 2.6.0
by Stalker Software, Inc.
Copyright 2002 Stalker Software, Inc.
For original Perl version, see:
http://www.stalker.com/CGPerl/CLI.pm
Original location: <http://www.killersoft.com/contrib/cgphp.html>
Revision history: <http://www.killersoft.com/contrib/cgphp_history.html>
For related info, see:
<http://www.stalker.com/CommuniGatePro/CLI.html>
<http://www.stalker.com/CommuniGatePro/CGPerl>
Mail your comments and error reports to <support@killersoft.com>
Translated by Clay Loveless <clay@killersoft.com> April 15-17, 2002.
Credits:
- Hats off to Stalker for CommuniGate Pro!
- Thanks to Matt Gischer for (perhaps unknowingly) providing the kick
in the pants to do this.
////////////////////////////////////////////////////////////////////////
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
// Hell, it might not even work for you.
//
// By using this code you agree to indemnify Clay Loveless,
// KillerSoft, and Crawlspace, Inc. from any liability that might
// arise from its use.
//
// Have fun!
//
////////////////////////////////////////////////////////////////////////
//////// COMMAND DIFFERENCES BETWEEN CLI.pm and CLI.php
List commands: "List" is now "ListCommand"
Server commands: "Shutdown" is now "ServerShutdown"
Server commands: CLI.pm 2.4.7 has no SetClusterBanned function,
but CLI.php does.
//////// NOTES
If returned array is assocative, command name will be shown with: [returns AA]
If input array should be associative, command name will be shown with: [requires AA]
//////// Commands
void Login(string PeerAddr, string PeerPort, string login, string password)
string getErrCode(void)
string getErrMessage(void)
string getErrCommand(void)
bool isSuccess(void)
void setDebug(bool)
void setStringsTranslateMode(bool)
void Logout(void)
void NewPassword(string newPassword)
void SendCommand(string command)
mixed GetResponseData(void)
//////// Account Commands
array ListAccounts([string domainName]) [returns AA]
void CreateAccount(array params) [requires AA]
void RenameAccount(string oldAccountName, string newAccountName)
void DeleteAccount(string accountName)
array GetAccountSettings(string accountName) [returns AA]
array GetAccount(string accountName) [returns AA]
array GetAccountEffectiveSettings(string accountName) [returns AA]
void UpdateAccountSettings(string accountName, array params) [requires AA]
void UpdateAccount(string accountName, array params) [requires AA]
void SetAccountSettings(string accountName, array params) [requires AA]
void SetAccount(string accountName, array params) [requires AA]
void SetAccountPassword(string accountName, string newPass)
void VerifyAccountPassword(string accountName, string password)
array GetAccountAliases(string accountName)
void SetAccountAliases(string accountName, array aliases)
array GetAccountRules(string accountName) [returns array of arrays]
void SetAccountRules(string accountName, array rules) [requires array of arrays]
array GetAccountRPOP(string accountName)
void SetAccountRPOP(string accountName, array details)
array GetAccountRights(string accountName)
void SetAccountRights(string accountName,array rights)
mixed GetAccountInfo(string accountName, string key)
array GetWebUser(string accountName) [returns AA]
void SetWebUser(string accountName, array settings) [requires AA]
//////// Group Commands
array ListGroups([string domainName])
void CreateGroup(string groupName[, array settings]) [optional AA for settings]
void RenameGroup(string oldGroupName, string newGroupName)
void DeleteGroup(string groupName)
array GetGroup(string groupName) [returns AA]
void SetGroup(string groupName, array settings)
//////// Forwarder Commands
array ListForwarders([string domainName)
void CreateForwarder(string forwarderName, string address)
void DeleteForwarder(string forwarderName)
string GetForwarder(string forwarderName)
//////// Domain Commands
array ListDomains()
string MainDomainName()
array GetDomainSettings([string domainName])
array GetDomain([string domainName])
array GetDomainEffectiveSettings([string domainName])
void UpdateDomainSettings(array params) [requires AA]
void UpdateDomain(array params) [requires AA]
void SetDomainSettings(array params) [requires AA]
void SetDomain(array params) [requires AA]
void CreateDomain(string domainName[, array params]) [optional AA for parameters]
void RenameDomain(string oldDomainName, string newDomainName)
void DeleteDomain(string domainName[, bool force])
void CreateSharedDomain(string domainName[, array params]) [optional AA for parameters]
void CreateDirectoryDomain(string domainName[, array params]) [optional AA for parameters]
void ReloadDirectoryDomains()
array GetDomainAliases([string domainName])
void SetDomainAliases(string domainName, array aliases)
array ListAdminDomains([string domainName])
array GetDirectoryIntegration() [returns AA]
void SetDirectoryIntegration(array settings)
array GetClusterDirectoryIntegration() [returns AA]
void SetClusterDirectoryIntegration(array settings)
array GetDomainDefaults()
void UpdateDomainDefaults(array settings) [requires AA]
void SetDomainDefaults(array settings) [requires AA]
array GetClusterDomainDefaults() [returns AA]
void UpdateClusterDomainDefaults(array settings) [requires AA]
void SetClusterDomainDefaults(array settings) [requires AA]
array GetAllAccountsDefaults() [returns AA]
void UpdateAllAccountsDefaults(array settings) [requires AA]
void SetAllAccountsDefaults(array settings) [requires AA]
array GetClusterAccountsDefaults() [returns AA]
void UpdateClusterAccountsDefaults(array settings) [requires AA]
void SetClusterAccountsDefaults(array settings) [requires AA]
string GetAccountLocation(string accountName)
array GetAccountDefaults([string domainName])
void UpdateAccountDefaults(array params) [requires AA]
void SetAccountDefaults(array params) [requires AA]
array GetWebUserDefaults([string domainName]) [returns AA]
void SetWebUserDefaults(array params) [requires AA]
array GetAccountTemplate([string domainName]) [returns AA]
void UpdateAccountTemplate(array params) [requires AA]
void SetAccountTemplate(array params) [requires AA]
//////// Mailbox Administration Commands
array ListMailboxes(array params) [returns AA, requires AA]
void CreateMailbox(string accountName, string mailboxName[, string authAccountName])
void RenameMailbox(string accountName, string oldMailboxName, string newMailboxName[, string authAccountName])
void RenameMailboxes(string accountName, string oldMailboxName, string newMailboxName[, string authAccountName])
void DeleteMailbox(string accountName, string mailboxName[, string authAccountName])
void DeleteMailboxes(string accountName, string mailboxName[, string authAccountName])
array GetMailboxInfo(string accountName, string mailboxName[, string authAccountName]) [returns AA]
array GetMailboxACL(string accountName, string mailboxName[, string authAccountName]) [returns AA]
void SetMailboxACL(string accountName,string mailboxName, array newACL[, string authAccountName]) [requires AA for newACL]
string GetMailboxRights(string accountName, string mailboxName[, string authAccountName])
array GetAccountSubscription(string accountName)
void SetAccountSubscription(string accountName,array newSubscription)
array GetMailboxAliases(string accountName) [returns AA]
void SetMailboxAliases(string accountName, array newAliases) [requires AA for newAliases]
//////// Alerts Administration Commands
array GetDomainAlerts([string domain]) [returns AA]
void SetDomainAlerts(string domain, array alerts) [requires AA]
void PostDomainAlert(string domain, string alert)
void RemoveDomainAlert(string domain, string timestamp)
array GetAccountAlerts([string account]) [returns AA]
void SetAccountAlerts(string account, array alerts) [requires AA]
void PostAccountAlert(string account, string alert)
void RemoveAccountAlert(string account, string timestamp)
array GetServerAlerts() [returns AA]
void SetServerAlerts(array alerts) [requires AA]
void PostServerAlert(string alert)
void RemoveServerAlert(string timestamp)
array GetClusterAlerts() [returns AA]
void SetClusterAlerts(array alerts) [requires AA]
void PostClusterAlert(string alert)
void RemoveClusterAlert(string timestamp)
//////// Personal Website Adminstration Commands
array GetWebFile(string accountName, string fileName)
void PutWebFile(string accountName, string fileName, string base64data)
void RenameWebFile(string accountName, string oldFileName, string newFileName)
void DeleteWebFile(string accountName, string fileName)
array ListWebFiles(string accountName[, string filePath]) [returns AA]
array GetWebFilesInfo(string accountName)
//////// Lists Commands
array ListLists([string domain])
array GetDomainLists([string domain]) [returns AA]
array GetAccountLists(string accountName) [returns AA]
void CreateList(string listName, string accountName)
void RenameList(string oldListName, string newListName)
void DeleteList(string listName)
array GetList(string listName) [returns AA]
void UpdateList(string listName, array params) [requires AA for parameters]
void ListCommand(string listName, string command, string subscriber, array options)
array ListSubscribers(string listName[, string filter[, int limit]])
array GetSubscriberInfo(string listName, string address)
void SetPostingMode(string listName, string address, string mode)
//////// Web Skins Administration Commands
array ListDomainSkins(string domainName)
void CreateDomainSkin(string domainName, string skinName)
void RenameDomainSkin(string domainName, string oldSkinName, string newSkinName)
void DeleteDomainSkin(string domainName, string skinName)
array ListDomainSkinFiles(string domainName, string skinName) [returns AA]
array ReadDomainSkinFile(string domainName, string skinName, string fileName)
void StoreDomainSkinFile(string domainName, string skinName, string fileName, string base64data)
void DeleteDomainSkinFile(string domainName, string skinName, string fileName)
array ListServerSkins()
void CreateServerSkin(string skinName)
void RenameServerSkin(string oldSkinName, string newSkinName)
void DeleteServerSkin(string skinName)
array ListServerSkinFiles(string skinName) [returns AA]
array ReadServerSkinFile(string skinName, string fileName)
void StoreServerSkinFile(string skinName, string fileName, string base64data)
void DeleteServerSkinFile(string skinName, string fileName)
array ListClusterSkins()
void CreateClusterSkin(string skinName)
void RenameClusterSkin(string oldSkinName, string newSkinName)
void DeleteClusterSkin(string skinName)
array ListClusterSkinFiles(string skinName) [returns AA]
array ReadClusterSkinFile(string skinName, string fileName)
void StoreClusterSkinFile(string skinName, string fileName, string bas64data)
void DeleteClusterSkinFile(string skinName, string fileName)
//////// Web Interface Tuning Commands
array ListWebUserInterface([string domainName[, string path]]) [returns AA]
string GetWebUserInterface(string domainName, string fileName)
void PutWebUserInterface(string domainName, string fileName, string base64data)
void DeleteWebUserInterface(string domainName, string path)
void ClearWebUserCache([string domainName])
//////// Web Interface Integration Commands
void CreateWebUserSession(string accountName, string ipAddress)
array GetWebUserSession(string sessionID) [returns AA]
void KillWebUserSession(string sessionID)
//////// Server Commands
array GetModule(string moduleName) [returns AA]
void UpdateModule(string moduleName, array newSettings) [requires AA for newSettings]
void SetModule(string moduleName, array settings) [requires AA for settings]
string GetBlacklistedIPs(void)
string GetClientIPs(void)
string GetWhiteHoleIPs(void)
string GetProtection(void)
string GetBanned(void)
void SetBlacklistedIPs(string addresses)
void SetClientIPs(string addresses)
void SetWhiteHoleIPs(string addresses)
void SetProtection(string settings)
void SetBanned(string settings)
string GetClusterBlacklistedIPs(void)
string GetClusterClientIPs(void)
string GetClusterWhiteHoleIPs(void)
string GetClusterProtection(void)
string GetClusterBanned(void)
void SetClusterBlacklistedIPs(string addresses)
void SetClusterClientIPs(string addresses)
void SetClusterWhiteHoleIPs(string addresses)
void SetClusterProtection(string settings)
void SetClusterBanned(string settings)
array GetServerRules(void) [returns array of arrays]
void SetServerRules(array rules)
array GetClusterRules(void) [returns array of arrays]
void SetClusterRules(array rules)
void RefreshOSData(void)
string GetRouterTable(void)
void SetRouterTable(string table)
string GetClusterRouterTable(void)
void SetClusterRouterTable(string table)
void Route(string address)
//////// Monitoring Commands
array GetSNMPElement(string element)
void ServerShutdown(void)
//////// Statistics Commands
mixed GetAccountStat(string accountName[, string key])
void ResetAccountStat(string accountName[, string key])
mixed GetDomainStat(string domainName[, string key])
void ResetDomainStat(string domainName[, string key])
//////// Miscellaneous Commands
void WriteLog(int level, string msg)
void ReleaseSMTPQueue(string queueName)
*/
if(!defined('PHP_CGP_CLI_CLASS')) {
define('PHP_CGP_CLI_CLASS',1);
class CLI {
// class variables
var $PeerAddr = '';
var $PeerPort = 106;
var $login = '';
var $password = '';
var $debug = 0;
var $translateStrings = 0;
var $span = 0;
var $len = 0;
var $data = '';
var $errCode = '';
var $errMsg = '';
var $currentCGateCommand = '';
var $inlineResponse = '';
// Connect to the server
function Login($PeerAddr, $PeerPort, $login, $password) {
// Must have a login and password
if (!isset( $login )) {
die ("You must pass login parameter to cgpCLI\n");
}
if (!isset( $password )) {
die ("You must pass password paramter to cgpCLI\n");
}
$out = '';
$sp = fsockopen( $PeerAddr, $PeerPort, $errno, $errstr );
if($sp) {
$this->sp = $sp;
// set our created socket for $sp to
// non-blocking mode so that our fgets()
// calls will return with a quickness
if (function_exists('stream_set_blocking')) {
stream_set_blocking ( $sp, false );
} else {
set_socket_blocking ( $sp, false );
}
// get greeting
while($out == '') {
$out = fgets($sp, 1024);
}
if($this->debug)
echo "$out";
// reset our socket pointer to blocking mode,
// so we can wait for communication to finish
// before moving on ...
if (function_exists('stream_set_blocking')) {
stream_set_blocking ( $sp, true );
} else {
set_socket_blocking ( $sp, true );
}
// secure login -- grab what we need from greeting
preg_match("/(\<.*\@*\>)/",$out,$matches);
$this->send('APOP '.$login.' '.md5($matches[1].$password));
$this->_parseResponse();
// Set to INLINE mode
$this->send('INLINE');
$this->_parseResponse();
} else {
echo "$errno: $errstr\n";
exit;
}
}
//////////////////////////////////////////////////
// General commands
function getErrCode() {
return $this->errCode;
}
function getErrMessage() {
return $this->errMsg;
}
function getErrCommand() {
return $this->currentCGateCommand;
}
function isSuccess() {
if($this->errCode == 200 || $this->errCode == 201) {
return true;
} else {
return false;
}
}
function setDebug($debugFlag) {
$this->debug = $debugFlag;
}
function setStringsTranslateMode($onFlag) {
$this->translateStrings = $onFlag;
}
function Logout() {
$this->send('QUIT');
if($this->debug)
$this->_parseResponse();
fclose($this->sp);
}
function NewPassword($newPassword) {
if(!isset($newPassword))
die('usage: $cli->NewPassword($newPassword)'."\n");
$this->send('NEWPASS '.$newPassword);
$this->_parseResponse();
}
function SendCommand($command) {
if(!isset($command))
die('usage: $cli->SendCommand($commandString)'."\n");
$this->send($command);
$this->_parseResponse();
}
function GetResponseData() {
return $this->parseWords($this->getWords());
}
//////////////////////////////////////////////////
// Account commands
function ListAccounts($domain='') {
$command = 'LSTACNT';
if($domain != '') $command .= ' '.$domain;
$this->send($command);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function CreateAccount($params) {
if(!array_key_exists("accountName",$params)) {
$err = 'usage:'."\n";
$err .= ' $UserData = array('."\n";
$err .= ' "accountName" => "john",'."\n";
$err .= ' "settings" => array('."\n";
$err .= ' "AccessModes" => "Mail POP IMAP PWD WebMail WebSite",'."\n";
$err .= ' "RealName" => "John X. Smith",'."\n";
$err .= ' "MaxAccountSize" => "100k"'."\n";
$err .= ' )'."\n";
$err .= ' );'."\n";
$err .= ' $cli->CreateAccount(array $UserData);'."\n";
die("$err");
} else {
$command = 'CRACNT '.$params["accountName"];
if(array_key_exists("accountType",$params) && isset($params["accountType"]))
$command .= ' '. $params["accountType"];
if(array_key_exists("externalFlag",$params))
$command .= ' '. 'external';
if(is_array($params["settings"]))
$command .= ' '.$this->printWords($params["settings"]);
$this->send($command);
$this->_parseResponse();
}
}
function RenameAccount($oldAccountName,$newAccountName) {
if($oldAccountName == '' || $newAccountName == '')
die('usage: $cli->RenameAccount(string $oldAccountName, string $newAccountName)'."\n");
$this->send('RNACNT '.$oldAccountName.' into '.$newAccountName);
$this->_parseResponse();
}
function DeleteAccount($accountName) {
if($accountName == '')
die('usage: $cli->DeleteAccount(string $accountName)'."\n");
$this->send('DLACNT '.$accountName);
$this->_parseResponse();
}
function GetAccountSettings($accountName) {
if($accountName == '')
die('usage: $cli->GetAccountSettings(string $accountName)'."\n");
$this->send('GTACNT '.$accountName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
} else {
return false;
}
}
function GetAccount($accountName) {
return $this->GetAccountSettings($accountName);
}
function GetAccountEffectiveSettings($accountName) {
if($accountName == '')
die('usage: $cli->GetAccountEffectiveSettings(string $accountName)'."\n");
$this->send('GetAccountEffectiveSettings '.$accountName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
} else {
return false;
}
}
function UpdateAccountSettings($accountName,$params) {
if($accountName == '' || !is_array($params))
die('usage: $cli->UpdateAccountSettings(string $accountName, array $settings)'."\n");
$this->send('UPDACNT '.$accountName.' '.$this->printWords($params));
$this->_parseResponse();
}
function UpdateAccount($accountName,$params) {
return $this->UpdateAccountSettings($accountName,$params);
}
function SetAccountSettings($accountName,$params) {
if($accountName == '' || !is_array($params))
die('usage: $cli->SetAccountSettings(string $accountName, array $settings)'."\n");
$this->send('STACNT '.$accountName.' '.$this->printWords($params));
$this->_parseResponse();
}
function SetAccount($accountName,$params) {
return $this->SetAccountSettings($accountName,$params);
}
function SetAccountPassword($accountName,$newPass) {
if($accountName == '' || $newPass == '')
die('usage: $cli->SetAccountPassword(string $accountName, string $newPassword)'."\n");
$this->send('SetAccountPassword '.$accountName.' TO '.$this->printWords($newPass));
$this->_parseResponse();
}
function VerifyAccountPassword($accountName,$pass) {
if($accountName == '' || $pass == '')
die('usage: $cli->VerifyAccountPassword(string $accountName, string $password)'."\n");
$this->send('VerifyAccountPassword '.$accountName.' PASSWORD '.$this->printWords($pass));
return $this->_parseResponse();
}
function GetAccountAliases($accountName) {
if($accountName == '')
die('usage: $cli->GetAccountAliases(string $accountName)'."\n");
$this->send('GTACNTALS '.$accountName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
} else {
return '';
}
}
function SetAccountAliases($accountName,$aliases) {
if($accountName == '' || !is_array($aliases))
die('usage: $cli->SetAccountAliases(string $accountName, array $aliases)'."\n");
$this->send('STACNTALS '.$accountName.' '.$this->printWords($aliases));
$this->_parseResponse();
}
function GetAccountRules($accountName) {
if($accountName == '')
die('usage: $cli->GetAccountRules(string $accountName)'."\n");
$this->send('GTACNTRL '.$accountName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function SetAccountRules($accountName,$rules) {
if($accountName == '' || !is_array($rules))
die('usage: $cli->SetAccountRules(string $accountName, array $rules)'."\n");
$this->send('STACNTRL '.$accountName.' '.$this->printWords($rules));
$this->_parseResponse();
}
function GetAccountRPOP($accountName) {
if($accountName == '')
die('usage: $cli->GetAccountRPOP(string $accountName)'."\n");
$this->send('GetAccountRPOP '.$accountName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function SetAccountRPOP($accountName,$details) {
if($accountName == '' || !is_array($details))
die('usage: $cli->SetAccountRPOP(string $accountName, array $details)'."\n");
$this->send('SetAccountRPOP '.$accountName.' '.$this->printWords($details));
$this->_parseResponse();
}
function GetAccountRights($accountName) {
if($accountName == '')
die('usage: $cli->GetAccountRights(string $accountName)'."\n");
$this->send('GTACNTRGHT '.$accountName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function SetAccountRights($accountName,$rights) {
if($accountName == '' || !is_array($rights))
die('usage: $cli->SetAccountRights(string $accountName, array $rights)'."\n");
$this->send('STACNTRGHT '.$accountName.' '.$this->printWords($rights));
$this->_parseResponse();
}
function GetAccountInfo($accountName,$key) {
if($accountName == '' || $key == '')
die('usage: $cli->GetAccountInfo(string $accountName, string $key)'."\n");
$this->send('GTACNTINF '.$accountName.' Key '.$key);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function GetWebUser($accountName) {
if($accountName == '')
die('usage: $cli->GetWebUser(string $accountName)'."\n");
$this->send('GTWUSR '.$accountName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function SetWebUser($accountName,$settings) {
if($accountName == '' || !is_array($settings))
die('usage: $cli->SetWebUser(string $accountName, array $settings)'."\n");
$this->send('STWUSR '.$accountName.' '.$this->printWords($settings));
$this->_parseResponse();
}
//////////////////////////////////////////////////
// Group commands
function ListGroups($domainName='') {
$command = 'ListGroups';
if($domainName != '') $command .= ' '.$domainName;
$this->send($command);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function CreateGroup($groupName,$settings='') {
if($groupName == '')
die('usage: $cli->CreateGroup(string $groupName[, array $settings])'."\n");
$command = 'CreateGroup '.$groupName;
if(is_array($settings)) $command .= ' '.$this->printWords($settings);
$this->send($command);
$this->_parseResponse();
}
function RenameGroup($oldGroupName,$newGroupName) {
if($oldGroupName == '' || $newGroupName == '')
die('usage: $cli->RenameGroup(string $oldGroupName, string $newGroupName)'."\n");
$this->send('RenameGroup '.$oldGroupName.' into '.$newGroupName);
$this->_parseResponse();
}
function DeleteGroup($groupName) {
if($groupName == '')
die('usage: $cli->DeleteGroup(string $groupName)'."\n");
$this->send('DeleteGroup '.$groupName);
$this->_parseResponse();
}
function GetGroup($groupName) {
if($groupName == '')
die('usage: $cli->GetGroup(string $groupName)'."\n");
$this->send('GetGroup '.$groupName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function SetGroup($groupName,$settings) {
if($groupName == '' || !is_array($settings))
die('usage: $cli->SetGroup(string $groupName, array $settings)'."\n");
$this->send('SetGroup '.$groupName.' '.$this->printWords($settings));
$this->_parseResponse();
}
//////////////////////////////////////////////////
// Forwarder commands
function ListForwarders($domainName='') {
$command = 'ListForwarders';
if($domainName != '') $command .= ' '.$domainName;
$this->send($command);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function CreateForwarder($forwarderName,$address) {
if($forwarderName == '' || $address == '')
die('usage: $cli->CreateForwarder(string $forwarderName, string $address)'."\n");
$this->send('CreateForwarder '.$forwarderName.' TO '.$this->printWords($address));
$this->_parseResponse();
}
function DeleteForwarder($forwarderName) {
if($forwarderName == '')
die('usage: $cli->DeleteForwarder(string $forwarderName)'."\n");
$this->send('DeleteForwarder '.$forwarderName);
$this->_parseResponse();
}
function GetForwarder($forwarderName) {
if($forwarderName == '')
die('usage: $cli->GetForwarder(string $forwarderName)'."\n");
$this->send('GetForwarder '.$forwarderName);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
//////////////////////////////////////////////////
// Domain commands
function ListDomains() {
$this->send('LSTDMN');
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function MainDomainName() {
$this->send('MainDomainName');
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function GetDomainSettings($domainName='') {
$command = 'GTDMN';
if($domainName != '') $command .= ' '.$domainName;
$this->send($command);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function GetDomain($domainName='') {
return $this->GetDomainSettings($domainName='');
}
function GetDomainEffectiveSettings($domainName='') {
$command = 'GetDomainEffectiveSettings';
if($domainName != '') $command .= ' '.$domainName;
$this->send($command);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function UpdateDomainSettings($params) {
if(!array_key_exists("domainName",$params)) {
$err = 'usage:'."\n";
$err .= ' $DomainData = array('."\n";
$err .= ' "domainName" => "domain.com",'."\n";
$err .= ' "settings" => array('."\n";
$err .= ' "WebUserCache" => "NO",'."\n";
$err .= ' "AutoSignup" => "YES"'."\n";
$err .= ' )'."\n";
$err .= ' );'."\n";
$err .= ' $cli->UpdateDomainSettings(array $DomainData);'."\n";
die("$err");
} else {
$command = 'UPDDMN '.$params["domainName"];
if(is_array($params["settings"]))
$command .= ' '.$this->printWords($params["settings"]);
$this->send($command);
$this->_parseResponse();
}
}
function UpdateDomain($params) {
return $this->UpdateDomainSettings($params);
}
function SetDomainSettings($params) {
if(!array_key_exists("domainName",$params)) {
$err = 'usage:'."\n";
$err .= ' $DomainData = array('."\n";
$err .= ' "domainName" => "domain.com",'."\n";
$err .= ' "settings" => array('."\n";
$err .= ' "WebUserCache" => "NO",'."\n";
$err .= ' "AutoSignup" => "YES"'."\n";
$err .= ' )'."\n";
$err .= ' );'."\n";
$err .= ' $cli->SetDomainSettings(array $DomainData);'."\n";
die("$err");
} else {
$command = 'SetDomainSettings '.$params["domainName"];
if(is_array($params["settings"]))
$command .= ' '.$this->printWords($params["settings"]);
$this->send($command);
$this->_parseResponse();
}
}
function SetDomain($params) {
return $this->SetDomainSettings($params);
}
function CreateDomain($domainName,$params='') {
if($domainName == '')
die('usage: $cli->CreateDomain(string $domainName[, array $settings])'."\n");
$command = 'CRDMN '.$domainName;
if(is_array($params)) $command .= ' '.$this->printWords($params);
$this->send($command);
$this->_parseResponse();
}
function RenameDomain($oldDomainName,$newDomainName) {
if($oldDomainName == '' || $newDomainName == '')
die('usage: $cli->RenameDomain(string $oldDomainName, string $newDomainName)'."\n");
$this->send('RNDMN '.$oldDomainName.' into '.$newDomainName);
$this->_parseResponse();
}
function DeleteDomain($domainName,$force=0) {
if($domainName == '')
die('usage: $cli->DeleteDomain(string $domainName[, bool $force])'."\n");
$command = 'DLDMN '.$domainName;
if($force > 0)
$command .= ' force';
$this->send($command);
$this->_parseResponse();
}
function CreateSharedDomain($domainName,$params = '') {
if($domainName == '')
die('usage: $cli->CreateSharedDomain(string $domainName[, array $params])'."\n");
$command = 'CreateSharedDomain '.$domainName;
if(is_array($params))
$command .= ' '.$this->printWords($params);
$this->send($command);
$this->_parseResponse();
}
function CreateDirectoryDomain($domainName,$params = '') {
if($domainName == '')
die('usage: $cli->CreateDirectoryDomain(string $domainName[, array $params])'."\n");
$command = 'CreateDirectoryDomain '.$domainName;
if(is_array($params))
$command .= ' '.$this->printWords($params);
$this->send($command);
$this->_parseResponse();
}
function ReloadDirectoryDomains() {
$this->send('ReloadDirectoryDomains');
$this->_parseResponse();
}
function GetDomainAliases($domainName='') {
$command = 'GTDMNALS';
if($domainName != '') $command .= ' '.$domainName;
$this->send($command);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function SetDomainAliases($domainName, $aliases) {
if($domainName == '' || !is_array($aliases))
die('usage: $cli->SetDomainAliases(string $domainName, array $aliases)'."\n");
$this->send('STDMNALS '.$domainName.' '.$this->printWords($aliases));
$this->_parseResponse();
}
function ListAdminDomains($domainName='') {
$command = 'ListAdminDomains';
if($domainName != '') $command .= ' '.$domainName;
$this->send($command);
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function GetDirectoryIntegration() {
$this->send('GetDirectoryIntegration');
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function SetDirectoryIntegration($settings) {
if(!is_array($settings))
die('usage: $cli->SetDirectoryIntegration(array $settings)'."\n");
$this->send('SetDirectoryIntegration '.$this->printWords($settings));
$this->_parseResponse();
}
function GetClusterDirectoryIntegration() {
$this->send('GetClusterDirectoryIntegration');
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function SetClusterDirectoryIntegration($settings) {
if(!is_array($settings))
die('usage: $cli->SetClusterDirectoryIntegration(array $settings)'."\n");
$this->send('SetClusterDirectoryIntegration '.$this->printWords($settings));
$this->_parseResponse();
}
function GetDomainDefaults() {
$this->send('GTDMNDFL');
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function UpdateDomainDefaults($settings) {
if(!is_array($settings))
die('usage: $cli->UpdateDomainDefaults(array $settings)'."\n");
$this->send('UPDDMNDFL '.$this->printWords($settings));
$this->_parseResponse();
}
function SetDomainDefaults($settings) {
if(!is_array($settings))
die('usage: $cli->SetDomainDefaults(array $settings)'."\n");
$this->send('SetDomainDefaults '.$this->printWords($settings));
$this->_parseResponse();
}
function GetClusterDomainDefaults() {
$this->send('GetClusterDomainDefaults');
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function UpdateClusterDomainDefaults($settings) {
if(!is_array($settings))
die('usage: $cli->UpdateClusterDomainDefaults(array $settings)'."\n");
$this->send('UpdateClusterDomainDefaults '.$this->printWords($settings));
$this->_parseResponse();
}
function SetClusterDomainDefaults($settings) {
if(!is_array($settings))
die('usage: $cli->SetClusterDomainDefaults(array $settings)'."\n");
$this->send('SetClusterDomainDefaults '.$this->printWords($settings));
$this->_parseResponse();
}
function GetAllAccountsDefaults() {
$this->send('GTALACNDFL');
$this->_parseResponse();
if($this->isSuccess()) {
return $this->parseWords($this->getWords());
}
}
function UpdateAllAccountsDefaults($settings) {
if(!is_array($settings))
die('usage: $cli->UpdateAllAccountsDefaults(array $settings)'."\n");