EmbyCrackedClient/web/network/network.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
9.5 KiB
JavaScript

import BaseSettingsView from"./../modules/viewmanager/basesettingsview.js";import loading from"./../modules/loading/loading.js";import globalize from"./../modules/common/globalize.js";import"./../modules/emby-elements/emby-input/emby-input.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/emby-checkbox/emby-checkbox.js";import"./../modules/emby-elements/emby-select/emby-select.js";import"./../modules/emby-elements/emby-premierecontainer/emby-premierecontainer.js";import formHelper from"./../modules/common/responsehelper.js";function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function onSubmit(e){let form=this,localAddress=form.querySelector(".txtLocalAddress").value,enableUpnp=form.querySelector(".chkEnableUpnp").checked;confirmSelections(localAddress,enableUpnp,function(){var validationResult=getValidationAlert(form);validationResult?showAlert(validationResult):validateHttps(form).then(function(){loading.show(),ApiClient.getServerConfiguration().then(function(config){config.LocalNetworkSubnets=form.querySelector(".txtLanNetworks").value.split(",").map(function(s){return s.trim()}).filter(function(s){return 0<s.length}),config.RemoteIPFilter=form.querySelector(".txtExternalAddressFilter").value.split(",").map(function(s){return s.trim()}).filter(function(s){return 0<s.length}),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.EnableHttps="enabled"===httpsMode,config.RequireHttps=!1),config.IsBehindProxy=!1),config.HttpsPortNumber=form.querySelector(".txtHttpsPort").value,config.HttpServerPortNumber=form.querySelector(".txtPortNumber").value,config.EnableUPnP=enableUpnp,config.SimultaneousStreamLimit=form.querySelector(".selectStreamLimit").value,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.ProxyHeaderMode=form.querySelector(".selectProxyHeaderMode").value||"AllAddresses",config.RemoteClientBitrateLimit=parseInt(1e6*parseFloat(form.querySelector(".txtRemoteClientBitrateLimit").value||"0")),config.LocalNetworkAddresses=localAddress?[localAddress]:[],ApiClient.updateServerConfiguration(config).then(formHelper.handleConfigurationSavedResponse,formHelper.handleErrorResponse)})})}),e.preventDefault()}function triggerChange(select){var evt=document.createEvent("HTMLEvents");evt.initEvent("change",!1,!0),select.dispatchEvent(evt)}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}function validateHttps(form){var certPath=form.querySelector(".txtCertificatePath").value||null,form=form.querySelector(".selectHttpsMode").value;return!("enabled"===form||"required"===form)||certPath?Promise.resolve():new Promise(function(resolve,reject){showAlert({text:globalize.translate("HttpsRequiresCert")}).then(reject,reject)})}function confirmSelections(localAddress,enableUpnp,callback){localAddress||!enableUpnp?showAlert({text:globalize.translate("SettingsWarning")}).then(callback):callback()}function isPortMapperPlugin(p){return p.Id.toLowerCase()==="96FA50A4-69CE-42AC-B6A3-EF6B3388CCB7".toLowerCase()}function fillStreamLimit(view){let html='<option value="0">'+globalize.translate("Unlimited")+"</option>";for(let i=1;i<=50;i++)html+='<option value="'+i+'">'+i+"</option>";view.querySelector(".selectStreamLimit").innerHTML=html}function showFieldsBasedOnSystemInfo(view){ApiClient.getSystemInfo().then(function(systemInfo){!1!==systemInfo.SupportsLocalPortConfiguration?(view.querySelector(".fldlocalHttpPort").classList.remove("hide"),view.querySelector(".fldlocalHttpsPort").classList.remove("hide")):(view.querySelector(".fldlocalHttpPort").classList.add("hide"),view.querySelector(".fldlocalHttpsPort").classList.add("hide"))})}function onCertPathChange(){}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(".txtRemoteClientBitrateLimit").value=config.RemoteClientBitrateLimit/1e6||"",page.querySelector(".selectExternalAddressFilterMode").value=config.IsRemoteIPFilterBlacklist?"blacklist":"whitelist",page.querySelector(".chkRemoteAccess").checked=null==config.EnableRemoteAccess||config.EnableRemoteAccess;var selectHttpsMode=page.querySelector(".selectHttpsMode"),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||"",page.querySelector(".txtCertificatePath"));selectHttpsMode.value=config.CertificatePath||"",page.querySelector(".txtCertPassword").value=config.CertificatePassword||"",page.querySelector(".chkEnableUpnp").checked=config.EnableUPnP,page.querySelector(".selectStreamLimit").value=config.SimultaneousStreamLimit||"0",page.querySelector(".selectProxyHeaderMode").value=config.ProxyHeaderMode||"AllAddresses",ApiClient.isMinServerVersion("4.8.0.42")?page.querySelector(".fldProxyHeaderMode").classList.remove("hide"):page.querySelector(".fldProxyHeaderMode").classList.add("hide"),page.querySelector(".selectProxyHeaderModeHelp").innerHTML=globalize.translate("ProxyHeaderModeHelp","X-Real-Ip","X-Forwarded-For"),onCertPathChange.call(selectHttpsMode),triggerChange(page.querySelector(".chkRemoteAccess")),loading.hide()}function determinePortMapperSupport(instance){return instance.portMapperDetermined?Promise.resolve():ApiClient.getInstalledPlugins().then(function(plugins){instance.portMapperDetermined=!0,plugins.filter(isPortMapperPlugin).length||(instance.portMapperSupported=!1)})}function View(view,params){BaseSettingsView.apply(this,arguments),this.portMapperSupported=!0,view.querySelector(".fldStreamLimit").classList.remove("hide"),fillStreamLimit(view),view.querySelector(".streamLimitPremiereInfo").innerHTML=globalize.translate("FeatureRequiresEmbyPremiere",'<a href="https://emby.media/premiere" data-preset="premiereinfo" is="emby-linkbutton" type="button" class="button-link">',"</a>");let instance=this;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(".fldDdns").classList.remove("hide"),view.querySelector(".fldCertificatePath").classList.remove("hide"),view.querySelector(".fldCertPassword").classList.remove("hide"),view.querySelector(".fldHttpsMode").classList.remove("hide"),view.querySelector(".fldRemoteBitrate").classList.remove("hide"),instance.portMapperSupported?view.querySelector(".fldEnableUpnp").classList.remove("hide"):view.querySelector(".fldEnableUpnp").classList.add("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(".fldDdns").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(".fldRemoteBitrate").classList.add("hide"))}),view.querySelector(".btnSelectCertPath").addEventListener("click",function(){Emby.importModule("./modules/directorybrowser/directorybrowser.js").then(function(directoryBrowser){let picker=new directoryBrowser;picker.show({includeFiles:!0,includeDirectories:!0,callback:function(path){path&&(view.querySelector(".txtCertificatePath").value=path),picker.close()},header:globalize.translate("HeaderSelectCertificatePath")})})}),view.querySelector(".dashboardHostingForm").addEventListener("submit",onSubmit),view.querySelector(".txtCertificatePath").addEventListener("change",onCertPathChange),showFieldsBasedOnSystemInfo(view)}Object.assign(View.prototype,BaseSettingsView.prototype),View.prototype.loadSettingsInternal=function(){loading.show();let view=this.view;return determinePortMapperSupport(this).then(function(){return ApiClient.getServerConfiguration().then(function(config){loadPage(view,config)})})};export default View;