Инструменты пользователя

Инструменты сайта


commands

Команды

Команды привязываются к событиям для выполнения внешних скриптов. Обычно, внешние скрипты создают, активируют, блокируют и удаляют услуги на серверах (нодах). Так же реализуются и все возможные нотификации (уведомления) клиентов.

К каждому событию можно привязать несколько команд. Например, первая команда создает услугу на сервере, а вторая отправляет email клиенту с реквизитами этой услуги.

Так некоторые команды мы можем отправлять через SSH или HTTP, а некоторые через SMTP. Это мы называем Транспортом.

Для отправки команды на сервер мы должны выбрать транспорт, а затем указать саму команду и её аргументы. Например, мы хотим отправить команду для создания новой услуги (например «VPN Server») на нашу ноду, с помощью SSH. Для этого, мы должны выбрать транспорт «SSH» и передать ему нашу команду.

Для того, чтобы наш сервер мог создать услугу именно для нашего клиента, мы передадим идентификатор услуги (не клиента, т.к. у клиента может быть несколько услуг). Идентификтор услуги мы можем передать так: ${id}. Так же, мы должны сгенерировать пароль для услуги и передать его серверу: ${generate_and_store_passwd}.

В итоге, получим команду:

vpn create --user=${id} --password=${generate_and_store_passwd}

Переменные

Вы можете использовать следующие переменные в аргументах ваших команд. Переменные заключаются в следующую конструкцию: ${ переменная }

Переменная Формат Описание
id скаляр идентификатор услуги
us JSON пользовательская услуга
parent JSON родительская услуга (если есть)
child JSON дочерняя услуга. Доступно только в событиях child_*
children ARRAY дочерние услуги
user JSON пользователь
service JSON услуга
task JSON задача
payload JSON payload
domains ARRAY домены
generate_and_store_passwd скаляр генерирует пароль и сохраняет его в параметрах услуги

Модификаторы

Выше описаны переменные, которые мы можем использовать в командах. Но почти всегда это большие JSON структуры. Для того, чтобы не передавать всю структуру, а только какое-то конкретное значение, мы можем использовать модификаторы.

Исходные данные:

{
  "service": {
    "id": 5,
    "name": "parent_service"
  },
  "children": [
    {
      "id": 6,
      "name": "first child service"
    },
    {
      "id": 7,
      "name": "second child service"
    }
  ]
}

Получаем имя сервиса: a.service.name

Получаем имя первого ребенка: a.children.0.name

service create ${a.service.name} ${a.children.0.name}
commands.txt · Последние изменения: 2018/09/30 10:34 — danuk