Ox-Proxy
Ox pulls from YouTube and Jango and NoAdRadio
Ox needs youtsuck and athlon1600-youtube-downloader-fast and youtubedown.fast
#!/bin/bash
exec 2> /dev/null
unset -v OXEN ; # OXEN=http://127.0.0.1:8080
ACCOUNT_THUMBPRINT=DHsY23B5FOMzCDmsmeC-_9Y_nskyT7TJ13SRb_fX-rQ
unset -v pull
pull_re='(^GET / |^GET /((youtube|oxen)/[-0-9a-zA-Z_]{11}|timeloop|crossdomain|(jango|noadradio)/[0-9]+|\.well-known/acme-challenge/[-_a-zA-Z0-9]+)|^Range: bytes=[0-9]+-([0-9]+)?)'
if [[ ${#1} -ne 0 ]] ; then
if [[ "GET ${1} " =~ $pull_re ]] ; then
set -f ; line=($BASH_REMATCH)
pull[0]="${line[0]}"
pull[1]="${line[1]}"
if [[ "Range: ${2} " =~ $pull_re ]] ; then
set -f ; line=($BASH_REMATCH)
pull[2]="${line[0]}"
pull[3]="${line[1]}"
fi ; fi ; else
set -f ; pull=($( sed -b '/^\r$/q' | grep -E -s -o -m 2 "$pull_re" ))
fi
if [[ ${pull[0]:0:1} != G ]] ; then
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 404 OX Lost\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e "\r\nConnection: close\r\nContent-Type: text/plain\r\nContent-Length: 0\r\n\r" ; } | cat
exit 0 ; fi
agent=
case ${pull[1]:1:1} in y )
if [[ ${pull[2]:0:1} == R ]] ; then
[[ "${pull[3]}" =~ [0-9]+ ]]
r=${BASH_REMATCH} ; range="Range: ${pull[3]}" ; q=-= ; qrange="${pull[3]}"
else
r=0 ; range= ; q= ; qrange=
fi ; p= ; quit=
success=0 ; broken=141
[[ ${#1} -ge 0 ]] && ten="0 00 000" || ten="0 00 1 3 2 4 5 6 7 8"
for eight in ${ten} ; do
if [[ ${#OXEN} -ne 0 ]] ; then
if [[ ${eight} -eq 3 ]] ; then break ; fi
( wget --no-config --no-cookies --no-dns-cache --no-hsts --no-check-certificate --connect-timeout=10 --read-timeout=120 -q -t1 -S -O- -4 --start-pos=$r --header="$range" ${OXEN}/oxen/${pull[1]:9} |& dd ibs=4096 obs=16x4096x1 | dd ibs=4096 obs=16x4096x1x1 | sed -E -b -n '/^ HTTP\/1\.1 20[604] [PON]/,/^ Server: / {sz^( Server: .*)$z\1\r\nz;sz^ (.*)$z\1\rz;sz^HTTP/1\.1 206 Partial ContentzHTTP/1.1 206 OX Parcel\r\nContent-Type: audio/mp4z;sz^HTTP/1\.1 200 OKzHTTP/1.1 200 OX\r\nContent-Type: audio/mp4z;sz^HTTP/1\.1 204 No ContentzHTTP/1.1 204 OX Cart\r\nContent-Type: audio/mp4z;sz^Content-Type: video/mp4zContent-Type: video/mp4\r\nContent-Type: audio/mp4z;p};/^Server: / {:z;n;p;bz}' ; pipestatus=(${PIPESTATUS[@]}) ; [[ ${pipestatus[0]} -eq 8 ]] && exit 8 ; : ) && success=1 || { broken=$? ; [[ $broken -ne 141 ]] && continue || exit 13 ; }
break
else
if [[ ${eight} -eq 0 ]] ; then
if [[ ${eight} == 000 ]] ; then pull[1]+="?" ; fi
if [[ ${eight} == 00 ]] ; then pull[1]+="#" ; fi
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; bash ./youtsuck.sh https://youtu.be/${pull[1]:9} )"
if [[ ${eight} == 000 ]] ; then pull[1]=${pull[1]%?} ; fi
if [[ ${eight} == 00 ]] ; then pull[1]=${pull[1]%#} ; fi
attempt="youtsuck (method 0 of 0, attempt ${eight} of 0)"
elif [[ ${eight} -gt 0 ]] && [[ ${eight} -lt 3 ]] ; then
if [[ ${eight} -eq 2 ]] ; then pull[1]+="?" ; fi
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; php -d opcache.enable_cli=1 -d opcache.file_cache=/dev/shm -d opcache.file_cache_only=1 -d opcache.save_comments=0 ./athlon1600-youtube-downloader-fast/public/video_info.php https://youtu.be/${pull[1]:9} )"
if [[ ${eight} -eq 2 ]] ; then pull[1]=${pull[1]%?} ; fi
attempt="athlon1600-youtube-downloader-fast (method 1 of 3, attempt ${eight} of 2)"
elif [[ ${eight} -eq 3 ]] || [[ ${eight} -eq 4 ]] ; then
if [[ ${eight} -eq 4 ]] ; then pull[1]+="?" ; fi
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; perl -X ./youtubedown.fast https://youtu.be/${pull[1]:9} )"
if [[ ${eight} -eq 4 ]] ; then pull[1]=${pull[1]%?} ; fi
attempt="youtubedown.fast (method 2 of 3, attempt $((${eight}-2)) of 2)"
elif [[ ${eight} -gt 4 ]] ; then
p=-4 ; [[ ${eight} -gt 6 ]] && p=-6
[[ ${#agent} -eq 0 ]] && agentre="[Ww]get[/ ][^ ]+" && [[ "$( wget --version )" =~ ${agentre} ]] && agent="${BASH_REMATCH/ //}"
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; python ./youtube-dl --cache-dir /tmp/.cache/ --socket-timeout 3 $p -q -s -g -f 18 --youtube-skip-dash-manifest --user-agent ""${agent}"" https://youtu.be/${pull[1]:9} )"
attempt="youtube-dl (method 3 of 3, attempt $((${eight}-4)) of 4)"
fi
[[ "$stringy" =~ ^https://([^ /]+)(/[^ ]+)$ ]] || continue
[[ ${#p} -eq 0 ]] && [[ "$stringy" =~ \&ip=[0-9]{1,3}\. ]] && p=-4 || p=
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}"
if [[ -x lsquic/http_client && ( ! -x ./n-unslow || $(($RANDOM % 2)) -eq 0 ) ]] ; then quit='/^ {2}?HTTP\/1\.1 [^2]/Q88;' ; else quit= ; fi
if [[ ${#quit} -ne 0 ]] ; then
[[ "$stringy" =~ ^https://([^ /]+)(/[^ ]+)$ ]] || continue
{ (( RANDOM % 2 )) && lsquic/http_client -+ -o version=h3 -o idle_timeout=120 -o ping_period=15 -o honor_prst=1 -o delayed_acks=0 -o cc_algo=1 -o pace_packets=0 $p $q $qrange -0 "/tmp/${BASH_REMATCH[1]},h3.quic" -s "${BASH_REMATCH[1]}" -p "${BASH_REMATCH[2]}" | { read
[[ "${REPLY:0:4}" != "HTTP" ]] && echo -n > "/tmp/${BASH_REMATCH[1]},h3.quic" ; [[ "${REPLY:0:4}" == "HTTP" ]] && { echo "$REPLY" ; cat ; : ; } ; } || { lsquic/http_client -+ -o version=Q050 -o idle_conn_to=120000000 -o ping_period=15 -o cc_algo=1 -o pace_packets=0 $p $q $qrange -0 "/tmp/${BASH_REMATCH[1]},Q050.quic" -s "${BASH_REMATCH[1]}" -p "${BASH_REMATCH[2]}" ; } ; } | { read
if [[ "$REPLY" =~ ^HTTP/1\.1\ 3 ]] ; then
[[ "$(grep -P -o -m 1 '^location: https://[^\r]+')" =~ ^location:\ https://([^ /]+)(/[^ ]+)$ ]] || continue
{ (( RANDOM % 2 )) && lsquic/http_client -+ -o version=h3 -o idle_timeout=120 -o ping_period=15 -o honor_prst=1 -o delayed_acks=0 -o cc_algo=1 -o pace_packets=0 $p $q $qrange -0 "/tmp/${BASH_REMATCH[1]},h3.quic" -s "${BASH_REMATCH[1]}" -p "${BASH_REMATCH[2]}" | { read
[[ "${REPLY:0:4}" != "HTTP" ]] && echo -n > "/tmp/${BASH_REMATCH[1]},h3.quic" ; [[ "${REPLY:0:4}" == "HTTP" ]] && { echo "$REPLY" ; cat ; : ; } ; } || { lsquic/http_client -+ -o version=Q050 -o idle_conn_to=120000000 -o ping_period=15 -o cc_algo=1 -o pace_packets=0 $p $q $qrange -0 "/tmp/${BASH_REMATCH[1]},Q050.quic" -s "${BASH_REMATCH[1]}" -p "${BASH_REMATCH[2]}" ; } ; }
else echo "$REPLY" ; cat ; fi ; }
else
wget --no-config --no-cookies --no-dns-cache --no-hsts --no-check-certificate --connect-timeout=10 --read-timeout=120 -q -t1 -S -O- $p --start-pos=$r --header="$range" "${stringy}"
fi |& dd ibs=4096 obs=16x4096x1 | dd ibs=4096 obs=16x4096x1x1 | sed -E -b -n "$quit"'/^ {2}?HTTP\/1\.1 20[604] [PON]/,/^ {2}?[Ss]erver: / {sz^( Server: .*)$z\1\r\nz;sz^ (.*)$z\1\rz;sz^HTTP/1\.1 206 Partial ContentzHTTP/1.1 206 OX Parcel\r\n'"X-Powered-By: ${attempt}\r\nX-Runtime: ${TIMES}\r\n"'Content-Type: audio/mp4z;sz^HTTP/1\.1 200 OKzHTTP/1.1 200 OX\r\n'"X-Powered-By: ${attempt}\r\nX-Runtime: ${TIMES}\r\n"'Content-Type: audio/mp4z;sz^HTTP/1\.1 204 No ContentzHTTP/1.1 204 OX Cart\r\n'"X-Powered-By: ${attempt}\r\nX-Runtime: ${TIMES}\r\n"'Content-Type: audio/mp4z;sz^[Cc]ontent-[Tt]ype: video/mp4zContent-Type: video/mp4\r\nContent-Type: audio/mp4z;p};/^[Ss]erver: / {:z;n;p;bz}' ; pipestatus=(${PIPESTATUS[@]}) ; [[ ${pipestatus[0]} -eq 8 ]] && exit 8 ; [[ ${pipestatus[3]} -eq 88 ]] && exit 88 ; : ) && success=1 || { broken=$? ; [[ $broken -ne 141 ]] && continue || exit 13 ; }
break
fi
done
if [[ ${success} -eq 0 ]] ; then
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 404 OX Lost\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e "\r\nConnection: close\r\nContent-Type: text/plain\r\nContent-Length: 0\r\n\r" ; } | cat
fi
exit 0
;; o )
pull[1]+="?"
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; bash ./youtsuck.sh https://youtu.be/${pull[1]:6} )"
pull[1]=${pull[1]%?}
attempt="youtsuck (method 0 of 0, attempt 000 of 0)"
if [[ ${#stringy} -eq 0 ]] ; then
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; bash ./youtsuck.sh https://youtu.be/${pull[1]:6} )"
attempt="youtsuck (method 0 of 0, attempt 0 of 0)"
fi
if [[ ${#stringy} -eq 0 ]] ; then
pull[1]+="#"
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; bash ./youtsuck.sh https://youtu.be/${pull[1]:6} )"
pull[1]=${pull[1]%#}
attempt="youtsuck (method 0 of 0, attempt 00 of 0)"
fi
if (( 0 )) ; then
if [[ ${#stringy} -eq 0 ]] ; then
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; php -d opcache.enable_cli=1 -d opcache.file_cache=/dev/shm -d opcache.file_cache_only=1 -d opcache.save_comments=0 ./athlon1600-youtube-downloader-fast/public/video_info.php https://youtu.be/${pull[1]:6} )"
attempt="athlon1600-youtube-downloader-fast (method 1 of 3, attempt 1 of 2)"
fi
if [[ ${#stringy} -eq 0 ]] ; then
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; perl -X ./youtubedown.fast https://youtu.be/${pull[1]:6} )"
attempt="youtubedown.fast (method 2 of 3, attempt 1 of 2)"
fi
if [[ ${#stringy} -eq 0 ]] ; then
pull[1]+="?"
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; php -d opcache.enable_cli=1 -d opcache.file_cache=/dev/shm -d opcache.file_cache_only=1 -d opcache.save_comments=0 ./athlon1600-youtube-downloader-fast/public/video_info.php https://youtu.be/${pull[1]:6} )"
pull[1]=${pull[1]%?}
attempt="athlon1600-youtube-downloader-fast (method 1 of 3, attempt 2 of 2)"
fi
if [[ ${#stringy} -eq 0 ]] ; then
pull[1]+="?"
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; perl -X ./youtubedown.fast https://youtu.be/${pull[1]:6} )"
pull[1]=${pull[1]%?}
attempt="youtubedown.fast (method 2 of 3, attempt 2 of 2)"
fi
if [[ ${#stringy} -eq 0 ]] ; then
[[ ${#agent} -eq 0 ]] && agentre="[Ww]get[/ ][^ ]+" && [[ "$( wget --version )" =~ ${agentre} ]] && agent="${BASH_REMATCH/ //}"
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; python ./youtube-dl --cache-dir /tmp/.cache/ --socket-timeout 3 -4 -q -s -g -f 18 --youtube-skip-dash-manifest --user-agent ""${agent}"" https://youtu.be/${pull[1]:6} )"
attempt="youtube-dl (method 3 of 3, attempt 1 of 2)"
fi
if [[ ${#stringy} -eq 0 ]] ; then
[[ ${#agent} -eq 0 ]] && agentre="[Ww]get[/ ][^ ]+" && [[ "$( wget --version )" =~ ${agentre} ]] && agent="${BASH_REMATCH/ //}"
stringy="$( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; python ./youtube-dl --cache-dir /tmp/.cache/ --socket-timeout 3 -6 -q -s -g -f 18 --youtube-skip-dash-manifest --user-agent ""${agent}"" https://youtu.be/${pull[1]:6} )"
attempt="youtube-dl (method 3 of 3, attempt 2 of 2)"
fi
fi
if [[ ${#stringy} -ne 0 ]] ; then
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 302 OX Follow\r\nX-Powered-By: ${attempt}\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e -n "\r\nConnection: close\r\nLocation: " ; echo -E -n "${stringy}" ; echo -e "\r\nContent-Type: text/plain\r\nContent-Length: 0\r\n\r" ; } | cat
exit 0
else
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 404 OX Lost\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e "\r\nConnection: close\r\nContent-Type: text/plain\r\nContent-Length: 0\r\n\r" ; } | cat
exit 0
fi
;; t )
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 200 OX\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e "\r\nConnection: close\r\nContent-Type: audio/mpeg\r\nContent-Duration: 1.2\r\nX-Content-Duration: 1.2\r\n\r" ; echo -E -n "SUQzAgAAAAARHVRQMQAAFgBBbmRyZXcgSm9obiBIYXJkd2ljawBUQ00AACcATm9uZSAoanVzdCBkaWdpdGFsbHkgY3JlYXRlZCBzaWxlbmNlKQBUQUwAAAsAU2lsZW50IENEAFRZRQAABgAyMDAzAENPTQAAEABlbmdpVHVuUEdBUAAwAABURU4AABEAaVR1bmVzIHY3LjMuMi42AENPTQAAaABlbmdpVHVuTk9STQAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMzQgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAAQ09NAACCAGVuZ2lUdW5TTVBCACAwMDAwMDAwMCAwMDAwMDIxMCAwMDAwMDY5RiAwMDAwMDAwMDAwMDAyQjExIDAwMDAwMDAwIDAwMDAwMzBGIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwAFRUMgAADgBTaWxlbmNlIDAxIHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jEMAAAAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xDAJwAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MQwE4AAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jEsB1AAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MQwJ0AAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jEMDEAAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xDA6wAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MSwP8AAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xDA/wAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MQwP8AAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jEMD/AAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xLA/wAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jEMD/AAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xDA/wAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MQwP8AAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jEsD/AAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MQwP8AAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jEMD/AAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xDA/wAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MSwP8AAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xDA/wAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MQwP8AAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jEMD/AAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" | base64 -d ; } | cat
exit 0
;; c )
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 200 OX\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e -n "\r\nConnection: close\r\nLast-Modified: Thu, 05 November 2015 12:34:56 GMT\r\nContent-Type: text/x-cross-domain-policy\r\nContent-Length: 96\r\n\r\n<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" /></cross-domain-policy>" ; } | cat
exit 0
;; . )
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 200 OX\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e -n "\r\nConnection: close\r\nContent-Type: text/plain\r\nContent-Length: $((${#pull[1]}-28+1+${#ACCOUNT_THUMBPRINT}))\r\n\r\n${pull[1]:28}.${ACCOUNT_THUMBPRINT}" ; } | cat
exit 0
;; j )
stringy="$( wget --no-config --no-dns-cache --no-hsts --no-check-certificate --connect-timeout=10 --read-timeout=120 -q -t1 -o /dev/null -O /dev/null --spider --save-cookies=>(cat) https://www.jango.com/stations/1/tunein?song_id=${pull[1]:7} | wget --no-config --no-dns-cache --no-hsts --no-check-certificate --connect-timeout=10 --read-timeout=120 -q -t1 -o /dev/null -O- --header="Accept-Encoding: gzip" --load-cookies=<(cat) https://www.jango.com/streams/info | gzip -q -d | sed -b 'sz"//z"https://zg' )"
export LC_ALL=C
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 200 OX\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e -n "\r\nConnection: close\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: " ; echo -E -n "${#stringy}" ; echo -e "\r\n\r" ; echo -E -n "${stringy}" ; } | cat
exit 0
;; n )
stringy="$( wget --no-config --no-dns-cache --no-hsts --no-check-certificate --connect-timeout=10 --read-timeout=120 -q -t1 -o /dev/null -O /dev/null --spider --save-cookies=>(cat) https://www.jango.com/stations/1/tunein?song_id=${pull[1]:11} | wget --no-config --no-dns-cache --no-hsts --no-check-certificate --connect-timeout=10 --read-timeout=120 -q -t1 -o /dev/null -O- --header="Accept-Encoding: gzip" --load-cookies=<(cat) https://www.jango.com/streams/info | gzip -q -d | sed -b 'sz"//z"https://zg' )"
export LC_ALL=C
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 200 OX\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e -n "\r\nConnection: close\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: " ; echo -E -n "${#stringy}" ; echo -e "\r\n\r" ; echo -E -n "${stringy}" ; } | cat
exit 0
;; esac
if [[ $(($RANDOM % 2)) -eq 0 ]] ; then
stringy="https://jango-raid.tk/"
else
stringy="https://jango-index.tk/"
fi
coproc { read LINE1 ; read LINE2 ; echo "${LINE1} ${LINE2}" ; } ; times >&"${COPROC[1]}" ; read TIMES <&"${COPROC[0]}"
{ echo -e -n "HTTP/1.1 302 OX Follow\r\nServer: GNU bash " ; echo -E -n "${BASH_VERSION}" ; echo -e -n "\r\nX-Runtime: " ; echo -E -n "${TIMES}" ; echo -e -n "\r\nConnection: close\r\nLocation: " ; echo -E -n "${stringy}" ; echo -e "\r\nContent-Type: text/plain\r\nContent-Length: 0\r\n\r" ; } | cat
exit 0
#!/bin/bash
unset -v DIAGNOSTICS ; # DIAGNOSTICS="-d -d"
unset -v PORT ; PORT=8080
unset -v DEFER_ACCEPT ; DEFER_ACCEPT=,defer-accept
unset -v READ_BUFFER ; READ_BUFFER=,readbytes=1000000
unset -v RELAY ; # RELAY=127.0.0.0:80
unset -v RETRY_COUNT ; # RETRY_COUNT=,syncnt=1
if [[ ${#RELAY} -ne 0 ]] ; then OX=tcp:${RELAY},keepalive,linger=60,nodelay${RETRY_COUNT} ; else OX=exec:./ox-proxy.sh,nofork ; fi
if socat ${DIAGNOSTICS} -u open:/dev/null,readbytes=1 open:/dev/null,su=nobody ; then su_nobody=",su=nobody" ; else su_nobody= ; fi
( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; socat ${DIAGNOSTICS} -T 60 tcp6-l:${PORT},ipv6only=0,fork,keepalive,linger=60,nodelay${DEFER_ACCEPT}${READ_BUFFER},reuseaddr${su_nobody} ${OX} )
exit 0
#!/bin/bash
unset -v DIAGNOSTICS ; # DIAGNOSTICS="-d -d"
unset -v PORT ; PORT=443
unset -v CERT ; CERT=/home/ubuntu/.acme.sh/ox-proxy.gq/ox-proxy.gq.cer
unset -v KEY ; KEY=/home/ubuntu/.acme.sh/ox-proxy.gq/ox-proxy.gq.key
unset -v CA ; CA=/home/ubuntu/.acme.sh/ox-proxy.gq/ca.cer
unset -v DEFER_ACCEPT ; DEFER_ACCEPT=,defer-accept
unset -v READ_BUFFER ; READ_BUFFER=,readbytes=1000000
unset -v RELAY ; # RELAY=127.0.0.0:80
unset -v RETRY_COUNT ; # RETRY_COUNT=,syncnt=1
if [[ ${#RELAY} -ne 0 ]] ; then OX=tcp:${RELAY},keepalive,linger=60,nodelay${RETRY_COUNT} ; else OX=exec:./ox-proxy.sh,pipes ; fi
if socat ${DIAGNOSTICS} -u open:/dev/null,readbytes=1 open:/dev/null,su=nobody ; then su_nobody=",su=nobody" ; else su_nobody= ; fi
( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; socat ${DIAGNOSTICS} -T 60 ssl-l:${PORT},pf=ip6,ipv6only=0,cert=${CERT},key=${KEY},cafile=${CA},verify=0,fork,keepalive,linger=60,nodelay${DEFER_ACCEPT}${READ_BUFFER},reuseaddr${su_nobody} ${OX} )
exit 0
Optionally exclude Jango and NoAdRadio from using Lets Encrust
<?php
if (preg_match('/^\/[.cjn]/', $_SERVER["REQUEST_URI"])) {
ob_start();
ob_start("ob_gzhandler");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://127.0.0.1:8080" . $_SERVER["REQUEST_URI"]);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_exec($curl);
curl_close($curl);
if (ob_get_length() == 0) {
ob_end_clean();
http_response_code(404);
} else {
ob_end_flush();
}
header("Content-Length: " . ob_get_length());
header("Content-Type: text/plain; charset=UTF-8");
ob_end_flush();
exit;
}
if (preg_match('/^\/\./', $_SERVER["REQUEST_URI"])) {
return false;
} else {
header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"], true, 301);
}
?>
Optionally compile lazy extractors edition of youtube-dl
#!/bin/bash
temp="$(mktemp -d)" || exit
cp -pv youtubedl-lazy "$temp"
pushd "$temp"
unzip youtubedl-lazy
echo -e '\n\n_ALL_CLASSES = [YoutubeIE]\n' >> youtube_dl/extractor/lazy_extractors.py
find -name '*.py' | xargs sed -i 's/^import re\b/import regex as re/'
python -OO -m compileall .
zip -0 youtubedl-lazy.zip $( find -name '*.pyo' )
popd
cp -pv "${temp}/youtubedl-lazy.zip" .
Optionally compile only YoutubeIE extractor of youtube-dl
#!/bin/bash
temp="$(mktemp -d)" || exit
cp -pv youtube-dl "$temp"
pushd "$temp"
unzip youtube-dl
echo 'from .youtube import YoutubeIE' > youtube_dl/extractor/extractors.py
sed -i 's/GenericIE/YoutubeIE/g' youtube_dl/extractor/__init__.py
find -name '*.py' | xargs sed -i 's/^import re\b/import regex as re/'
python -OO -m compileall .
zip -0 youtube-dl.zip $( find -name '*.pyo' )
popd
cp -pv "${temp}/youtube-dl.zip" .
Optional support for QUIC
#!/bin/bash
unset -v DIAGNOSTICS ; # DIAGNOSTICS="-L debug"
unset -v TRACING ; # TRACING="strace -f -tt"
unset -v QUIC_OPTIONS ; QUIC_OPTIONS="-g -o cc_algo=1 -o idle_timeout=600 -o mtu_probe_timer=15000 -o noprogress_timeout=1800 -o pace_packets=0 -o send_prst=1"
unset -v AUTHORITY ; AUTHORITY="ox-proxy.gq www.ox-proxy.gq ox-proxy.no-ip.org"
unset -v ADDRESS ; ADDRESS=::
unset -v PORT ; PORT=443
[[ "${1}" =~ ^[1-9][0-9]{0,4}$ ]] && [[ "${1}" -gt 0 && "${1}" -le 0xffff ]] && PORT="${1}"
unset -v CHAIN ; CHAIN=/home/ubuntu/.acme.sh/ox-proxy.gq/fullchain.cer
unset -v KEY ; KEY=/home/ubuntu/.acme.sh/ox-proxy.gq/ox-proxy.gq.key
unset -v OX ; OX=./ox-proxy.sh
unset -v CERTIFICATE_OPTIONS ; for A in $AUTHORITY ; do CERTIFICATE_OPTIONS+="-c ${A},${CHAIN},${KEY} " ; done
( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}" ; ${TRACING} lsquic/http_server-popen ${DIAGNOSTICS} ${QUIC_OPTIONS} -s ${ADDRESS}:${PORT} ${CERTIFICATE_OPTIONS} -e ${OX} )
exit 0
#!/bin/bash
unset -v PORT ; PORT=443
[[ "${1}" =~ ^[1-9][0-9]{0,4}$ ]] && [[ "${1}" -gt 0 && "${1}" -le 0xffff ]] && PORT="${1}"
( dirname_re="(^.*/)[^/]+$" ; [[ "${BASH_SOURCE[0]}" =~ $dirname_re ]] && cd "${BASH_REMATCH[1]}"
while : ; do
if lsquic/http_client -s 127.0.0.1:${PORT} -H ox-proxy.gq -o version=h3 -o ql_bits=0 -o handshake_to=70000000 -p /, | grep -q /, ; then
echo "$(date) : is fine"
else
echo "$(date) : is not fine"
pkill -e -f lsquic/http_server-popen
fi
sleep 10
done )
exit 0