Add reverse proxy for local debugging

This commit is contained in:
2021-03-04 17:10:59 +01:00
parent b481db7b45
commit f3f101d804
4 changed files with 89 additions and 53 deletions

View File

@@ -1,42 +1,42 @@
function Toolbar(viewer) {
this.viewer = viewer
this.visible = false
this.sharebarVisible = false
this.currentFile = null
this.editWindow = null
this.viewer = viewer
this.visible = false
this.sharebarVisible = false
this.currentFile = null
this.editWindow = null
this.views = 0
this.downloads = 0
this.statsWebsocket = null
this.views = 0
this.downloads = 0
this.statsWebsocket = null
this.divToolbar = document.getElementById("toolbar")
this.divFilePreview = document.getElementById("filepreview")
this.downloadFrame = document.getElementById("download_frame")
this.spanViews = document.getElementById("stat_views")
this.spanDownloads = document.getElementById("stat_downloads")
this.spanSize = document.getElementById("stat_size")
this.divToolbar = document.getElementById("toolbar")
this.divFilePreview = document.getElementById("filepreview")
this.downloadFrame = document.getElementById("download_frame")
this.spanViews = document.getElementById("stat_views")
this.spanDownloads = document.getElementById("stat_downloads")
this.spanSize = document.getElementById("stat_size")
this.btnToggleToolbar = document.getElementById("btn_toggle_toolbar")
this.btnDownload = document.getElementById("btn_download")
this.btnCopyLink = document.getElementById("btn_copy")
this.spanCopyLink = document.querySelector("#btn_copy > span")
this.btnShare = document.getElementById("btn_share")
this.divSharebar = document.getElementById("sharebar")
this.btnDownload = document.getElementById("btn_download")
this.btnCopyLink = document.getElementById("btn_copy")
this.spanCopyLink = document.querySelector("#btn_copy > span")
this.btnShare = document.getElementById("btn_share")
this.divSharebar = document.getElementById("sharebar")
this.btnToggleToolbar.addEventListener("click", () => { this.toggle() })
this.btnDownload.addEventListener("click", () => { this.download() })
this.btnCopyLink.addEventListener("click", () => { this.copyUrl() })
this.btnShare.addEventListener("click", () => { this.toggleSharebar() })
this.btnDownload.addEventListener("click", () => { this.download() })
this.btnCopyLink.addEventListener("click", () => { this.copyUrl() })
this.btnShare.addEventListener("click", () => { this.toggleSharebar() })
}
Toolbar.prototype.setFile = function(file) {
Toolbar.prototype.setFile = function (file) {
this.currentFile = file
this.spanSize.innerText = formatDataVolume(file.size, 3)
this.setStats()
}
Toolbar.prototype.setStats = function() {
Toolbar.prototype.setStats = function () {
let size = this.currentFile.size
this.spanViews.innerText = "loading..."
@@ -47,19 +47,19 @@ Toolbar.prototype.setStats = function() {
}
this.statsWebsocket = new WebSocket(
location.origin.replace(/^http/, 'ws')+"/api/file/"+this.currentFile.id+"/stats"
location.origin.replace(/^http/, 'ws') + "/api/file/" + this.currentFile.id + "/stats"
)
this.statsWebsocket.onmessage = (msg) => {
let j = JSON.parse(msg.data)
console.debug("WS update", j)
this.views = j.views
this.downloads = Math.round(j.bandwidth/size)
this.downloads = Math.round(j.bandwidth / size)
this.spanViews.innerText = formatThousands(this.views)
this.spanDownloads.innerText = formatThousands(this.downloads)
}
this.statsWebsocket.onerror = (err) => {
log.error("WS error", err)
console.error("WS error", err)
this.statsWebsocket.close()
this.statsWebsocket = null
@@ -74,7 +74,7 @@ Toolbar.prototype.setStats = function() {
}
}
Toolbar.prototype.toggle = function() {
Toolbar.prototype.toggle = function () {
if (this.visible) {
if (this.sharebarVisible) { this.toggleSharebar() }
@@ -90,7 +90,7 @@ Toolbar.prototype.toggle = function() {
}
}
Toolbar.prototype.toggleSharebar = function() {
Toolbar.prototype.toggleSharebar = function () {
if (navigator.share) {
navigator.share({
title: this.viewer.title,
@@ -100,19 +100,19 @@ Toolbar.prototype.toggleSharebar = function() {
return
}
if(this.sharebarVisible){
if (this.sharebarVisible) {
this.divSharebar.style.left = "-8em"
this.btnShare.classList.remove("button_highlight")
this.sharebarVisible = false
}else{
} else {
this.divSharebar.style.left = "8em"
this.btnShare.classList.add("button_highlight")
this.sharebarVisible = true
}
}
Toolbar.prototype.download = function() {
if (captchaKey === "none" || captchaKey === ""){
Toolbar.prototype.download = function () {
if (captchaKey === "none" || captchaKey === "") {
console.debug("Server doesn't support captcha, starting download")
this.downloadFrame.src = this.currentFile.download_href
return
@@ -140,7 +140,7 @@ Toolbar.prototype.download = function() {
// Set the callback function
recaptchaCallback = token => {
// Download the file using the recaptcha token
this.downloadFrame.src = this.currentFile.download_href+"&recaptcha_response="+token
this.downloadFrame.src = this.currentFile.download_href + "&recaptcha_response=" + token
this.captchaModal.close()
}
@@ -158,25 +158,25 @@ Toolbar.prototype.download = function() {
console.debug("Showing rate limiting captcha")
showCaptcha(
"Rate limiting enabled!",
"This file is using a suspicious amount of bandwidth relative "+
"to its popularity. To continue downloading this file you "+
"This file is using a suspicious amount of bandwidth relative " +
"to its popularity. To continue downloading this file you " +
"will have to prove that you're a human first.",
)
} else if (this.currentFile.availability === "virus_detected_captcha_required") {
console.debug("Showing virus captcha")
showCaptcha(
"Malware warning!",
"According to our scanning systems this file may contain a "+
"virus of type '"+this.currentFile.availability_name+"'. You "+
"can continue downloading this file at your own risk, but you "+
"According to our scanning systems this file may contain a " +
"virus of type '" + this.currentFile.availability_name + "'. You " +
"can continue downloading this file at your own risk, but you " +
"will have to prove that you're a human first.",
)
}
}
}
Toolbar.prototype.copyUrl = function() {
if(copyText(window.location.href)) {
Toolbar.prototype.copyUrl = function () {
if (copyText(window.location.href)) {
console.log('Text copied')
this.spanCopyLink.innerText = "Copied!"
this.btnCopyLink.classList.add("button_highlight")
@@ -194,9 +194,9 @@ Toolbar.prototype.copyUrl = function() {
}
// Called by the google recaptcha script
let recaptchaElement = null
let recaptchaElement = null
let recaptchaCallback = null
function loadCaptcha(){
function loadCaptcha() {
grecaptcha.render(recaptchaElement, {
sitekey: captchaKey,
theme: "dark",