Как добавить некоторый параметр в параметр сообщения, когда прослушиватель добавляет аутентификацию URL-адреса icecast

Icecast отправляет информацию о действии, монтировании, сервере и т. д. в listener_joined.php при добавлении слушателя. Я хочу, чтобы icecast отправлял другую информацию.

Примечание. При монтировании здесь (в отличие от параметров начала/конца) указывается запрошенный URL-адрес, включая любые параметры запроса, поэтому, например, запрошенный URL-адрес может быть /stream.ogg&session=xyz, но обратите внимание, что данные каждого параметра экранируются перед передачей через POST. .

Я прочитал это. Поэтому я пытаюсь получить

"/example.ogg&session=xyz"

Но я получаю

"404 - Запрошенный вами файл не найден"

Моя конфигурация icecast такова.

<mount>
    <mount-name>/example.ogg</mount-name>
    <authentication type="url">             
        <option name="listener_add" value="http://localhost/listener_joined.php"/>
        <option name="listener_remove" value="http://localhost/listener_left.php"/>
        <option name="username" value="user"/>
        <option name="password" value="pass"/>
        <option name="auth_header" value="icecast-auth-user: 1"/>
    </authentication>
</mount>

Как добавить некоторый параметр в параметр публикации, когда слушатель добавляет аутентификацию URL-адреса icecast?


person roronya    schedule 22.05.2015    source источник
comment
Есть ли вообще поток, работающий на /example.ogg? Код аутентификации вызывается только в том случае, если есть что-то для аутентификации, а не при сбое.   -  person TBR    schedule 22.05.2015
comment
также вы сказали, что запросили /stream.ogg, в то время как конфигурация для /example.ogg   -  person TBR    schedule 22.05.2015
comment
/example.ogg запущен.   -  person roronya    schedule 22.05.2015
comment
Извините, неправильно написал. Я запросил /example.ogg.   -  person roronya    schedule 22.05.2015


Ответы (1)


Правильный разделитель параметра запроса URL, указанный в HTTP 1.0 RFC, – это вопросительный знак. "?". Таким образом, ваша часть URL должна быть: /example.ogg?session=xyz, а не /example.ogg&session=xyz. Последний будет интерпретироваться как целый путь, и, поскольку он не существует, подходит 404.

person TBR    schedule 22.05.2015
comment
Я попробовал ваше решение. Но Icecast не отправил сессию. - person roronya; 22.05.2015
comment
Оно делает. Я бы рекомендовал сбросить весь запрос или даже посмотреть на него, используя, например. Wireshark. Вы, вероятно, упускаете из виду, что часть запроса экранирована и не может использоваться напрямую, но ее необходимо декодировать (также из соображений безопасности). - person TBR; 22.05.2015