diff --git a/config.sh b/config.sh index 3ed30d8..4203592 100644 --- a/config.sh +++ b/config.sh @@ -2,3 +2,9 @@ cfg[title]='BashTube' cfg[_cookies]='cookiejar' cfg[flash_host]='flash.xn--domi-o5a.pl' cfg[template]='default' +cfg[unbuffered]=false + +if [[ "${r[url]}" == *"/proxy"* ]]; then + cfg[unbuffered]=true + cfg[extra_headers]="${cfg[extra_headers]}\r\naccept-ranges: bytes" +fi diff --git a/webroot/proxy.shs b/webroot/proxy.shs index 66d354f..baf5d06 100644 --- a/webroot/proxy.shs +++ b/webroot/proxy.shs @@ -1,5 +1,26 @@ #!/bin/bash -url="$(url_decode "${get_data[url]}" | tr -d '\n\r')" -if [[ "$url" == "https://"[a-z0-9-]*".googlevideo.com/"* ]]; then - curl -H "Range: bytes=${r[range]}" "$url" -o - +printf "HTTP/1.1 206 Partial Content\r\n" +url="$(url_decode "${get_data[url]}")" +if [[ "${r[range]}" != '' ]]; then + range="${r[range]}" +else + range="0-" +fi + +if [[ "$url" == "https://"[a-z0-9-]*".googlevideo.com/"* ]]; then + tempfile=$(mktemp) + temprange=$(mktemp) + curl -H "Range: bytes=$range" "$url" -o - -vvv 1>$tempfile 2>$temprange + printf "${cfg[extra_headers]}\r\n" + grep -i "Content-Type" "$temprange" | sed 's/< //' + grep -i "Content-Range" "$temprange" | sed 's/< //' + grep -i "Content-Length" "$temprange" | sed 's/< //' + #cat $temprange > /dev/stderr + grep -i "Content-Range" "$temprange" | sed 's/< //' > /dev/stderr + grep -i "Content-Length" "$temprange" | sed 's/< //' > /dev/stderr + printf "\r\n" + cat $tempfile + rm $tempfile + rm $temprange + #printf "\r\n$o" fi