Документация COREmanager

Внешняя настройка приложений

ISPSystem

Иногда, после установки приложений, необходимо выполнить его первоначальную настройку в соответствии с определенными требованиями. Во всех продуктах ISPsystem на основе Core встроен механизм внешней настройки установленного приложения как при их непосредственной установке, так и при обновлении и в любой другой момент эксплуатации.

Как это работает


Во время установки любой из панелей управления ISPsystem 5-го поколения, после проверки лицензии, панель получает из лицензии специальный адрес сервера настройки "settingurl". Наличие этого  адреса сообщает панели о том, что для дальнейшей установки необходимо получить инструкции по указанному адресу.

Обратите внимание!

"settingurl" добавляется в лицензии пользователя, если для этого пользователя сделана соответствующая настройка в билинговой системе my.ispsystem.com.

Далее, панель выполняет переход по указанному адресу, где в качестве параметра запроса указывает идентификатор текущей лицензии.

Сервер производит поиск лицензии и в случае её обнаружения, возвращает XML-документ ответа зашифрованный при помощи алгоритма XXTEA и преобразованный в его шестнадцатеричное представление. В качестве ключа шифрования используется ключ активации лицензии.

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

Обратите внимание!

В случаях, когда серверу самостоятельно необходимо инициализировать внешнюю настройку, он производит вызов функции xset.up клиентской панели. После чего, панель начинает выполнение описанных выше действий и к параметрам запроса добавляет все параметры указанные при инициализации (вызове xset.up). Таким образом, функция "xset.up" является своего рода обратным вызовом.

XML-документ ответа

Формат ответа:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
  <func name="xset.up.param">
    <arg name="grant">x.x.x.x</arg>
  </func>
  <func name="имя функции">
    <arg name="имя параметра">значение</arg>
  </func>
  ...
</doc>

Таким образом, сервер присылает панели набор команд, которые необходимо выполнить в данный момент.

Список разрешенных на данный момент функций:

  • ipaddrlist.delete;
  • ipaddrlist.edit;
  • dnsparam;
  • xset.up.param;
  • slaveserver.delete;
  • slaveserver.edit;
  • backup2.settings.

Специальная функция xset.up.param, сообщает панели с каких IP-адресов разрешено инициализировать процесс внешней настройки.

Пример сервера внешней настройки

  1. Создайте файл /tmp/settings.py следующего вида:

    #!/usr/bin/env python
    
    from flup.server.fcgi import WSGIServer
    from xxtea import encrypt
    import struct
    
    def app(environ, start_response):
      status = '200 OK'
      response_headers = [('Content-type','text/plain')]
      start_response(status, response_headers)
    
    data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><doc><func name=\"ipaddrlist.edit\">ваши настройки</func></doc>"
      key = "1515848-bXy1Avllp4E5VnyI1394582400" # ключ активации моей лицензии! вам необходимо получить его из биллинга по переданному ID
      ln = len(data)
      data += "\0" * ((4 — (ln % 4)) & 3)
      data += struct.pack("i", ln);
    
    return [ encrypt(data, key, True) ]
    
    WSGIServer(app, bindAddress=('localhost', 9002)).run()
  2. В конфигурационный файл nginx добавьте следующий блок:

    server {
      listen 80;
      root /tmp;
      location /setting.py {
        fastcgi_pass 127.0.0.1:9002;
        include fastcgi_params;
      }
    }
  3. Запустите скрипт и перезапустите nginx.

Теперь, если в лицензию включить параметр settingurl с адресом вашего сервера и произвести установку панели, то будут выполнены инструкции, переданные вашим сервером.

Параметры settingurl


Панель будет обращаться к settingurl после установки/обновления каждого модуля.

В запросе будет передано два параметра. Это elid со значением install или update.

И module с именем модуля, которой был установлен (этот параметр имеет пустое значение для основного пакета)

Спасибо за ваш отзыв!
Была ли полезна статья?
Уточните, почему:

статья не соответствует названию

статью сложно понять

в статье нет ответа на мой вопрос

рекомендации из статьи не помогли

другая причина

Расскажите, что вам не понравилось в статье: