Командный интерфейс CommuniGate Pro

Я уже писал цикл статей по миграции на CommuniGate Pro с Microsoft Exchange. Еще тогда я поймал себя на мысли, что у Exchange есть безумно удобный модуль для PowerShell, который может помочь вам при работе с массовыми операциями. И я решил на практике проверить какой командный интерфейс CommuniGate Pro может нам предложить.

Я решил на практике проверить какой же инструмент для массовых операций подготовила для нас команда разработчиков CommuniGate Pro. Мнение лично мое, но модуль PowerShell для Exchange гораздо более мощный инструмент, чем командный интерфейс CGP. Однако, наличие хотя командного интерфейса (пусть и на самого мощного) намного лучше полного отсутствия такового.

Как работает командный интерфейс CommuniGate Pro

Как указано в документации есть несколько способов подключения к командному интерфейсу CommuniGate Pro:

В этой публикации я буду рассматривать только первый метод – через TCP подключение. Для этого мы устанавливаем сессию к серверу на порта TCP/106. Например, через Telnet:

telnet 10.10.10.154 106

Ответ сервера:

Trying 10.10.10.154...
Connected to 10.10.10.154.
Escape character is '^]'.
200 itproblog.ru CommuniGate Pro PWD Server 6.3.13 ready <2.1667408887@itproblog.ru>

Теперь нам необходимо аутентифицироваться:

user postmaster
300 please send the PASS
pass Qwerty123
200 login OK, proceed

Команды не чувствительны к регистру. Вместо PASS вполне можно использовать pass.

Чего вот действительно не хватает, так это возможность конвейерного передачи выхода одной команды на вход другой команды (пайплайн).

Примеры запросов

Сценариев применения командного интерфейса может быть очень много – все зависит от решаемой задачи. Но я постараюсь рассмотреть какие-то типовые примеры для того, чтобы показать наглядно, как можно использовать командный интерфейс CGP. Я не буду повторять процедуру подключения к CLI и выполнению аутентификации – об этом мы с вами поговорили в разделе выше.

Полный перечень поддерживаемых запросов приведен на странице официальной документации.

Выполнять весь список запросов я тоже не вижу смысла т.к. механизм выполнения всех запросов однотипный – есть команды и в ряде случаев один или несколько параметров.

Получение списка пользователей

Давайте рассмотрим наш первый запрос. Начнем с простого и довольно распространенного сценария – посмотрим какие пользователи у нас есть в системе CommunigatePro.

LISTACCOUNTS

Отчет сервера:

200 data follow
{
  adm =  macnt;
  pbx =  macnt;
  pf01mig =  macnt;
  pf02mig =  macnt;
  postmaster =  macnt;
  public =  macnt;
  u1 =  macnt;
  u2 =  macnt;
  u3 =  macnt;
  u4 =  macnt;
  u5 =  macnt;
  u6 =  macnt;
  uu1 =  macnt;
}

Получение подробной информации о конкретном пользователе

Полный список пользователей мы получили в предыдущем запросе. Теперь давайте посмотрим, как можно получить информацию о конкретном пользователе:

GETACCOUNTEFFECTIVESETTINGS u1

Ответ от сервера:

200 data follow
{
  AccessModes =  All;
  AddMailTrailer =  YES;
  AddWebBanner =  YES;
  AirSyncAllowed =  "*";
  AirSyncSessionLimit =  10;
  ArchiveMessagesAfter =  never;
  AuthURI =  "ldaps://dc01.itproblog.ru:636/*@itproblog.ru";
  CallInpFlow =  ("-1", 3600);
  CallLogs =  YES;
  CallOutFlow =  ("-1", 3600);
  CallsLimit =  "-1";
  DefaultMailboxType =  SlicedMailbox;
  DefaultWebPage =  default.html;
  DeleteMessagesAfter =  never;
  DialogInfo =  YES;
  DialogToPresence =  NO;
  EncryptedMailboxesAllowed =  NO;
  EraseDeletedMessages =  NO;
  ExternalINBOX =  NO;
  ExtPassTTL =  immediately;
  ExtRcptTo =  "*";
  FailedLoginFlow =  (10, 60);
  HiddenLanguages =  "";
  HiddenSkins =  "";
  HiddenXIMSSModules =  "";
  IMAPSeesNonMail =  NO;
  IMAPSessionLimit =  20;
  IMLogs =  YES;
  LogLogin =  NO;
  LogProtocols =  NO;
  MailInpFlow =  (20, 15);
  MailOutFlow =  ("-1", 30);
  MailOutFlowRcpt =  ("-1", 30);
  MailOutMaxRcpt =  20;
  MailToAll =  YES;
  MaxAccountSize =  unlimited;
  MaxFileSize =  unlimited;
  MaxMailboxes =  "-1";
  MaxMailOutSize =  unlimited;
  MaxMessageSize =  unlimited;
  MaxRosterItems =  20;
  MaxSignalContacts =  10;
  MaxWebFiles =  1000;
  MaxWebSize =  100M;
  NotifyOutFlow =  (100, 15);
  OSUserName =  "*";
  PasswordChangeInterval =  never;
  PasswordComplexity =  "";
  PasswordEncryption =  A-crpt;
  PasswordMinLength =  6;
  PasswordRecovery =  YES;
  POPSessionFlow =  (5, 300);
  POPSessionLimit =  5;
  PSTNAreaCode =  "7(499)";
  PSTNEmergency =  "call=sip:112@telnum";
  PSTNFromName =  "$";
  PSTNGatewayAuthName =  "trial-*domain*";
  PSTNGatewayDomain =  pstn.communigate.ru;
  PSTNGatewayPassword =  dummy;
  PSTNSMSHost =  "";
  PWDAllowed =  YES;
  QuotaAlert =  80;
  QuotaNotice =  90;
  QuotaSuspend =  100;
  RequireAPOP =  NO;
  RestrictFromAddr =  "";
  RestrictFromName =  "";
  RPOPAllowed =  NO;
  RSIPAllowed =  NO;
  RulesAllowed =  "Filter Only";
  SignalRulesAllowed =  Any;
  SIPIMMode =  YES;
  SyncMode =  NO;
  SyncServer =  "";
  SyncUserName =  "^0";
  SyncUserPassword =  "^0";
  UBFactor =  5;
  UseAppPassword =  YES;
  UseCertificateAuth =  NO;
  UseExtPassword =  NO;
  UseKerberosPassword =  YES;
  UseSysPassword =  NO;
  WebUserSessionLimit =  10;
  X2AuthCoolout =  1d;
  X2AuthForAll =  NO;
  X2AuthForWebUser =  NO;
  X2AuthForXIMSS =  NO;
  XIMSSSessionLimit =  10;
  XMPPSessionLimit =  10;
}

Получить список настроенных доменов на сервере

Пример запроса:

LISTDOMAINS

Пример ответа от сервера:

200 data follow
(itproblog.ru)

Обновление пароля пользователя

Чтобы обновить пароль конкретного пользователя выполните следующий запрос:

SETACCOUNTPASSWORD u1 PASSWORD Qwerty123

Ответ со стороны сервера:

200 OK

Создание пользователя

Чтобы создать пользователя и обеспечить ему возможность работы с веб интерфейсом почтового клиента необходимо две операции: создание пользователя и установка пароля пользователя.

Выполним эти операции. Сначала создадим пользователя:

CREATEACCOUNT u6
200 OK

Затем установим пароль для вновь созданного пользователя:

SETACCOUNTPASSWORD u6 PASSWORD Qwerty123
200 OK

После этого пользователь, который был создан через командный интерфейс, сможетподключиться к веб клиенту Samoware.

Сценарии применения

Я сделал для себя следующий вывод. Командный интерфейс сервера CommuniGate Pro далеко не такой мощный и гибкий как, например, модуль PowerShell для Microsoft Exchange. Однако, если вы разрабатываете какое-то приложение, которое должно как-то взаимодействовать с сервером CGP по его API, то этот инструмент будет вам очень полезен. Так же командный интерфейс CGP будет удобно использовать в Bash скриптах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *