IceCast2 и URL авторизация

diehard

Member
А что народ, у кого-нить есть опыт сабжа? А то что-то я неделю уже бьюсь и каменные цветки не выходят. По инструкциям буржуинской части интернета - не работает...
 
что конкретно нужно
Не будучи веб-кодером, сложновато переплыть документацию айскаста, где написано о формировании некоего POST-запроса. По ходу пьесы выясняется что POST-запрос формирует айскаст и его нужно обработать в вашем в конфиге указанном файле. Ок. С этим разобрался.

А вот дальше начинается марлезонский балет в нескольких актах. Если заходить/логиниться в айскаст напрямую из браузера, то по требованию ввести логин и пароль - всё принимается и всё ок. Но если я ровно тот же запрос (предварительно скопировав содержимое из браузера )
1714968292918.png


пытаюсь послать из cURL или php-кода - от айскаста неизменно прилетает - 401... Не нравится ему мой запрос.

Хотя в заголовке честно присутствует Authorization: Basic dXNlcjpwYXNzd29yZA==

Отсюда вопрос: есть ли понимание, как правильно из того же php сформировать запрос к айскасту, чтобы он принял авторизацию без дальнейших плясок с 401?

Скажем, пользователь авторизуется на неком сайте, а дальше, при желании послушать нужное - содержимоей айскаста подгружается в каком-нить iframe
 
Последнее редактирование:
Не будучи веб-кодером, сложновато переплыть документацию айскаста, где написано о формировании некоего POST-запроса. По ходу пьесы выясняется что POST-запрос формирует айскаст и его нужно обработать в вашем в конфиге указанном файле. Ок. С этим разобрался.

А вот дальше начинается марлезонский балет в нескольких актах. Если заходить/логиниться в айскаст напрямую из браузера, то по требованию ввести логин и пароль - всё принимается и всё ок. Но если я ровно тот же запрос (предварительно скопировав содержимое из браузера )
Посмотреть вложение 6386

пытаюсь послать из cURL или php-кода - от айскаста неизменно прилетает - 401... Не нравится ему мой запрос.

Хотя в заголовке честно присутствует Authorization: Basic dXNlcjpwYXNzd29yZA==

Отсюда вопрос: есть ли понимание, как правильно из того же php сформировать запрос к айскасту, чтобы он принял авторизацию без дальнейших плясок с 401?

Скажем, пользователь авторизуется на неком сайте, а дальше, при желании послушать нужное - содержимоей айскаста подгружается в каком-нить iframe
<mount> <mount-name>/example.ogg</mount-name> <authentication type="htpasswd"> <option name="filename" value="myauth"/> <option name="allow_duplicate_users" value="0"/> </authentication></mount>

можно так по маунту сделать

если не подходит то вот так

<mount> <mount-name>/example.ogg</mount-name> <authentication type="url"> <option name="mount_add" value="http://auth.example.org/stream_start.php"/> <option name="mount_remove" value="http://auth.example.org/stream_end.php"/> <option name="listener_add" value="http://auth.example.org/listener_joined.php"/> <option name="listener_remove" value="http://auth.example.org/listener_left.php"/> <option name="username" value="user"/> <option name="password" value="pass"/> <option name="auth_header" value="icecast-auth-user: 1"/> <option name="timelimit_header" value="icecast-auth-timelimit:"/> <option name="headers" value="x-pragma,x-token"/> <option name="header_prefix" value="ClientHeader."/> <option name="stream_auth" value="http://auth.example.org/source.php"/> </authentication></mount>

тут указана авторизация через некий php скрипт

ссылка на документацию https://icecast.org/docs/icecast-trunk/auth/


можно и так action=stream_auth&mount=/stream.ogg&ip=192.0.2.0&server=icecast.example.org&port=8000&user=source&pass=password&admin=1
 
Последнее редактирование:
Спасибо за ответ. 🙏 Думаю, дальше можно не продолжать ;) Эту точку я прошёл года 3 назад, включая чтение документации по приведённой ссылке.

можно и так action=stream_auth&mount=/stream.ogg&ip=192.0.2.0&server=icecast.example.org&port=8000&user=source&pass=password&admin=1
Нет нельзя. Эту строку icecast отдаёт вашему скрипту (который типа "http://auth.example.org/source.php").

Мой вопрос был о создании условного index.php, который обращался бы к icecast и автоматически там логинился бы.

Что-то типа:
PHP:
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:8000/live');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, True);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, "playStream");
 
пытаюсь послать из cURL или php-кода - от айскаста неизменно прилетает - 401... Не нравится ему мой запрос.
По умолчанию один "пользователь" (т.е. логин) может подключиться только один раз. Если вы уже авторизовались в браузере, и потом подключаетесь еще раз, будет 401. В конфиге есть опция, чтобы разрешить множественный логин.
 
По умолчанию один "пользователь" (т.е. логин) может подключиться только один раз. Если вы уже авторизовались в браузере, и потом подключаетесь еще раз, будет 401. В конфиге есть опция, чтобы разрешить множественный логин.
Верно. В этом и был затык. Спасибо.
 
Назад
Верх