diff --git a/src/controllers/dashboard/networking.html b/src/controllers/dashboard/networking.html
new file mode 100644
index 0000000000..0102cd5ab8
--- /dev/null
+++ b/src/controllers/dashboard/networking.html
@@ -0,0 +1,202 @@
+
diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js
index 4ddde7f24c..8d9b9fa531 100644
--- a/src/controllers/dashboard/networking.js
+++ b/src/controllers/dashboard/networking.js
@@ -1,12 +1,16 @@
-define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) {
- 'use strict';
+import loading from 'loading';
+import globalize from 'globalize';
+import 'emby-checkbox';
+import 'emby-select';
+
+/* eslint-disable indent */
function onSubmit(e) {
- var form = this;
- var localAddress = form.querySelector('#txtLocalAddress').value;
- var enableUpnp = form.querySelector('#chkEnableUpnp').checked;
+ const form = this;
+ const localAddress = form.querySelector('#txtLocalAddress').value;
+ const enableUpnp = form.querySelector('#chkEnableUpnp').checked;
confirmSelections(localAddress, enableUpnp, function () {
- var validationResult = getValidationAlert(form);
+ const validationResult = getValidationAlert(form);
if (validationResult) {
showAlertText(validationResult);
@@ -15,7 +19,7 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
validateHttps(form).then(function () {
loading.show();
- ApiClient.getServerConfiguration().then(function (config) {
+ ApiClient.getNamedConfiguration('network').then(function (config) {
config.LocalNetworkSubnets = form.querySelector('#txtLanNetworks').value.split(',').map(function (s) {
return s.trim();
}).filter(function (s) {
@@ -26,7 +30,24 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
}).filter(function (s) {
return s.length > 0;
});
- config.IsRemoteIPFilterBlacklist = 'blacklist' === form.querySelector('#selectExternalAddressFilterMode').value;
+ config.KnownProxies = form.querySelector('#txtKnownProxies').value.split(',').map(function (s) {
+ return s.trim();
+ }).filter(function (s) {
+ return s.length > 0;
+ });
+ config.LocalNetworkAddresses = form.querySelector('#txtLocalAddress').value.split(',').map(function (s) {
+ return s.trim();
+ }).filter(function (s) {
+ return s.length > 0;
+ });
+
+ config.PublishedServerUriBySubnet = form.querySelector('#txtPublishedServer').value.split(',').map(function (s) {
+ return s.trim();
+ }).filter(function (s) {
+ return s.length > 0;
+ });
+
+ config.IsRemoteIPFilterBlacklist = form.querySelector('#selectExternalAddressFilterMode').value === 'blacklist';
config.PublicPort = form.querySelector('#txtPublicPort').value;
config.PublicHttpsPort = form.querySelector('#txtPublicHttpsPort').value;
config.HttpServerPortNumber = form.querySelector('#txtPortNumber').value;
@@ -38,8 +59,18 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
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);
+
+ config.UPnPCreateHttpPortMap = form.querySelector('#chkCreateHttpPortMap').checked;
+ config.AutoDiscovery = form.querySelector('#chkAutodiscovery').checked;
+ config.AutoDiscoveryTracing = form.querySelector('#chkAutodiscoveryTracing').checked;
+ config.EnableIP6 = form.querySelector('#chkEnableIP6').checked;
+ config.EnableIP4 = form.querySelector('#chkEnableIP4').checked;
+ config.UPnPCreateHttpPortMap = form.querySelector('#chkCreateHttpPortMap').checked;
+ config.UDPPortRange = form.querySelector('#txtUDPPortRange').value || null;
+ config.HDHomerunPortRange = form.querySelector('#txtHDHomerunPortRange').checked || null;
+ config.EnableSSDPTracing = form.querySelector('#chkEnableSSDPTracing').checked;
+ config.SSDPTracingFilter = form.querySelector('#txtSSDPTracingFilter').value || null;
+ ApiClient.updateNamedConfiguration('network', config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse);
});
});
});
@@ -47,7 +78,7 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
}
function triggerChange(select) {
- var evt = document.createEvent('HTMLEvents');
+ const evt = document.createEvent('HTMLEvents');
evt.initEvent('change', false, true);
select.dispatchEvent(evt);
}
@@ -65,8 +96,8 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
}
function validateHttps(form) {
- var certPath = form.querySelector('#txtCertificatePath').value || null;
- var httpsEnabled = form.querySelector('#chkEnableHttps').checked;
+ const certPath = form.querySelector('#txtCertificatePath').value || null;
+ const httpsEnabled = form.querySelector('#chkEnableHttps').checked;
if (httpsEnabled && !certPath) {
return showAlertText({
@@ -80,7 +111,7 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
function showAlertText(options) {
return new Promise(function (resolve, reject) {
- require(['alert'], function (alert) {
+ import('alert').then(({default: alert}) => {
alert(options).then(resolve, reject);
});
});
@@ -97,25 +128,37 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
}
}
- return function (view, params) {
+ export default 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('#txtKnownProxies').value = (config.KnownProxies || []).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('#chkRemoteAccess').checked = config.EnableRemoteAccess == null || config.EnableRemoteAccess;
page.querySelector('#txtHttpsPort').value = config.HttpsPortNumber;
page.querySelector('#chkEnableHttps').checked = config.EnableHttps;
page.querySelector('#chkRequireHttps').checked = config.RequireHttps;
page.querySelector('#txtBaseUrl').value = config.BaseUrl || '';
- var txtCertificatePath = page.querySelector('#txtCertificatePath');
+ const txtCertificatePath = page.querySelector('#txtCertificatePath');
txtCertificatePath.value = config.CertificatePath || '';
page.querySelector('#txtCertPassword').value = config.CertificatePassword || '';
page.querySelector('#chkEnableUpnp').checked = config.EnableUPnP;
triggerChange(page.querySelector('#chkRemoteAccess'));
+ form.querySelector('#chkCreateHttpPortMap').checked = config.UPnPCreateHttpPortMap;
+ form.querySelector('#chkAutodiscovery').checked = config.AutoDiscovery;
+ form.querySelector('#chkAutodiscoveryTracing').checked = config.AutoDiscoveryTracing;
+ form.querySelector('#chkEnableIP6').checked = config.EnableIP6;
+ form.querySelector('#chkEnableIP4').checked = config.EnableIP4;
+ form.querySelector('#chkCreateHttpPortMap').checked = config.UPnPCreateHttpPortMap;
+ form.querySelector('#txtUDPPortRange').value = config.UDPPortRange;
+ form.querySelector('#txtHDHomerunPortRange').checked = config.HDHomerunPortRange;
+ form.querySelector('#chkEnableSSDPTracing').checked = config.EnableSSDPTracing;
+ form.querySelector('#txtSSDPTracingFilter').value = config.SSDPTracingFilter;
+
loading.hide();
}
@@ -135,8 +178,8 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
}
});
view.querySelector('#btnSelectCertPath').addEventListener('click', function () {
- require(['directorybrowser'], function (directoryBrowser) {
- var picker = new directoryBrowser();
+ import('directorybrowser').then(({default: directoryBrowser}) => {
+ const picker = new directoryBrowser();
picker.show({
includeFiles: true,
includeDirectories: true,
@@ -154,9 +197,10 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
view.querySelector('.dashboardHostingForm').addEventListener('submit', onSubmit);
view.addEventListener('viewshow', function (e) {
loading.show();
- ApiClient.getServerConfiguration().then(function (config) {
+ ApiClient.getNamedConfiguration('network').then(function (config) {
loadPage(view, config);
});
});
- };
-});
+ }
+
+/* eslint-enable indent */