From 393f5db8922c657b6260162b6a74c144990925af Mon Sep 17 00:00:00 2001 From: Sepp Jeremiah Morris Date: Thu, 15 Feb 2024 00:18:03 +0100 Subject: [PATCH] added more config options + reverse proxy for secure jellyfin servers (tryout) && connecting to JF server :) --- app/js/jellyfin-setup.js | 118 +++++++++++++++++++++++++++++++++--- app/js/settingloader.js | 4 +- app/xml/about.xml | 6 ++ app/xml/server-settings.xml | 2 +- configLoader.go | 3 + dnsResolver.go | 2 +- main.go | 22 ++++--- settings.cfg | 18 ++++-- webServer.go | 24 +++++++- 9 files changed, 175 insertions(+), 24 deletions(-) diff --git a/app/js/jellyfin-setup.js b/app/js/jellyfin-setup.js index c50175d..0095ad1 100644 --- a/app/js/jellyfin-setup.js +++ b/app/js/jellyfin-setup.js @@ -23,7 +23,7 @@ function setServerAddress() { showTextEntryPage( "emailAddress", "Set Jellyfin Server Address", - "Enter the address of the Jellyfin server:", + "Enter the address of the Jellyfin server: \n\nExample: \nhttps://demo.jellyfin.org/stable \nhttp://192.168.11.11:8096", function(value) { // Save server address to localStorage atv.localStorage['jellyfin_server_address'] = value; @@ -32,7 +32,7 @@ function setServerAddress() { function() { fetchDataAndRender(); }, - atv.localStorage['jellyfin_server_address'] || "" + atv.localStorage['jellyfin_server_address'] || "http://" ); } @@ -40,8 +40,8 @@ function setServerAddress() { function setUsername() { showTextEntryPage( "emailAddress", - "Set Username", - "Enter your username:", + "Set Jellyfin Username", + "Enter your Jellyfin username:", function(value) { // Save username to localStorage atv.localStorage['jellyfin_username'] = value; @@ -58,8 +58,8 @@ function setUsername() { function setPassword() { showTextEntryPage( "password", - "Set Password", - "Enter your password:", + "Set Jellyfin Password", + "Enter your Jellyfin password:", function(value) { // Save password to localStorage atv.localStorage['jellyfin_password'] = value; @@ -74,7 +74,6 @@ function setPassword() { } // Let's try finding and changing the values - function fetchDataAndRender() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { @@ -90,3 +89,108 @@ function fetchDataAndRender() { xhttp.open("GET", 'https://' + atv.jcathost.SigHost + '/xml/server-settings.xml', true); xhttp.send(); } + +function getJellyfinInfo() { + var xhttp = new XMLHttpRequest(); + var serverAddress = atv.localStorage['jellyfin_server_address']; + + if (!serverAddress) { + showServerErrorScreen(); + return; + } + + if (!serverAddress || !/(http|https):\/\//.test(serverAddress)) { + showServerErrorScreen(); + return; + } + + xhttp.onreadystatechange = function() { + if (this.readyState == 4) { + if (this.status == 200) { + var response = JSON.parse(this.responseText); + if (response && response.ProductName === "Jellyfin Server") { + displayJellyfinInfo(response); + } else { + showServerErrorScreen(); + } + } else { + showServerErrorScreen(); + } + } + }; + + xhttp.open("GET", serverAddress + "/system/info/public", true); + xhttp.send(); +} + +function displayJellyfinInfo(info) { + var serverName = info.ServerName; + var version = info.Version; + var productName = info.ProductName; + var operatingSystem = info.OperatingSystem; + var id = info.Id; + var serverAddress = atv.localStorage['jellyfin_server_address']; + + var xmlstr = '' + + '' + + '' + + '