Skip to content

Изменение конфигурации сервера передачей JSON объекта

Измененить настройки сервера Flussonic можно отправкой JSON объектов в HTTP API вызовах.

Изменение конфигурации сервера передачей JSON объекта (modify_config)

Вызов modify_config — это часть HTTP API, позволяет редактировать фрагмент конфигурационного файла Flussonic и сохранять изменения.

URL запроса: /flussonic/api/modify_config

Параметры:

  • HTTP request payload (обязательный параметр) — JSON объект с фрагментом конфигурации. Этот фрагмент заменит или будет добавлен в существующую конфигурацию.

  • async=true — этот параметр необходим если команда выполняется слишком долго.

    Команда выполняется в два этапа — сохранение конфигурационного файла и применение новой конфигурации к серверу. Применение конфигурации может занять много времени в случае большого числа потоков на сервере или при сетевой установке Flussonic. Поэтому мы добавили возможность выбрать синхронный и асинхронный способ выполнения modify_config.

    По умолчанию, ответ от 'modify_config' приходит только после успешного применения конфигурации на сервере Flussonic (синхронное выполнение).

    При асинхронном выполнении modify_config вернёт первый ответ (OK) сразу после успешного сохранения файла flussonic.conf, и ещё раз — когда применится новая конфигурация. Это позволяет быстрее получить ответ о том, что новая конфигурация не содержит ошибок и будет принята.

    Пример: /flussonic/api/modify_config?async=true.

Ответ: Новая полная конфигурация сервера в формате JSON.

На вход передаётся конфиг в виде JSON. Передаваемый конфиг объединяется с рабочим конфигом на сервере, и результат сохраняется на диск в текстовый файл /etc/flussonic/flussonic.conf.

Обратите внимание, что передаётся лишь разница между старым конфигом и новым.

Поля в передаваемом объекте соответствуют параметрам текстового файла с конфигурацией. Группы объектов, такие как потоки и префиксы публикации, группируются внутри полей "streams" и "lives". Значение некоторых параметров тоже представляет собой объект, а не строку.

Для того, чтобы удалить параметр, надо задать ему значение null.

Как правильно указывать параметры в JSON формате

Узнать, как именно должен быть представлен в виде JSON какой-то определённый параметр, можно с помощью вызова API read_config, который покажет существующую конфигурацию Flussonic.

Пример. Авторизация

Допустим, уже включена глобальная авторизация, http backend с дополнительно передаваемым параметром:

auth http://localhost:4567/auth secret=xyz;

Мы хотим вместо этого использовать скрипт myscript.lua, и передавать ему ещё один параметр mykey=123 в дополнение к secret=xyz.

Для этого надо передать такой JSON объект:

{"auth": {"url": "myscript.lua", "extra": {"mykey": "123"}}}

В результате в конфиге сохранится:

auth myscript.lua mykey=123 secret=xyz;

Чтобы отключить авторизацию, надо передать {"auth": null}.

Пример. Операции с потоками

Доступ к настройкам потока происходит через поле "streams", которому передаётся объект с потоками. Название потока является ключом.

Например, надо явно отключить авторизацию на потоке channel_01. Для этого надо задать URL false:

'{"streams": {"channel_01": {"auth": {"url": false}}}}'

В результате в настройки этого потока попадёт параметр auth со значением false:

stream channel_01 {
   url hls://myvideo.com/mylive;
   auth false;
   ...
}

Источников у потока может быть несколько, поэтому они представлены в виде массива "urls":

{"streams":
  {"channel_01":
    {"urls": [{"url": "tshttp://example.com/mystream"},
              {"url": "udp://239.1.1.1:1234"}
   ]}}}

Как удалить поток:

'{"streams" : {"channel_01" : null}}'

Покажем пример запроса на удаление потока через curl:

curl -d '{"streams" : {"test1" : null}}' http://ADMIN:PASSWORD@FLUSSONIC:80/flussonic/api/modify_config