Алгоритм открытия услуги
После заказа и оплаты услуги BILLmanager начинает процесс её открытия, который состоит из нескольких этапов:
Проверка доменного имени
Проверяется указано или нет доменное имя при заказе. Если клиент оставил поле Доменное имя пустым, BILLmanager генерирует домен на основе шаблона, указанного в настройках тарифа. Когда домен генерируется автоматически, система "запоминает", что его необходимо создать на сервере для бесплатного доменного имени.
Назначение IP-адреса
Если услуге необходим выделенный IP-адрес, то выполняется назначение IP из пула адресов панели управления Plesk: Инструменты и настройки → Инструменты и ресурсы → IP-адреса.
Создание пользователя
Отправляется API-запрос в Plesk для создания пользователя. В качестве параметров передаются:
- логин новой учётной записи;
- пароль учётной записи. Генерируется автоматически;
- тарифный план на стороне Plesk;
- лимиты на использование ресурсов в рамках создаваемой подписки;
- "Параметры хостинга" из Plesk — набор параметров из настроек тарифного плана на стороне Plesk.
После выполнения запроса в базе данных биллинговой системы сохраняется информация о домене, сервере доменных имён, IP-адресе, идентификаторе (id) услуги, а также логин и пароль учётной записи
Обработка результата создания пользователя
Создание пользователя в Plesk может завершиться одним из следующих ответов:
- ошибка "ERROR Error: Type: 'exists' Object: 'user' Value: '<имя пользователя>'". Означает, что учётная запись с таким именем уже создана в системе. В таком случае будет использоваться существующая учётная запись;
- ошибка "ERROR Error: type: 'Plesk server result error. Error code: 1007. Error message: Incorrect name <имя домена>. This domain name already exists.'". Означает, что пользователь создаётся с WWW-доменом, который уже существует. В таком случае операция создания пользователя будет остановлена;
- сообщение OK. Означает, что пользователь был создан успешно.
Если биллинговая система не получила от Plesk ни сигнала об успешном завершении операции, ни явной ошибки, то BILLmanager 10 раз с интервалом в 1 секунду обращается к Plesk и просматривает список всех пользователей на наличие создаваемого. Если пользователь обнаруживается — операция считается завершённой успешно. В противном случае операция создания пользователя завершается ошибкой: Операция "повисает" в разделе Текущие операции с пометкой об ошибке.
Активация услуги
Статус услуги в BILLmanager меняется на Активен. Клиенту отправляется письмо об открытии услуги.
Создание бесплатного доменного имени
Чтобы создать запись поддомена, выполняется API-запрос (domain.record.edit) к серверу бесплатного доменного имени.
Синхронизация
Модуль обработки Plesk выполняет синхронизацию статуса и ресурсов (лимитов/ограничений) услуги после каждого изменения на стороне биллинговой системы. Соответствие услуги в BILLmanager с подпиской в Plesk происходит по имени пользователя. То есть значение поля Имя пользователя в разделе Товары/Услуги → Виртуальный хостинг соответствует имени учётной записи в Plesk.
За синхронизацию статуса и ресурсов услуги отвечает задание планировщика cron processing.syncserver.cron.
Синхронизация статуса услуги
При синхронизации статуса услуг выбирается весь список услуг в биллинговой системе, подключенных к обработчику Plesk, сравнивается статус услуги в BILLmanager и состояние подписки в Plesk.
Если в BILLmanager услуга имеет статус Активен, а в Plesk соответствующая подписка приостановлена, то биллинговая система активирует подписку. Если в BILLmanager услуга в статусе Остановлен, а в Plesk подписка активна, то отправляется запрос на приостановку подписки.
Остановка подписки на стороне панели управления Plesk повлечёт за собой остановку соответствующей услуги в биллинговой системе.
Синхронизация статуса выполняется каждый день.
Синхронизация ресурсов
Значения ресурсов услуги на стороне BILLmanager должны совпадать с ограничениями подписки на стороне Plesk. Если значения ресурсов не совпадают, то BILLmanager выполняет API-запрос к Plesk и меняет ограничения подписки на те, которые установлены в биллинговой системе.
Сбор статистики
Модуль обработки Plesk поддерживает сбор статистики по некоторым ресурсам. Статистика всегда собирается за предыдущий день.
За сбор статистики отвечает задание планировщика cron — statdaily.cron.
Логирование
Лог взаимодействия биллинговой системы с Plesk записывается в файл /usr/local/mgr5/var/pmplesk.log.
В логе можно определить выполняемые операции по следующим записям:
'processing/pmplesk --runningoperation <код текущей операции> --command open' — открытие услуги.
'processing/pmplesk --runningoperation <код текущей операции> --command close' — закрытие услуги.
'processing/pmplesk --command sync_server --module <код модуля обработки>' — синхронизация данных.
'processing/pmplesk --command stat --module <код модуля обработки>' — сбор статистики.