From ee46631d00695b984d055db427aab9d980257d43 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 30 Jul 2019 00:56:28 -0700 Subject: [PATCH 1/4] deminify sections of the networking controller --- src/controllers/networking.js | 70 ++++++++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/src/controllers/networking.js b/src/controllers/networking.js index c283cf44d..669448892 100644 --- a/src/controllers/networking.js +++ b/src/controllers/networking.js @@ -2,25 +2,61 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], "use strict"; function onSubmit(e) { - var form = this, - localAddress = form.querySelector("#txtLocalAddress").value, - enableUpnp = form.querySelector("#chkEnableUpnp").checked; + var form = this; + var localAddress = form.querySelector("#txtLocalAddress").value; + var enableUpnp = form.querySelector("#chkEnableUpnp").checked; confirmSelections(localAddress, enableUpnp, function() { var validationResult = getValidationAlert(form); if (validationResult) return void alertText(validationResult); validateHttps(form).then(function() { - loading.show(), ApiClient.getServerConfiguration().then(function(config) { + loading.show(); + ApiClient.getServerConfiguration().then(function(config) { config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function(s) { return s.trim() }).filter(function(s) { return s.length > 0 - }), config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function(s) { + }); + + config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function(s) { return s.trim() }).filter(function(s) { return s.length > 0 - }), config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value, config.PublicPort = form.querySelector("#txtPublicPort").value, config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value; + }); + + config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value; + config.PublicPort = form.querySelector("#txtPublicPort").value; + config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value; var httpsMode = form.querySelector("#selectHttpsMode").value; - "proxy" === httpsMode ? (config.EnableHttps = !0, config.RequireHttps = !1, config.IsBehindProxy = !0) : "required" === httpsMode ? (config.EnableHttps = !0, config.RequireHttps = !0, config.IsBehindProxy = !1) : "enabled" === httpsMode ? (config.EnableHttps = !0, config.RequireHttps = !1, config.IsBehindProxy = !1) : (config.EnableHttps = !1, config.RequireHttps = !1, config.IsBehindProxy = !1), config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value, config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value, config.EnableUPnP = enableUpnp, config.WanDdns = form.querySelector("#txtDdns").value, config.EnableRemoteAccess = form.querySelector("#chkRemoteAccess").checked, config.CertificatePath = form.querySelector("#txtCertificatePath").value || null, config.CertificatePassword = form.querySelector("#txtCertPassword").value || null, config.LocalNetworkAddresses = localAddress ? [localAddress] : [], ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse) + switch (httpsMode) { + case "proxy": + config.EnableHttps = true; + config.RequireHttps = false; + config.IsBehindProxy = true; + break; + case "required": + config.EnableHttps = true; + config.RequireHttps = true; + config.IsBehindProxy = false; + break; + case "enabled": + config.EnableHttps = true; + config.RequireHttps = false; + config.IsBehindProxy = false; + break; + default: + config.EnableHttps = false; + config.RequireHttps = false; + config.IsBehindProxy = false; + } + config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value; + config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value; + config.EnableUPnP = enableUpnp; + config.WanDdns = form.querySelector("#txtDdns").value; + config.EnableRemoteAccess = form.querySelector("#chkRemoteAccess").checked; + config.CertificatePath = form.querySelector("#txtCertificatePath").value || null; + config.CertificatePassword = form.querySelector("#txtCertPassword").value || null; + config.LocalNetworkAddresses = localAddress ? [localAddress] : []; + ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse); }) }) }), e.preventDefault() @@ -63,11 +99,25 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], return function(view, params) { function loadPage(page, config) { - page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber, page.querySelector("#txtPublicPort").value = config.PublicPort, page.querySelector("#txtPublicHttpsPort").value = config.PublicHttpsPort, page.querySelector("#txtLocalAddress").value = config.LocalNetworkAddresses[0] || "", page.querySelector("#txtLanNetworks").value = (config.LocalNetworkSubnets || []).join(", "), page.querySelector("#txtExternalAddressFilter").value = (config.RemoteIPFilter || []).join(", "), page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist", page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; + page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber; + page.querySelector("#txtPublicPort").value = config.PublicPort; + page.querySelector("#txtPublicHttpsPort").value = config.PublicHttpsPort; + page.querySelector("#txtLocalAddress").value = config.LocalNetworkAddresses[0] || ""; + page.querySelector("#txtLanNetworks").value = (config.LocalNetworkSubnets || []).join(", "); + page.querySelector("#txtExternalAddressFilter").value = (config.RemoteIPFilter || []).join(", "); + page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist"; + page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; var selectHttpsMode = page.querySelector("#selectHttpsMode"); - config.IsBehindProxy ? selectHttpsMode.value = "proxy" : config.RequireHttps ? selectHttpsMode.value = "required" : config.EnableHttps ? selectHttpsMode.value = "enabled" : selectHttpsMode.value = "disabled", page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber, page.querySelector("#txtDdns").value = config.WanDdns || ""; + config.IsBehindProxy ? selectHttpsMode.value = "proxy" : config.RequireHttps ? selectHttpsMode.value = "required" : config.EnableHttps ? selectHttpsMode.value = "enabled" : selectHttpsMode.value = "disabled"; + page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber; + page.querySelector("#txtDdns").value = config.WanDdns || ""; var txtCertificatePath = page.querySelector("#txtCertificatePath"); - txtCertificatePath.value = config.CertificatePath || "", page.querySelector("#txtCertPassword").value = config.CertificatePassword || "", page.querySelector("#chkEnableUpnp").checked = config.EnableUPnP, onCertPathChange.call(txtCertificatePath), triggerChange(page.querySelector("#chkRemoteAccess")), loading.hide() + txtCertificatePath.value = config.CertificatePath || ""; + page.querySelector("#txtCertPassword").value = config.CertificatePassword || ""; + page.querySelector("#chkEnableUpnp").checked = config.EnableUPnP; + onCertPathChange.call(txtCertificatePath); + triggerChange(page.querySelector("#chkRemoteAccess")); + loading.hide(); } function onCertPathChange() { From 8f956658d44c92ddf9acb202e197b75216494c55 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 30 Jul 2019 23:26:12 -0700 Subject: [PATCH 2/4] remove emby prefix from api requests --- src/bower_components/apiclient/apiclientcore.js | 2 +- src/bower_components/apiclient/connectionmanager.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bower_components/apiclient/apiclientcore.js b/src/bower_components/apiclient/apiclientcore.js index ea4d05d0a..90a8d8339 100644 --- a/src/bower_components/apiclient/apiclientcore.js +++ b/src/bower_components/apiclient/apiclientcore.js @@ -242,7 +242,7 @@ define(["events", "appStorage"], function(events, appStorage) { var url = serverAddress || this._serverAddress; if (!url) throw new Error("serverAddress is yet not set"); var lowered = url.toLowerCase(); - return -1 === lowered.indexOf("/emby") && -1 === lowered.indexOf("/mediabrowser") && (url += "/emby"), "/" !== name.charAt(0) && (url += "/"), url += name, params && (params = paramsToString(params)) && (url += "?" + params), url + return "/" !== name.charAt(0) && (url += "/"), url += name, params && (params = paramsToString(params)) && (url += "?" + params), url }, ApiClient.prototype.fetchWithFailover = function(request, enableReconnection) { console.log("Requesting " + request.url), request.timeout = 3e4; var instance = this; diff --git a/src/bower_components/apiclient/connectionmanager.js b/src/bower_components/apiclient/connectionmanager.js index 93e9673a4..378b9cdef 100644 --- a/src/bower_components/apiclient/connectionmanager.js +++ b/src/bower_components/apiclient/connectionmanager.js @@ -40,7 +40,7 @@ define(["events", "apiclient", "appStorage"], function(events, apiClientFactory, } function getEmbyServerUrl(baseUrl, handler) { - return baseUrl + "/emby/" + handler + return baseUrl + "/" + handler } function getFetchPromise(request) { From 76923c3dc9db88954c14d885504e55ddece89faf Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 30 Jul 2019 23:26:42 -0700 Subject: [PATCH 3/4] add base url option to networking page --- src/controllers/networking.js | 2 ++ src/networking.html | 5 +++++ src/strings/en-us.json | 2 ++ 3 files changed, 9 insertions(+) diff --git a/src/controllers/networking.js b/src/controllers/networking.js index 669448892..c0367a813 100644 --- a/src/controllers/networking.js +++ b/src/controllers/networking.js @@ -52,6 +52,7 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value; config.EnableUPnP = enableUpnp; config.WanDdns = form.querySelector("#txtDdns").value; + config.BaseUrl = form.querySelector("#txtBaseUrl").value; config.EnableRemoteAccess = form.querySelector("#chkRemoteAccess").checked; config.CertificatePath = form.querySelector("#txtCertificatePath").value || null; config.CertificatePassword = form.querySelector("#txtCertPassword").value || null; @@ -111,6 +112,7 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], config.IsBehindProxy ? selectHttpsMode.value = "proxy" : config.RequireHttps ? selectHttpsMode.value = "required" : config.EnableHttps ? selectHttpsMode.value = "enabled" : selectHttpsMode.value = "disabled"; page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber; page.querySelector("#txtDdns").value = config.WanDdns || ""; + page.querySelector("#txtBaseUrl").value = config.BaseUrl || ""; var txtCertificatePath = page.querySelector("#txtCertificatePath"); txtCertificatePath.value = config.CertificatePath || ""; page.querySelector("#txtCertPassword").value = config.CertificatePassword || ""; diff --git a/src/networking.html b/src/networking.html index 4ea44cee2..e55840482 100644 --- a/src/networking.html +++ b/src/networking.html @@ -56,6 +56,11 @@
${LabelExternalDDNSHelp}
+
+ +
${LabelBaseUrlHelp}
+
+
diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 2c7b98167..acfe3832b 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -632,6 +632,8 @@ "LabelEveryXMinutes": "Every:", "LabelExternalDDNS": "External domain:", "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here for clients to use when connecting remotely. This field is required when used with a custom SSL certificate. Example: mydomain.com.", + "LabelBaseUrl": "Base URL:", + "LabelBaseUrlHelp": "You can add a custom subdirectory here to access the server from a more unique URL.", "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", "LabelFailed": "Failed", From 61f5a649ff90b1b9222caef6efab0311dc349f18 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 25 Aug 2019 00:29:12 -0700 Subject: [PATCH 4/4] only use hostname when adding a server --- src/addserver.html | 12 ++++-------- src/controllers/addserver.js | 20 ++++++++------------ 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/addserver.html b/src/addserver.html index a5c67ddce..763f56851 100644 --- a/src/addserver.html +++ b/src/addserver.html @@ -1,20 +1,16 @@
-
-

${HeaderConnectToServer}

+ +

${HeaderConnectToServer}

-
${LabelServerHostHelp}
-
-
-
- +
${LabelServerHostHelp}

-
diff --git a/src/controllers/addserver.js b/src/controllers/addserver.js index 45fa42742..6d596632b 100644 --- a/src/controllers/addserver.js +++ b/src/controllers/addserver.js @@ -6,7 +6,8 @@ define(["appSettings", "loading", "browser", "emby-button"], function(appSetting switch (result.State) { case "SignedIn": var apiClient = result.ApiClient; - Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient), Dashboard.navigate("home.html"); + Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient); + Dashboard.navigate("home.html"); break; case "ServerSignIn": Dashboard.navigate("login.html?serverid=" + result.Servers[0].Id, false, "none"); @@ -27,14 +28,9 @@ define(["appSettings", "loading", "browser", "emby-button"], function(appSetting } } - function submitManualServer(page) { - var host = page.querySelector("#txtServerHost").value; - var port = page.querySelector("#txtServerPort").value; - if (port) { - host += ":" + port; - } - + function submitServer(page) { loading.show(); + var host = page.querySelector("#txtServerHost").value; ConnectionManager.connectToAddress(host, { enableAutoLogin: appSettings.enableAutoLogin() }).then(function(result) { @@ -47,11 +43,11 @@ define(["appSettings", "loading", "browser", "emby-button"], function(appSetting } return function(view, params) { - view.querySelector(".manualServerForm").addEventListener("submit", onManualServerSubmit); - view.querySelector(".btnCancelManualServer").addEventListener("click", goBack); + view.querySelector(".addServerForm").addEventListener("submit", onServerSubmit); + view.querySelector(".btnCancel").addEventListener("click", goBack); - function onManualServerSubmit(e) { - submitManualServer(view); + function onServerSubmit(e) { + submitServer(view); e.preventDefault(); return false; }