1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

networking.js

This commit is contained in:
grafixeyehero 2020-01-22 03:30:55 +03:00
parent f1429d007b
commit de82a262df

View file

@ -1,53 +1,60 @@
define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function(loading, libraryMenu, globalize) { define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function (loading, libraryMenu, globalize) {
"use strict"; "use strict";
function onSubmit(e) { function onSubmit(e) {
var form = this; var form = this;
var localAddress = form.querySelector("#txtLocalAddress").value; var localAddress = form.querySelector("#txtLocalAddress").value;
var enableUpnp = form.querySelector("#chkEnableUpnp").checked; var enableUpnp = form.querySelector("#chkEnableUpnp").checked;
confirmSelections(localAddress, enableUpnp, function() { confirmSelections(localAddress, enableUpnp, function () {
var validationResult = getValidationAlert(form); var validationResult = getValidationAlert(form);
if (validationResult) return void alertText(validationResult);
validateHttps(form).then(function() { if (validationResult) {
return void alertText(validationResult);
}
validateHttps(form).then(function () {
loading.show(); loading.show();
ApiClient.getServerConfiguration().then(function(config) { ApiClient.getServerConfiguration().then(function (config) {
config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function(s) { config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function (s) {
return s.trim() return s.trim();
}).filter(function(s) { }).filter(function (s) {
return s.length > 0 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();
return s.trim() }).filter(function (s) {
}).filter(function(s) { return s.length > 0;
return s.length > 0
}); });
config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value; config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value;
config.PublicPort = form.querySelector("#txtPublicPort").value; config.PublicPort = form.querySelector("#txtPublicPort").value;
config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value; config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value;
var httpsMode = form.querySelector("#selectHttpsMode").value; var httpsMode = form.querySelector("#selectHttpsMode").value;
switch (httpsMode) { switch (httpsMode) {
case "proxy": case "proxy":
config.EnableHttps = true; config.EnableHttps = true;
config.RequireHttps = false; config.RequireHttps = false;
config.IsBehindProxy = true; config.IsBehindProxy = true;
break; break;
case "required": case "required":
config.EnableHttps = true; config.EnableHttps = true;
config.RequireHttps = true; config.RequireHttps = true;
config.IsBehindProxy = false; config.IsBehindProxy = false;
break; break;
case "enabled": case "enabled":
config.EnableHttps = true; config.EnableHttps = true;
config.RequireHttps = false; config.RequireHttps = false;
config.IsBehindProxy = false; config.IsBehindProxy = false;
break; break;
default: default:
config.EnableHttps = false; config.EnableHttps = false;
config.RequireHttps = false; config.RequireHttps = false;
config.IsBehindProxy = false; config.IsBehindProxy = false;
} }
config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value; config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value;
config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value; config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value;
config.EnableUPnP = enableUpnp; config.EnableUPnP = enableUpnp;
@ -57,47 +64,66 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
config.CertificatePassword = form.querySelector("#txtCertPassword").value || null; config.CertificatePassword = form.querySelector("#txtCertPassword").value || null;
config.LocalNetworkAddresses = localAddress ? [localAddress] : []; config.LocalNetworkAddresses = localAddress ? [localAddress] : [];
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse); ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse);
}) });
}) });
}), e.preventDefault() });
e.preventDefault();
} }
function triggerChange(select) { function triggerChange(select) {
var evt = document.createEvent("HTMLEvents"); var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", !1, !0), select.dispatchEvent(evt) evt.initEvent("change", false, true);
select.dispatchEvent(evt);
} }
function getValidationAlert(form) { function getValidationAlert(form) {
return form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value ? "The public http and https ports must be different." : form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value ? "The http and https ports must be different." : null if (form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value) {
return "The public http and https ports must be different.";
}
if (form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value) {
return "The http and https ports must be different.";
}
return null;
} }
function validateHttps(form) { function validateHttps(form) {
var certPath = form.querySelector("#txtCertificatePath").value || null; var certPath = form.querySelector("#txtCertificatePath").value || null;
var httpsMode = form.querySelector("#selectHttpsMode").value; var httpsMode = form.querySelector("#selectHttpsMode").value;
return "enabled" !== httpsMode && "required" !== httpsMode || certPath ? Promise.resolve() : new Promise(function(resolve, reject) {
if ("enabled" !== httpsMode && "required" !== httpsMode || certPath) {
return Promise.resolve();
}
return new Promise(function (resolve, reject) {
return alertText({ return alertText({
title: globalize.translate("TitleHostingSettings"), title: globalize.translate("TitleHostingSettings"),
text: globalize.translate("HttpsRequiresCert") text: globalize.translate("HttpsRequiresCert")
}).then(reject, reject) }).then(reject, reject);
}) });
} }
function alertText(options) { function alertText(options) {
return new Promise(function(resolve, reject) { return new Promise(function (resolve, reject) {
require(["alert"], function(alert) { require(["alert"], function (alert) {
alert(options).then(resolve, reject) alert(options).then(resolve, reject);
}) });
}) });
} }
function confirmSelections(localAddress, enableUpnp, callback) { function confirmSelections(localAddress, enableUpnp, callback) {
localAddress || !enableUpnp ? alertText({ if (localAddress || !enableUpnp) {
alertText({
title: globalize.translate("TitleHostingSettings"), title: globalize.translate("TitleHostingSettings"),
text: globalize.translate("SettingsWarning") text: globalize.translate("SettingsWarning")
}).then(callback) : callback() }).then(callback);
} else {
callback();
}
} }
return function(view, params) { return function (view, params) {
function loadPage(page, config) { function loadPage(page, config) {
page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber; page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber;
page.querySelector("#txtPublicPort").value = config.PublicPort; page.querySelector("#txtPublicPort").value = config.PublicPort;
@ -108,7 +134,17 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist"; page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist";
page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess;
var selectHttpsMode = page.querySelector("#selectHttpsMode"); var selectHttpsMode = page.querySelector("#selectHttpsMode");
config.IsBehindProxy ? selectHttpsMode.value = "proxy" : config.RequireHttps ? selectHttpsMode.value = "required" : config.EnableHttps ? selectHttpsMode.value = "enabled" : selectHttpsMode.value = "disabled";
if (config.IsBehindProxy) {
selectHttpsMode.value = "proxy";
} else if (config.RequireHttps) {
selectHttpsMode.value = "required";
} else if (config.EnableHttps) {
selectHttpsMode.value = "enabled";
} else {
selectHttpsMode.value = "disabled";
}
page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber; page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber;
page.querySelector("#txtBaseUrl").value = config.BaseUrl || ""; page.querySelector("#txtBaseUrl").value = config.BaseUrl || "";
var txtCertificatePath = page.querySelector("#txtCertificatePath"); var txtCertificatePath = page.querySelector("#txtCertificatePath");
@ -119,27 +155,50 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
loading.hide(); loading.hide();
} }
view.querySelector("#chkRemoteAccess").addEventListener("change", function() { view.querySelector("#chkRemoteAccess").addEventListener("change", function () {
this.checked ? (view.querySelector(".fldExternalAddressFilter").classList.remove("hide"), view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide"), view.querySelector(".fldPublicPort").classList.remove("hide"), view.querySelector(".fldPublicHttpsPort").classList.remove("hide"), view.querySelector(".fldCertificatePath").classList.remove("hide"), view.querySelector(".fldCertPassword").classList.remove("hide"), view.querySelector(".fldHttpsMode").classList.remove("hide"), view.querySelector(".fldEnableUpnp").classList.remove("hide")) : (view.querySelector(".fldExternalAddressFilter").classList.add("hide"), view.querySelector(".fldExternalAddressFilterMode").classList.add("hide"), view.querySelector(".fldPublicPort").classList.add("hide"), view.querySelector(".fldPublicHttpsPort").classList.add("hide"), view.querySelector(".fldCertificatePath").classList.add("hide"), view.querySelector(".fldCertPassword").classList.add("hide"), view.querySelector(".fldHttpsMode").classList.add("hide"), view.querySelector(".fldEnableUpnp").classList.add("hide")) if (this.checked) {
}), view.querySelector("#btnSelectCertPath").addEventListener("click", function() { view.querySelector(".fldExternalAddressFilter").classList.remove("hide");
require(["directorybrowser"], function(directoryBrowser) { view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide");
var picker = new directoryBrowser; view.querySelector(".fldPublicPort").classList.remove("hide");
view.querySelector(".fldPublicHttpsPort").classList.remove("hide");
view.querySelector(".fldCertificatePath").classList.remove("hide");
view.querySelector(".fldCertPassword").classList.remove("hide");
view.querySelector(".fldHttpsMode").classList.remove("hide");
view.querySelector(".fldEnableUpnp").classList.remove("hide");
} else {
view.querySelector(".fldExternalAddressFilter").classList.add("hide");
view.querySelector(".fldExternalAddressFilterMode").classList.add("hide");
view.querySelector(".fldPublicPort").classList.add("hide");
view.querySelector(".fldPublicHttpsPort").classList.add("hide");
view.querySelector(".fldCertificatePath").classList.add("hide");
view.querySelector(".fldCertPassword").classList.add("hide");
view.querySelector(".fldHttpsMode").classList.add("hide");
view.querySelector(".fldEnableUpnp").classList.add("hide");
}
});
view.querySelector("#btnSelectCertPath").addEventListener("click", function () {
require(["directorybrowser"], function (directoryBrowser) {
var picker = new directoryBrowser();
picker.show({ picker.show({
includeFiles: !0, includeFiles: true,
includeDirectories: !0, includeDirectories: true,
callback: function(path) { callback: function (path) {
path && (view.querySelector("#txtCertificatePath").value = path), picker.close() if (path) {
view.querySelector("#txtCertificatePath").value = path;
}
picker.close();
}, },
header: globalize.translate("HeaderSelectCertificatePath") header: globalize.translate("HeaderSelectCertificatePath")
})
})
}); });
});
view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit), view.addEventListener("viewshow", function(e) { });
view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit);
view.addEventListener("viewshow", function (e) {
loading.show(); loading.show();
ApiClient.getServerConfiguration().then(function(config) { ApiClient.getServerConfiguration().then(function (config) {
loadPage(view, config); loadPage(view, config);
}); });
}); });
} };
}); });