API (Application Programming Interface) - это набор методов, позволяющих получить доступ к функциям или данным Astra из внешних приложений.
Управление потоком:
set-stream
Этот метод создает, удаляет или изменяет потоки. Запрос:
{
"cmd": "set-stream",
"id": "...",
"stream": {
"enable": true,
"type": "spts",
"id": "...",
"name": "...",
"input: [ ... ],
"output: [ ... ]
}
}
- id – уникальный идентификатор потока. опция, необходима для модификации потока. для создания нового потока опция не нужна
- enable – обязательное поле. Включен или нет поток
- type – обязательное поле. тип потока. доступные значения: spts или mpts
- id – уникальный идентификатор потока
- name – имя потока
- input – list of the stream sources
- output – list of the stream destinations
Чтобы удалить stream, отправьте аналогичный запрос:
{
"cmd": "set-stream",
"id": "...",
"stream": {
"remove": true
}
}
get-stream
Получить параметры потока. Запрос:
{
"cmd": "get-stream",
"id": "..."
}
Ответ:
{
"get-stream": "ok",
"stream": { ... }
}
stream - контейнер содержит все параметры потока
toggle-stream
Включение/выключение потока. Запрос:
{
"cmd": "toggle-stream",
"id": "..."
}
restart-stream
Перезапустить поток. Запрос:
{
"cmd": "restart-stream",
"id": "..."
}
set-stream-input
Выбор активного входа. Работает только для потоков со следующими типами резервирования: passive, disable.
Запрос:
{
"cmd": "set-stream-input",
"id": "...",
"input": "..."
}
input-номер входа. Если опция не определена, будет запущен следующий вход после активного
Управление DVB
set-adapter
Метод создания, удаления или изменения адаптеров. Запрос:
{
"cmd": "set-adapter",
"id": "...",
"adapter": {
"enable": true,
"type": "...",
"id": "...",
"name": "...",
"adapter": 0,
"device": 0,
...
}
}
- id – уникальный идентификатор адаптера. опция, необходимая для модификации адаптера. для создания нового адаптера опция не нужна
- enable – обязательное поле. включен адаптер или нет
- type – обязательное поле. тип адаптера. возможные значения: S, S2, T, T2, ATSC, ISDBT, C, C/A, C/B, C/C
- id – уникальный идентификатор адаптера
- name – имя адаптера
- adapter – номер адаптера. /dev/dvb/adapter0
- device – номер устройства /dev/dvb/adapter0/frontend0
- другие параметры зависят от типа адаптера
Чтобы удалить адаптер и все связанные с ним потоки, отправьте аналогичный запрос:
{
"cmd": "set-adapter",
"id": "...",
"adapter": {
"remove": true
}
}
Внимание! Этот метод удаляет все связанные потоки!
get-adapter
Параметры адаптера. Запрос:
{
"cmd": "get-adapter",
"id": "..."
}
Ответ:
{
"get-adapter": "ok",
"adapter": { ... }
}
adapter – содержит все параметры потока
restart-adapter
Перезапуск адаптера и всех связанных с ним потоков. Запрос:
{
"cmd": "restart-adapter",
"id": "..."
}
Управление пользователями
set-user
Этот метод позволяет создавать, удалять или изменять пользователей. Запрос:
{
"cmd": "set-user",
"id": "...",
"user": {
"enable": true,
"type": 0,
"password": "...",
...
}
}
- id – уникальный идентификатор пользователя (логин)
- user – set of user data
- enable – обязательное поле. включена учетная запись или нет
- type – обязательное поле. тип пользователя: 1-администратор, 2 - Только чтение, 3 - обычный пользователь (без доступа к интерфейсу администрирования Astra)
- password – пароль
Чтобы удалить пользователя, отправьте аналогичный запрос:
{
"cmd": "set-user",
"id": "...",
"user": {
"remove": true
}
}
toggle-user
Включение/выключение пользователя. Запрос:
{
"cmd": "toggle-user",
"id": "..."
}
Сессии
Метод возвращает список текущих сессий. Формат ответа:
{
"cmd": "sessions"
}
Формат информации о сессии: SESSION-INFO:
{
"client_id": N,
"channel_id": "...",
"channel_name": "...",
"addr": "...",
"uptime": N
}
- client_id — уникальный номер сессии
- channel_id — ID потока
- channel_name — имя потока
- addr — IP-адрес клиента. Чтобы получить IP-адрес из заголовка HTTP X-Real-IP или X-Forwarded-For, при проксировании запросов необходимо использовать auth_request.
- uptime — время, в секундах, с начала сессии
Чтобы завершить сеанс, используйте метод закрытия сеанса:
{
"cmd": "close-session",
"id": N
}
- id — номер сессии
Другое
Перезапуск astra
Запрос:
{
"cmd": "restart"
}
Загрузка конфигурации
Запрос:
{
"cmd": "load"
}
Ответ-содержимое файла конфигурации.
Получение конфигурации пользователя:
{
"cmd": "get-user", "id": "login"
}
Получение статуса стрима
{
"cmd": "check-stream", "id": "a001", "status": true
}
Ответ-содержимое данных мониторинга.
{
"status": {
"onair": "...",
"active_input": "...",
"input": [
{
"scrambled": "...",
"cc_error": "...",
"bitrate": "...",
"pes_error": "..."
}
]
},
"check-stream": "ok"
}
- onair - статус стрима - активно ли вещание.
- active_input - номер активного входа.
секция INPUT - данные мониторинга:
-- scrambled - зашифрован ли поток.
-- cc_error - количество текущих CC ошибок.
-- bitrate - битрейт потока.
-- pes_error - количество текущих PES ошибок.
-- check-stream": "ok" - проверка стрима завершилась успехом.
Если передать запрос как:
{
"cmd": "check-stream", "id": "a001"
}
ответ будет только
"check-stream": "ok" или "check-stream": "false"
- статус без дополнительных данных.
Установить лицензию:
{
"cmd": "set-license", "license": "xxx"
}
Использование API
curl
curl -X POST \
-d '{"cmd": "api-method"}' \
http://admin:password@127.0.0.1:8000/control/
127.0.0.1:8000
адрес сервера и порт Astra
admin:password
имя пользователя и пароль администратора
php
$req = json_encode(array(
'cmd' => 'api-method',
));
$ch = curl_init("http://127.0.0.1:8000/control/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "admin:password");
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
127.0.0.1:8000
адрес сервера и порт Astra
admin:password
имя пользователя и пароль администратора
$res данные ответа Astra.