Изменение конфигурации сервера передачей 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