Алгоритм открытия услуги


После заказа и оплаты услуги, BILLmanager начинает процесс ее открытия, который состоит из нескольких этапов:

Проверка доменного имени

Проверяется указано или нет доменное имя при заказе. Если клиент оставил поле "Доменное имя" пустым, BILLmanager генерирует домен на основе шаблона, указанного в настройках тарифа. Когда домен генерируется автоматически, система "запоминает", что его необходимо создать на сервере для бесплатного доменного имени.

Назначение IP-адреса

Если услуге необходим выделенный IP-адрес, то BILLmanager отправляет API запрос в IPmanager на получение свободного адреса. 

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

Отправляется API запрос (user.add.finish) в ISPmanager для создания пользователя. В качестве параметров передаются значения ресурсов, установленные в шаблоне учетной записи ISPmanager и определенные в содержании тарифного плана BILLmanager. 

Одним из параметров является доменное имя. В качестве значения параметра передается имя домена, указанное при заказе услуги (или сгенерированное автоматически). Таким образом, вместе с пользователем автоматически создадутся в ISPmanager: WWW-домен, домен (DNS) и почтовый домен.

Если создается пользователь с лимитом на количество WWW-доменов — 0, то при создании пользователя WWW-домен не будет создан, но будут созданы почтовый домен и доменное имя (DNS). То же правило действует для почтового домена и доменного имени (DNS).

Обработка результата создания пользователя

Создание пользователя в ISPmamager может завершиться одним из следующих ответов:

  • Ошибка ERROR Error: Type: 'exists' Object: 'user' Value: '<имя пользователя>', что означает, что пользователь с таким именем уже существует. В таком случае повторяется попытка создания пользователя, но к его имени добавляется цифра 1, например user_665 становится user_6651. Если существует и user_6651, то повторяется попытка создания пользователя, но к его имени добавляется цифра 2, получается user_6652 и т.д. пока процесс создания пользователя не завершится успешно.
  • Ошибка ERROR Error: Type: 'exists' Object: 'name' Value: '<имя домена>', означающая, что пользователь создается с WWW-доменом, который уже существует. В таком случае повторяется попытка создания пользователя, но без доменного имени. 
  • OK — пользователь был создан успешно.

Если биллинговая платформа не получила от ISPmanager ни сигнала об успешном завершении операции, ни явной ошибки, то BILLmanager 10 раз с интервалом в 1 секунду обращается к ISPmanager и просматривает список всех пользователей на наличие создаваемого. Если пользователь обнаруживается — операция считается завершенной успешно. В противном случае операция создания пользователя завершается ошибкой (Операция "повисает" в разделе "Текущие операции" с пометкой об ошибке).

После успешного создания пользователя, BILLmanager начинает собирать данные о вновь созданной услуге.

Сбор данных услуги

BILLmanager отправляет API запрос (domain.record) в ISPmanager, чтобы узнать сервера имен домена. Эта информация необходима для уведомления об открытии услуги. Если запрос завершился ошибкой - ошибка игнорируется.

Если аккаунт пользователя в ISPmanager создан без выделенного IP-адреса, то биллинговая платформа отправляет API запрос (ipaddr , ipaddr.list - для Lite) для определения списка IP-адресов, доступных пользователю. Эта информация необходима для уведомления об открытии услуги. Если этот запрос завершается ошибкой - операция открытия услуги считается неудачной и отмечается ошибкой.

После успешного сбора информации об услуге, она активируется.

Активация услуги

Статус услуги в BILLmanager меняется на "Активен". Клиенту отправляется письмо об открытии услуги.

Создание бесплатного доменного имени

Чтобы создать запись поддомена, выполняется API запрос (domain.record.edit) к серверу для бесплатного доменного имени. 

Указание PTR записи

Если услуга создана с выделенным IP-адресом, в IPmanager отправляется API запрос (ip.edit) для указания домена услуги в качестве PTR для IP-адреса.

Синхронизация


Модуль обработки ISPmanager периодически выполняет синхронизацию статуса и ресурсов (лимитов/ограничений) услуги. Соответствие услуги в BILLmanager с пользователем в ISPmanager происходит по имени пользователя. То есть значение поля Имя пользователя в разделе Товары/Услуги → Виртуальный хостинг, соответствует имени пользователя в ISPmanager.

Синхронизация статуса

При cинхронизации статуса услуг, выбирается весь список услуг в биллинговой платформе, подключенных к обработчику ISPmanager, сравнивается статус услуги в BILLmanager и состояние пользователя в ISPmanager.

Если в BILLmanager услуга имеет статус "Активен", а в ISPmanager соответствующий пользователь выключен, то биллинговая платформа включает пользователя. Если в BILLmanager услуга в статусе "Остановлен", а в ISPmanager пользователь включен, то отправляется запрос на выключение пользователя.

Синхронизация статуса выполняется каждый день.

Синхронизация ресурсов

Раз в три дня выполняется синхронизация шаблонов учетной записи. В настройках тарифного плана услуги (на стороне BILLmanager) и параметрах пользователя (на стороне ISPmanager) должен быть указан один и тот же шаблон. 

Если шаблон совпадает , то выполняется проверка значений ресурсов. Значения ресурсов, указанные в BILLmanager, должны совпадать со значениями, указанными в ISPmanager. Когда значение какого-либо ресурса не совпадает, BILLmanager выполняет API запрос (user.edit) к ISPmanager и меняет значение ресурса на то, которое установлено в биллинговой платформе.

Если шаблон не совпадает, BILLmanager выполняет API запрос (user.edit) к ISPmanager, применяет шаблон, указанный в биллинговой платформе, после этого применяет значения ресурсов, указанные на стороне BILLmanager.

Для ISPmanager Business синхронизация ресурсов получает название узла кластера, на котором находится пользователь, и сохраняет эту информацию в BILLmanager.

За синхронизацию статуса и ресурсов отвечает задание планировщика cron — processing.syncserver.cron. 

Логирование


Лог взаимодействия биллинговой платформы с ISPmanager записывается в файл  '/usr/local/mgr5/var/pmispmgr5.log'

В логе можно определить выполняемые операции по следующим записям:

  • 'processing/pmispmgr5 --runningoperation <код текущей операции> -- command open ' — открытие услуги;
  • 'processing/pmispmgr5 --runningoperation <код текущей операции>   --command close'  —закрытие услуги;
  • 'processing/pmispmgr5 --command sync_server --module <код модуля обработки>'  — синхронизация данных;
  • 'processing/pmispmgr5 --command stat --module <код модуля обработки>' — сбор статистики.

Сбор статистики


Модуль обработки ISPmanager поддерживает сбор статистики по некоторым ресурсам. Статистика всегда собирается за предыдущий день

За сбор статистики отвечает задание планировщика cron — statdaily.cron.