diff --git a/database.py b/database.py index 47eb5aa..2b76b7c 100644 --- a/database.py +++ b/database.py @@ -230,6 +230,17 @@ def test_server(key=None): # 205 Database server is up, but DB is not fully built or is inconsistent # 403 Database server is up, but provided API key is not valid +@dbserver.get("serverinfo") +def server_info(): + import info + + response.set_header("Access-Control-Allow-Origin","*") + response.set_header("Content-Type","application/json") + + return { + "name":settings.get_settings("NAME"), + "version":info.version + } ## All database functions are separated - the external wrapper only reads the request keys, converts them into lists and renames them where necessary, and puts the end result in a dict if not already so it can be returned as json diff --git a/info.py b/info.py new file mode 100644 index 0000000..1b813a9 --- /dev/null +++ b/info.py @@ -0,0 +1 @@ +version = 1,5,10 diff --git a/server.py b/server.py index 50c9631..21bc875 100755 --- a/server.py +++ b/server.py @@ -14,6 +14,7 @@ import utilities from utilities import resolveImage from urihandler import uri_to_internal, remove_identical import urihandler +import info # doreah toolkit from doreah import settings from doreah.logging import log @@ -160,6 +161,7 @@ def static_html(name): environ["malojatime"] = malojatime environ["utilities"] = utilities environ["urihandler"] = urihandler + environ["info"] = info # external environ["urllib"] = urllib # request diff --git a/settings/default.ini b/settings/default.ini index 0087509..37c37bd 100644 --- a/settings/default.ini +++ b/settings/default.ini @@ -56,4 +56,4 @@ NAME = "Generic Maloja User" [Misc] EXPERIMENTAL_FEATURES = no -USE_PYHP = no +USE_PYHP = yes diff --git a/website/admin.pyhp b/website/admin.pyhp new file mode 100644 index 0000000..27bfb72 --- /dev/null +++ b/website/admin.pyhp @@ -0,0 +1,63 @@ + + + + + + + Maloja + + + + + + + + + + + + + + + + + +
+
+
+

Maloja


+ +

Welcome to your own Maloja server!

+
+ +

Update

+ + Currently installed Maloja version:
+ Latest Maloja version: Loading...
+ + + +

Admin Mode

+ + Activate admin mode to manually scrobble from various places on the website + +

Links

+ + Server Setup
+ Manual Scrobbling + + + + diff --git a/website/common/header.html b/website/common/header.html index 6f791ff..aec0e53 100644 --- a/website/common/header.html +++ b/website/common/header.html @@ -7,3 +7,4 @@ --> + diff --git a/website/javascript/neopolitan.js b/website/javascript/neopolitan.js new file mode 100644 index 0000000..1b233d5 --- /dev/null +++ b/website/javascript/neopolitan.js @@ -0,0 +1,28 @@ +var neo=function(){var cookies={};var cookiesloaded=false;function getCookies(){cookiestrings=decodeURIComponent(document.cookie).split(';');for(var i=0;ixhttpreq(url,data,method,resolve,json));return p;} +function now(){return Math.floor(Date.now()/1000);} +return{getCookie:getCookie,setCookie:setCookie,getCookies:getCookies,saveCookies:saveCookies,xhttpreq:xhttpreq,xhttprequest:xhttprequest,now:now}}();document.addEventListener('DOMContentLoaded',function(){var elements=document.getElementsByClassName("seekable");for(var i=0;i0){supervisor();} +var body=document.getElementsByTagName("BODY")[0] +if(body.getAttribute("data-linkinterceptor")!=undefined){var interceptor=eval(body.getAttribute("data-linkinterceptor"));function interceptClickEvent(e){var href;var target=e.target||e.srcElement;if(target.tagName==='A'&&!target.classList.contains("no-intercept")){href=target.getAttribute('href');e.preventDefault();history.pushState({},"",href);interceptor();}} +document.addEventListener('click',interceptClickEvent);}},false);document.addEventListener('keyup',function(evt){if(evt.srcElement.tagName=="INPUT"){return;} +var elements=document.querySelectorAll('[data-hotkey]');for(let e of elements){if(e.getAttribute("data-hotkey")==evt.code){evt.preventDefault();e.onclick();break;}}},false); \ No newline at end of file