From aee1ca3f153cb8d285ceba792213a260ce7dd4e7 Mon Sep 17 00:00:00 2001 From: Dominika Liberda Date: Sun, 2 May 2021 23:06:01 +0000 Subject: [PATCH] + proxying protected videos --- routes.sh | 1 + webroot/js/player.js | 8 ++++++++ webroot/proxy.shs | 5 +++++ webroot/robots.txt | 3 +++ 4 files changed, 17 insertions(+) create mode 100644 webroot/proxy.shs create mode 100644 webroot/robots.txt diff --git a/routes.sh b/routes.sh index 59c3da3..2fcc9a8 100644 --- a/routes.sh +++ b/routes.sh @@ -7,3 +7,4 @@ router "/channel/:id" "${cfg[namespace]}/webroot/channel.shs" router "/user/:user" "${cfg[namespace]}/webroot/channel.shs" router "/playlist" "${cfg[namespace]}/webroot/playlist.shs" router "/watch" "${cfg[namespace]}/webroot/watch.shs" +router "/proxy" "${cfg[namespace]}/webroot/proxy.shs" diff --git a/webroot/js/player.js b/webroot/js/player.js index 923f713..f58eee0 100644 --- a/webroot/js/player.js +++ b/webroot/js/player.js @@ -179,6 +179,12 @@ window.addEventListener('DOMContentLoaded', (event) => { localStorage.removeItem("audioStream"); } + function handleProtected(e) { + console.log(e) + if(e.originalTarget.error.code == 4 && ! e.originalTarget.currentSrc.startsWith("https://"+window.location.hostname)) { + e.target.src="https://"+window.location.hostname+"/proxy?url="+encodeURIComponent(encodeURIComponent(e.originalTarget.currentSrc)) + } + } function getMimeType(fmt) { const mainType = fmt.vcodec !== 'none' ? 'video' : 'audio'; let secondary = { @@ -248,6 +254,8 @@ window.addEventListener('DOMContentLoaded', (event) => { // document.querySelector('.ytp-play-progress').addEventListener('click', (e) => scrub(e)); document.querySelector('.ytp-volume-slider').addEventListener('click', (e) => volume(e)); document.querySelector('.ytp-button-fullscreen-enter').addEventListener('click', () => toggleFullscreen()); + document.querySelector('video').addEventListener('error', (e) => handleProtected(e)); + document.querySelector('audio').addEventListener('error', (e) => handleProtected(e)); if(localStorage.getItem("autoplay") == "true") { toggleVideo(true); diff --git a/webroot/proxy.shs b/webroot/proxy.shs new file mode 100644 index 0000000..66d354f --- /dev/null +++ b/webroot/proxy.shs @@ -0,0 +1,5 @@ +#!/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 - +fi diff --git a/webroot/robots.txt b/webroot/robots.txt new file mode 100644 index 0000000..374193d --- /dev/null +++ b/webroot/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Disallow: / +Disallow: /*