ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
7   •   Посмотреть все темы

прослушивание потока только с одного сайта

 

37
Алексей @anester
Здравствуйте!

Подскажите может кто-то сталкивался с такой задачей. Необходимо сделать так чтобы поток могли слушать только с плеера на сайте.

Вариант ежедневной смены ссылки моунта и в плеере не совсем подходит. Мысли идут делать какой то зашифрованный поток, но понимаю что нужны будут ресурсы по расшифровке потока на клиенте, а браузер мне кажется загнется расшифровывать поток.

Также вижу, что провайдеры это тоже как то решают - делая платное телевидение в своих сетях, но там надо инсталлировать их приложение, а мне нужен именно плеер на сайте.

Может кто решал подобную задачу или есть свежие мысли.

0
445
Alex @VapSite
подсмотри как сделано на сайте live365.com

тут как вариант для лохов, можно ссылку прописать в JS файл.
Использовать искл. IceCast

Вариант, ссылка находиться в флеш-плеере. Как это сделано на сайте Рекорд'а
Декомпилятором и этот вопрос легко решаем.

Отредактировано VapSite - 07.10.2013
0
37
Алексей @anester
VapSite пишет:

подсмотри как сделано на сайте live365.com

тут как вариант для лохов, можно ссылку прописать в JS файл.
Использовать искл. IceCast

Вариант, ссылка находиться в флеш-плеере. Как это сделано на сайте Рекорд'а
Декомпилятором и этот вопрос легко решаем.



Можно сделать так. Пока остановились на этом варианте

1. Рандомно каждую ночь генерим ссылку моунта
2. Вставляем ее в плеер и в конфиг айскаста
3. Перегружаем айскаст (в kh можно перечитывать конфиг)

Может у кого то есть более красивая версия?

0
888
Falcon @Falcon
anester пишет:

VapSite пишет:

подсмотри как сделано на сайте live365.com

тут как вариант для лохов, можно ссылку прописать в JS файл.
Использовать искл. IceCast

Вариант, ссылка находиться в флеш-плеере. Как это сделано на сайте Рекорд'а
Декомпилятором и этот вопрос легко решаем.



Можно сделать так. Пока остановились на этом варианте

1. Рандомно каждую ночь генерим ссылку моунта
2. Вставляем ее в плеер и в конфиг айскаста
3. Перегружаем айскаст (в kh можно перечитывать конфиг)

Может у кого то есть более красивая версия?

**********

Почитайте сделать про авторизацию слушателей через URL.
Особое внимание к <option name="listener_add" value="http://myauthserver.com/listener_joined.php"/>
Проверяем header (заголовки), если это не браузер, то сбрасываем, если браузер, то выставляем нужный заголовок
icecast-auth-user: 1
И айскаст пустит слушателя к потоку.

0
382
Grigorij @gyurgin_1
В icecast KH есть такая фича <deny-agents>/path/to/file-with-useragents</deny-agents>, можно попробовать. Понятно что список будет собрать не просто, но нереального тут ничего нет.

0
382
Grigorij @gyurgin_1
Хотя да, погорячился я слегка, вытащил из базы массив возможных юзерагентов, пожалуй многовато будет ********** Если только нельзя их указать как нибудь в сокращенном виде. Надо пробовать.

Отредактировано gyurgin_1 - 30.12.2013
0
382
Grigorij @gyurgin_1
В общем Falcon прав - авторизация решает, только проверяем useragent. Добавляем к маунту секцию:
  1. <authentication type="url">
  2. <option name="listener_add" value='http://Ваш домен или где будет лежать скрипт (главное - здесь должен быть url)/listener_add.php'/>
  3. <option name="auth_header" value="icecast-auth-user: 1"/>
  4. <option name="presume_innocent" value="yes"/>
  5. <option name="handlers" value="50"/>
  6. </authentication>

ну и сам listener_add.php примерно такой:
  1. <?php
  2. $ag = $_POST['agent'];
  3. if ((strpos($ag, 'Mozilla') !== false) || (strpos($ag, 'Opera') !== false) || (strpos($ag, 'Internet%20') !== false)) {
  4. header("icecast-auth-user: 1");
  5. }
  6. else {
  7. header("icecast-auth-user: 0");
  8. }
  9. ?>


Проверено - работает.

Отредактировано gyurgin_1 - 30.12.2013
0
37
Алексей @anester
Вернусь к этому вопросу.
Задача, ограничить подключения к айскасту только теми пользователями которые слушают эфир с плеера на сайте example.ru, остальные идут лесом.

Есть такая конструкция в icecast

  1. <mount>
  2. <mount-name>/name.mp3</mount-name>
  3. <authentication type="url">
  4. <option name="listener_add" value='http://example.ru/auth/listener_add.php'/>
  5. <option name="auth_header" value="icecast-auth-user: 1"/>
  6. <option name="presume_innocent" value="yes"/>
  7. <option name="handlers" value="50"/>
  8. </authentication>
  9. </mount>


сам скрипт php имеет вид

  1.  
  2. <?php
  3. $www = $_SERVER['HTTP_HOST'];
  4. $hostname = 'example';
  5. $auth = strripos($www, $hostname);
  6. if ($auth === false) {
  7. "icecast-auth-user: 0";
  8. } else {
  9. "icecast-auth-user: 1";
  10. }
  11. ?>


Но что то ему не хватает. Может кто то подскажет в чем дело?

0
73
Freak @Freak
anester пишет:

Может кто то подскажет в чем дело?


А того и не хватает.
Код неверный. Двойка за работу на уроке :-)

  1. <?php
  2. $www = $_SERVER['HTTP_HOST'];
  3. $hostname = 'www.example.ru';
  4. if (strpos($www, $hostname) == false) {
  5. "icecast-auth-user: 0";
  6. } else {
  7. "icecast-auth-user: 1";
  8. }
  9. ?>


И, к слову, функция в данном случае применяется strpos, а у тебя, двоечник, strripos.
Без обид на слово "двоечник". Ошибка меня позабавила просто.
Код не проверял, но уверен, сработать должен.

Отредактировано Freak - 13.10.2014
0
888
Falcon @Falcon
  1.  
  2. if (strpos($www, $hostname) === false) {

Должно быть именно 3 равно, т.к. есть строка начинается с нулевой позиции, то код не сработает. Должно быть тождественное равенство

0
73
Freak @Freak
Falcon пишет:

  1.  
  2. if (strpos($www, $hostname) === false) {

Должно быть именно 3 равно, т.к. есть строка начинается с нулевой позиции, то код не сработает. Должно быть тождественное равенство

Имеет смысл... Как то не подумал. Хотя, в конкретном случае отладка покажет.

0
382
Grigorij @gyurgin_1
Отклонились немного не в ту сторону, к скрипту обращается icecast и вся эта ерунда с $_SERVER ни к чему не приведет.
Вот правильный скрипт:
  1. <?php
  2. $req_url = parse_url($_POST['referer'], PHP_URL_HOST);
  3. $player_host = 'example.com';
  4. if (strpos($req_url, $player_host) !== false) {
  5. header("icecast-auth-user: 1");
  6. } else {
  7. header("icecast-auth-user: 0");
  8. }
  9. ?>

Соответственно $_POST['referer'] содержит полный путь к компоненту плеера (swf или js) и тут можно что нибудь придумать, например распространять код для вставки плеера своего радио на сайты и запрещать проигрывание другим, ну и тому подобное...

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.