Roquie
@Roquie

Как проигрывать mp3 записи в html5 плеере используя ssh + scp ... ?

Вопрос может и глуп, но суть в следующем...
Есть на сервере папка, где лежит много mp3 записей, которые привязаны md5 названием с записью в таблице.
Табличка примерно следующая:
id | user_id | mp3
----------------------------
1 | 123 | hash.mp3

У меня есть ssh доступ к директории и надо както эти записи проиграть в html5 плеере. При этом умудриться делать это так, чтобы проиграть запись смог только владелец личного кабинета находясь в нем.
  • Вопрос задан
  • 2539 просмотров
Решения вопроса 3
@s1dney
Для начала, надо отказаться от варианта с ssh и запихнуть все в файлохранилище с доступом по rest хотя бы.
Ответ написан
Комментировать
torrie
@torrie
Всё знаю, всё умею
Вам нужен скрипт, который проводит авторизацию и затем отдает защищенный контент не отдавая его локацию. Например отдавать функциями fpassthru() или fread().
В первую очередь поставить mod_rewrite в PHP, чтобы перенаправить с
www.uaa.com/media/music.mp3

на
www.uaa.com/media/index.php?file=music.mp3

затем проверить авторизован ли юзер. Если всё ок, то юзаем выше упомянутые функции.

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

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

Как альтернатива - хранить mp3 файлы в виде текста например. И отдавать их с нужным content-type через echo или print. Велосипедный велосипед.
Ответ написан
AMar4enko
@AMar4enko
wiki.nginx.org/XSendfile

Настраиваете nginx на отдачу этих файлов из internal локации.
Чтобы проиграть файл с сервера браузер запрашивает его у серверного скрипта, передавая в параметрах hash, который у вас в табличке.
Скрипт знает, какой пользователь залогинен, проверяет, есть ли у него права слушать этот файл, с помощью таблички. Если права есть, то скрипт отправляет в ответе заголовок X-Accel-Redirect с указанием файла. Nginx отлавливает этот заголовок в ответе proxy_pass и согласно ему отправляет файл из internal локации.

Трюк давным-давно известный, поддержка есть во всех мало-мальски адекватных фреймворках. Главное правильно настроить nginx.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
madmages
@madmages
Человек прямоходящий
напрямую в html5 не получится. в html5 нужно передавать имя файла на сервере и браузер уже будет драть этот файл по http и по ssh зайти не сможет. как вариант можно на сервере делать кэш песен проигрываемых пользователем. но что то я очень сомневаюсь в производительности такого огорода, тем более если это рассчитано на не одного человека
Ответ написан
LestaD
@LestaD
Веб разработчик
делайте проще. Напишите на php скрипт проксирующий ваши файлы
В HTML укажите путь к вашему файлу прокси: /getaudio.php?id=8445&useruid=123
А в скрипте проверяйте все права доступа и прочее если всё норм, то отдавайте файл из нужной директории, если не норм, то какой-нить файл со звуком ошибки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы