API

    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.