This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Серверы

SHM использует Ваши серверы для управления услугами. Способ взаимодействия с Вашими серверами мы называем “Транспорт”.

Для удобства, все серверы добавляются в “Группы Серверов”. Каждой группе серверов назначается транспорт.

Все доступные настройки для серверов можно увидеть в интерфейсе API.

Группы серверов

Группы серверов используются для объединения однотипных серверов в группу.

При первом создании услуги, сервер выбирается из группы серверов по определенным правилам, и сохраняется как server_id в раздел settings как настройки для услуги пользователя (us.settings.server_id).

Все последущие команды для этой услуги будут выполняться на выбранном сервере.

Все доступные настройки для групп серверов можно увидеть в API.

1 - Транспорт

Транспорт - способ (протокол) взаимодействия с Вашими серверами.

1.1 - HTTP

HTTP (HTTPS) - самый распространенный протокол в сети Интернет.

В этом разделе описывается способ настройки транспорта HTTP.

Настройки

Хост (host)
адрес сервера, например: https://domain.com

Можно использовать шаблоны, например: https://api.telegram.org/bot{{ config.telegram.token }}/sendMessage

Метод (method)
Метод HTTP: GET, POST, PUT, DELETE. По-умолчанию используется POST.
Шаблон (template_id)
Шаблон для формирования PAYLOAD DATA (context). Используется для POST и PUT методов. Для остальных можно указать любой.
content_type
По-умолчанию установлен в значение: application/json; charset=utf-8
headers
Заголовки, например: {"Authorization":"Basic YWRtaW46YWRtaW4","Cache-Control":"no-cache"}
timeout
Таймаут HTTP сервера в секундах. По-умолчанию 10 сек
verify_hostname
Установите этот параметр в значение 0, если не требуется проверка SSL сертификата на валидность (самоподписный сертификат)

Примеры

Отправка сообщения в Telegram (sendMessage)

https://core.telegram.org/bots/api#sendmessage

  1. Настройте Telegram уведомления по инструкции
  2. Создайте шаблон для формирования уведомления в Telegram через HTTP:
{{
  toJson({
    chat_id = user.settings.telegram.chat_id
    text = "test message"
  })
}}
  1. Создайте группу серверов с транспортом HTTP
  2. Создайте сервер в этой группе, укажите Хост: https://api.telegram.org/bot{{ config.telegram.token }}/sendMessage и укажите созданый шаблон на 2 шаге.
  3. Привяжите необходимое событие к этой группе серверов (созданную на шаге 3)

Теперь, когда событие наступит, SHM выполнит вот такую команду:

curl https://api.telegram.org/bot2836119681:AAEyvDasDFC-Y98xmYOhLni8p2bhshjkhio/sendMessage \
    -X POST \
    -H 'Content-Type: application/json; charset=utf-8' \
    -d '{"chat_id":1234567890,"text":"test message"}'

Формирование QueryString для GET запросов

Используйте ф-ию toQueryString() для формирования аргументов для GET запросов.

Пример:

{{
  toQueryString(
    A = 1
    text = "test message"
    qaz = "Привет Мир "
  )
}} 

Вернет строку вида: text=test%20message&A=1&qaz=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%9C%D0%B8%D1%80%20, которая будет автоматически добавлена к URI.

1.2 - SSH

SSH (Secure Shell) - выполнение команд на Ваших серверах по средствам протокола SSH.

В этом разделе описывается способ настройки транспорта SSH.

Настройки

Хост (host)
адрес сервера SSH, например: root@1.2.3.4
port
порт SSH сервера. По-умолчанию 22
timeout
Таймаут SSH сервера в секундах. По-умолчанию 10 сек
Ключ (key_id)
SSH ключ для доступа на сервер
Команда (cmd)
Произвольная shell команда. Используется как команда по-умолчанию и для тестирования работы SSH. Реальную команду удобно прописывать в События услуги
proxy_jump
Если ваш сервер находится внутри другого сервера (виртуальный сервер: OpenVZ, LXC, KVM…), то эту настройку можно использовать для указания реального, внешнего сервера. Сначала SHM подключиться к этому серверу, после чего, подключиться к Хост (host).

1.3 - Mail

Транспорт “Mail” служит для отправки писем.

Письма формируются с помощью Шаблонов, а шаблоны привязываются к Событиям услуг

Настройки

Хост (host)
адрес сервера, например: smtp.mailgun.org:587
user
Имя пользователя для авторизации на почтовом сервере (не обязательное)
password
Пароль для авторизации на почтовом сервере (не обязательное)
from
Адрес отправителя письма. По-умолчанию берется из config->mail->from
from_name
Поле “От-кого”. По-умолчанию берется из config->mail->from_name или “SHM”
subject
Тема письма. По-умолчанию берется из config->mail->subject или “SHM”
to
email адресата. Пытается получить это поле автоматически из логина клиента или его профиля
bcc
email адрес скрытой копии. Можно использовать в отладочных целях, для контроля отправляемых писем (не обязательное)
template_id
Идентификатор шаблона, по которому формируется тело письма
message
Простое текстовое сообщение для отправки. Используется только, если template_id не задан

1.4 - Telegram

Telegram - популярный мессенджер (https://telegram.org/)

В этом разделе описывается способ настройки транспорта Telegram.

Транспорт Telegram умеет как просто отправлять уведомления, так и работать в качестве полноценного бота: регистрировать клиентов, услуги, пополнять баланс и т.п.

Telegram уведомления

flowchart LR
    A([SHM]) --> B(Событие) -->С(Шаблон) --> D(Telegram API) --> E(Telegram client)

Для того, чтобы SHM мог отправлять сообщения Вашим пользователям, необходимо:

  1. Создать Telegram Bot-а, с помощью бота @BotFather (https://telegram.me/BotFather)
  2. В админке, в “Настройки” -> “Конфигурация”, необходимо сохранить Telegram Token, полученный на предыдущем шаге
  3. Создайте шаблон сообщения в админке, которое вы хотите отправлять своим пользователям (“Настройки” -> “Шаблоны”)
  4. Создайте нужное событие. Привяжите Ваш шаблон к нужному событию. В качестве группы серверов необходимо указать “Telegram уведомления”, или любую другую группу, транспорт которой “telegram”
  5. Дайте Вашему пользователю ссылку на вашего бота, чтобы он мог его себе добавить. После добавления бота Ваш клиент сможет получать от него уведомления

В случаях, когда Ваш клиент регистрировался в SHM НЕ через Telegram bot-а, необходимо указать его логин telegram в его профиле (кабинете)

Telegram bot

flowchart LR
    A(Telegram client) <--> B(Telegram API) <--> С([SHM\ntelegram_bot])

Для работы полноценного бота нужно:

  • Выполнить шаги 1 и 2 из предыдущего раздела (Telegram уведомления), если еще не выполнены.
  • Настроить Telegram API, сообщить ему адрес, куда отправлять запросы от клиента (от бота). Для этого скачайте bash скрипт. Перед запуском скрипта необходимо его отредактировать, записать в него свой token и HTTP адрес SHM. Выполните скрипт.
  • Проверьте наличие шаблона telegram_bot. Внесите в него изменения по своему усмотрению.
  • Запустите бота (/start). Если всё настроено верно, вы увидите приветствие.

Telegram bot - использует шаблон telegram_bot. В шаблоне заложена вся логика бота.

Более подробно о шаблоне Telegram читайте здесь: Шаблон Telegram bot

1.5 - LOCAL

LOCAL - локальный транспорт: код выполняется на сервере SHM.

Этот транспорт удобно использовать когда требуется выполнить шаблон средствами самого SHM. Примеры можно найти здесь.