Вот вариант с dnsmasq, без воодружения на роутер bind'а. Получает и обновляет список DNS tunlr'а через API.
Попробовав как-то в работе сервис http://www.pandora.com/ был приятно удивлен насколько он точно угадывает мои вкусы в музыке ) Достаточно ему было сказать трех четырех исполнителей которые мне нравятся, и вуаля, приятная подборка музыки на весь день ) Сервер смотрит не названия стилей, а анализирует исполнение и пытается найти похожее...
К сожалению русских этот сервер как и многие другие упорно не любит ) Вариант пользоваться тунелированием для потокового аудио/видео показался слишком грустным, да и денег за это хотят.
В сети был найден интересный сайт - http://tunlr.net/ прописав его в качестве DNS можно ходить в гости на несколько десятков сайтов упорно не любящих Россию, хорошо, да только сидеть на чужих DNS совершенно не хотелось, вдруг захочется на online.sberbank.ru? Благо роутер у нас совершенно умный поэтому
named.conf
Ну и так далее, там еще более десятка возможных источников )Code:zone "pandora.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "hulu.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "cbs.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "netflix.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "iheart.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "vh1.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "nhl.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "itv.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "bbc.co.uk" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "songza.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "mog.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; }; zone "rdio.com" { type forward; forwarders {69.197.169.9; 192.95.16.109; }; };
Last edited by TReX; 08-10-2013 at 03:00.
Вот вариант с dnsmasq, без воодружения на роутер bind'а. Получает и обновляет список DNS tunlr'а через API.
Last edited by ryzhov_al; 08-10-2013 at 06:01.
Вот адаптированный вариант для энтузиасткой прошивки, проверил в работе на DIR-320:
Файл /usr/local/sbin/domains.txt
Скрипт /usr/local/sbin/post-firewall:Code:abc.com adnxs.com adultswim.com aertv.ie atdmt.com au.tv.yahoo.com bbc.co.uk blinkbox.com blockbuster.com brightcove.com cbs.com channel4.com channel5.com chartbeat.com cinemanow.com cpxadroit.com cpxinteractive.com crackle.com ctv.ca cwtv.com demdex.net diynetwork.com elogua.com foodnetwork.com fox.com fwmrm.net nhl.com go.com hgtv.com history.com hulu.com iheart.com imrworldwide.com inskinmedia.com ip2location.com itv.com js.revsci.net kidlet.tv last.fm lastfm.es livepass.conviva.com liverail.com local.yahooapis.com mlb.tv mog.com mtv.com mtvnservices.com mylifetime.com mytv.taiseng.com nbc.com nbcsports.msnbc.com nbcuni.com netflix.com netflix.net nflxext.com nflximg.com nhl.com pandora.com pbs.com pbs.org quantserve.com rdio.com recaptcha.net rhapsody.com roku.com rokulabs.com rte.ie rubiconproject.com scorecardresearch.com scrippscontroller.com scrippsnetworks.com sharethis.com southparkstudios.com sportsnet.ca sony.net tbs.com theplatform.com thewb.com tnt.tv trutv.com turntable.fm tv3.ie tv.com universalsports.com usanetwork.com vevo.com vh1.com video.uk.msn.com vudu.com zattoo.com
Остаётся только сделать скрипт исполняемым, сохранить его и перегрузить роутер:Code:#!/bin/sh PATH='/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin' # Tunlr DNS updater for dnsmasq. # Adapted For Oleg's firmware. logger -t $(basename $0) "started [$@]" DNSMASQ_CONF=/usr/local/etc/dnsmasq.conf DOMAINS=$(cat /usr/local/sbin/domains.txt) IPS=$(wget -q -O - \ "http://tunlr.net/tunapi.php?action=getdns&version=1&format=json" \ | sed "s/\"dns.\"://g" | sed "s/[{}]//g" | sed "s/,/\ /g" |sed "s/\"//g") if [ -z "$IPS" ] || [ -n "$(echo $IPS | sed 's/[0-9\.\ ]//g')" ] ; then echo "Tunlr DNS addresses not retrieved, exiting." exit fi echo -n > $DNSMASQ_CONF for domain in $DOMAINS do for dns in $IPS do echo "server=/${domain}/${dns}" >> $DNSMASQ_CONF done done if [ -n "$(pidof dnsmasq)" ] then killall dnsmasq sleep 1 fi dnsmasq
Это же просто shell-скрипт. Для него даже внешнего носителя не надо. Может имеется в виду консольный плеер Пандоры pianobar?Code:chmod +x /usr/local/sbin/post-firewall flashfs save flashfs commit reboot
Last edited by ryzhov_al; 08-10-2013 at 14:30. Reason: Добавил пункт по сохранение срикпта в flashfs
Всё будет отлично работать. Только надо из моего варианта откусить две первые строчки.
Уж если совсем на чистоту, то я бы не стал обновлять файл dnsmasq.conf и перезапускать dnsmasq при каждом переколбашивании файервола. Достаточно сохранить содержимое скрипта в /usr/local/sbin под каким-нибудь своим именем и запустить его однократно. После чего выполнить
для того, чтобы обновлённый /etc/dnsmasq.conf навсегда поселился во флеше и мог «выживать» при перезагрузке. DNS'ы tunlr'а на моей памяти менялись лишь один раз.Code:flashfs save && flashfs commit
Угу, и на RT-N56U тоже уже запускали - работает: http://habrahabr.ru/post/159133/
З.Ы. Только там указаны еще старые айпишнеги, нужно будет изменить их на новые
Last edited by Omega; 09-10-2013 at 11:03. Reason: дополнение
• Oleg's FAQ • Mini FAQ • Все об Asus RT-N16 • Все об Asus RT-N66U • VectorMM.net • Wiki-HUB.ru • WikiDevi • Wi-Cat.ru •
Да, я понимаю что это простой скрипт, просто живи он в репозитарии, точно не потерялся бы ) Тема через пару дней уедет в подвал и потом ищи-свищи, а заточенная под себя радиостанция многим придется по душе )
Консольный плеер Пандоры тоже в репозитарии, было бы мегарульно, получается простой роутер-приемник играющий приятную именно вам музыку )
Кстати и скрипт и плеер реализовано в прошивке превращающей RasberyPi в Билайн роутер )))
На сервисе введена регистрация и привязка к ip, если он динамический, то после перезагрузки все ломается, нашел на гитхабе скриптик.
https://github.com/FriedZombie/tunlrUpdater
Сам скрипт -
https://raw.github.com/FriedZombie/t...tekeeperUpdate
Надо добавить имя/пароль.Code:#!/bin/sh #################### ## -- Settings -- ## #################### user='user@example.com' #user name to login into gatekeeper password='pass12345' #password to login into gatekeeper client='wget' #client to use, options: curl wget agent='update-script' #user agent string send to the server cookie='/tmp/tunlr-cookie.txt' #create cookie jar insecure=1 #set insecure=1 to skip the cert validity check wOpt='' #extra options for wget cOpt='' #extra options for curl logCmdErr='' #specify the command to pipe the error messages to, e.g. logger logCmd='' #specify the commant to pipe the log messages to, e.g. logger ############################# ## -- Script start here -- ## ############################# #function to echo to stderr and exit the script errExit() { if [ -z "${logCmdErr}" ]; then echo "${1}" 1>&2 else echo "${1}" echo "${1}" | ${logCmdErr} fi exit 1 } #function to log messages msgLog() { echo "${1}" [ -z "${logCmd}" ] || echo "${1}" | ${logCmd} } #function to url encode for those pesky secure passwords :P enc() { echo "${1}" | sed \ -e 's/%/%25/g' -e 's/ /%20/g' -e 's/!/%21/g' -e 's/"/%22/g' -e 's/#/%23/g' \ -e 's/\$/%24/g' -e 's/\&/%26/g' -e 's/'\''/%27/g' -e 's/(/%28/g' -e 's/)/%29/g' \ -e 's/\*/%2a/g' -e 's/+/%2b/g' -e 's/,/%2c/g' -e 's/-/%2d/g' -e 's/\./%2e/g' \ -e 's/\//%2f/g' -e 's/:/%3a/g' -e 's/;/%3b/g' -e 's//%3e/g' -e 's/?/%3f/g' \ -e 's/@/%40/g' -e 's/\[/%5b/g' -e 's/\\/%5c/g' -e 's/\]/%5d/g' -e 's/\^/%5e/g' \ -e 's/_/%5f/g' -e 's/`/%60/g' -e 's/{/%7b/g' -e 's/|/%7c/g' -e 's/}/%7d/g' -e 's/~/%7e/g' } #function to get the needed web pages gPage() { if [ "$client" = "wget" ]; then case $# in 3) wget ${wOpt} --load-cookies "${cookie}" --save-cookies "${cookie}" --keep-session-cookies \ --user-agent "${agent}" --referer "${2}" --post-data "${3}" -O - "${1}" ex=$? ;; 2) wget ${wOpt} --load-cookies "${cookie}" --save-cookies "${cookie}" \ --keep-session-cookies --user-agent "${agent}" --referer "${2}" -O - "${1}" ex=$? ;; *) wget ${wOpt} --load-cookies "${cookie}" --save-cookies "${cookie}" \ --keep-session-cookies --user-agent "${agent}" -O - "${1}" ex=$? esac else case $# in 3) curl ${cOpt} --cookie "${cookie}" --cookie-jar "${cookie}" --location \ --user-agent "${agent}" --referer "${2}" --data "${3}" "${1}" ex=$? ;; 2) curl ${cOpt} --cookie "${cookie}" --cookie-jar "${cookie}" --location \ --user-agent "${agent}" --referer "${2}" "${1}" ex=$? ;; *) curl ${cOpt} --cookie "${cookie}" --cookie-jar "${cookie}" --location \ --user-agent "${agent}" "${1}" ex=$? esac fi [ $ex -ne 0 ] && errExit "Getting the page has failed" [ -s "${cookie}" ] || errExit "Cookies not stored, check script settings" return 0 } # Test if we have wget and see if we have a useable one case $client in "wget") wgetInfo=`wget --no-check-certificate 2>&1` [ $? -eq 127 ] && errExit "wget seems to be missing" echo "${wgetInfo}" | grep 'BusyBox' > /dev/null && errExit "wget provided by BusyBox isn't sufficient" echo "${wgetInfo}" | grep 'unrecognized option' > /dev/null && errExit "wget is compiled without HTTPS support" ;; "curl") curlInfo=`curl --version` [ $? -eq 127 ] && errExit "curl seems to be missing" echo "${curlInfo}" | grep 'https' > /dev/null || errExit "curl is compiled without HTTPS support" echo "${curlInfo}" | grep 'zlib'> /dev/null && cOpt="${cOpt} --compressed" ;; *) errExit "Incorrect client specified in script" esac #openwrt doesn't have certs installed by default, hence the insecure option if [ "${insecure}" = "1" ]; then wOpt="${wOpt} --no-check-certificate" cOpt="${cOpt} --insecure" fi msgLog "Getting tunlr status page" statusP=`gPage "http://tunlr.net/status/" | tr '\n' ' '` [ -z "${statusP}" ] && errExit "Getting the status page has failed" echo "${statusP}" | grep -i 'update your IP address' > /dev/null if [ $? -ne 0 ]; then echo "" msgLog "Nothing to update, everything is ok!" exit 0 fi msgLog "Getting gatekeeper cookies and form_token" form=`gPage 'https://gatekeeper.tunlr.net' | sed -n '/<form/,/<\/form/p' | tr '\n' ' '` [ -z "${form}" ] && errExit "Failed to retrieve the login form data" form_token=`echo "${form}" | sed 's/.*form_token" value\="//;s/".*//'` [ -z "${form_token}" ] && errExit "failed to retrieve the login form_token" msgLog "Sending credentials to the gatekeeper login" dashboard=`gPage "https://gatekeeper.tunlr.net/login" \ "https://gatekeeper.tunlr.net" \ "form_token=$(enc "${form_token}")&usermail=$(enc "${user}")&password=$(enc "${password}")"` [ -z "${dashboard}" ] && errExit 'gatekeeper returned an empty page' echo "${dashboard}" | grep -i 'password is incorrect' > /dev/null && errExit 'Your username/email or password is incorrect' echo "${dashboard}" | grep 'name="chk_rememberme"' > /dev/null && errExit 'failed to login, credentials seems to be correct though' echo "${dashboard}" | grep -i 'Account number' > /dev/null || errExit 'Failed to get the dashboard page' msgLog "Login successful, checking the current status" [ `echo "${dashboard}" | grep 'fa-check-square-o' | grep -Eoi 'Active|Valid' | wc -w` -lt 5 ] && errExit "Check the tunlr dashboard, something is wrong" echo "${dashboard}" | grep '/dashboard/change_ip' > /dev/null if [ $? -eq 0 ]; then msgLog "ip has changed, going to update" echo "" dashboard=`gPage 'https://gatekeeper.tunlr.net/dashboard/change_ip' 'https://gatekeeper.tunlr.net/dashboard'` echo "${dashboard}" | grep 'name="chk_rememberme"' > /dev/null && errExit "ip update has failed, we seemed to have been kicked out" echo "${dashboard}" | grep '/dashboard/change_ip' > /dev/null && errExit "ip update has failed" [ `echo "${dashboard}" | grep 'fa-check-square-o' | grep -Eoi 'Active|Valid' | wc -w` -lt 5 ] && errExit 'Check the tunlr dashboard, something is wrong' msgLog "Ip address has been updated, everything is ok!" else echo "" errExit "Updating has failed, check the tunlr dashboard" fi
Last edited by tdaniil; 18-01-2014 at 22:42.
А толку-то? На бесплатных аккаунтах полоса пропускания зарезана так, что заглавная страница pandora.com грузится через раз. О нормальном прослушивании речь не идёт, поток постоянно рвётся с жалобой на низкую скорость интернет-соединения.
Кто-нибудь знает об альтернативе Tunlr? Есть плагин MediaHint для браузеров, но DNS-based решение мне кажется наиболее удачным. VPN не предлагать
Зарегился на https://gatekeeper.tunlr.net/. На бесплатном плане пока проблем с Pandora не испытываю. Посмотрим, что дальше будет.
Tunlr Has Left The Building...
http://tunlr.net/
Ну да, tunlr.net помер
А проект Portaller может кто настроил?
http://habrahabr.ru/post/215889/
Работает?
Теперь моя очередь говорить спасибо - работает через роутер через wifi на всех устройствах дома! Красота. А то гуглить я мастак, а вот настраивать...
На счет своего персонального сервиса и хостинга:
На том же http://habrahabr.ru/post/107631/ ранее описывалось, как натянуть теже медиа-сервисы через бесплатный VPN от Amazon.
Кроме того, что это тоже вариант, хочу предложить аудитории к рассмотрению подход, чтобы надыбать бесплатный сервер и для HAProxy for DNS unblocking. Ну это на ту перспективу, когда Portaller таки возможно нагнется к сожалению
Last edited by Omega; 03-05-2014 at 23:28. Reason: 2 posts merged
wl-500gp v2 + tor + polipo + барахло всякое на python
the, спасибо за ссылку. Есть подозрение, что этот сервис, сделанный на коленке и хостящийся на копеечном VPS долго не прослужит, но пока он действует как надо. Для использования Portaller на энтузиасткой прошивке необходимо создать скрипт /usr/local/sbin/post-firewall со следующим содержимым:
Затем сделать его исполняемым, сохранить и перегрузить роутер:Code:#!/bin/sh PATH='/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin' # Portaller DNS updater for dnsmasq. Adapted For Oleg's firmware. logger -t $(basename $0) "started [$@]" DNSMASQ_CONF=/usr/local/etc/dnsmasq.conf DOMAINS="pandora.com spotify.com" DNS="107.170.15.247" echo -n > $DNSMASQ_CONF for domain in $DOMAINS do echo "server=/${domain}/${DNS}" >> $DNSMASQ_CONF done if [ -n "$(pidof dnsmasq)" ] then killall dnsmasq sleep 1 fi dnsmasq
PS В статье есть ссылка на то как сделать свой собственный Tunlr style сервер на VPS.Code:chmod +x /usr/local/sbin/post-firewall flashfs save flashfs commit reboot
Last edited by ryzhov_al; 03-05-2014 at 16:20.
Привет всем
Если кому интересно, мне вот интересно, то https://tunlr.com/how-to-setup
Проверил на OSX - пандора работает!
wl-500gp v2 + tor + polipo + барахло всякое на python