Results 1 to 15 of 16

Thread: Настройка доступа к Pandora и Netflix на роутере

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Mar 2009
    Location
    Default City
    Posts
    2,695
    Blog Entries
    4

    Thumbs up Настройка доступа к Pandora и Netflix на роутере

    Попробовав как-то в работе сервис 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 04:00.

  2. #2
    Вот вариант с dnsmasq, без воодружения на роутер bind'а. Получает и обновляет список DNS tunlr'а через API.
    Last edited by ryzhov_al; 08-10-2013 at 07:01.

  3. #3
    Join Date
    Mar 2009
    Location
    Default City
    Posts
    2,695
    Blog Entries
    4
    Quote Originally Posted by ryzhov_al View Post
    Вот вариант с dnsmasq, без воодружения на роутер bind'а. Получает и обновляет список DNS tunlr'а через API.
    А нельзя ли подобную прелесть в наш репозитарий? А то с гибелью ласт-фм как радиостанции совсем стало нечего слушать (

  4. #4
    Вот адаптированный вариант для энтузиасткой прошивки, проверил в работе на DIR-320:
    Файл /usr/local/sbin/domains.txt
    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
    Скрипт /usr/local/sbin/post-firewall:
    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
    Остаётся только сделать скрипт исполняемым, сохранить его и перегрузить роутер:
    Code:
    chmod +x /usr/local/sbin/post-firewall
    flashfs save
    flashfs commit
    reboot
    Quote Originally Posted by TReX View Post
    А нельзя ли подобную прелесть в наш репозитарий? А то с гибелью ласт-фм как радиостанции совсем стало нечего слушать (
    Это же просто shell-скрипт. Для него даже внешнего носителя не надо. Может имеется в виду консольный плеер Пандоры pianobar?
    Last edited by ryzhov_al; 08-10-2013 at 15:30. Reason: Добавил пункт по сохранение срикпта в flashfs

  5. #5
    Quote Originally Posted by ryzhov_al View Post
    Остаётся только сделать скрипт исполняемым, сохранить его и перегрузить роутер:
    Code:
    chmod +x /usr/local/sbin/post-firewall
    flashfs save
    flashfs commit
    reboot
    А если я добавлю этот скрипт в существующий post-firewall ?

  6. #6
    Quote Originally Posted by mbg View Post
    А если я добавлю этот скрипт в существующий post-firewall ?
    Всё будет отлично работать. Только надо из моего варианта откусить две первые строчки.

    Уж если совсем на чистоту, то я бы не стал обновлять файл dnsmasq.conf и перезапускать dnsmasq при каждом переколбашивании файервола. Достаточно сохранить содержимое скрипта в /usr/local/sbin под каким-нибудь своим именем и запустить его однократно. После чего выполнить
    Code:
    flashfs save && flashfs commit
    для того, чтобы обновлённый /etc/dnsmasq.conf навсегда поселился во флеше и мог «выживать» при перезагрузке. DNS'ы tunlr'а на моей памяти менялись лишь один раз.

  7. #7
    Join Date
    Mar 2009
    Location
    Default City
    Posts
    2,695
    Blog Entries
    4
    Quote Originally Posted by ryzhov_al View Post
    Это же просто shell-скрипт. Для него даже внешнего носителя не надо. Может имеется в виду консольный плеер Пандоры pianobar?

    Да, я понимаю что это простой скрипт, просто живи он в репозитарии, точно не потерялся бы ) Тема через пару дней уедет в подвал и потом ищи-свищи, а заточенная под себя радиостанция многим придется по душе )

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

    Кстати и скрипт и плеер реализовано в прошивке превращающей RasberyPi в Билайн роутер )))

  8. #8
    На сервисе введена регистрация и привязка к 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 23:42.

  9. #9
    Join Date
    Mar 2009
    Location
    Russia, Moscow
    Posts
    2,112
    Blog Entries
    32
    Quote Originally Posted by TReX View Post
    А нельзя ли подобную прелесть в наш репозитарий? А то с гибелью ласт-фм как радиостанции совсем стало нечего слушать (
    Угу, и на RT-N56U тоже уже запускали - работает: http://habrahabr.ru/post/159133/

    З.Ы. Только там указаны еще старые айпишнеги, нужно будет изменить их на новые
    Last edited by Omega; 09-10-2013 at 12:03. Reason: дополнение

  10. #10

    Проблема стриминга на Pandore

    Господа, много лет использую скрипт на роутере Asus n56 для доступа к Pandora через Portaller (https://bitbucket.org/padavan/rt-n56...20DNS-сервисов)
    И вот уже с неделю Pandora запускается, но не стримит поток.
    Кто в курсе ситуации?

Similar Threads

  1. Настройка клиента и сервера OpenVPN на роутере
    By OlegSV in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 211
    Last Post: 05-05-2017, 09:17
  2. Установка и настройка Quagga на роутере
    By mymp in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 149
    Last Post: 02-09-2016, 16:21
  3. Настройка VPN подключения на роутере
    By Tonusichka in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 215
    Last Post: 07-08-2012, 11:19
  4. Настройка mpcs на роутере
    By poptab in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 1059
    Last Post: 17-07-2012, 07:22
  5. Установка и настройка ipkg на роутере
    By FilimoniC in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 250
    Last Post: 06-12-2008, 08:37

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •