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
- Настройте Telegram уведомления по инструкции
- Создайте шаблон для формирования уведомления в Telegram через HTTP:
{{
toJson({
chat_id = user.settings.telegram.chat_id
text = "test message"
})
}}
- Создайте группу серверов с транспортом HTTP
- Создайте сервер в этой группе, укажите Хост:
https://api.telegram.org/bot{{ config.telegram.token }}/sendMessage
и укажите созданый шаблон на 2 шаге.
- Привяжите необходимое событие к этой группе серверов (созданную на шаге 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 мог отправлять сообщения Вашим пользователям, необходимо:
- Создать Telegram Bot-а, с помощью бота @BotFather (https://telegram.me/BotFather)
- В админке, в “Настройки” -> “Конфигурация”, необходимо сохранить Telegram Token, полученный на предыдущем шаге
- Создайте шаблон сообщения в админке, которое вы хотите отправлять своим пользователям (“Настройки” -> “Шаблоны”)
- Создайте нужное событие. Привяжите Ваш шаблон к нужному событию. В качестве группы серверов необходимо указать “Telegram уведомления”, или любую другую группу, транспорт которой “telegram”
- Дайте Вашему пользователю ссылку на вашего бота, чтобы он мог его себе добавить. После добавления бота Ваш клиент сможет получать от него уведомления
В случаях, когда Ваш клиент регистрировался в 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.
Примеры можно найти здесь.