diff --git a/database.py b/database.py index a4c875b..f089c94 100644 --- a/database.py +++ b/database.py @@ -100,6 +100,17 @@ def getTrackID(artists,title): ## HTTP requests #### +@route("/test") +def test_server(): + apikey = request.query.get("key") + response.set_header("Access-Control-Allow-Origin","*") + if not (checkAPIkey(apikey)): + response.status = 403 + return "Wrong or Missing API key" + + else: + response.status = 204 + return @route("/scrobbles") def get_scrobbles(): diff --git a/scrobbler-vivaldi-plex/settings.html b/scrobbler-vivaldi-plex/settings.html index 16c6807..b9d83b2 100644 --- a/scrobbler-vivaldi-plex/settings.html +++ b/scrobbler-vivaldi-plex/settings.html @@ -4,13 +4,15 @@ Wat + - +
-

Server:

- -

API key:

- + Server:
+ +

+ API key:
+
diff --git a/scrobbler-vivaldi-plex/settings.js b/scrobbler-vivaldi-plex/settings.js index ab5c403..8fbc921 100644 --- a/scrobbler-vivaldi-plex/settings.js +++ b/scrobbler-vivaldi-plex/settings.js @@ -3,14 +3,21 @@ document.addEventListener("DOMContentLoaded",function() { document.getElementById("serverurl").addEventListener("input",updateServer); document.getElementById("apikey").addEventListener("input",updateAPIKey); + document.getElementById("serverurl").addEventListener("change",checkServer); + document.getElementById("apikey").addEventListener("change",checkServer); + chrome.storage.local.get({"serverurl":"http://localhost:42010"},function(result) { document.getElementById("serverurl").value = result["serverurl"] + checkServer() }); chrome.storage.local.get({"apikey":"BlackPinkInYourArea"},function(result) { document.getElementById("apikey").value = result["apikey"] + checkServer() }); + + }); @@ -19,16 +26,52 @@ function updateServer() { text = document.getElementById("serverurl").value - if (!text.startsWith("http://") & !text.startsWith("https://")) { - document.getElementById("serverurl").style.backgroundColor = "pink"; - } - else { - document.getElementById("serverurl").style.backgroundColor = "white"; - chrome.storage.local.set({"serverurl":text}) - } + + chrome.storage.local.set({"serverurl":text}) } function updateAPIKey() { text = document.getElementById("apikey").value chrome.storage.local.set({"apikey":text}) } + +function checkServer() { + url = document.getElementById("serverurl").value + "/db/test?key=" + document.getElementById("apikey").value + + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = createCheckmarks; + try { + xhttp.open("GET",url,true); + xhttp.send(); + } + catch (e) { + //document.getElementById("checkmark_url").innerHTML = "❌" + //document.getElementById("checkmark_key").innerHTML = "❌" + document.getElementById("serverurl").style.backgroundColor = "red" + document.getElementById("apikey").style.backgroundColor = "red" + } + +} + +function createCheckmarks() { + if (this.readyState == 4) { + if (this.status == 204) { + //document.getElementById("checkmark_url").innerHTML = "✔️" + //document.getElementById("checkmark_key").innerHTML = "✔️" + document.getElementById("serverurl").style.backgroundColor = "lawngreen" + document.getElementById("apikey").style.backgroundColor = "lawngreen" + } + else if (this.status == 403) { + //document.getElementById("checkmark_url").innerHTML = "✔️" + //document.getElementById("checkmark_key").innerHTML = "❌" + document.getElementById("serverurl").style.backgroundColor = "lawngreen" + document.getElementById("apikey").style.backgroundColor = "red" + } + else { + //document.getElementById("checkmark_url").innerHTML = "❌" + //document.getElementById("checkmark_key").innerHTML = "❌" + document.getElementById("serverurl").style.backgroundColor = "red" + document.getElementById("apikey").style.backgroundColor = "red" + } + } +} diff --git a/server.py b/server.py index 9c1c088..9ef3b29 100755 --- a/server.py +++ b/server.py @@ -31,11 +31,16 @@ def database_get(pth): keystring = "?" for k in keys: keystring += urllib.parse.quote(k) + "=" + urllib.parse.quote(keys[k]) + "&" - contents = urllib.request.urlopen("http://localhost:" + str(DATABASE_PORT) + "/" + pth + keystring).read() - response.content_type = "application/json" response.set_header("Access-Control-Allow-Origin","*") - #print("Returning " + "http://localhost:" + str(DATABASE_PORT) + "/" + pth) - return contents + try: + proxyresponse = urllib.request.urlopen("http://localhost:" + str(DATABASE_PORT) + "/" + pth + keystring) + contents = proxyresponse.read() + response.status = proxyresponse.getcode() + response.content_type = "application/json" + return contents + except HTTPError as e: + response.status = e.code + return @post("/db/") def database_post(pth):