Случилось тут вдруг обновить VLC с 2.0.8 на ночную сборку 2.2. Был неприятно удивлен, умные разработчики внезапно внедрили ОБЯЗАТЕЛЬНУЮ защиту паролем веб-интерфейса. Спасибо, конечно! Но пользователь не предусмотрен, только пароль. Но что мешало сделать это раньше, из-за чего пришлось колхозить перед vlc nginx с basic авторизацией по логин-паролю? А т.к. теперь у всех есть комбинация login/password для морды и всем сообщать новые реквизиты для входа не хотелось, то будем делать авторизацию на уровне upstream в nginx!
/etc/nginx/sites-enabled/vlc
server {
listen 0.0.0.0:80;
server_name _;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Authorization "Basic OjEyMzQ1Ng==";
auth_basic "closed site";
auth_basic_user_file htpasswd;
}
}
Интересующая строчка тут:
proxy_set_header Authorization "Basic OjEyMzQ1Ng==";
OjEyMzQ1Ng== - это хеш от пары login:password, их можно сгенерить и ручками в консоли:
$ echo ":123456" | base64
OjEyMzQ1Ngo=
Вот только vlc не прожевывает такой хеш, поэтому пришлось снифать что передает браузер если обратиться к vlc напрямую, без nginx:
# tcpdump -n -w - -i en0 host 10.12.34.56 | strings | grep -i Basic
tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
Authorization: Basic OjEyMzQ1Ng=
Не знаю, почему, но на один символ оказалось меньше и с дополнительным знаком = в конце.
Ну и заодно оставлю тут примерный ранит-скрипт для vlc:
/etc/sv/vlc/run
#!/bin/bash
PLAYLIST="/home/vlc/playlist.m3u"
killall vlc
killall cvlc
exec 2>&1
exec /bin/su - vlc -l -c "taskset 8 cvlc --http-password=123456 -vv -I http $PLAYLIST"
taskset 8(указание что процесс будет привязан к 4-му ядру, 2^3) тут не просто так - существует(по крайней мере, раньше существовал) известный баг, который проявляется при большом аптайме vlc - когда шедулер ядра начинает швырять vlc с ядра на ядро, vlc сносит крышу и звук начинает заикаться.
Комментариев нет:
Отправить комментарий