Help
RSS
API
Feed
Maltego
Contact
Domain > support.szigetkoz.net
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2017-02-27
80.249.162.212
(
ClassC
)
2025-03-28
185.80.48.81
(
ClassC
)
Port 80
HTTP/1.1 200 OKServer: nginx/1.18.0 (Ubuntu)Date: Fri, 28 Mar 2025 05:54:08 GMTContent-Type: text/html; charsetutf-8Content-Length: 183382Connection: keep-aliveVary: Accept-EncodingCache-Control: privateX-Robots-Tag: noindexX-Content-Type-Options: nosniffP3P: CPNON CUR OUR STP STA PRE !DOCTYPE html>html>head>meta http-equivX-UA-Compatible contentIEedge />meta nameviewport contentwidthdevice-width, initial-scale1, maximum-scale1, user-scalableno /> script> function setTaggedSessionInfo(tag, taggedSessionInfo) { var oldTaggedSessionInfo window._taggedSessionInfostag; window._taggedSessionInfostag taggedSessionInfo; if (!oldTaggedSessionInfo || taggedSessionInfo.SessionID ! oldTaggedSessionInfo.SessionID || taggedSessionInfo.Code ! oldTaggedSessionInfo.Code) SC.livedata.notifyDirty(); } // backwards compatibility with extensions function setTaggedSessionID(tag, sessionID) { window.setTaggedSessionInfo(tag, { SessionID: sessionID }); } function getTaggedSessionInfo(tag) { return window._taggedSessionInfostag; } function getSessionInfo() { var liveData SC.livedata.get(); return liveData && liveData.ResponseInfoMap && liveData.ResponseInfoMapGuestSessionInfo } /script>script srcScript.ashx?__Cache098fcc65-245f-4f32-9963-80e254a8e6ec iddefaultScript>/script>script srcScripts/SC.polyfill.ts?ScriptImportTypeNoModule&__Cache63db820d-06fa-4fde-a91e-5251df5f8e95 nomodulenomodule>/script>script srcScripts/SC.main.ts?ScriptImportTypeNoModule&__Cache3ae0aae1-d2f1-4a4b-9400-f120abe22a3b nomodulenomodule>/script>script srcScripts/SC.main.ts?ScriptImportTypeClassic&__Cache3ae0aae1-d2f1-4a4b-9400-f120abe22a3b>/script>link hrefApp_Themes/LightWithRed/Default.css?__Cachecc9dff61-e7e0-4e4f-acd6-4bb5c48fa930 typetext/css relstylesheet />link hrefFavIcon.axd?__Cachebe149956-92b5-414f-8908-867b86a220bf relshortcut icon />script>SC.util.mergeIntoContext({focusedControlID:null,userName:,userDisplayName:,isUserAuthenticated:false,antiForgeryToken:ehsHIQsKyc7AuYHsquNnFPQVSWsFUwXW6xKfJvEWnPsBAACAZtNg8L4tQg,isUserAdministrator:false,canManageSharedToolbox:false,pageBaseFileName:Guest,notifyActivityFrequencyMilliseconds:600000,loginAfterInactivityMilliseconds:36000000,canChangePassword:false,controlPanelUrl:null,pageType:GuestPage,processType:2,userAgentOverride:null,sessionTypeInfos:,imports:{SC.editor:Scripts/SC.editor.ts?ScriptImportTypeEsModule\u0026__Cachec9b2571f-5031-4d47-81cb-1e3349afc735}});/script>script>SC.extension.addInitializeProc(d55008eb-fe3b-4285-a45c-b16d78156530, function (extensionContext) {var hasSentCommand false;SC.event.addGlobalHandler(SC.event.InitializeTab, function (eventArgs) { if (isGeneralTab(eventArgs.tabName)) { hasSentCommand false; var descriptionList eventArgs.container.firstChild; SC.ui.addElement(descriptionList, dt, {id: modelContainer, innerHTML: Model :}); SC.ui.addElement(descriptionList, dd, {id: modelValueContainer}); SC.ui.addElement(descriptionList, dt, {id: manufacturerContainer, innerHTML: Manufacturer:}); SC.ui.addElement(descriptionList, dd, {id: manufacturerValueContainer}); SC.ui.addElement(descriptionList, dt, {id: biosNameContainer, innerHTML: BIOS Name:}); SC.ui.addElement(descriptionList, dd, {id: biosNameValueContainer}); SC.ui.addElement(descriptionList, dt, {id: biosSerialContainer, innerHTML: BIOS Serial:}); SC.ui.addElement(descriptionList, dd, {id: biosSerialValueContainer}); }});SC.event.addGlobalHandler(SC.event.RefreshTab, function (eventArgs) { if (isGeneralTab(eventArgs.tabName)) { SC.ui.clear($(modelValueContainer)); SC.ui.clear($(manufacturerValueContainer)); SC.ui.clear($(biosNameValueContainer)); SC.ui.clear($(biosSerialValueContainer)); if (isSupportedOperatingSystem(eventArgs.session.GuestOperatingSystemName)) displayInformationRequest( getLatestInformationRequestEvent( eventArgs.sessionDetails, eventArgs.tabName ), eventArgs ); }});function isSupportedOperatingSystem(operatingSystemName) { if (operatingSystemName.startsWith(Windows) || operatingSystemName.startsWith(Microsoft)) return true; else return false;}function sendInformationalCommand() { SC.service.AddGeneralInfoEventToSession( SC.pagedata.get().SessionGroupPath, SC.types.SessionEventType.QueuedCommand, window.getSessionUrlPart(), getInputCommand(General) );}function getInputCommand(commandType) { var headers getHeaders(); headers.CommandType commandType; var commandText $computer get-wmiobject win32_computersystem | select Manufacturer, Model + \n + $bios get-wmiobject win32_bios | select Name, SerialNumber + \n + write-output $computer.Manufacturer, $computer.Model, $bios.Name, $bios.SerialNumber| ConvertTo-Xml -As Stream; var emptyLinePrefix ; if (headers.Processor sh) { emptyLinePrefix echo ; } else { emptyLinePrefix echo ; commandText $Host.UI.RawUI.BufferSize New-Object Management.Automation.Host.Size (500, 25) + \n + commandText; } return #! + headers.shaBang + \n + #maxlength100000 + \n + #timeout90000 + \n + headers.modifier + INFORMATIONREQUEST-RESPONSE/1 + headers.delimiter + \n + headers.modifier + CommandType: + headers.CommandType + headers.delimiter + \n + headers.modifier + ContentType: + headers.ContentType + headers.delimiter + \n + emptyLinePrefix + \n + commandText;}function getHeaders() { return { Processor: ps, Interface: powershell, ContentType: xml, shaBang: ps, modifier: echo \, delimiter: \ };}function isGeneralTab(tabName) { switch (tabName) { case General: return true; default: return false; }}function isInformationRequestContent(eventData) { if (eventData.startsWith(INFORMATIONREQUEST-RESPONSE/1)) return true; else if (eventData.startsWith(\ufeffINFORMATIONREQUEST-RESPONSE/1)) return true; else return false;}function getLatestInformationRequestEvent(sessionDetails, CommandEventType) { return sessionDetails.Connections .map(function(c) { return c.Events; }) .reduce(function (outputArray, events) { Array.prototype.push.apply(outputArray, events); return outputArray; }, ) .filter(function (e) { return e.EventType SC.types.SessionEventType.RanCommand && isInformationRequestContent(e.Data) }) .sort(function (x, y) { return x.Time - y.Time; }) 0;}function parseDataHeaders(eventData) { var currentIndex 0; var headers {}; var isStatusLine true; while (true) { var nextNewLineIndex eventData.indexOf(\n, currentIndex); if (isStatusLine) isStatusLine false; else if (nextNewLineIndex currentIndex + 2 || nextNewLineIndex 0) break; else { var lineParts eventData.substring(currentIndex, nextNewLineIndex).split(: ); headerslineParts0 lineParts1; } currentIndex nextNewLineIndex + 1; } return headers;}function displayInformationRequest(latestCommandEvent, eventArgs) { if (typeof latestCommandEvent undefined && hasSentCommand false && window.isCommandEnabled(RunCommand, null, eventArgs.session, eventArgs.session.Permissions) && eventArgs.session.ActiveConnections.length > 0) { sendInformationalCommand(); hasSentCommand true; } else { var headers parseDataHeaders(latestCommandEvent.Data); displayCommandData( getEventDataXml(latestCommandEvent.Data), eventArgs.session ); }}function getEventDataXml(eventData) { return parseXml(eventData.substring(eventData.indexOf(?xml), eventData.length));}function displayCommandData(xml, session) { var x xml.getElementsByTagName(Object); if (isUsingInternetExplorerOrEdge()) { $(manufacturerValueContainer).innerHTML x0.childNodes0.textContent; $(modelValueContainer).innerHTML x1.childNodes0.textContent; $(biosNameValueContainer).innerHTML x2.childNodes0.textContent; $(biosSerialValueContainer).innerHTML x3.childNodes0.textContent; addNoteIfNotAlreadyPresent( getAndFormatNoteContent( x0.childNodes0.textContent, x1.childNodes0.textContent, x2.childNodes0.textContent, x3.childNodes0.textContent), session ); } else { $(manufacturerValueContainer).innerHTML x0.innerHTML; $(modelValueContainer).innerHTML x1.innerHTML; $(biosNameValueContainer).innerHTML x2.innerHTML; $(biosSerialValueContainer).innerHTML x3.innerHTML; addNoteIfNotAlreadyPresent( getAndFormatNoteContent( x0.innerHTML, x1.innerHTML, x2.innerHTML, x3.innerHTML), session ); }}function addNoteIfNotAlreadyPresent(note, session) { if (!isAdditionalGeneralInfoNoteAlreadyPresent(session) && extensionContext.settingValues.ShouldStoreInfoInNote true && window.isCommandEnabled(AddNote, null, session, session.Permissions)) SC.service.AddGeneralInfoEventToSession( SC.pagedata.get().SessionGroupPath, SC.types.SessionEventType.AddedNote, window.getSessionUrlPart(), note );}function isAdditionalGeneralInfoNoteAlreadyPresent(session) { if (session.Notes.includes(Manufacturer:)) return true; else return false;}function getAndFormatNoteContent(a, b, c, d) { return Manufacturer: + a + \nModel: + b + \nBIOS Name: + c + \nBIOS Serial: + d;}function parseXml(xml) { var dom null; if (window.DOMParser) { try { dom (new DOMParser()).parseFromString(xml, text/xml); } catch (e) { dom null; } } else if (window.ActiveXObject) { try { dom new ActiveXObject(Microsoft.XMLDOM); dom.async false; if (!dom.loadXML(xml)) window.alert(dom.parseError.reason + dom.parseError.srcText); } catch (e) { dom null; } } else { alert(cannot parse xml string!); } return dom;}function isUsingInternetExplorerOrEdge() { var ua window.navigator.userAgent; var msie ua.indexOf(Trident); if (ua.indexOf(Trident) > 0 || ua.indexOf(Edge) > 0) return true; else return false;}});/script>script>SC.extension.addInitializeProc(fa369545-ba27-4670-b053-a9f65f3269b0, function (extensionContext) {if (SC.context.pageType AdministrationPage && SC.context.isUserAuthenticated) SC.service.GetThemeInfo(function (themeInfo) { SC.util.includeStyleSheet(extensionContext.baseUrl + css/Style.css); });SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case WebConfigSave: SC.dialog.showModalButtonDialog( Prompt, SC.resAdvancedConfig.ApplyChanges, OK, Default, function (container) { SC.ui.setContents(container, eventArgs.commandArgument WebConfigRestore ? $p(SC.resAdvancedConfig.RestoreDefaults.WebConfigWarning) : $p(SC.resAdvancedConfig.RestartInstanceWarning) ); }, function () { var appSettings JSON.parse(sessionStorage.getItem(WebConfigAppSettings)); var pageSettings JSON.parse(JSON.stringify(appSettings.location)); delete appSettings.location; SC.service.WriteChangesToWebConfig(appSettings, pageSettings, function (result) { if (result OK) { sessionStorage.removeItem(WebConfigAppSettings); SC.dialog.showModalActivityAndReload(Save, true, window.location.href.split(#)0); } else { SC.dialog.showModalMessageBox(SC.resAdvancedConfig.SaveError.Title, SC.resAdvancedConfig.SaveError.WebConfigDescription + + result); } }); } ); break; case AppConfigSave: SC.dialog.showModalButtonDialog( Prompt, SC.resAdvancedConfig.ApplyChanges, OK, Default, function (container) { SC.ui.setContents(container, eventArgs.commandArgument AppConfigRestore ? $p(SC.resAdvancedConfig.RestoreDefaults.AppConfigWarning) : $p(SC.resAdvancedConfig.ReinstallWarning) ); }, function () { var applicationSettings JSON.parse(sessionStorage.getItem(AppConfigAppSettings)); SC.service.WriteChangesToAppConfigNew(applicationSettings, AppConfigDefaults, function (result) { if (result OK) { sessionStorage.removeItem(AppConfigAppSettings); window.location.reload(); } else { SC.dialog.showModalMessageBox(SC.resAdvancedConfig.SaveError.Title, SC.resAdvancedConfig.SaveError.AppConfigDescription + + result); } }); } ); break; }});});/script>script>SC.extension.addInitializeProc(66e10a3a-5e69-4960-9bc7-a7db8f1e0d7c, function (extensionContext) {var AgentDeployerHelpLink https://docs.connectwise.com/ConnectWise_Control_Documentation; // TODO update with new help link.var getAgentDeployerExtensionIdFromExtensionContext function () { var urlParts extensionContext.baseUrl.split(/); return (urlParts.length > 1) ? urlParts.slice(-2)0 : ;};SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { if (eventArgs.commandName EditExtensionSettings) { var agentDeployerExtensionId getAgentDeployerExtensionIdFromExtensionContext(); if (eventArgs.commandContext.extensionInfo.ExtensionID agentDeployerExtensionId && eventArgs.commandElement._commandName EditExtensionSettings) SC.ui.addElement( eventArgs.target.parentElement, A, { href: #, _commandName: ShowHelpLink_ + agentDeployerExtensionId, innerHTML: Help } ); }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { var AgentDeployerExtensionId getAgentDeployerExtensionIdFromExtensionContext(); if (eventArgs.commandName ShowHelpLink_ + AgentDeployerExtensionId) window.open(AgentDeployerHelpLink, _blank);});SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType AdministrationPage || (SC.context.pageType HostPage && SC.context.canAdminister true)) { eventArgs.buttonDefinitions.push( { commandName: DownloadAgentDeployer, text: SC.resAgentDeployer.BuildButtonText } ); } break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case DownloadAgentDeployer: SC.util.launchUrl(extensionContext.baseUrl + Download.ashx); break; }});});/script>script>SC.extension.addInitializeProc(07979477-b058-44c4-9829-035b041eeb01, function (extensionContext) {SC.event.addGlobalHandler(SC.event.PreRender, function (eventArgs) { if (SC.context.pageType HostPage || SC.context.pageType AdministrationPage) SC.util.includeStyleSheet(extensionContext.baseUrl + CommandToolboxStyle.css);});SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case HostCommandListMorePopoutPanel: case HostDetailTablePopoutPanel: eventArgs.buttonDefinitions.push({ commandName: OpenCommandToolboxExecutionModal, text: SC.resCommandToolbox.DetailPopout.Modal }); break; case UpdateCommand: eventArgs.buttonDefinitions.push({ commandName: UpdateToolboxCommand, text: SC.resCommandToolbox.Modal.UpdateButtonText, commandArgument: eventArgs.commandContext.commandArgument }); break; }});SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { switch (eventArgs.commandName) { case OpenCommandToolboxExecutionModal: eventArgs.isEnabled SC.context.canRunCommand; break; case UpdateToolboxCommand: eventArgs.isEnabled SC.context.canAdminister; break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case OpenCommandToolboxExecutionModal: let commandBodyBox, commandSelector, commandNameBox, commandDescriptionBox, commandIncludedBox; SC.service.GetCommandConfigInfo(config > { SC.dialog.showModalButtonDialog( CommandToolbox, SC.resCommandToolbox.Modal.Title, SC.resCommandToolbox.Modal.RunCommand, Default, function (container) { if (config.Commands.length ! 0) { SC.ui.addContent(container, $dl( $dt({_textResource: CommandToolbox.Modal.Instruction}), $dd(commandSelector $select({}, config.Commands.map(c > { return $option({ text: c.Name, value: c.Data, _dataItem: { description: c.Description, isIncluded: c.ShouldIncludeInToolbox } }); }))), $dt({ _textResource: CommandToolbox.CreateModal.NameLabelText }), $dd(commandNameBox $input({ type: text, value: commandSelector.optionscommandSelector.selectedIndex.text })), $dt({ _textResource: CommandToolbox.CreateModal.DescriptionLabelText }), $dd(commandDescriptionBox $input({ className: CommandDescriptionTextInput, type: text, value: SC.command.getDataItem(commandSelector.optionscommandSelector.selectedIndex).description })), $dt({ _textResource: CommandToolbox.CreateModal.DataLabelText }), $dd(commandBodyBox $textarea({ className: CommandDataTextArea, value: commandSelector.optionscommandSelector.selectedIndex.value })), $dt(), $dd(commandIncludedBox $input({ className: CommandIncludedCheckBox, type: checkbox, checked: SC.command.getDataItem(commandSelector.optionscommandSelector.selectedIndex).isIncluded })), $dt(), $dd(SC.command.queryAndCreateCommandButtons(UpdateCommand, { commandArgument: commandNameBox.value })), $dt(), $dd({ className: UpdateCommandStatus }) ), ); SC.command.updateCommandButtonsState(container); commandSelector.onchange function () { commandBodyBox.value commandSelector.optionscommandSelector.selectedIndex.value; commandDescriptionBox.value SC.command.getDataItem(commandSelector.optionscommandSelector.selectedIndex).description; commandNameBox.value commandSelector.optionscommandSelector.selectedIndex.text; commandIncludedBox.checked SC.command.getDataItem(commandSelector.optionscommandSelector.selectedIndex).isIncluded; } } else SC.ui.addContent(container, $div({ className: CommandToolboxModalEmptyStateContainer }, $h2({ _textResource: CommandToolbox.Modal.EmptyStateTitleText}), $p({ _textResource: CommandToolbox.Modal.EmptyStateText}), ), ); }, function (eventArgs) { switch (eventArgs.commandName) { case UpdateToolboxCommand: $(.UpdateCommandStatus).innerText SC.resCommandToolbox.Modal.UpdateCommandSavingText; SC.service.SaveCommandToolboxCommand( commandSelector.optionscommandSelector.selectedIndex.text, commandNameBox.value, commandDescriptionBox.value, commandBodyBox.value, commandIncludedBox.checked, function (response) { SC.pagedata.notifyDirty(); SC.css.ensureClass($(.UpdateCommandStatus), UpdateCommandStatusSuccess, true); $(.UpdateCommandStatus).innerText SC.resCommandToolbox.Modal.UpdateCommandStatusSaved.Text; } ); break; case Default: let allRows ; if ($(.DetailTable) null) allRows $(detailTable).rows; else allRows $(.DetailTable).rows; let commandRows Array.prototype.filter.call(allRows, function (r) { return SC.ui.isChecked(r) || SC.ui.isSelected(r); }); let sessions Array.prototype.map.call(commandRows, function (r) { return r._dataItem; }); let sessionIDs Array.prototype.map.call(sessions, function (s) { return s.SessionID; }); window.addEventToSessions( window.getSessionGroupUrlPart()0, SC.types.SessionType.Access, sessionIDs, SC.types.SessionEventType.QueuedCommand, null, commandBodyBox.value, false, false, true ); SC.dialog.hideModalDialog(); break; } } ); }); break; }});});/script>script>SC.extension.addInitializeProc(75fe3a74-43ba-45eb-9eab-12ff335b91cb, function (extensionContext) {/** Edit App.Config Settings **//** Global Extension Variables **/var extensionId extensionContext.baseUrl.split(/).slice(-2)0;const numberRegex new RegExp(/(^0-9$)|(^1-90-9+$)/);/** Custom top modal dialog to show alert type messages in modal dialog on top of existing modal dialogs **/function setupTopModalDialog(disable){ if (!disable) { eval(SC.dialog.showModalDialogRawOnTop + SC.dialog.showModalDialogRaw.toString().replace(SC.dialog.hideModalDialog();,).replace(/hideModalDialog/g,hideTopModalDialog)); eval(SC.dialog.hideTopModalDialog + SC.dialog.hideModalDialog.toString().replace(/getModalDialog/g,getTopModalDialog)); SC.dialog.getTopModalDialog function() { return Array.prototype.map.call(window.document.querySelectorAll(#dialog),function(_){return _;}).pop(); }; } else { delete SC.dialog.showModalDialogRawOnTop; delete SC.dialog.hideTopModalDialog; delete SC.dialog.getTopModalDialog; }}function alertModal(message){ if (!SC.dialog.showModalDialogRawOnTop) setupTopModalDialog(); SC.dialog.showModalDialogRawOnTop( message.subClass || MessageBox, message.titlePanel || SC.dialog.createTitlePanel(message.title || SC.resErrorPanel.Title), message.contentPanel || SC.dialog.createContentPanel($div(message.content || message)), message.buttonPanel || SC.dialog.createButtonPanel(message.button || OK,message.extraButtons || null) , message.onExecProc || function(eventArgs){ SC.dialog.hideTopModalDialog(); }, message.onQueryProc || null, message.onHideProc || function(){ if (SC.dialog.getTopModalDialog() SC.dialog.getModalDialog()) setupTopModalDialog(true); } );}/**********************************************//** Table Sorting Functions **/var sortBy {};function sortTable(table, col) { if (sortBy.table){ var oldSortCol document.querySelector(# + sortBy.table).tHead.rows0.cellssortBy.col || 0; SC.css.ensureClass(oldSortCol,Ascending,false); SC.css.ensureClass(oldSortCol,Descending,false); } if (sortBy.table table.id && sortBy.col col){ sortBy.dir -((+sortBy.dir) || -1); } else { sortBy.table table.id; sortBy.col col; sortBy.dir 1; } if (sortBy.dir ! 0) SC.css.ensureClass(table.tHead.rows0.cellscol,sortBy.dir > 0 ? Ascending : Descending, true); var tb table.tBodies0; var tr Array.prototype.slice.call(tb.rows, 0); tr tr.sort(function (a, b) { var aVal a.cellscol.order ? a.cellscol.order : a.cellscol.textContent; var bVal b.cellscol.order ? b.cellscol.order : b.cellscol.textContent; return sortBy.dir * (typeof aVal number ? aVal - bVal : aVal.localeCompare(bVal)); }); for(var i0; itr.length; ++i){ tb.appendChild(tri); }}function makeSortable(table) { var th table.tHead, i; th && (th th.rows0) && (th th.cells); if (th) i th.length; else return; // if no `thead>` then do nothing while (--i > 0) (function (i) { SC.css.ensureClass(thi,Sortable,true); thi.addEventListener(click, function () {sortTable(table, i)}); }(i));}function makeAllSortable(parent) { parent parent || document.body; var t parent.getElementsByTagName(table), i t.length; while (--i > 0) makeSortable(ti);}/*****************************//** General Extension Functions **/function checkVersion(minVer, curVer) { if (typeof curVer + typeof minVer ! stringstring) return false; var a curVer.split(.), b minVer.split(.), i 0, len Math.max(a.length, b.length); for (; i len; i++) { if ((ai && !bi && parseInt(ai) > 0) || (parseInt(ai) > parseInt(bi))) { return true; } else if ((bi && !ai && parseInt(bi) > 0) || (parseInt(ai) parseInt(bi))) { return false; } } return true;}function checkLongBitmask(flagInput,maskInput) { var maxJSMaskLength 8; flags flagInput.substring(flagInput.length,flagInput.length-(Math.min(maxJSMaskLength,flagInput.length))); mask maskInput.substring(maskInput.length,maskInput.length-(Math.min(maxJSMaskLength,maskInput.length))); if (isNaN(flags) || isNaN(mask)){ return false; } if (parseInt(mask,16) 0) { if (maskInput.length > maxJSMaskLength) { return checkLongBitmask(flagInput.substring(0,flagInput.length - maxJSMaskLength),maskInput.substring(0,maskInput.length - maxJSMaskLength)); } else { return false; } } if ((parseInt(flags,16) & parseInt(mask,16)) parseInt(mask,16)){ return true; }}function setLongBitmask(flags, mask, on) { for (var x mask.length, i; x > 0; x--){ i x-1; if (mask.charAt(i) 0 || mask.charAt(i) x){ continue; } var replChar flags.charAt(i); if (on) { replChar (parseInt(flags.charAt(i),16) | parseInt(mask.charAt(i),16)).toString(); } else { replChar (parseInt(flags.charAt(i),16) & ~parseInt(mask.charAt(i),16)).toString(); } flags flags.substr(0, i) + replChar + flags.substr(i+replChar.length); } return flags;}function clickToSelect(event) { //this event.target event.preventDefault(); var scroll_offset this.parentElement.scrollTop; this.selected !this.selected; this.parentElement.scrollTop scroll_offset;}function disableMouseMoveUnselect(event) { event.preventDefault();}function getValueSetForMaxVersion(settings, maxVersion) { var returnValue ; var maxDVver 0.0; for (var v in settings){ if (checkVersion(v,maxVersion) && checkVersion(maxDVver,v)) { maxDVver v; returnValue settingsv; } } return returnValue;}function addCacheBuster(url) { var cachebuster __CacheBuster + new Date().getTime(); return ( url.indexOf(?) ! -1 ? url.split(?)0 + ? + cachebuster + & + url.split(?)1 : (url.indexOf(#) ! -1 ? url.split(#)0 + ? + cachebuster + # + url.split(#)1 : url + ? + cachebuster ) );}function httpRequestJSONObjectAsync(theUrl, callback){ var xmlHttp new XMLHttpRequest(); xmlHttp.onreadystatechange function() { if (xmlHttp.readyState 4 && xmlHttp.status 200) { callback(JSON.parse(xmlHttp.responseText)); } else if (xmlHttp.readyState 4) { console.warn(Metaquery failed); } }; xmlHttp.open(GET, addCacheBuster(theUrl), true); xmlHttp.send();}/********************/SC.event.addGlobalHandler(SC.event.QueryCommandButtons,function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType AdministrationPage) { eventArgs.buttonDefinitions.push( { commandName: command_ + extensionId, text: SC.resExtension.EditAppConfig.CommandText} ); } break; case resetbutton_ + extensionId: eventArgs.buttonDefinitions.push( { commandName: resetcommand_ + extensionId, text: SC.resExtension.EditAppConfig.ResetDefaultsButtonText} ); break; case restorebutton_ + extensionId: eventArgs.buttonDefinitions.push( { commandName: restorecommand_ + extensionId, text: SC.resExtension.EditAppConfig.RestoreSettingsButtonText} ); break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch(eventArgs.commandName) { case command_ + extensionId: SC.util.includeStyleSheet(extensionContext.baseUrl + Style.css); SC.service.EditAppConfigSettings_GetAppConfigFileContents(function(AppConfigContents){ httpRequestJSONObjectAsync(extensionContext.baseUrl + Defaults.json?cache + (Math.random()*1000000),function(defaults){ var serverVersion SC.context.productVersion; var dataUri SC.ui.createDataUri(SC.util.isCapable(SC.util.Caps.Safari) ? attachment/config : text/config, AppConfigContents); var settings {}; if (AppConfigContents ! null) { var xmlParser new DOMParser(); var xmlString atob(AppConfigContents); xmlString xmlString.substring(xmlString.indexOf(),xmlString.lastIndexOf(>)+1); if (xmlString ! !-- + SC.resExtension.EditAppConfig.AppConfigFileNotFoundText + -->) { try{ var xmlDoc xmlParser.parseFromString(xmlString,text/xml); var xmlSettings xmlDoc.getElementsByTagName(setting); for (var i 0; i xmlSettings.length; i++) { settingsxmlSettingsi.getAttribute(name).trim() xmlSettingsi.textContent.trim(); } } catch (err) { alertModal(SC.resExtension.EditAppConfig.InvalidAppConfigXML + \n\n + err); settings {}; } } } var masks defaults.DEFAULTS.SCBitmaskDefaults; var usingCustomDefaults false; if (extensionContext.settingValues.AppConfigDefaultsCode ! ){ var newDefaults {}; try { if (extensionContext.settingValues.AppConfigDefaultsCode.startsWith({) && extensionContext.settingValues.AppConfigDefaultsCode.endsWith(})) newDefaults JSON.parse(extensionContext.settingValues.AppConfigDefaultsCode); else newDefaults JSON.parse(atob(extensionContext.settingValues.AppConfigDefaultsCode)); } catch (err) { alertModal(SC.resExtension.EditAppConfig.InvalidDefaultsCode + \n\n + err); }; // This semicolon is NOT un-necessary... Javascript Try/Catch wont run the catch code in some browsers without it. for (var key in newDefaults) { if (keyDEFAULTS) continue; defaultskey newDefaultskey; } if (DEFAULTS in newDefaults) { for (var mask in newDefaults.DEFAULTS.SCBitmaskDefaults) { masksmask newDefaults.DEFAULTS.SCBitmaskDefaultsmask; } } if (Object.keys(newDefaults).length) usingCustomDefaults true; } var enableAdvancedBitmaskEditor extensionContext.settingValues.UseEasyBitmaskEditor true; var enableCommandsSelector extensionContext.settingValues.UseCommandsSelector true; var instructions SC.resExtension.EditAppConfig.DialogInstructions + (usingCustomDefaults ? \n + SC.resExtension.EditAppConfig.CustomDefaultsInstructionNote : ); SC.dialog.showModalButtonDialog( EditAppConfigSettings, SC.resExtension.EditAppConfig.DialogTitle, SC.resExtension.EditAppConfig.DialogButtonText, Default, function (container) { SC.ui.addElement(container, P, instructions); var AppConfigLinksContainer SC.ui.addElement(container, ul,{}); var AppConfigHelpLink SC.ui.createElement(A,{href:SC.resExtension.EditAppConfig.AppConfigSettingsLinkHref,target:_blank, _innerText:SC.resExtension.EditAppConfig.AppConfigSettingsLinkText}); var AppConfigMacHelpLink SC.ui.createElement(A,{href:SC.resExtension.EditAppConfig.AppConfigSettingsLinkHrefForMac,target:_blank, _innerText:SC.resExtension.EditAppConfig.AppConfigSettingsLinkTextMacLinux}); var AppConfigDownloadLink SC.ui.createElement(A,{download:app.config,href:dataUri,_innerText:SC.resExtension.EditAppConfig.AppConfigLinkText}); SC.ui.setDisabled(AppConfigDownloadLink,AppConfigContents null); var AppConfigDeleteLink SC.command.queryAndCreateCommandButtons(resetbutton_ + extensionId); var AppConfigRestoreLink SC.command.queryAndCreateCommandButtons(restorebutton_ + extensionId); SC.ui.addElement(AppConfigLinksContainer,li,AppConfigDownloadLink); SC.ui.addElement(AppConfigLinksContainer,li,AppConfigHelpLink); if (checkVersion(6.1,serverVersion)) // Mac settings only available on 6.1, so only show the help link on 6.1+ SC.ui.addElement(AppConfigLinksContainer,li,AppConfigMacHelpLink); SC.ui.addElement(AppConfigLinksContainer,li,AppConfigDeleteLink); SC.ui.addElement(AppConfigLinksContainer,li,AppConfigRestoreLink); var AppConfigTablesContainer SC.ui.addElement(container, div,{className:AppConfigTablesContainer}); var flagsTable SC.ui.createElement(TABLE,{id:AppConfigFlags,className:AppConfigFlagsTable}); var flagsTableHead SC.ui.addElement(flagsTable,THEAD,{}); var flagsHeaderRow SC.ui.addElement(flagsTableHead,tr, {}); SC.ui.addElement(flagsHeaderRow,th,{_innerText:SC.resExtension.EditAppConfig.FlagColumnTitle}); var flagsTableBody SC.ui.addElement(flagsTable,TBODY,{}); var settingsTable SC.ui.createElement(TABLE,{id:AppConfigSettings,className:AppConfigSettingsTable}); var settingsTableHead SC.ui.addElement(settingsTable,THEAD,{}); var settingsHeaderRow SC.ui.addElement(settingsTableHead,tr, {}); SC.ui.addElement(settingsHeaderRow,th,{_innerText:SC.resExtension.EditAppConfig.KeyColumnTitle}); SC.ui.addElement(settingsHeaderRow,th,{_innerText:SC.resExtension.EditAppConfig.ValueColumnTitle}); var settingsTableBody SC.ui.addElement(settingsTable,TBODY,{}); var bitmasksTable SC.ui.createElement(TABLE,{id:AppConfigBitmasks,className:AppConfigBitmasksTable}); var bitmasksTableHead SC.ui.addElement(bitmasksTable,THEAD,{}); var bitmasksHeaderRow SC.ui.addElement(bitmasksTableHead,tr, {}); SC.ui.addElement(bitmasksHeaderRow,th,{_innerText:SC.resExtension.EditAppConfig.BitmaskColumnTitle}); var bitmasksTableBody SC.ui.addElement(bitmasksTable,TBODY,{}); SC.ui.addElement(AppConfigTablesContainer,div,flagsTable); SC.ui.addElement(AppConfigTablesContainer,div,settingsTable); SC.ui.addElement(AppConfigTablesContainer,div,bitmasksTable); var settingNum 0; for (var key in defaults) { if (key DEFAULTS || !checkVersion(defaultskey.ver,serverVersion)) { continue; } if (defaultskey.removed && checkVersion(defaultskey.removed,serverVersion)) { continue; } var keyDV getValueSetForMaxVersion(defaultskey.dv,serverVersion); var keyValue (key in settings && !eventArgs.loadDefaults) ? settingskey : keyDV; var keyType defaultskey.type; var keyValueEditor ; var valueTip SC.util.formatString(SC.resExtension.EditAppConfig.CurrentValueString,keyValue) + \n + SC.util.formatString(SC.resExtension.EditAppConfig.DefaultValueString,keyDV); var keySide defaultskey.side; var keySideText ; switch(keySide){ case Guest: keySideText SC.util.formatString(SC.resExtension.EditAppConfig.AppliesTo.Format, SC.resExtension.EditAppConfig.AppliesTo.GuestText) + \n; break; case Host: keySideText SC.util.formatString(SC.resExtension.EditAppConfig.AppliesTo.Format, SC.resExtension.EditAppConfig.AppliesTo.HostText) + \n; break; case Host and Guest: keySideText SC.util.formatString(SC.resExtension.EditAppConfig.AppliesTo.Format, SC.resExtension.EditAppConfig.AppliesTo.BothText) + \n; break; } var keyTip defaultskey.tip + \n + keySideText + valueTip; var row SC.ui.createElement(tr, {id:key + Row}); switch (keyType) { case flag: SC.ui.addContent(flagsTableBody,row); break; case bitmask: SC.ui.addContent(bitmasksTableBody,row); break; default: SC.ui.addContent(settingsTableBody,row); break; } settingNum++; switch (keyType) { case flag: keyValueEditor SC.ui.createElement(INPUT,{type:checkbox,id:key,keyType:flag,title:valueTip}); if (keyValue true) keyValueEditor.checked true; var flagLabel SC.ui.createElement(LABEL,{_innerText:key,title:keyTip}); if (keyDV true) { flagLabel.style.fontWeight bold; } SC.ui.addElement(row,td,keyValueEditor, ,flagLabel); break; case commands: if (enableCommandsSelector) { keyValueEditor SC.ui.createElement(SELECT,{id:key,keyType:commands,className:appConfigCommandsSelect,multiple:true,title:valueTip,size:10}); for (var each in defaultskey.commands){ if (!checkVersion(defaultskey.commandseach.ver,serverVersion)) { continue; } if (defaultskey.commandseach.removed && checkVersion(defaultskey.commandseach.removed,serverVersion)) { continue; } var commandOption SC.ui.createElement(OPTION,{value:each,text:each,title:defaultskey.commandseach.tip}); commandOption.onmousedown clickToSelect; commandOption.onmousemove disableMouseMoveUnselect; if (keyValue.match(new RegExp((?:^|,)+each+(?:,|$)))) { commandOption.selected true; } if (keyDV.match(new RegExp((?:^|,)+each+(?:,|$)))) { commandOption.style.fontWeight bold; } keyValueEditor.add(commandOption); } } else { keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:commands,type:text,value:keyValue,_innerText:keyValue,title:valueTip}); } SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; break; case directory: keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:directory,className:appConfigDirectoryInput,type:text,value:keyValue,_innerText:keyValue,title:valueTip}); SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; break; case bitmask: if (enableAdvancedBitmaskEditor) { keyValueEditor SC.ui.createElement(ul,{id:key,keyType:bitmask,value:keyValue, className:appConfigBitmaskValue,title:valueTip}); for (var mask in masks){ if (!checkVersion(masksmask.ver,serverVersion)) { continue; } if (masksmask.removed && checkVersion(masksmask.removed,serverVersion)) { continue; } var varCheck SC.ui.createElement(INPUT,{type:checkbox,id:key + mask,mask:mask,initChecked:false,keyType:bitmask,className:appConfigBitmaskValue,title:masksmask.tip}); var bitMaskChecked false; if (checkLongBitmask(keyValue,masksmask.mask)){ varCheck.checked true; varCheck.initChecked true; bitMaskChecked true; } var bitmaskLabel SC.ui.createElement(LABEL,{_innerText:mask,className:appConfigBitmaskValue,title:masksmask.tip}); if (checkLongBitmask(keyDV,masksmask.mask)){ bitmaskLabel.style.fontWeight bold; } SC.ui.addElement(keyValueEditor,li,varCheck,bitmaskLabel); } SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip,className:appConfigBitmaskLabel}),keyValueEditor); } else { keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:bitmask,type:text,value:keyValue,_innerText:keyValue,title:valueTip}); SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip}), SC.ui.createElement(BR,{}), keyValueEditor); } break; case selection: keyValueEditor SC.ui.createElement(SELECT,{id:key,keyType:selection,title:valueTip}); var maxOptVer 0; for (var oset in defaultskey.options){ if (checkVersion(oset,serverVersion) && checkVersion(maxOptVer,oset)) { maxOptVer oset; } } if (maxOptVer 0) { continue; } for (var opt in defaultskey.optionsmaxOptVer){ var selectionOption SC.ui.createElement(OPTION,{id:key+-+opt,value:defaultskey.optionsmaxOptVeropt,text:opt}); if (selectionOption.id key + - + keyValue){ selectionOption.selected true; } keyValueEditor.add(selectionOption); } SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; break; case number: keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:number,type:number,value:keyValue,_innerText:keyValue,title:valueTip}); for (var cset in defaultskey.constraints) { if (!checkVersion(cset,serverVersion)) { continue; } for (var constraint in defaultskey.constraintscset) { keyValueEditorconstraint defaultskey.constraintscsetconstraint; } } SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; break; case string: default: keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:text,type:text,value:keyValue,_innerText:keyValue,title:valueTip}); SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; } if (keyType ! flag) { keyValueEditor.className + keyValueEditor.className ? AppConfigKeyValueEditor : AppConfigKeyValueEditor; } } }, function (eventArgs) { if (eventArgs.commandName resetcommand_ + extensionId){ SC.event.dispatchEvent(,executecommand,{commandName:command_ + extensionId,loadDefaults:true}); return; } if (eventArgs.commandName restorecommand_ + extensionId){ SC.event.dispatchEvent(,executecommand,{commandName:command_ + extensionId}); return; } var jsObj {}; var bitmaskRegex new RegExp(/(^0x0-7{16}$)/); var scBitmaskMaxValidValue getValueSetForMaxVersion(defaults.ControlPanelIDs.dv,serverVersion); var invalidSettings false; var invalidSettingList ; var nonstandardSettings false; var nonstandardSettingList ; for (var key in defaults){ if (key DEFAULTS || $(key) null || !checkVersion(defaultskey.ver,serverVersion)) { continue; } var newValue $(key).value; var defaultValue getValueSetForMaxVersion(defaultskey.dv,serverVersion);; var oldValue (key in settings) ? settingskey : defaultValue; var saveValue oldValue; var keyType $(key).keyType; switch (keyType){ case flag: if ($(key).checked) { saveValue true; } else { saveValue false; } if (saveValue defaultValue) continue; break; case commands: if (enableCommandsSelector) { saveValue ; for (var i 0; i $(key).length; i++) { if ($(key).optionsi.selected) { if (saveValue ! ){ saveValue saveValue + ,; } saveValue saveValue + $(key).optionsi.value; } } } else { saveValue newValue.replace(/^\w\s/gi, ,).replace(/\s/gi,); } break; case bitmask: if (enableAdvancedBitmaskEditor) { // checkboxes or true var keyCheckboxCollection $(key).getElementsByTagName(INPUT); for (var x0; xkeyCheckboxCollection.length; x++) { if (keyCheckboxCollectionx.type checkbox && (keyCheckboxCollectionx.initChecked ! keyCheckboxCollectionx.checked)) { newValue setLongBitmask(newValue,maskskeyCheckboxCollectionx.mask.mask,keyCheckboxCollectionx.checked); } } } if (newValue ){ // Blank values will indicate using the default value. newValue defaultValue; } if (bitmaskRegex.test(newValue)){ if (setLongBitmask(newValue,scBitmaskMaxValidValue,false) 0x0000000000000000){ saveValue newValue; } else { if (confirm(SC.util.formatString(SC.resExtension.EditAppConfig.QuestionableBitmaskValue,key,newValue,serverVersion))) { saveValue newValue; } else { return; } } } else { alertModal(SC.util.formatString(SC.resExtension.EditAppConfig.InvalidBitmaskValue,key,newValue,0x0000000000000000,0x7777777777777777)); return; } break; case directory: if (newValue ) { // Blank values will indicate using the default value. newValue defaultValue; } saveValue newValue; break; case selection: saveValue $(key).options$(key).selectedIndex.value; break; case number: if (!numberRegex.test(newValue)){ alertModal(SC.util.formatString(SC.resExtension.EditAppConfig.ValueNotANumber,key)); return; } saveValue newValue; break; default: saveValue newValue; } if (saveValue defaultValue) { continue; } jsObjkey saveValue,defaultskey.area; } json JSON.stringify(jsObj); SC.dialog.showModalActivityBox(SC.resExtension.EditAppConfig.SavingModalTitle,SC.resExtension.EditAppConfig.SavingModalMessage); SC.service.EditAppConfigSettings_SetAppConfigSettings( json, function () { SC.event.dispatchEvent(,executecommand,{commandName:command_ + extensionId}); } ); } ); SC.dialog.setButtonPanelError(SC.ui.findDescendent(SC.dialog.getModalDialog(),function(_){return _.className && _.className.indexOf(ButtonPanel) > -1;}),{message:SC.resExtension.EditAppConfig.DialogButtonNotice}); makeAllSortable($(dialog)); }); }); break; }});/** Extend Extension Options **/var extendedExtensionOptions {};/* Option Settings Below */extendedExtensionOptions.helpUrl https://help.screenconnect.com/Extension:Edit_App.Config_Settings;extendedExtensionOptions.extensionResourceID EditAppConfig;/* Option Settings Above */extendedExtensionOptions.extensionIdextensionContext.baseUrl.split(/).slice(-2)0;SC.resHelpPanel.Link+extendedExtensionOptions.extensionId+.UrlextendedExtensionOptions.helpUrl;SC.event.addGlobalHandler(SC.event.QueryCommandButtonState,function(eventArgs){ if(eventArgs.commandNameEditExtensionSettings&&eventArgs.commandContext.extensionInfo.ExtensionIDextendedExtensionOptions.extensionId&&eventArgs.commandElement._commandNameEditExtensionSettings){ if(extendedExtensionOptions.extensionResourceID&&extendedExtensionOptions.extensionResourceID.length) SC.ui.addElement(eventArgs.target.parentElement,A,{_commandName:command_+extensionId,_innerText:SC.resExtension.+extendedExtensionOptions.extensionResourceID+.CommandText}); SC.ui.addElement(eventArgs.target.parentElement,A,{_commandName:NavigateHelpLink,_commandArgument:extendedExtensionOptions.extensionId,_innerText:SC.resCommand.Help.Text.replace( ▽,)}); }});/******************************/});/script>script>SC.extension.addInitializeProc(443da44f-06c7-4a60-bae8-bb4f01f49131, function (extensionContext) {/** Edit Web.Config AppSettings 2.0.3 **//** Global Extension Variables and Constants **/const extensionId extensionContext.baseUrl.split(/).slice(-2)0;var serverEnvironment local;var settingsChanged false;var userIPAddress null;var currentURIs {};var dataUri;var showAdvancedSettings extensionContext.settingValues.ShowAdvancedSettings.toLowerCase() true;const numberRegex new RegExp(/(^0-9$)|(^1-90-9+$)/);const webServerListenUriRegex new RegExp(/^(http|https):\/\/((\+)|((0-9a-z\.-+)\.(a-z{2,63}))|((((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))\.){3}((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))))(:0-9{1,5})(\/0-9a-zA-Z-+)?\/$/i);const relayListenUriRegex new RegExp(/^relay:\/\/((\+)|((((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))\.){3}((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))))(:0-9{1,5})\/$/i);const webServerAddressableUriRegex new RegExp(/^(http|https):\/\/(((0-9a-z\.-+)\.(a-z{2,63}))|((((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))\.){3}((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))))(:0-9{1,5})?(\/0-9a-zA-Z-+)?\/$/i);const relayAddressableUriRegex new RegExp(/^relay:\/\/(((0-9a-z\.-+)\.(a-z{2,63}))|((((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))\.){3}((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))))(:0-9{1,5})\/$/i);const regExIPv4 /^((0-9|1-90-9|10-9{2}|20-40-9|250-5)\.){3}(0-9|1-90-9|10-9{2}|20-40-9|250-5)(\/(0-9|1-20-9|30-2))?$/;const regExIPv6 /^s*(((0-9A-Fa-f{1,4}:){7}(0-9A-Fa-f{1,4}|:))|((0-9A-Fa-f{1,4}:){6}(:0-9A-Fa-f{1,4}|((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3})|:))|((0-9A-Fa-f{1,4}:){5}(((:0-9A-Fa-f{1,4}){1,2})|:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3})|:))|((0-9A-Fa-f{1,4}:){4}(((:0-9A-Fa-f{1,4}){1,3})|((:0-9A-Fa-f{1,4})?:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:))|((0-9A-Fa-f{1,4}:){3}(((:0-9A-Fa-f{1,4}){1,4})|((:0-9A-Fa-f{1,4}){0,2}:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:))|((0-9A-Fa-f{1,4}:){2}(((:0-9A-Fa-f{1,4}){1,5})|((:0-9A-Fa-f{1,4}){0,3}:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:))|((0-9A-Fa-f{1,4}:){1}(((:0-9A-Fa-f{1,4}){1,6})|((:0-9A-Fa-f{1,4}){0,4}:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:))|(:(((:0-9A-Fa-f{1,4}){1,7})|((:0-9A-Fa-f{1,4}){0,5}:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:)))(%.+)?s*(\/(d|dd|10-1d|120-8))?$/;const cloudRegEx new RegExp(/:\/\/.*\.(screenconnect)\.com/i);const hostedrmmRegEx new RegExp(/:\/\/.*\.(hostedrmm)\.com/i);/** JavaScript Libraries **/if (typeof ipaddr undefined) SC.util.includeScript(extensionContext.baseUrl + ipaddr.min.js); // See javascript file for Copyright information and permission notice./**************************//** Custom top modal dialog to show alert type messages in modal dialog on top of existing modal dialogs **/function setupTopModalDialog(disable){ if (!disable) { eval(SC.dialog.showModalDialogRawOnTop + SC.dialog.showModalDialogRaw.toString().replace(SC.dialog.hideModalDialog();,).replace(/hideModalDialog/g,hideTopModalDialog)); eval(SC.dialog.hideTopModalDialog + SC.dialog.hideModalDialog.toString().replace(/getModalDialog/g,getTopModalDialog)); SC.dialog.getTopModalDialog function() { return Array.prototype.map.call(window.document.querySelectorAll(#dialog),function(_){return _;}).pop(); }; } else { delete SC.dialog.showModalDialogRawOnTop; delete SC.dialog.hideTopModalDialog; delete SC.dialog.getTopModalDialog; }}function alertModal(message){ if (!SC.dialog.showModalDialogRawOnTop) setupTopModalDialog(); SC.dialog.showModalDialogRawOnTop( message.subClass || MessageBox, message.titlePanel || SC.dialog.createTitlePanel(message.title || SC.resErrorPanel.Title), message.contentPanel || SC.dialog.createContentPanel($div(message.content || message)), message.buttonPanel || SC.dialog.createButtonPanel(message.button || OK,message.extraButtons || null) , message.onExecProc || function(eventArgs){ SC.dialog.hideTopModalDialog(); }, message.onQueryProc || null, message.onHideProc || function(){ if (SC.dialog.getTopModalDialog() SC.dialog.getModalDialog()) setupTopModalDialog(true); } );}/**********************************************//** Cookie Settings Management Functions **/function loadExtCookieSettings(){ var cookieSettings JSON.parse(SC.util.getCookieValue(extensionId)); for (var cs in cookieSettings) { extensionContext.settingValuescs cookieSettingscs; }}function saveExtCookieSetting(settingName){ var cookieSettings JSON.parse(SC.util.getCookieValue(extensionId)); if (!cookieSettings) cookieSettings {}; cookieSettingssettingName extensionContext.settingValuessettingName; SC.util.setCookieValue(extensionId,JSON.stringify(cookieSettings),3650);}function deleteExtCookieSetting(settingName){ var cookieSettings JSON.parse(SC.util.getCookieValue(extensionId)); if (!cookieSettings) cookieSettings {}; delete cookieSettingssettingName; SC.util.setCookieValue(extensionId,JSON.stringify(cookieSettings),3650);}function clearExtCookieSettings(){ SC.util.setCookieValue(extensionId,,-1);}/******************************************//** Table Sorting Functions **/var sortBy {};function sortTable(table, col) { if (sortBy.table) { var oldSortCol document.querySelector(# + sortBy.table).tHead.rows0.cellssortBy.col || 0; SC.css.removeClass(oldSortCol, Ascending); SC.css.removeClass(oldSortCol, Descending); } if (sortBy.table table.id && sortBy.col col) { sortBy.dir -((+sortBy.dir) || -1); } else { sortBy.table table.id; sortBy.col col; sortBy.dir 1; } if (sortBy.dir ! 0) { Array.prototype.forEach.call(table.tHead.rows0.cells, (td, index) > { if (col index) { SC.css.ensureClass(td, sortBy.dir > 0 ? Ascending : Descending, true); SC.css.removeClass(td, sortBy.dir > 0 ? Descending : Ascending); } else { SC.css.removeClass(td, Ascending); SC.css.removeClass(td, Descending); } }); } var tb table.tBodies0; var tr Array.prototype.slice.call(tb.rows, 0); tr tr.sort(function (a, b) { var aVal a.cellscol.order ? a.cellscol.order : a.cellscol.textContent; var bVal b.cellscol.order ? b.cellscol.order : b.cellscol.textContent; return sortBy.dir * (typeof aVal number ? aVal - bVal : aVal.localeCompare(bVal)); }); for(var i0; itr.length; ++i){ tb.appendChild(tri); }}function makeSortable(table) { var th table.tHead, i; th && (th th.rows0) && (th th.cells); if (th) i th.length; else return; // if no `thead>` then do nothing while (--i > 0) (function (i) { SC.css.ensureClass(thi,Sortable,true); thi.addEventListener(click, function () {sortTable(table, i)}); }(i));}function makeAllSortable(parent) { parent parent || document.body; var t parent.getElementsByTagName(table), i t.length; while (--i > 0) makeSortable(ti);}/*****************************//** General Extension Functions **/function checkVersion(minVer, curVer) { if (typeof curVer + typeof minVer ! stringstring) return false; var acurVer.split(.), bminVer.split(.), i0, lenMath.max(a.length, b.length); for (; ilen; i++) { if ((ai && !bi && parseInt(ai) > 0) || (parseInt(ai) > parseInt(bi))) return true; else if ((bi && !ai && parseInt(bi) > 0) || (parseInt(ai) parseInt(bi))) return false; } return true;}function browserSupportsNumberInput(){ var i document.createElement(input),r; i.typenumber; i.setAttribute(value, t); return i.value ! i.getAttribute(value);}function addCacheBuster(url) { var cachebuster ?__CacheBuster + new Date().getTime(); if (url.indexOf(?) ! -1) return url.replace(?,cachebuster + &); if (url.indexOf(#) ! -1) return url.replace(#,cachebuster + #); return url + cachebuster;}function httpRequestJSONObjectAsync(theUrl, callback) { var r new XMLHttpRequest(); r.onreadystatechange function() { if (r.readyState 4 && r.status 200) { callback(JSON.parse(r.responseText)); } else if (r.readyState 4) { console.warn(Metaquery failed. (Extension: + extensionId + )); } }; r.open(GET, addCacheBuster(theUrl), true); r.send();}function getValueSetForMaxVersion(settings, maxVersion) { var rv ; var maxDVver 0.0; for (var v in settings){ if (checkVersion(v,maxVersion) && checkVersion(maxDVver,v)) { maxDVver v; rv settingsv; } } return rv;}function checkIPList(str) { var tokens str.split(,); for (var i0; itokens.length; ++i){ if (!regExIPv4.test(tokensi) && !regExIPv6.test(tokensi)) return false; } return true;}function cleanKeyName(keyName){ return keyName.replace(/\./g,_).replace(/\//g,_);}function displayNotice(title,noticeTextOrContentProc,buttonText,buttonCommand,buttonPanelErrorOrContentProc){ var titlePanel SC.dialog.createTitlePanel(title); var mainContentPanel SC.dialog.createContentPanel(typeof noticeTextOrContentProc string ? $div(noticeTextOrContentProc) : null); if (typeof noticeTextOrContentProc function) noticeTextOrContentProc(mainContentPanel); var buttonPanel SC.dialog.createButtonPanel(); var button SC.ui.addElement(buttonPanel, INPUT, { type: button, value: buttonText, _commandName: buttonCommand || Close }); switch (typeof buttonPanelErrorOrContentProc){ case string: SC.dialog.setButtonPanelError(buttonPanel,buttonPanelErrorOrContentProc); break; case function: buttonPanelErrorOrContentProc(buttonPanel); break; } SC.dialog.showModalDialogRaw(MessageBox,titlePanel, mainContentPanel, buttonPanel); button.focus();}function userIPIsInIPList(ipList, userIP) { if (typeof ipaddr ! object) { return null; } var addr ipaddr.parse(userIP); var ips ipList.split(,); for (var ip of ips){ if (ip.indexOf(/) 0) { var checkIP ipaddr.parse(ip); if (addr.kind() checkIP.kind() && addr.match(checkIP,addr.kind() ipv6 ? 128 : 32)) return true; } else { var subnet ipaddr.parseCIDR(ip); if (addr.kind() subnet0.kind() && addr.match(subnet)) return true; } } return false;}function getValidationClass(element){ var e element; var v e.value, n e.id, s e.getAttribute(savedValue), d e.getAttribute(defaultValue), t e.getAttribute(keyType); if (v s && v d) return IsDefault; if (v s) return Unchanged; if (v d) return ToDefault; switch (t){ case WebServerAddressableUri: if (!webServerAddressableUriRegex.test(v)) return Invalid; break; case RelayAddressableUri: if (!relayAddressableUriRegex.test(v)) return Invalid; break; case WebServerListenUri: case WebServerAlternateListenUri: if (!webServerListenUriRegex.test(v)) return Invalid; break; case RelayListenUri: if (!relayListenUriRegex.test(v)) return Invalid; break; case IPList: if (!checkIPList(v)) return Invalid; else if (userIPIsInIPList(v,userIPAddress) (n.indexOf(Block) > -1)) return PartialValidation; else return Validated; break; case Number: if (!numberRegex.test(v)) return Invalid; break; case DuoIntegrationKey: case DuoSecretKey: case DuoApiHostname: break; } return Changed;}function validateEntry(event){ if (!event.srcElement.getAttribute(keyType)) return; var validationClasses NoValidation, IsDefault, ToDefault, Unchanged, Changed, Validated, PartialValidation, Invalid ; var validation ; validation0 getValidationClass(event.srcElement); for (var cn in validationClasses){ SC.css.ensureClass(event.srcElement,validationClassescn,validation.indexOf(validationClassescn) > -1); }}function addRowsToTable (table,keys,keyInfo,location){ var sectionName location ? location.replace(/^0-9a-zA-Z+/g,-) + _ : ; var rowNum 0; for (var key in keys) { if (keyInfokey.show.indexOf(serverEnvironment) -1) continue; if (keyInfokey.isAdvanced true && !showAdvancedSettings) continue; if (!checkVersion(keyInfokey.minVer,SC.context.productVersion)) continue; var keyValue keyskey #KeyNotPresent ? : keyskey; var keyValueType keyInfokey.valueType; var keyValueEditor ; var keyDV keyInfokey.defaultValue; var keyDVText keyDV && keyInfokey.defaultValueInfo ? keyInfokey.defaultValueInfo : keyDV; var valueTip SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.CurrentValueString,keyValue) + \n + SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.DefaultValueString,keyDVText); var keyTip keyInfokey.toolTip.replace(/\\n/g,\n) + \n + valueTip; rowNum++; switch (keyValueType) { case IPList: valueTip SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.IPListTipMessageFormat,key.indexOf(Block) > -1 ? NOT : ,userIPAddress) + \n + valueTip + \n + SC.resExtension.EditWebConfigAppSettings.IPListTipValidationFormat.replace(/\|/g,\n); keyValueEditor SC.ui.createElement(TEXTAREA,{rows:1}); break; case Number: keyValueEditor SC.ui.createElement(INPUT,{id:sectionName + key,type:number,keyType:keyValueType,min:0}); break; case Select: keyValueEditor SC.ui.createElement(SELECT,{title:valueTip}); if (keyskey #KeyNotPresent) SC.ui.addElement(keyValueEditor,OPTION,{ value:, _innerText:Not Present, selected:true, title:Not Present }); var kvOptions getValueSetForMaxVersion(keyInfokey.validValues,SC.context.productVersion); for(var kvo in kvOptions) { SC.ui.addElement(keyValueEditor,OPTION,{ value:kvo, _innerText:kvo, selected:(keyValuekvo), title:kvOptionskvo }); } break; case CommaSeparatedValues: keyValueEditor SC.ui.createElement(ul,{className:csvEditor}); var validValues getValueSetForMaxVersion(keyInfokey.validValues,SC.context.productVersion); for(var v in validValues) { var varCheck SC.ui.createElement(INPUT,{ type:checkbox, initChecked:false, setting:v, id:sectionName + key+v, keyType:keyValueType }); if (keyValue.split(,).indexOf(v) > 0){ varCheck.checkedtrue; varCheck.initChecked true; } var cbLabel SC.ui.createElement(LABEL,{_innerText: v, title:validValuesv}); if (keyDV.split(,).indexOf(v) > 0) { cbLabel.style.fontWeight bold; } SC.ui.addElement(keyValueEditor, li,varCheck,cbLabel); } break; case SessionTypeDisplayOrder: keyValueEditor SC.ui.createElement(INPUT,{id:sectionName + key,type:text,keyType:keyValueType}); break; case WebServerListenUri: case WebServerAlternateListenUri: case RelayListenUri: valueTip valueTip + \n + SC.resExtension.EditWebConfigAppSettings.UriTipValidationFormat.replace(/\|/g,\n); keyValueEditor SC.ui.createElement(INPUT,{type:url}); break; case WebServerAddressableUri: case RelayAddressableUri: valueTip valueTip + \n + SC.resExtension.EditWebConfigAppSettings.UriTipValidationFormat.replace(/\|/g,\n); keyValueEditor SC.ui.createElement(INPUT,{type:url}); break; case CryptoKey: if (!SC.context.enableCryptoKeySetting) continue; keyValueEditor SC.ui.createElement(TEXTAREA,{type:CryptoKey}); keyValueEditor.style.height 100px; break; case DuoIntegrationKey: case DuoSecretKey: case DuoApiHostname: keyValueEditor SC.ui.createElement(INPUT, { type:text }); break; default: keyValueEditor SC.ui.createElement(INPUT,{type:text,disabled:true,title:key + is not expected.}); } keyValueEditor.setAttribute(id,sectionName + key); keyValueEditor.setAttribute(title,valueTip); keyValueEditor.setAttribute(value,keyValue); keyValueEditor.setAttribute(keyType,keyValueType); keyValueEditor.setAttribute(defaultValue,keyDV); keyValueEditor.setAttribute(savedValue,keyValue); if (Select,CommaSeparatedValues.indexOf(keyValueType) 0) SC.ui.setInnerText(keyValueEditor,keyValue); var row SC.ui.addElement(table,tr, {id:sectionName + key + Row}); var keyNameCol SC.ui.addElement(row,td,SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var keyValueCol SC.ui.addElement(row,td,keyValueEditor); if (extensionContext.settingValues.ShowDefaultValueColumn true){ var keyDefaultCol SC.ui.addElement(row,td,{_innerText:typeof(keyDV) ! undefined ? keyDV : ,title:valueTip}); } var keyExampleCol SC.ui.addElement(row,td,{ _innerText: (keyskey #KeyNotPresent ? SC.resExtension.EditWebConfigAppSettings.KeyNotPresentText : ) + add key + key + value + (keyValue.length > 100 ? keyValue.replace(keyValue.slice(16,-16),...) : keyValue) + />, title:keyTip }); keyValueCol.order rowNum; }}function getChangedItems (keys, keyInfo, location) { var sectionName ; if (location) sectionName location.replace(/^0-9a-zA-Z+/g,-) + _; var jsObj {}; for (var key in keys){ var keyElement $(sectionName + key); if (keyElement null) { continue; } var newValue keyElement.value; var oldValue keyskey; var keyType keyElement.getAttribute(keyType); var keyName (location ? location + > : ) + key; if (keyType ! CommaSeparatedValues){ if (newValue && oldValue #KeyNotPresent) { continue; } if (newValue oldValue) { continue; } } if (keyInfokey.show.indexOf(serverEnvironment) -1) continue; if (keyInfokey.isAdvancedtrue && !showAdvancedSettings) continue; var isCritical keyInfokey.isCritical true; switch (keyType){ case CommaSeparatedValues: newValue Array.prototype.filter.call(keyElement.querySelectorAll(input),function(i){return i.checked;}).map(function(e){return e.setting;}).join(,); if (newValue oldValue || (newValue && oldValue #KeyNotPresent)) continue; if (newValue ) { isCritical false; newValue #RemoveKey; } break; case SessionTypeDisplayOrder: var values newValue.split(,); var validValues getValueSetForMaxVersion(keyInfokey.validValues,SC.context.productVersion); if(!values || values.length ! validValues.length || values.find(_ > !validValues.includes(_.trim())) || new Set(values).size ! validValues.length) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.SessionTypeDisplayOrderInvalidMessage, validValues)); return false; } break; case Select: var kvOptions getValueSetForMaxVersion(keyInfokey.validValues,SC.context.productVersion); if (!kvOptionsnewValue) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.InvalidSelectionAlertMessage,keyName,Object.keys(kvOptions).join(, ))); return false; } break; case IPList: if (newValue ) { isCritical false; newValue #BlankValue; break; } if (!checkIPList(newValue)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.InvalidIPListAlertMessage,keyName)); return false; } if ((key.indexOf(Block) > -1) userIPIsInIPList(newValue,userIPAddress)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.IPListDoesNotContainCurrentIPAlertMessage,keyName,userIPAddress)); return false; } break; case Number: if (!numberRegex.test(newValue)){ alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.NumberAlertMessage,keyName)); return false; } break; case WebServerAddressableUri: if (newValue ){ newValue #RemoveKey; isCritical false; break; } if (!webServerAddressableUriRegex.test(newValue)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.AddressableUriAlertMessage,keyName,\n + currentURIs.WebServer)); return false; } break; case RelayAddressableUri: if (newValue ){ newValue #RemoveKey; isCritical false; break; } if (!relayAddressableUriRegex.test(newValue)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.AddressableUriAlertMessage,keyName,\n + currentURIs.Relay)); return false; } break; case WebServerAlternateListenUri: if (newValue ){ newValue #RemoveKey; isCritical false; break; } case WebServerListenUri: if (newValue || !webServerListenUriRegex.test(newValue)) { alertModal(SC.util.formatString( SC.resExtension.EditWebConfigAppSettings.ListenUriAlertMessage,keyName,\n + currentURIs.WebServerUri.protocol + //+: + (currentURIs.WebServerUri.port ? ( currentURIs.WebServerUri.protocol http: ? 80 : 443 ) : currentURIs.WebServerUri.port ) + /)); return false; } isCritical true; break; case RelayListenUri: if (newValue || !relayListenUriRegex.test(newValue)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.ListenUriAlertMessage,keyName,\nrelay://+: + SC.context.clp.p + /)); return false; } isCritical true; break; case CryptoKey: if (!SC.context.enableCryptoKeySetting) return false; isCritical true; if (newValue || newValue #RemoveKey) { alertModal(SC.resExtension.EditWebConfigAppSettings.EmptyAsymmetricKey); return false; } else { if(!confim(SC.resExtension.EditWebConfigAppSettings.ChangeAsymmetricKeyWarning)) { return false; } } break; case DuoIntegrationKey: case DuoSecretKey: case DuoApiHostname: if (newValue ) { newValue #RemoveKey; break; } break; default: alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.UnknownTypeAlertMessage,keyName)); return false; } if (isCritical){ if(!confirm(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.CriticalSettingUpdateConfirmationMessage,keyName,oldValue,newValue).replace(/\\n/g,\n))){ return false; } } jsObjkey newValue; settingsChanged true; } return jsObj;}/***** Event Handlers *****/SC.event.addGlobalHandler(SC.event.QueryCommandButtons,function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType AdministrationPage) { eventArgs.buttonDefinitions.push( { commandName: command_ + extensionId, text: SC.resExtension.EditWebConfigAppSettings.CommandText} ); } break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch(eventArgs.commandName) { case SelectTab_ + extensionId: var tabcontent document.getElementsByClassName(TabContent); for (i 0; i tabcontent.length; i++) { SC.ui.setVisible(tabcontenti,false); } var tablinks document.getElementsByClassName(TabLink); for (i 0; i tablinks.length; i++) { SC.ui.setSelected(tablinksi,false); } SC.ui.setSelected(eventArgs.commandElement,true); var activeContent document.querySelector(# + eventArgs.commandArgument + .TabContent); SC.ui.setVisible(activeContent,true); break; case command_ + extensionId: loadExtCookieSettings(); if (extensionContext.settingValues.HideServiceRestartNotice ! true) { displayNotice( SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeTitle, SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeMessage, SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeButton, noticeAccepted_ + extensionId, function(buttonPanel){ var checkbox SC.ui.createElement(input,{type:checkbox}); SC.event.addHandler(checkbox,change,function(eventArgs){ buttonPanel.querySelector(inputtypebutton)._commandArgumenteventArgs.target.checked ? true : null; }); SC.ui.addContent(buttonPanel,$span(checkbox,SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeDoNotShowText)); } ); break; } case noticeAccepted_ + extensionId: if (eventArgs.commandArgument) { extensionContext.settingValues.HideServiceRestartNotice true; saveExtCookieSetting(HideServiceRestartNotice); } case displaySettings_ + extensionId: SC.util.includeStyleSheet(extensionContext.baseUrl + Style.css); SC.service.EditWebConfigAppSettings_GetUserIPAddress(function(returnedIP){ userIPAddress returnedIP; SC.service.EditWebConfigAppSettings_GetUris(function(uriJSON){ var uris JSON.parse(uriJSON); currentURIs.WebServer uris.WebServerUri; currentURIs.WebServerUri SC.ui.createElement(A,{id:WebServerUri,href:uris.WebServerUri}); currentURIs.Relay uris.RelayUri; currentURIs.RelayUri SC.ui.createElement(A,{id:RelayUri,href:uris.RelayUri}); if (cloudRegEx.test(currentURIs.WebServer) || cloudRegEx.test(currentURIs.Relay)) serverEnvironment hosted; else if (hostedrmmRegEx.test(currentURIs.WebServer) || hostedrmmRegEx.test(currentURIs.Relay)) serverEnvironment hostedrmm; else serverEnvironment local; SC.service.EditWebConfigAppSettings_GetWebConfigFileContents(function(WebConfigContents){ dataUri SC.ui.createDataUri(SC.util.isCapable(SC.util.Caps.Safari) ? attachment/config : text/config, WebConfigContents); httpRequestJSONObjectAsync(extensionContext.baseUrl + Defaults.json,function(keyInfo){ var validKeys Object.keys(keyInfo) .filter(function(x){ return x ! LocationSettings && checkVersion(keyInfox.minVer,SC.context.productVersion) && keyInfox.show.indexOf(serverEnvironment) > 0 && (keyInfox.isAdvanced true ? showAdvancedSettings : true ) && (x ! AsymmetricKey || SC.context.enableCryptoKeySetting); }); SC.service.EditWebConfigAppSettings_GetEditableWebConfigAppSettingKeysAndValues(validKeys,keyInfo.LocationSettings.EditableSettings, function(json){ var allKeys JSON.parse(json); var keys allKeys.AppSettings; var lkeys allKeys.Locations; var showAdvancedSettingsButton SC.ui.createElement(a,{_innerText:SC.resExtension.EditWebConfigAppSettings.ShowAdvancedSettingsText}); showAdvancedSettingsButton.addEventListener(click,function(){ showAdvancedSettings true; SC.event.dispatchEvent(null,SC.event.ExecuteCommand,{commandName:displaySettings_ + extensionId}); }); var instructions $p(SC.resExtension.EditWebConfigAppSettings.DialogInstructions, (browserSupportsNumberInput() ? : + SC.resExtension.EditWebConfigAppSettings.NoNumberSupportMessage), (!showAdvancedSettings ? $span( , showAdvancedSettingsButton, .) : + SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.YourIPAddressMessage,userIPAddress)) ); SC.dialog.showModalButtonDialog( EditWebConfigAppSettings, SC.resExtension.EditWebConfigAppSettings.DialogTitle, SC.resExtension.EditWebConfigAppSettings.DialogButtonText, Default, function (container) { container.addEventListener(keyup,function(event){validateEntry(event);}); container.addEventListener(mouseup,function(event){validateEntry(event);}); SC.ui.addContent(container, instructions); var WebConfigLinksContainer SC.ui.addElement(container, ul,{}); var WebConfigHelpLink SC.ui.createElement(A,{href:SC.resExtension.EditWebConfigAppSettings.WebConfigSettingsLinkHref,target:_blank, _innerText:SC.resExtension.EditWebConfigAppSettings.WebConfigSettingsLinkText}); var WebConfigDownloadLink SC.ui.createElement(A,{download:web.config,href:dataUri,_innerText:SC.resExtension.EditWebConfigAppSettings.WebConfigLinkText}); SC.ui.addElement(WebConfigLinksContainer,li,WebConfigDownloadLink); SC.ui.addElement(WebConfigLinksContainer,li,WebConfigHelpLink); if (showAdvancedSettings) { // Need to add tabs for Main AppSettings and individual Location AppSetting sections var tabs SC.ui.addElement(container,ul,{className:SectionTabs}); SC.ui.addElement(tabs,li,{innerText:AppSettings,id:TabLink_AppSettings,className:TabLink Selected,_commandName:SelectTab_ + extensionId,_commandArgument:AppSettings}); SC.ui.addElement(tabs,li,{innerText:Per-Page Settings,id:TabLink_PerPageSettings,className:TabLink,_commandName:SelectTab_ + extensionId,_commandArgument:PerPageSettings}); var pageSettingContainer SC.ui.addElement(container,dl,{id:PerPageSettings,className:TabContent}); for (var i0; i Object.keys(lkeys).length; i++){ // Avoid find and findIndex being provided as keys in IE when using Object.keys(obj) var lkeyName Object.keys(lkeys)i; var dt SC.ui.addElement(pageSettingContainer,dt,$span({innerText:lkeyName,id:SectionHeader_ + cleanKeyName(lkeyName),className:SectionHeader})); var dd SC.ui.addElement(pageSettingContainer,dd,{}); var dddiv SC.ui.addElement(dd,div,{}); var table SC.ui.addElement(dddiv,TABLE,{id:cleanKeyName(lkeyName)}); var thead SC.ui.addElement(table,thead,{}); var headerRow SC.ui.addElement(thead,tr,{}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.KeyColumnTitle}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.ValueColumnTitle}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.SettingColumnTitle}); var tbody SC.ui.addElement(table,tbody,{}); addRowsToTable( tbody, lkeyslkeyName, keyInfo.LocationSettings.LocationslkeyName.AppSettings, lkeyName ); } SC.ui.setVisible(pageSettingContainer,false); } var tablecontainer SC.ui.addElement(container,DIV,{id:AppSettings,className:TabContent}) var table SC.ui.addElement(tablecontainer,TABLE,{}); var thead SC.ui.addElement(table,thead,{}); var headerRow SC.ui.addElement(thead,tr, {}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.KeyColumnTitle}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.ValueColumnTitle}); if (extensionContext.settingValues.ShowDefaultValueColumn true){ SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.DefaultColumnTitle}); } SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.SettingColumnTitle}); var tbody SC.ui.addElement(table,tbody,{}); addRowsToTable(tbody,keys,keyInfo); SC.ui.setVisible(tablecontainer,true); }, function (eventArgs) { if (eventArgs.commandName SelectTab_ + extensionId) return; var appSettingsJsObj getChangedItems(keys,keyInfo); if (appSettingsJsObj false) return; var locationJsObj {}; for (var i0; i Object.keys(lkeys).length; i++){ var lkeyName Object.keys(lkeys)i; var thisLocObj getChangedItems(lkeyslkeyName,keyInfo.LocationSettings.LocationslkeyName.AppSettings,lkeyName); if (thisLocObj false) return; if (Object.keys(thisLocObj).length > 0) locationJsObjlkeyName thisLocObj; }; if (settingsChanged) { SC.service.EditWebConfigAppSettings_SetWebConfigAppSettingValues( JSON.stringify(appSettingsJsObj), JSON.stringify(locationJsObj), function () { SC.dialog.showModalActivityAndReload(Save, true, window.location.href); } ); } else { SC.dialog.hideModalDialog(); } } ); makeAllSortable($(dialog)); SC.dialog.setButtonPanelError(SC.ui.findDescendent(SC.dialog.getModalDialog(),function(_){return _.className && _.className.indexOf(ButtonPanel) > -1;}),{message:SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeTitle}); }); }); }); }); }); break; }});/** Extend Extension Options **/var extendedExtensionOptions {};/* Option Settings Below */extendedExtensionOptions.helpUrl https://help.screenconnect.com/Extension:Edit_Web.Config_AppSettings;extendedExtensionOptions.extensionResourceID EditWebConfigAppSettings;/* Option Settings Above */extendedExtensionOptions.extensionIdextensionContext.baseUrl.split(/).slice(-2)0;SC.resHelpPanel.Link+extendedExtensionOptions.extensionId+.UrlextendedExtensionOptions.helpUrl;SC.event.addGlobalHandler(SC.event.QueryCommandButtonState,function(eventArgs){ if(eventArgs.commandNameEditExtensionSettings&&eventArgs.commandContext.extensionInfo.ExtensionIDextendedExtensionOptions.extensionId&&eventArgs.commandElement._commandNameEditExtensionSettings){ if(extendedExtensionOptions.extensionResourceID&&extendedExtensionOptions.extensionResourceID.length) SC.ui.addElement(eventArgs.target.parentElement,A,{_commandName:command_+extensionId,_innerText:SC.resExtension.+extendedExtensionOptions.extensionResourceID+.CommandText}); SC.ui.addElement(eventArgs.target.parentElement,A,{_commandName:NavigateHelpLink,_commandArgument:extendedExtensionOptions.extensionId,_innerText:SC.resCommand.Help.Text.replace( ▽,)}); }});/******************************/});/script>script>SC.extension.addInitializeProc(4be5307a-130a-4afa-b655-63e633e7ca36, function (extensionContext) {SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType GuestPage) SC.installer.getSortedInstallerTypeInfos() .filter(function (i) { return i.type.match(extensionContext.settingValues.TypeFilter); }) .forEach(function (i) { eventArgs.buttonDefinitions.push({ commandName: BuildInstaller, commandArgument: i.type, text: SC.util.formatString(SC.resCommand.BuildInstaller.TextFormat, i.text), }); }); break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case BuildInstaller: var url SC.util.getInstallerUrl(eventArgs.commandArgument); SC.util.launchUrl(url); break; }});});/script>script>SC.extension.addInitializeProc(a7b5a8f2-9fd0-489c-89d0-3c1888fde971, function (extensionContext) {SC.event.addGlobalHandler(SC.event.PreRender, function (eventArgs) { if (SC.context.pageType HostPage) { SC.util.includeStyleSheet(extensionContext.baseUrl + DiagnosticsNewStyle.css); }});function getValidEventLogCount() { var tempValue extensionContext.settingValues.EventLogRequestCount; if ((tempValue > 0) && (tempValue 100)) return tempValue; else return 10;}SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case HostDetailTabList: eventArgs.buttonDefinitions.push( { commandName: Select, commandArgument: Processes, text: SC.resDiagnostics.ProcessTab.Label, imageUrl: extensionContext.baseUrl + Images/Processes.png }, { commandName: Select, commandArgument: Software, text: SC.resDiagnostics.SoftwareTab.Label, imageUrl: extensionContext.baseUrl + Images/Software.png }, { commandName: Select, commandArgument: EventLog, text: SC.resDiagnostics.EventLogTab.Label, imageUrl: extensionContext.baseUrl + Images/EventLog.png }, { commandName: Select, commandArgument: Services, text: SC.resDiagnostics.ServicesTab.Label, imageUrl: extensionContext.baseUrl + Images/Services.png } ); break; case ProcessesButtons: eventArgs.buttonDefinitions.push({ commandName: GetInfo, commandArgument: Processes, text: SC.resDiagnostics.ProcessTab.Button }); break; case SoftwareButtons: eventArgs.buttonDefinitions.push({ commandName: GetInfo, commandArgument: Software, text: SC.resDiagnostics.SoftwareTab.Button }); break; case EventLogButtons: eventArgs.buttonDefinitions.push({ commandName: GetInfo, commandArgument: EventLog, text: SC.resDiagnostics.EventLogTab.Button }); break; case ServicesButtons: eventArgs.buttonDefinitions.push({ commandName: GetInfo, commandArgument: Services, text: SC.resDiagnostics.ServicesTab.Button }); break; }});SC.event.addGlobalHandler(SC.event.InitializeTab, function (eventArgs) { if (isMyTab(eventArgs.tabName)) { SC.command.queryAndAddCommandButtons(eventArgs.container, eventArgs.tabName + Buttons); SC.ui.addElement(eventArgs.container, DIV, {id: lastUpdateContainer}); SC.ui.addElement(eventArgs.container, DIV, {id: dataContainer}); var filterContainer $div({className: filterContainer}); var filterInput $input({className: EventLogFilterInput, type: TEXT}); var filterLabel $span({innerHTML: SC.resDiagnostics.Filter.Label}); filterInput.onkeyup function (value) { ProcessFilterInput(filterInput.value); } SC.ui.addContent(filterContainer, filterLabel); SC.ui.addContent(filterContainer, filterInput); SC.ui.addContent(eventArgs.container, filterContainer); SC.ui.addElement(eventArgs.container, TABLE, {id: dataTable}); }});SC.event.addGlobalHandler(SC.event.RefreshTab, function (eventArgs) { if (isMyTab(eventArgs.tabName)) { SC.ui.clear($(dataContainer)); SC.ui.clear($(lastUpdateContainer)); SC.ui.clear($(dataTable)); SC.ui.findDescendent( eventArgs.container, function (e) { return e._commandName GetInfo; } )._commandArgument { type: eventArgs.tabName, operatingSystemName: eventArgs.session.GuestOperatingSystemName }; displayDiagnosticInformation( getLatestDiagnosticEvent( eventArgs.sessionDetails, eventArgs.tabName ), eventArgs.sessionDetails.BaseTime ); }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case GetInfo: window.addEventToSessions( window.getSessionGroupUrlPart()0, SC.types.SessionType.Access, window.getSessionUrlPart(), SC.types.SessionEventType.QueuedCommand, null, getInputCommand( eventArgs.commandArgument.type, eventArgs.commandArgument.operatingSystemName ), false, false, true ); break; }});function ProcessFilterInput(value) { var dataTable document.getElementById(dataTable); for (var i dataTable.getElementsByTagName(th).length; i dataTable.children.length; i++) { var element dataTable.childreni; //IE/opera dont support .includes() //if(!element.innerHTML.toUpperCase().includes(value.toUpperCase())) if (element.innerHTML.toUpperCase().search(value.toUpperCase()) -1) element.style.display none; else element.style.display ; }}function getInputCommand(diagnosticType, operatingSystem) { var headers getHeaders(operatingSystem); headers.DiagnosticType diagnosticType; var commandText getDiagnosticCommandText(headers); var emptyLinePrefix ; if (headers.Processor sh) emptyLinePrefix echo ; else { emptyLinePrefix echo ; commandText $Host.UI.RawUI.BufferSize New-Object Management.Automation.Host.Size (500, 25) + \n + commandText; } return #! + headers.shaBang + \n + #maxlength50000000 + \n + #timeout90000 + \n + headers.modifier + DIAGNOSTIC-RESPONSE/1 + headers.delimiter + \n + headers.modifier + DiagnosticType: + headers.DiagnosticType + headers.delimiter + \n + headers.modifier + ContentType: + headers.ContentType + headers.delimiter + \n + emptyLinePrefix + \n + commandText;}function getHeaders(operatingSystem) { if (operatingSystem.indexOf(Windows) > 0 || operatingSystem.indexOf(Server) > 0) return { Processor: ps, Interface: powershell, ContentType: xml, shaBang: ps, modifier: echo \, delimiter: \ }; else if (operatingSystem.indexOf(Linux) > 0) return { Processor: sh, Interface: linux, ContentType: text, shaBang: sh, modifier: echo , delimiter: }; else if (operatingSystem.indexOf(Mac) > 0) return { Processor: sh, Interface: osx, ContentType: text, shaBang: sh, modifier: echo , delimiter: };}function isMyTab(tabName) { switch (tabName) { case Processes: case Software: case EventLog: case Services: return true; default: return false; }}function isDiagnosticContent(eventData) { return (eventData.startsWith(DIAGNOSTIC-RESPONSE/1) || eventData.startsWith(\ufeffDIAGNOSTIC-RESPONSE/1) ? true : false);}function getLatestDiagnosticEvent(sessionDetails, diagnosticEventType) { var versionParts SC.context.productVersion.split(.); if (versionParts && versionParts.length > 1 && SC.util.isVersion({major: 22, minor: 9}, null, {major: versionParts0, minor: versionParts1})) { return sessionDetails.Events .filter(function (e) { return e.EventType SC.types.SessionEventType.RanCommand && isDiagnosticContent(e.Data) && parseDataHeaders(e.Data).DiagnosticType.trim() diagnosticEventType; }) .sort(function (x, y) { return x.Time - y.Time; }) 0; } else { return sessionDetails.Connections .map(function (c) { return c.Events; }) .reduce(function (outputArray, events) { Array.prototype.push.apply(outputArray, events); return outputArray; }, ) .filter(function (e) { return e.EventType SC.types.SessionEventType.RanCommand && isDiagnosticContent(e.Data) && parseDataHeaders(e.Data).DiagnosticType.trim() diagnosticEventType; }) .sort(function (x, y) { return x.Time - y.Time; }) 0; }}function parseDataHeaders(eventData) { var currentIndex 0; var headers {}; var isStatusLine true; while (true) { var nextNewLineIndex eventData.indexOf(\n, currentIndex); if (isStatusLine) { isStatusLine false; } else if (nextNewLineIndex currentIndex + 2 || nextNewLineIndex 0) { break; } else { var lineParts eventData.substring(currentIndex, nextNewLineIndex).split(: ); headerslineParts0 lineParts1; } currentIndex nextNewLineIndex + 1; } return headers;}function displayDiagnosticInformation(latestDiagnosticEvent, baseTime) { if (latestDiagnosticEvent ! null) { var headers parseDataHeaders(latestDiagnosticEvent.Data); if (headers.ContentType.trim() xml) displayDataXml(getEventDataXml(latestDiagnosticEvent.Data)); else displayDataText(getEventDataText(latestDiagnosticEvent.Data)); $(lastUpdateContainer).innerHTML SC.resDiagnostics.LastUpdateField.Label + new Date(latestDiagnosticEvent.Time + baseTime); }}function getEventDataXml(eventData) { return parseXml(eventData.substring(eventData.indexOf(?xml), eventData.length));}function displayDataXml(xml) { var x xml.getElementsByTagName(Object); var iterationLength 0; try { iterationLength x0.children.length; } catch (error) { iterationLength x0.childNodes.length; } //because IE/Edge are dumb if (isUsingInternetExplorerOrEdge()) { for (j 0; j iterationLength; j++) { var child x0.childNodesj; if (child.nodeType ! 1) continue; SC.ui.addElement($(dataTable), th, { id: dataTableHeader, innerHTML: x0.childNodesj.attributes.Name.nodeValue }); } for (i 0; i x.length; i++) { SC.ui.addElement($(dataTable), tr, {id: dataRow + i}); for (j 0; j xi.childNodes.length; j++) { var childX xi.childNodesj; if (childX.nodeType ! 1) continue; SC.ui.addElement($(dataRow + i), td, { id: dataTableData, innerHTML: xi.childNodesj.textContent }); } } } else { for (j 0; j x0.children.length; j++) { SC.ui.addElement($(dataTable), th, { id: dataTableHeader, innerHTML: x0.childrenj.attributes.Name.nodeValue }); } for (i 0; i x.length; i++) { SC.ui.addElement($(dataTable), tr, {id: dataRow + i}); for (j 0; j xi.children.length; j++) { SC.ui.addElement($(dataRow + i), td, {id: dataTableData, innerHTML: xi.childrenj.innerHTML}); } } }}function getEventDataText(eventData) { return parseText( eventData .split(\n) .splice(3, eventData.length) .join(\n) );}function displayDataText(eventData) { for (var category in eventData0) { SC.ui.addElement($(dataTable), th, {id: dataTableHeader, innerHTML: category}); } for (var i 0; i eventData.length; i++) { SC.ui.addElement($(dataTable), tr, {id: dataRow + i}); for (var item in eventDatai) { SC.ui.addElement($(dataRow + i), td, {id: dataTableData, innerHTML: eventDataiitem}); } }}function parseXml(xml) { var dom null; if (window.DOMParser) { try { dom (new DOMParser()).parseFromString(xml, text/xml); } catch (e) { dom null; } } else if (window.ActiveXObject) { try { dom new ActiveXObject(Microsoft.XMLDOM); dom.async false; if (!dom.loadXML(xml)) // parse error .. window.alert(dom.parseError.reason + dom.parseError.srcText); } catch (e) { dom null; } } else alert(cannot parse xml string!); return dom;}function parseText(data) { var lines data.split(\n); var result ; var headers lines1.split(,); for (var i 3; i lines.length; i++) { var obj {}; var currentline linesi.split(,); for (var j 0; j headers.length; j++) { objheadersj currentlinej; } result.push(obj); } return result;}function isUsingInternetExplorerOrEdge() { var ua window.navigator.userAgent; var msie ua.indexOf(Trident); if (ua.indexOf(Trident) > 0 || ua.indexOf(Edge) > 0) return true; else return false;}//ripped directly from http://stackoverflow.com/questions/6108819/javascript-timestamp-to-relative-time-eg-2-seconds-ago-one-week-ago-etc-bestfunction timeDifference(current, previous) { var msPerMinute 60 * 1000; var msPerHour msPerMinute * 60; var msPerDay msPerHour * 24; var msPerMonth msPerDay * 30; var msPerYear msPerDay * 365; var elapsed current - previous; if (elapsed msPerMinute) return Math.abs(Math.round(elapsed / 1000)) + seconds ago; else if (elapsed msPerHour) return Math.round(elapsed / msPerMinute) + minutes ago; else if (elapsed msPerDay) return Math.round(elapsed / msPerHour) + hours ago; else if (elapsed msPerMonth) return approximately + Math.round(elapsed / msPerDay) + days ago; else if (elapsed msPerYear) return approximately + Math.round(elapsed / msPerMonth) + months ago; else return approximately + Math.round(elapsed / msPerYear) + years ago;}function getDiagnosticCommandText(headers) { switch (headers.Processor + / + headers.Interface + / + headers.ContentType + / + headers.DiagnosticType) { case ps/powershell/xml/Processes: return Get-Process | select ProcessName, Id, NPM, PM, WS, VM | Sort ProcessName | ConvertTo-Xml -As Stream; case ps/powershell/xml/EventLog: return Get-EventLog Application -newest + getValidEventLogCount() + | Select TimeWritten, EntryType, Source, Message | Sort TimeWritten -Descending | ConvertTo-Xml -As Stream; case ps/powershell/xml/Services: return Get-Service | select displayName, Name, Status | Sort DisplayName | ConvertTo-Xml -As Stream; case ps/powershell/xml/Software: return $registryPath if (Environment::Is64BitOperatingSystem) { HKLM:\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*, HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* } else { HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* } Get-ItemProperty -Path $registryPath | Select @{NIdentifyingNumber;E{$_.PSChildName}}, @{NName;E{$_.DisplayName}}, @{NVendor;E{$_.Publisher}}, @{NVersion;E{$_.DisplayVersion}} | Where-Object{!string::IsNullOrEmpty($_.Name)} | Sort Name | ConvertTo-Xml -As Stream; case sh/linux/text/Processes: return ps -eo \%U,%p,%x,%C,%c\; case sh/linux/text/EventLog: return echo + headers.DiagnosticType + ; dmesg -T | tail - + getValidEventLogCount(); case sh/linux/text/Services: return echo + headers.DiagnosticType + ; ls /etc/init.d; case sh/linux/text/Software: return echo + headers.DiagnosticType + ; dpkg --get-selections; case sh/osx/text/Processes: return ps -eo \pid,%cpu,command\; case sh/osx/text/EventLog: return echo + headers.DiagnosticType + ; syslog -C; case sh/osx/text/Services: return echo + headers.DiagnosticType + ; launchctl list; case sh/osx/text/Software: return echo + headers.DiagnosticType + ; ls /Applications; default: throw unknown os; }}});/script>script>SC.extension.addInitializeProc(4bfb0c0d-b7a0-4911-b76e-df1d86fa88cd, function (extensionContext) {// If Report Generator extension is enabled, add help link to extension options dropdownvar reportGeneratorExtensionId extensionContext.baseUrl.split(/).slice(-2)0;var reportManagerHelpLink https://docs.connectwise.com/ConnectWise_Control_Documentation/Supported_extensions/Administration/Report_Manager;SC.event.addGlobalHandler(SC.event.PreRender, function (eventArgs) { SC.util.includeStyleSheet(extensionContext.baseUrl + Style.css);});SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { if (eventArgs.commandName EditExtensionSettings) if (eventArgs.commandContext.extensionInfo.ExtensionID reportGeneratorExtensionId && eventArgs.commandElement._commandName EditExtensionSettings) SC.ui.addElement( eventArgs.target.parentElement, A, { href: #, _commandName: ShowHelpLink_ + reportGeneratorExtensionId, innerHTML: Help } );});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { if (eventArgs.commandName ShowHelpLink_ + reportGeneratorExtensionId) window.open(reportManagerHelpLink, _blank);});});/script>script>SC.extension.addInitializeProc(8fabf97d-7b08-481b-ab06-3f501436e864, function (extensionContext) {// If Report Manager extension is enabled, add help link to extension options dropdownvar reportManagerExtensionId extensionContext.baseUrl.split(/).slice(-2)0;var reportManagerHelpLink https://help.screenconnect.com/Extension:Report_Manager;var currentVersion {major : Number(SC.context.productVersion.split(.)0), minor : Number(SC.context.productVersion.split(.)1)}SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { if (eventArgs.commandName EditExtensionSettings) if (eventArgs.commandContext.extensionInfo.ExtensionID reportManagerExtensionId && eventArgs.commandElement._commandName EditExtensionSettings) SC.ui.addElement( eventArgs.target.parentElement, A, { href: #, _commandName: ShowHelpLink_ + reportManagerExtensionId, innerHTML: Help } );});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { if (eventArgs.commandName ShowHelpLink_ + reportManagerExtensionId) window.open(reportManagerHelpLink, _blank);});var ReportManagerMetaTables {}var getMetaTableFromReportManagerMetaTables function(reportType) { if (!(reportType in ReportManagerMetaTables)) { ReportManagerMetaTablesreportType { Items: } } return ReportManagerMetaTablesreportType}var httpGetReportAsync function (theUrl) { return new Promise((resolve, reject) > { var xmlHttp new XMLHttpRequest(); xmlHttp.onreadystatechange function () { if (xmlHttp.readyState 4 && xmlHttp.status 200) { resolve(JSON.parse(xmlHttp.responseText)); } else if (xmlHttp.readyState 4) { console.log(Metaquery failed); } }; xmlHttp.open(GET, theUrl, true); xmlHttp.send(); });};var editReportProc function () { var i; httpGetReportAsync(SC.context.scriptBaseUrl + Report.json) .then(sessionMetadataResponse > { if (getMetaTableFromReportManagerMetaTables(Session).Items.length 0) { for (i 0; i sessionMetadataResponse.Items.length; i++) { if (SC.util.isVersion({major: 22, minor: 9}, null, currentVersion)) { getMetaTableFromReportManagerMetaTables(sessionMetadataResponse.Itemsi0).Items.push(sessionMetadataResponse.Itemsi); } else if (sessionMetadataResponse.Itemsi0 ! SessionConnectionEvent) { getMetaTableFromReportManagerMetaTables(sessionMetadataResponse.Itemsi0).Items.push(sessionMetadataResponse.Itemsi); } } } return httpGetReportAsync(SC.context.scriptBaseUrl + Report.json?ReportSecurity); }) .then(securityMetadataResponse > { if (getMetaTableFromReportManagerMetaTables(SecurityEvent).Items.length 0) { for (i 0; i securityMetadataResponse.Items.length; i++) { getMetaTableFromReportManagerMetaTables(SecurityEvent).Items.push(securityMetadataResponse.Itemsi); } } SC.util.includeStyleSheet(extensionContext.baseUrl + Style.css); var ReportDownloadBuilderSelectionPanel; SC.dialog.showModalDialogRaw(ReportDownloadBuilder, SC.dialog.createTitlePanel(SC.resReportDownloadBuilder.Title), $div( $div({ className: CommandPanel }, SC.command.queryAndCreateCommandButtons(ReportDownloadBuilderEditorPanel), ) ), $div( $div({ className: MasterPanel }, ReportDownloadBuilderSelectionPanel $div({ id: ReportDownloadBuilderSelectionPanel, className: MasterSelectionPanel }) ), $div({ id: ReportDownloadBuilderEditorPanel, className: DetailPanel }) ) , null, null, null ); SC.service.GetReportDefinitionStrings(function (reports) { if (reports0 ! ) { var parsedReportString; for (i 0; i reports.length - 1; i++) { parsedReportString reportsi.split(?); // report name, report definition addReportFileProc(decodeURIComponent(parsedReportString0), null, false, true, ? + parsedReportString1); loadReportFileProc(decodeURIComponent(parsedReportString0), parsedReportString1); } tryEditReportFileProc(ReportDownloadBuilderSelectionPanel.childNodes0._commandArgument); } else { updateReportViewProc(); } }); });};var addReportFileProc function (reportName, reportLoadFileName, isDirty, validReport, definition) { var i 0; // maintain lexical order if ($(ReportDownloadBuilderSelectionPanel).childNodes.length > 0) { for (var j 0; j $(ReportDownloadBuilderSelectionPanel).childNodes.length; j++) { if (reportName.toLowerCase() > $(ReportDownloadBuilderSelectionPanel).childNodesj._commandArgument.toLowerCase()) { i++; } else { break; } } } SC.ui.insertChild($(ReportDownloadBuilderSelectionPanel), createReportSelectionLinkFunc(reportName), i); SC.ui.insertChild($(ReportDownloadBuilderEditorPanel), createReportEditPanelFunc(reportName, reportLoadFileName, isDirty, validReport, definition), i); updateReportViewProc();};var loadReportFileProc function (reportName, reportDefinition) { var i; if (reportDefinition ) { $(report + reportName)._validReport false; $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; $(reportDefinitionContent + reportName).style.display none; $(groupFields + reportName).style.display none; $(aggregateFilterDiv + reportName).style.display none; updateReportViewProc(); } else if (reportDefinition.split(&)0.split()0 InvalidGrouped) { $(report + reportName)._validReport false; $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; $(reportDefinitionContent + reportName).style.display block; $(groupFields + reportName).style.display none; $(aggregateFilterDiv + reportName).style.display none; $(filter + reportName).value ; $(aggregateFilter + reportName).value ; var parsedDefinition reportDefinition.split(&); if (parsedDefinition1.search(ReportType) ! -1) { var reportType parsedDefinition1.split()1; for (i 0; i $(reportType + reportName).length; i++) { if ($(reportType + reportName).optionsi.value reportType) { $(reportType + reportName).selectedIndex i; break; } } $(filterExample + reportName).innerHTML SC.resReportDownloadBuilder. + reportType + .Filter.Example; $(aggregateFilterExample + reportName).innerHTML SC.resReportDownloadBuilder. + reportType + .AggregateFilter.Example; } $(reportExplanation + reportName).innerHTML SC.resReportDownloadBuilder. + $(reportType + reportName).options$(reportType + reportName).selectedIndex.value + .Explanation; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked true; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value ungrouped }).checked false; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, $(reportType + reportName), reportName), 1); SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(GroupedSelect, $(reportType + reportName), reportName), 1); $(groupFields + reportName).style.display block; $(aggregateFilterDiv + reportName).style.display block; i 2; if (parsedDefinition.length > 2) { var sl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType select }); var pl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); while (i parsedDefinition.length) { if (parsedDefinitioni.search(SelectFields) ! -1) { var selectField parsedDefinitioni.split()1; var selectIndex sl.selectedIndex; var selectOptions sl.options; var pickOptions pl.options; var pickOptLength pickOptions.length; for (var j 0; j selectOptions.length; j++) { if (selectOptionsj.value selectField) { pickOptionspickOptLength $option(slj.text); pickOptionspickOptLength.value slj.value; pickOptionspickOptLength.title slj.title; pickOptionspickOptLength._index slj._index; selectOptionsj null; break; } } } else if (parsedDefinitioni.search(AggregateFilter) ! -1) { var aggregateFilter parsedDefinitioni.split()1; $(aggregateFilter + reportName).value decodeURIComponent(aggregateFilter); } else if (parsedDefinitioni.search(Filter) ! -1) { var filter parsedDefinitioni.split()1; $(filter + reportName).value decodeURIComponent(filter); } else if (parsedDefinitioni.search(ItemLimit) ! -1) { var itemLimit parsedDefinitioni.split()1; $(itemLimit + reportName).value itemLimit; } i++; } sl.options.length > 0 ? sl.options0.selected true : ; pl.options.length > 0 ? pl.options0.selected true : ; } var gsl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType select }); gsl.options0.selected true; updateReportViewProc(); } else { var encounteredField false; $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; $(reportDefinitionContent + reportName).style.display block; $(groupFields + reportName).style.display none; $(aggregateFilterDiv + reportName).style.display none; $(filter + reportName).value ; $(aggregateFilter + reportName).value ; var parsedDefinition reportDefinition.split(&); if (parsedDefinition0.search(ReportType) ! -1) { var reportType parsedDefinition0.split()1; for (i 0; i $(reportType + reportName).length; i++) { if ($(reportType + reportName).optionsi.value reportType) { $(reportType + reportName).selectedIndex i; break; } } $(filterExample + reportName).innerHTML SC.resReportDownloadBuilder. + reportType + .Filter.Example; $(aggregateFilterExample + reportName).innerHTML SC.resReportDownloadBuilder. + reportType + .AggregateFilter.Example; } $(reportExplanation + reportName).innerHTML SC.resReportDownloadBuilder. + $(reportType + reportName).options$(reportType + reportName).selectedIndex.value + .Explanation; i 1; if (parsedDefinition.length > 1) { while (i parsedDefinition.length) { if (parsedDefinitioni.search(GroupFields) ! -1) { if (!encounteredField) { SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked true; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value ungrouped }).checked false; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, $(reportType + reportName), reportName), 1); SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(GroupedSelect, $(reportType + reportName), reportName), 1); $(groupFields + reportName).style.display block; $(aggregateFilterDiv + reportName).style.display block; encounteredField true; } var groupField parsedDefinitioni.split()1; var gsl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType select }); var selectIndex gsl.selectedIndex; var selectOptions gsl.options; var gpl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType pick }); var pickOptions gpl.options; var pickOptLength pickOptions.length; for (var j 0; j selectOptions.length; j++) { if (selectOptionsj.value groupField) { pickOptionspickOptLength $option(gslj.text); pickOptionspickOptLength.value gslj.value; pickOptionspickOptLength.title gslj.title; pickOptionspickOptLength._index gslj._index; selectOptionsj null; break; } } } else if (parsedDefinitioni.search(SelectFields) ! -1) { if (!encounteredField) { SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked false; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value ungrouped }).checked true; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, $(reportType + reportName), reportName), 1); SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(NotGroupedSelect, $(reportType + reportName), reportName), 1); encounteredField true; } var selectField parsedDefinitioni.split()1; var ssl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType select }); var selectIndex ssl.selectedIndex; var selectOptions ssl.options; var spl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); var pickOptions spl.options; var pickOptLength pickOptions.length; for (var j 0; j selectOptions.length; j++) { if (selectOptionsj.value selectField) { pickOptionspickOptLength $option(sslj.text); pickOptionspickOptLength.value sslj.value; pickOptionspickOptLength.title sslj.title; pickOptionspickOptLength._index sslj._index; selectOptionsj null; break; } } } else if (parsedDefinitioni.search(AggregateFilter) ! -1) { var aggregateFilter parsedDefinitioni.split()1; $(aggregateFilter + reportName).value decodeURIComponent(aggregateFilter); } else if (parsedDefinitioni.search(Filter) ! -1) { var filter parsedDefinitioni.split()1; $(filter + reportName).value decodeURIComponent(filter); } else if (parsedDefinitioni.search(ItemLimit) ! -1) { var itemLimit parsedDefinitioni.split()1; $(itemLimit + reportName).value itemLimit; } i++; } // if have not encountered a single group or select field at this point, then the report is ungrouped with an empty set of select fields if (!encounteredField) { SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked false; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value ungrouped }).checked true; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, $(reportType + reportName), reportName), 1); SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(NotGroupedSelect, $(reportType + reportName), reportName), 1); } var gsl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType select }); var gpl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType pick }); var ssl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType select }); var spl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); if (gsl && gsl.options0) { gsl.options0.selected true; } if (gpl && gpl.options0) { gpl.options0.selected true; } if (ssl && ssl.options0) { ssl.options0.selected true; } if (spl && spl.options0) { spl.options0.selected true; } } }};var checkForReportInputChange function (reportName) { return function () { var valid true; // if this is a grouped report, need to check that at least one group field is selected if (SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked true) { valid false; if (SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType pick }).options.length > 0) { valid true; } } $(report + reportName)._validReport valid; // check if any changes made to the report since last saved if ($(report + reportName)._reportDefinition ! getReportDefinitionString(reportName)) { $(report + reportName)._isDirty true; } else { $(report + reportName)._isDirty false; } updateReportViewProc(); };};// generate a new group or select field selector based on the type of reportvar generateReportFieldPickListDiv function (fieldSelectionType, reportType, reportName) { // build a group or select field selector var buildPickListDiv function (primaryOrAggregate, fieldType, reportType) { var pickDiv, i; var pickListDivBuilder function (selectList, pickList) { var addButton $button({ className: SecondaryButton }, >); var deleteButton $button({ className: SecondaryButton }, ); var upButton $button({ className: SecondaryButton }, ∧); var downButton $button({ className: SecondaryButton }, ∨); SC.event.addHandler(addButton, click, addOptionToPickList(selectList, pickList)); SC.event.addHandler(deleteButton, click, removeOptionFromPickList(selectList, pickList)); SC.event.addHandler(addButton, click, checkForReportInputChange(reportName)); SC.event.addHandler(deleteButton, click, checkForReportInputChange(reportName)); SC.event.addHandler(upButton, click, function () { var pl pickList; var pickIndex pl.selectedIndex; var pickOptions pl.options; var selectedIndices ; for (var i 0; i pl.length; i++) { if (pickOptionsi.selected) { selectedIndices.push(i); } } if ((selectedIndices.length > 0) && (selectedIndices0 ! 0)) { for (var j 0; j selectedIndices.length; j++) { pl.add($option(plselectedIndicesj.text), selectedIndicesj - 1); pickOptionsselectedIndicesj - 1.value plselectedIndicesj + 1.value; pickOptionsselectedIndicesj - 1.title plselectedIndicesj + 1.title; pickOptionsselectedIndicesj - 1._index plselectedIndicesj + 1._index; pickOptionsselectedIndicesj - 1.selected true; pl.remove(selectedIndicesj + 1); } } }); SC.event.addHandler(upButton, click, checkForReportInputChange(reportName)); SC.event.addHandler(downButton, click, function () { var pl pickList; var pickIndex pl.selectedIndex; var pickOptions pl.options; var selectedIndices ; for (var i 0; i pl.length; i++) { if (pickOptionsi.selected) { selectedIndices.push(i); } } if ((selectedIndices.length > 0) && (selectedIndicesselectedIndices.length - 1 (pl.length - 1))) { for (var j (selectedIndices.length - 1); j > 0; j--) { pl.add($option(plselectedIndicesj.text), selectedIndicesj + 2); pickOptionsselectedIndicesj + 2.value plselectedIndicesj.value; pickOptionsselectedIndicesj + 2.title plselectedIndicesj.title; pickOptionsselectedIndicesj + 2._index plselectedIndicesj._index; pickOptionsselectedIndicesj + 2.selected true; pl.remove(selectedIndicesj); } } }); SC.event.addHandler(downButton, click, checkForReportInputChange(reportName)); return $div( $table( $tr( $td(selectList, $div({ className: pickListDescription }, Available)), $td(addButton, $br(), deleteButton), $td(pickList, $div({ className: pickListDescription }, Selected)), $td(upButton, $br(), downButton) ) ) ); }; var addOptionToPickList function (selectList, pickList) { return function () { var sl selectList; var selectIndex sl.selectedIndex; var selectOptions sl.options; var pl pickList; var pickOptions pl.options; var pickOptLength pickOptions.length; for (var i 0; i pickOptLength; i++) { pickOptionsi.selected false; } while (selectIndex > -1) { pickOptionspickOptLength $option(slselectIndex.text); pickOptionspickOptLength.value slselectIndex.value; pickOptionspickOptLength.title slselectIndex.title; pickOptionspickOptLength._index slselectIndex._index; pickOptionspickOptLength.selected true; selectOptionsselectIndex null; selectIndex sl.selectedIndex; pickOptLength pickOptions.length; } }; }; var removeOptionFromPickList function (selectList, pickList) { return function () { var sl selectList; var selectOptions sl.options; var selectOptLength selectOptions.length; var pl pickList; var pickIndex pl.selectedIndex; var pickOptions pl.options; for (var i 0; i selectOptLength; i++) { selectOptionsi.selected false; } while (pickIndex > -1) { var j 0; while (selectOptionsj && (pickOptionspickIndex._index > selectOptionsj._index)) { j++; } sl.add($option(plpickIndex.text), j); selectOptionsj.value plpickIndex.value; selectOptionsj.title plpickIndex.title; selectOptionsj._index plpickIndex._index; selectOptionsj.selected true; pickOptionspickIndex null; pickIndex pl.selectedIndex; } }; }; var name reportName ! null ? reportName : Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); })._commandArgument; var pickList $select({ id: primaryOrAggregate + pickList + name, size: 7, multiple: true, _listType: pick }); var selectList $select({ id: primaryOrAggregate + selectList + name, size: 7, multiple: true, _listType: select }); var j 0; var reportTypeValue reportType.optionsreportType.selectedIndex.value; if (reportTypeValue ! SessionConnectionEvent || SC.util.isVersion(null, {major: 22, minor : 9}, currentVersion)) { for (i 0; i getMetaTableFromReportManagerMetaTables(reportTypeValue).Items.length; i++) { if (getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi1.toLowerCase() primaryOrAggregate) { SC.ui.addContent(selectList, $option({ label: getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi3, value: getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi3, title: SC.resreportTypeValue + . + getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi3 + .Definition, _index: j }, getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi3)); j++; } } selectList.options0.selected true; pickDiv pickListDivBuilder(selectList, pickList); } return pickDiv; }; switch (fieldSelectionType) { case NotGroupedSelect: return buildPickListDiv(primary, selectFields, reportType); case GroupedGroup: return buildPickListDiv(primary, groupFields, reportType); case GroupedSelect: return buildPickListDiv(aggregate, selectFields, reportType); }};var createReportEditPanelFunc function (reportName, reportLoadFileName, isDirty, validReport, definition) { var reportTypeInput, reportTypeSelection, groupFieldSelection, selectFieldsSelection, aggregateFilterContent, aggregateFilterInput, reportDefinitionContent, filterInput, itemLimitInput, filterExample, aggregateFilterExample; var inputs Session, SessionConnection, SessionConnectionEvent, SessionEvent, SecurityEvent; if (SC.util.isVersion({major: 22, minor : 9}, null, currentVersion)) { inputs Session, SessionConnection, SessionEvent, SecurityEvent; } var reportEditPanel $div({ className: reportEditPanel, id: report + reportName, _isDirty: isDirty, _reportDefinition: definition null ? : definition, _validReport: validReport }, $table( $tr( $td( $div({ id: rawReporter + reportName }, $div({ className: reportBuilderSection }, reportTypeSelection $div({ className: aggregationSection, id: reportTypeSelection + reportName }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.AggregationType.Label), $table( $tr( $td(SC.ui.createRadioButtonOption(span, SC.resReportDownloadBuilder.UngroupedReport.Label, reportType + reportName, ungrouped, false, true)), $td({ id: ungroupedTooltip }, $dfn({ _textResource: InfoIcon.Text, _dataMap: { tooltip: SC.resReportDownloadBuilder.UngroupedReport.Tooltip } })) ), $tr( $td(SC.ui.createRadioButtonOption(span, SC.resReportDownloadBuilder.GroupedReport.Label, reportType + reportName, grouped, false, true)), $td({ id: groupedTooltip }, $dfn({ _textResource: InfoIcon.Text, _dataMap: { tooltip: SC.resReportDownloadBuilder.GroupedReport.Tooltip } })) ) ) ), reportDefinitionContent $div({ id: reportDefinitionContent + reportName }, $div({ className: reportSection }, $div($label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.ReportType.Label)), $div(reportTypeInput $select({ className: reportTypeInput, id: reportType + reportName }, inputs.map(function (reportType) { return $option({ label: reportType, value: reportType }, reportType); }))), $div({ className: ReportExplanation, id: reportExplanation + reportName }, SC.resReportDownloadBuilder.Session.Explanation) ), groupFieldSelection $div({ id: groupFields + reportName, className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.GroupFieldSet.Label) ), selectFieldsSelection $div({ id: selectFields + reportName, className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.SelectFieldSet.Label) ), $div({ className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.Filter.Label), $div(filterInput SC.ui.createElement(INPUT, { className: reportFilterInput, id: filter + reportName, type: text })), filterExample $label({ id: filterExample + reportName, className: filterExample }, SC.resReportDownloadBuilder.Session.Filter.Example) ), aggregateFilterContent $div({ id: aggregateFilterDiv + reportName, className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.AggregateFilter.Label), $div(aggregateFilterInput SC.ui.createElement(INPUT, { className: reportFilterInput, id: aggregateFilter + reportName, type: text })), aggregateFilterExample $label({ id: aggregateFilterExample + reportName, className: filterExample }, SC.resReportDownloadBuilder.Session.AggregateFilter.Example) ), $div({ className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.ItemLimit.Label), $div(itemLimitInput SC.ui.createElement(INPUT, { id: itemLimit + reportName, type: number, value: SC.resReportDownloadBuilder.ItemLimit.DefaultValue })) ) ), ) ) ) ) ) ); // initialize display reportDefinitionContent.style.display none; groupFieldSelection.style.display none; aggregateFilterContent.style.display none; // add handlers SC.event.addHandler(aggregateFilterInput, input, checkForReportInputChange(reportName)); SC.event.addHandler(filterInput, input, checkForReportInputChange(reportName)); SC.event.addHandler(itemLimitInput, input, checkForReportInputChange(reportName)); SC.event.addHandler(SC.ui.findDescendent(reportTypeSelection, function (e) { return e.type radio && e.value ungrouped }), click, function () { reportDefinitionContent.style.display block; groupFieldSelection.style.display none; aggregateFilterContent.style.display none; reportTypeSelection.title ; $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(NotGroupedSelect, reportTypeInput, reportName), 1); }); SC.event.addHandler(SC.ui.findDescendent(reportTypeSelection, function (e) { return e.type radio && e.value grouped }), click, function () { reportDefinitionContent.style.display block; groupFieldSelection.style.display block; aggregateFilterContent.style.display block; reportTypeSelection.title ; $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, reportTypeInput, reportName), 1); $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(GroupedSelect, reportTypeInput, reportName), 1); }); SC.event.addHandler(SC.ui.findDescendent(reportTypeSelection, function (e) { return e.type radio && e.value ungrouped }), click, checkForReportInputChange(reportName)); SC.event.addHandler(SC.ui.findDescendent(reportTypeSelection, function (e) { return e.type radio && e.value grouped }), click, checkForReportInputChange(reportName)); var updateGroup function (callback) { $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, reportTypeInput, reportName), 1); $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(GroupedSelect, reportTypeInput, reportName), 1); callback(); }; var updateNotGroup function (callback) { $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(NotGroupedSelect, reportTypeInput, reportName), 1); callback(); }; // update options in GroupFields and SelectFields dropdown if reportType changes SC.event.addHandler(reportTypeInput, change, function () { $(reportExplanation + reportName).innerHTML SC.resReportDownloadBuilder. + reportTypeInput.optionsreportTypeInput.selectedIndex.value + .Explanation; filterExample.innerHTML SC.resReportDownloadBuilder. + reportTypeInput.optionsreportTypeInput.selectedIndex.value + .Filter.Example; aggregateFilterExample.innerHTML SC.resReportDownloadBuilder. + reportTypeInput.optionsreportTypeInput.selectedIndex.value + .AggregateFilter.Example; reportTypeInput.optionsreportTypeInput.selectedIndex.value if (SC.ui.getSelectedRadioButtonValue(reportTypeSelection) grouped) { updateGroup(checkForReportInputChange(reportName)); } else { updateNotGroup(checkForReportInputChange(reportName)); } }); return reportEditPanel;};var createReportSelectionLinkFunc function (reportName) { return $a({ className: SelectionLink, _commandName: EditReport, _commandArgument: reportName });};var tryRemoveReportFileProc function (reportName) { var index getIndexOfReportFilePathFunc(reportName); if (index ! -1) { SC.ui.removeChildAt($(ReportDownloadBuilderSelectionPanel), index); SC.ui.removeChildAt($(ReportDownloadBuilderEditorPanel), index); if ($(ReportDownloadBuilderSelectionPanel).childNodes.length ! 0) { if (index $(ReportDownloadBuilderSelectionPanel).childNodes.length) { tryEditReportFileProc($(ReportDownloadBuilderSelectionPanel).childNodesindex - 1._commandArgument); } else { tryEditReportFileProc($(ReportDownloadBuilderSelectionPanel).childNodesindex._commandArgument); } } } updateReportViewProc();};var tryEditReportFileProc function (reportName) { var index getIndexOfReportFilePathFunc(reportName); Array.prototype.forEach.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l, i) { SC.ui.setSelected(l, i index); }); Array.prototype.forEach.call($(ReportDownloadBuilderEditorPanel).childNodes, function (p, i) { SC.ui.setVisible(p, i index); }); updateReportViewProc();};var getIndexOfReportFilePathFunc function (reportName) { return Array.prototype.findIndex.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (sl) { return sl._commandArgument reportName; });};var getSelectedReportFileIndexFunc function () { return Array.prototype.findIndex.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (sl) { return SC.ui.isSelected(sl); });};var updateReportViewProc function () { var commandPanel document.querySelector(.ModalDialog.ReportDownloadBuilder .CommandPanel); var index getSelectedReportFileIndexFunc(); //update Clone and Delete command button states if ($(ReportDownloadBuilderSelectionPanel).childNodes.length > 0) { commandPanel.childNodes1.className ; commandPanel.childNodes2.className ; } else { commandPanel.childNodes1.className Disabled; commandPanel.childNodes2.className Disabled; } //update Save command button state if ($(ReportDownloadBuilderEditorPanel).childNodesindex) { if ($(ReportDownloadBuilderEditorPanel).childNodesindex._isDirty) { commandPanel.childNodes3.className ; } else { commandPanel.childNodes3.className Disabled; } } else { commandPanel.childNodes3.className Disabled; } //update Save All command button state if ($(ReportDownloadBuilderEditorPanel).childNodesindex) { var enableSaveAll false; for (var i 0; i $(ReportDownloadBuilderEditorPanel).childNodes.length; i++) { if ($(ReportDownloadBuilderEditorPanel).childNodesi._isDirty) { enableSaveAll true; } else { enableSaveAll enableSaveAll | false; } } if (enableSaveAll) { commandPanel.childNodes4.className ; } else { commandPanel.childNodes4.className Disabled; } } else { commandPanel.childNodes4.className Disabled; } //update Download and Email command button states if ($(ReportDownloadBuilderEditorPanel).childNodesindex) { if ($(ReportDownloadBuilderEditorPanel).childNodesindex._validReport) { commandPanel.childNodes5.className ; commandPanel.childNodes6.className ; } else { commandPanel.childNodes5.className Disabled; commandPanel.childNodes6.className Disabled; } } else { commandPanel.childNodes5.className Disabled; commandPanel.childNodes6.className Disabled; } Array.prototype.forEach.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (sl, i) { var linkContent sl._commandArgument; if ($(ReportDownloadBuilderEditorPanel).childNodesi._isDirty) linkContent + *; SC.ui.setInnerText(sl, linkContent); SC.css.ensureClass(sl, LoadError, sl._status SC.types.ExtensionRuntimeStatus.LoadError); sl.title (SC.util.isNullOrEmpty(sl._loadMessage) ? : sl._loadMessage); });};var getReportDefinitionString function (reportName) { var selectedGroupFields ; var selectedSelectFields ; var reportDefinition; if (SC.ui.getSelectedRadioButtonValue($(reportTypeSelection + reportName)) grouped) { var pListGroup SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType pick }); for (i 0; i pListGroup.options.length; i++) { selectedGroupFields.push(pListGroupi.value); } var pListSelect SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); for (i 0; i pListSelect.options.length; i++) { selectedSelectFields.push(pListSelecti.value); } if (pListGroup.options.length 0) { reportDefinition { InvalidGrouped: true, ReportType: $(reportType + reportName).options$(reportType + reportName).selectedIndex.value, GroupFields: , SelectFields: selectedSelectFields, Filter: $(filter + reportName).value.length > 0 ? $(filter + reportName).value : , AggregateFilter: $(aggregateFilter + reportName).value.length > 0 ? $(aggregateFilter + reportName).value : , ItemLimit: $(itemLimit + reportName).value.length > 0 ? $(itemLimit + reportName).value : 10000 }; } else { reportDefinition { ReportType: $(reportType + reportName).options$(reportType + reportName).selectedIndex.value, GroupFields: selectedGroupFields, SelectFields: selectedSelectFields, Filter: $(filter + reportName).value.length > 0 ? $(filter + reportName).value : , AggregateFilter: $(aggregateFilter + reportName).value.length > 0 ? $(aggregateFilter + reportName).value : , ItemLimit: $(itemLimit + reportName).value.length > 0 ? $(itemLimit + reportName).value : 10000 }; } } else if (SC.ui.getSelectedRadioButtonValue($(reportTypeSelection + reportName)) ungrouped) { var pListSelect SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); for (i 0; i pListSelect.options.length; i++) { selectedSelectFields.push(pListSelecti.value); } reportDefinition { ReportType: $(reportType + reportName).options$(reportType + reportName).selectedIndex.value, GroupFields: , SelectFields: selectedSelectFields, Filter: $(filter + reportName).value.length > 0 ? $(filter + reportName).value : , AggregateFilter: , ItemLimit: $(itemLimit + reportName).value.length > 0 ? $(itemLimit + reportName).value : 10000 }; } else { reportDefinition { ReportType: , GroupFields: , SelectFields: , Filter: , AggregateFilter: , ItemLimit: }; } if (reportDefinition.ReportType SecurityEvent) { reportDefinition.Report Security; } return SC.util.getQueryString(reportDefinition);};var downloadReport function (reportName, fileFormat) { if (fileFormat csv) { SC.util.launchUrl(SC.context.scriptBaseUrl + Report.csv + getReportDefinitionString(reportName)); } else { window.open(SC.context.scriptBaseUrl + Report. + fileFormat + getReportDefinitionString(reportName)); }};var getUniqueReportName function (desiredReportName) { var duplicate false; for (var i 0; i $(ReportDownloadBuilderSelectionPanel).childNodes.length; i++) { if (desiredReportName $(ReportDownloadBuilderSelectionPanel).childNodesi._commandArgument) { duplicate true; } } if (duplicate) { var created false; var duplicateIndicator 1; var reportName desiredReportName + - + duplicateIndicator; while (!created) { duplicate false; for (var i 0; i $(ReportDownloadBuilderSelectionPanel).childNodes.length; i++) { if (reportName $(ReportDownloadBuilderSelectionPanel).childNodesi._commandArgument) { duplicate true; } } if (duplicate) { duplicateIndicator++; reportName desiredReportName + - + duplicateIndicator; } else { return reportName; } } } else { return desiredReportName; }};var updateReportDefinition function (reportName) { $(report + reportName)._reportDefinition getReportDefinitionString(reportName);};var makeReportClean function (reportName) { $(report + reportName)._isDirty false;};var startSaveReportFileProc function (reportName) { makeReportClean(reportName); updateReportDefinition(reportName); updateReportViewProc();};SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType AdministrationPage) { eventArgs.buttonDefinitions.push( { commandName: ManageRawReports, text: SC.resReportDownloadBuilder.ButtonText } ); } break; case ReportDownloadBuilderEditorPanel: Array.prototype.push.apply(eventArgs.buttonDefinitions, { commandName: NewReport }, { commandName: CloneReport }, { commandName: DeleteReport }, { commandName: SaveReport }, { commandName: SaveAllReports }, { commandName: DownloadReport }, { commandName: EmailReport } ); break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { var dialog SC.dialog.getModalDialog(); switch (eventArgs.commandName) { case ManageRawReports: editReportProc(); break; case NewReport: if (eventArgs.clickedElement.tagName INPUT) { var unprocessedReportName (eventArgs.clickedElement.value ? SC.resReportDownloadBuilder.NewReportName.DefaultName : eventArgs.clickedElement.value); var reportFile { ReportName: unprocessedReportName, ReportContent: }; var reportName getUniqueReportName(reportFile.ReportName); addReportFileProc(reportName, null, true, false, null); tryEditReportFileProc(reportName); } else { SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { SC.ui.setContents(container, $p(SC.ui.createTextBox({ _commandName: eventArgs.commandName }, false, false, SC.resReportDownloadBuilder.NewReportName.Placeholder)), ); }, function (container) { SC.ui.findDescendentByTag(container, INPUT).focus(); } ); } break; case EditReport: tryEditReportFileProc(eventArgs.commandArgument); break; case DeleteReport: if (eventArgs.commandArgument) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); SC.service.TryDeleteReportDefinitionString(encodeURIComponent(currentSelectionLink._commandArgument), function () { tryRemoveReportFileProc(currentSelectionLink._commandArgument); }); } else { SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); SC.ui.setContents(container, $p(SC.resReportDownloadBuilder.DeleteReport.ConfirmationText), $p($input({ type: button, value: SC.resReportDownloadBuilder.DeleteReport.ButtonText, _commandName: eventArgs.commandName, _commandArgument: true })) ); }, function (container) { if (SC.ui.findDescendentByTag(container, INPUT) ! null) { SC.ui.findDescendentByTag(container, INPUT).focus(); } } ); } break; case SaveReport: var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); var definition getReportDefinitionString(currentSelectionLink._commandArgument); definition definition ! ? definition : ?; SC.service.SaveReportDefinitionString(encodeURIComponent(currentSelectionLink._commandArgument), definition, function () { startSaveReportFileProc(currentSelectionLink._commandArgument); }); break; case SaveAllReports: var selectionLinks $(ReportDownloadBuilderSelectionPanel).childNodes; var reportEditPanels $(ReportDownloadBuilderEditorPanel).childNodes; var reportNamesAndDefinitions ; for (var i 0; i selectionLinks.length; i++) { if (reportEditPanelsi._isDirty) { var definition getReportDefinitionString(selectionLinksi._commandArgument); definition definition ! ? definition : ?; startSaveReportFileProc(selectionLinksi._commandArgument); reportNamesAndDefinitions + encodeURIComponent(selectionLinksi._commandArgument) + definition + SC.resReportDownloadBuilder.Query.Delimiter; } } SC.service.SaveAllReportDefinitionStrings(reportNamesAndDefinitions); break; case CloneReport: if (eventArgs.clickedElement.tagName INPUT) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); var unprocessedReportName (eventArgs.clickedElement.value ? SC.resReportDownloadBuilder.NewReportName.DefaultName : eventArgs.clickedElement.value); var reportFile { ReportName: unprocessedReportName, ReportContent: }; var reportName getUniqueReportName(reportFile.ReportName); var definition getReportDefinitionString(currentSelectionLink._commandArgument); var definitionForAddAndSave definition ! ? definition : ?; var definitionForLoad definitionForAddAndSave.charAt(0) ! ? ? definitionForAddAndSave : definitionForAddAndSave.substring(1); addReportFileProc(reportName, null, false, true, definitionForAddAndSave); loadReportFileProc(reportName, definitionForLoad); tryEditReportFileProc(reportName); SC.service.SaveReportDefinitionString(encodeURIComponent(reportName), definitionForAddAndSave, function () { startSaveReportFileProc(reportName); }); } else { SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { SC.ui.setContents(container, $p(SC.ui.createTextBox({ _commandName: eventArgs.commandName }, false, false, SC.resReportDownloadBuilder.NewReportName.Placeholder)), ); }, function (container) { SC.ui.findDescendentByTag(container, INPUT).focus(); } ); } break; case DownloadReport: SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); var downloadFormatSelection $select({ id: DownloadReportFormatSelector }, CSV, XML, JSON.map(function (downloadFormat) { return $option({ label: downloadFormat, value: downloadFormat.toLowerCase() }, downloadFormat); })); var downloadButton $input({ id: DownloadReportButton, type: button, value: SC.resReportDownloadBuilder.DownloadReport.Button.Text }); var downloadURL $input(); downloadURL.value SC.context.scriptBaseUrl + Report.csv + getReportDefinitionString(currentSelectionLink._commandArgument); SC.ui.addContent(container, $p(downloadFormatSelection, downloadButton), $p(downloadURL), $p( $input({ id: CopyReportDownloadLink, type: button, value: SC.resReportDownloadBuilder.CopyDownloadURL.Button.Text, _eventHandlerMap: { click: function (eventArgs) { downloadURL.select(); try { document.execCommand(copy); SC.ui.setVisible(eventArgs.target.parentNode.lastChild, true); } catch (ex) { // dont care } } } }), $span({ id: CopyReportDownloadLinkSuccess, className: Success, _visible: false, innerHTML: SC.resReportDownloadBuilder.CopySuccessMessage }) ) ); downloadURL.select(); SC.event.addHandler(downloadButton, click, function () { downloadReport(currentSelectionLink._commandArgument, downloadFormatSelection.value); downloadURL.select(); }); SC.event.addHandler(downloadFormatSelection, change, function () { downloadURL.value SC.context.scriptBaseUrl + Report. + downloadFormatSelection.value + getReportDefinitionString(currentSelectionLink._commandArgument); downloadURL.select(); SC.ui.setVisible($(CopyReportDownloadLinkSuccess), false); }); }, function (container) { } ); break; case EmailReport: SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); var emailReportToAddress $input({ id: emailReportToAddressInput, type: text, placeholder: SC.resReportDownloadBuilder.EmailReport.Placeholder }); var emailReportButton $input({ id: EmailReportButton, type: button, value: SC.resReportDownloadBuilder.EmailReport.Button.Text }); var emailReportStatusMessage $span({ innerHTML: SC.resCommand.EmailReport.DefaultMessage }); var reportParameters getReportDefinitionString(currentSelectionLink._commandArgument); SC.service.GetReportEmailDefaultToAddress(function (emailToAddress) { emailReportToAddress.value emailToAddress; SC.ui.addContent(container, $p(emailReportToAddress, emailReportButton), $p(emailReportStatusMessage) ); }); SC.event.addHandler(emailReportButton, click, function () { emailReportToAddress.disabled true; emailReportButton.disabled true; SC.service.EmailReport(emailReportToAddress.value, currentSelectionLink.innerHTML, reportParameters, function (response) { emailReportStatusMessage.innerHTML response; emailReportToAddress.disabled false; emailReportButton.disabled false; } ); } ); }, function (container) { } ); break; }});});/script>script>SC.extension.addInitializeProc(850c08be-d904-48d4-977a-5c2fcb277fd4, function (extensionContext) {SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType HostPage) eventArgs.buttonDefinitions.push( { commandName: DownloadScreenConnector } ); break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case DownloadScreenConnector: SC.util.launchUrl(extensionContext.baseUrl + Download.ashx); break; }});});/script>title> Szigetköz.Net - Helpdesk Rendszer/title>/head>body> div classHiddenPanel>/div> script> SC.ui.setVisible(document.body, false); /script> div classOuterPanel> div classHeaderPanel>/div> div classNavigationPanel ArrowNavigation tabindex10>/div> div classMainPanel> div classContentPanel> div> div classWelcomePanel>/div> div classActionPanel>/div> /div> div classInfoPanel>/div> /div> /div> /div> script> SC.context.scriptBaseUrl SC.util.getBaseUrl($(defaultScript).src); /script> script> SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { var session null; var hostAccessToken null; switch (eventArgs.commandName) { case JoinBySessionID: session window.getSessionInfo().Sessions.filter(function (s) { return s.SessionID eventArgs.commandArgument; })0; break; case JoinByTag: var taggedSessionInfo window.getTaggedSessionInfo(eventArgs.commandArgument); hostAccessToken taggedSessionInfo.HostAccessToken; session window.getSessionInfo().Sessions.filter(function (s) { return s.SessionID taggedSessionInfo.SessionID || (taggedSessionInfo.Code && s.Code.toLowerCase() taggedSessionInfo.Code.toLowerCase()); })0; break; } // older IE only allows launching urls on actual clicks and this could be sent by a keystroke if (session && (SC.command.doesClickDispatch(eventArgs.commandElement) || !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 11 }))) { SC.launch.startJoinSession( { session: session, hostAccessToken: hostAccessToken, processType: hostAccessToken ? SC.types.ProcessType.Host : SC.types.ProcessType.Guest }, function (joinInfo, _, onSuccess, onFailure) { onSuccess( SC.util.getClientLaunchParameters( joinInfo.session.SessionID, joinInfo.session.SessionType, joinInfo.session.Name, joinInfo.fieldMap.participantName.value, null, joinInfo.hostAccessToken, joinInfo.processType ) ); } ); } }); SC.event.addGlobalHandler(SC.event.QueryJoinInfo, function (eventArgs) { if (eventArgs.session) { eventArgs.shouldShowPrompt SC.util.getSessionTypeBooleanResource(JoinPanel.{0}PromptVisible, eventArgs.session.SessionType); eventArgs.promptText SC.util.getSessionTypeResource(JoinPanel.{0}PromptMessage, eventArgs.session.SessionType); eventArgs.buttonText SC.util.getSessionTypeResource(JoinPanel.{0}PromptButtonText, eventArgs.session.SessionType); eventArgs.fieldMap.participantName { labelText: SC.util.getSessionTypeResource(JoinPanel.{0}ParticipantNameLabelText, eventArgs.session.SessionType), value: , visible: SC.util.getSessionTypeBooleanResource(JoinPanel.{0}PromptParticipantNameVisible, eventArgs.session.SessionType), }; } }); SC.event.addGlobalHandler(SC.event.QueryParticipantJoinedCount, function (eventArgs) { var sessionInfo window.getSessionInfo(); var session sessionInfo.Sessions.find(function (s) { return s.SessionID eventArgs.clientLaunchParameters.s; }); if (session ! undefined) eventArgs.participantJoinedCount session.ActiveConnections.filter(function (ac) { if (eventArgs.clientLaunchParameters.n) return ac.ProcessType SC.types.ProcessType.Host; return ac.ProcessType SC.types.ProcessType.Guest && ac.ParticipantName eventArgs.clientLaunchParameters.r; }).length; }); SC.event.addGlobalHandler(SC.event.QueryPanels, function (eventArgs) { switch (eventArgs.area) { case GuestActionPanel: eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $div({ className: Loading })); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 1 && sessionInfo null; } }); eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $a({ _commandName: JoinByTag, _commandArgument: DefaultSession, className: GoLink Large, _attributeMap: { aria-label: SC.resGuestActionPanel.ButtonDescription } }), $h2({ _htmlResource: GuestActionPanel.InvitationSession.Heading }), $p({ _htmlResource: GuestActionPanel.InvitationSession.Message }), ); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 3 && previousPassVisibleCount 0 && sessionInfo ! null && sessionInfo.Sessions.find(function (s) { return s.SessionID window.getTaggedSessionInfo(DefaultSession).SessionID; }); } }); eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $h2({ _htmlResource: GuestActionPanel.CodeSession.Heading }), $p({ _htmlResource: GuestActionPanel.CodeSession.Message }), $p({ className: GuestActionBar }, SC.ui.createSearchTextBox({ _commandName: JoinByTag, _commandArgument: DefaultCode, value: window.getTaggedSessionInfo(DefaultCode).Code || }, function (eventArgs) { var sessionCode SC.util.getTrimmedOrNull(SC.event.getElement(eventArgs).value); window.setTaggedSessionInfo(DefaultCode, { Code: sessionCode }); }), $a({ _commandName: JoinByTag, _commandArgument: DefaultCode, className: GoLink Medium, _attributeMap: { aria-label: SC.resGuestActionPanel.ButtonDescription } }), ), ); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 5 && previousPassVisibleCount 0 && sessionInfo ! null && sessionInfo.DoNonPublicCodeSessionsExist; }, refreshProc: function (container, sessionInfo, wasMadeVisible) { var taggedSessionInfo window.getTaggedSessionInfo(DefaultCode); SC.ui.setDisabled( SC.ui.findDescendentByTag(container, A), !sessionInfo.Sessions.find(function (s) { return taggedSessionInfo.Code && s.Code.toLowerCase() taggedSessionInfo.Code.toLowerCase(); }) ); if (wasMadeVisible) SC.ui.findDescendentByTag(container, INPUT).focus(); } }); eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $h2({ _htmlResource: GuestActionPanel.PublicSession.Heading }), $p({ _htmlResource: GuestActionPanel.PublicSession.Message }), $p({ className: GuestActionBar }, $select(), $a({ _commandName: JoinBySessionID, className: GoLink Medium, _attributeMap: { aria-label: SC.resGuestActionPanel.ButtonDescription } }), ), ); SC.event.addHandler(SC.ui.findDescendentByTag(container, SELECT), change, function (eventArgs) { var selectBox SC.event.getElement(eventArgs); SC.ui.findDescendentByTag(container, A)._commandArgument selectBox.optionsselectBox.selectedIndex.value; }); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 5 && previousPassVisibleCount 0 && sessionInfo ! null && sessionInfo.Sessions.filter(function (s) { return s.IsPublic; }).length > 0; }, refreshProc: function (container, sessionInfo, wasMadeVisible) { var selectBox SC.ui.findDescendentByTag(container, SELECT); var link SC.ui.findDescendentByTag(container, A); SC.ui.setContents(selectBox, sessionInfo.Sessions.filter(function (s) { return s.IsPublic; }).map(function (s) { return $option({ value: s.SessionID }, s.Name); }) ); var optionIndex Array.prototype.findIndex.call(selectBox.options, function (o) { return o.value link._commandArgument; }); if (optionIndex ! -1) selectBox.selectedIndex optionIndex; else link._commandArgument selectBox.optionsselectBox.selectedIndex.value; } }); eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $h2({ _htmlResource: GuestActionPanel.NoAvailableSessions.Heading }), $p({ _htmlResource: GuestActionPanel.NoAvailableSessions.Message }), ); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 8 && previousPassVisibleCount 0; } }); break; } }); SC.event.addGlobalHandler(SC.event.QueryLiveData, function (eventArgs) { var getTaggedValuesFunc function (propertyName) { return Object.keys(window._taggedSessionInfos) .map(function (key) { return window._taggedSessionInfoskey; }) .filter(function (_) { return _propertyName; }) .map(function (_) { return _propertyName; }); } eventArgs.requestInfoMapGuestSessionInfo { sessionCodes: getTaggedValuesFunc(Code), sessionIDs: getTaggedValuesFunc(SessionID), }; }); SC.event.addGlobalHandler(SC.event.PreRender, function () { window._taggedSessionInfos {}; SC.css.ensureClass(document.documentElement, ShowMenu, false); var queryStringMap SC.util.parseQueryString(window.location.search); window.setTaggedSessionInfo(DefaultCode, { Code: queryStringMap.Code }); window.setTaggedSessionInfo(DefaultSession, { SessionID: queryStringMap.Session, HostAccessToken: queryStringMap.HostAccessToken }); var welcomePanel $(.WelcomePanel); var actionPanel $(.ActionPanel); SC.ui.setVisible(welcomePanel, SC.util.getBooleanResource(GuestWelcomePanel.Visible)); SC.ui.setContents(welcomePanel, $h2({ _htmlResource: GuestWelcomePanel.Heading }), $p({ _htmlResource: GuestWelcomePanel.Message }), ); SC.panellist.queryAndInitializePanels(actionPanel); SC.panellist.refreshPanels(actionPanel, null); }); SC.event.addGlobalHandler(SC.event.LiveDataRefreshed, function () { SC.panellist.refreshPanels($(.ActionPanel), window.getSessionInfo()); if (!window._hasJoinedDefault && !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 11 })) { SC.command.dispatchExecuteCommand(window.document.body, window.document.body, window.document.body, JoinByTag, DefaultSession); window._hasJoinedDefault true; } }); /script> script> SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case TrayIconPanel: eventArgs.buttonDefinitions.push( { commandName: ActionCenter, imageUrl: Images/ActionCenter.svg }, { commandName: Extras, imageUrl: Images/Extras.svg }, { commandName: Applications, imageUrl: Images/Applications.svg } ); break; case ExtrasNavigationPopoutPanel: eventArgs.buttonDefinitions.push( { commandName: NavigateExtensionBrowser } ); break; case ToolsPanel: eventArgs.buttonDefinitions.push( { commandName: Extras, imageUrl: Images/Extras.svg }, { commandName: Login } ); break; case UserPopoutPanel: eventArgs.buttonDefinitions.push( { commandName: NavigateControlPanel }, { commandName: ChangePassword }, { commandName: Logout } ); break; case UserHelpPopoutPanel: if (SC.context.pageType ! GuestPage && SC.context.pageType ! LoginPage) { eventArgs.buttonDefinitions.push({ commandName: GiveFeedback }); for (var i 1; ; i++) { var resourceValue SC.resHelpPanel.Link + i + .Text; if (resourceValue undefined || resourceValue ) break; var url SC.util.sanitizeUrl(SC.resHelpPanel.Link + i + .Url); eventArgs.buttonDefinitions.push({ commandName: NavigateHelpLink, commandArgument: url, text: resourceValue, title: url }); } } break; } }); SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { switch (eventArgs.commandName) { case User: case ActionCenter: eventArgs.isVisible SC.context.isUserAuthenticated; break; case Login: eventArgs.isVisible SC.context.pageType ! SetupWizardPage && !SC.context.isUserAuthenticated && !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 12 }); // Login page doesnt support IE break; case NavigateControlPanel: eventArgs.isVisible !!SC.context.controlPanelUrl; break; case ChangePassword: eventArgs.isVisible SC.context.canChangePassword; break; case Extras: eventArgs.isVisible SC.popout.computePopoutCommandsVisible(eventArgs, , Navigation); break; case Applications: case Help: eventArgs.isVisible SC.popout.computePopoutCommandsVisible(eventArgs); break; case NavigateExtensionBrowser: eventArgs.isVisible SC.context.isUserAdministrator; break; } }); SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case Extras: SC.popout.showPanelFromCommand(eventArgs, null, { subAreas: , Navigation }); break; case Applications: SC.popout.showPanelFromCommand(eventArgs); break; case ActionCenter: SC.popout.showPanelFromCommand(eventArgs, null, { buildProc: function (popoutPanel) { var actionCenterInfo SC.livedata.getResponseInfo(SC.livedata.ActionCenterInfo); SC.ui.setContents(popoutPanel, $div({ className: ActionCenterPanel }, $h2({ _textResource: ActionCenterPanel.Text }), $ul({ className: List, _visible: SC.util.any(actionCenterInfo.ActionItems) }, (actionCenterInfo.ActionItems || ) .map(function (it) { var parsedEventData SC.util.parseEventData(it.Data); return $li({ _eventHandlerMap: { click: function () { window.location.href SC.nav.getHostUrl({ sessionType: it.SessionType, sessionID: it.SessionID, tabName: SC.nav.getHostTabName(it.EventType), tabContext: it.EventID }); }, } }, $img({ src: Images/Notification + SC.util.getEnumValueName(SC.types.SessionEventType, it.EventType) + .svg }), $h3({ className: Type }, SC.resSessionEvent. + SC.util.getEnumValueName(SC.types.SessionEventType, it.EventType) + .Title), $p({ className: Name, title: it.Name }, it.Name), $p({ className: DataContent, title: parsedEventData.content }, parsedEventData.content), $p({ className: Time }, SC.util.formatDateTime(it.Time, { includeRelativeDate: true })), ) }) ), $div({ className: EmptyPanel, _visible: !SC.util.any(actionCenterInfo.ActionItems) }, $p($img({ src: images/EmptyActionCenter.svg })), $h4({ _textResource: ActionCenterPanel.EmptyHeader }), $p({ _textResource: ActionCenterPanel.EmptyText }), ), )); }, }); break; case Login: SC.util.sendToLogin(SC.types.LoginReason.None, false); break; case Logout: SC.util.sendToLogin(SC.types.LoginReason.Logout, false); break; case User: SC.popout.showPanelFromCommand(eventArgs, null, { subAreas: Help, }); break; case NavigateControlPanel: window.open(SC.util.sanitizeUrl(SC.context.controlPanelUrl)); break; case ChangePassword: var params {}; paramsSC.context.loginUserNameParameterName eventArgs.commandArgument; window.location.href SC.context.changePasswordPageUrl + SC.util.getQueryString(params); break; case NavigateHelpLink: window.open(eventArgs.commandArgument); break; case ToggleMenu: SC.css.toggleClass(document.documentElement, ShowMenu); break; case GiveFeedback: SC.dialog.showModalButtonDialog( GiveFeedback, SC.resCommand.GiveFeedback.Text, SC.resCommand.GiveFeedback.ButtonText, Default, function (container) { SC.ui.setContents(container, $div({ _textResource: GiveFeedbackPanel.ReviewLabelText }), $div({ className: RatingSelectionPanel }, Good, Neutral, Bad.map(function (rating) { return $span( $label({ className: rating }, $input({ type: radio, name: rating, value: rating.toLowerCase() }), $div({ className: RadioImage }), $span({ _textResource: GiveFeedbackPanel. + rating + RatingLabelText }), ) ); }) ), $div( $label({ _textResource: GiveFeedbackPanel.EmailLabelText }, $input({ type: email, id: email }), ), ), $div( $label({ _textResource: GiveFeedbackPanel.CommentsLabelText }, SC.ui.createTextBox({ id: commentsBox }, true), ), ), ); }, function (eventArgs) { SC.service.SendFeedback( Array.prototype.map.call(document.querySelectorAll(inputnamerating:checked), function (e) { return e.value; })0, $(commentsBox).value, $(email).value, function () { SC.dialog.showModalMessageBox( SC.resGiveFeedbackPanel.SuccessHeading, SC.resGiveFeedbackPanel.SuccessMessage ); } ); } ); break; case ManageToolbox: SC.toolbox.showToolboxDialog(eventArgs.commandName, eventArgs.commandArgument); break; case Navigate: window.location.href eventArgs.commandArgument; break; case NavigateExtensionBrowser: window.location.href SC.context.administrationPageUrl + ?TabExtensions#ShowExtensionBrowser; break; } }); SC.event.addGlobalHandler(SC.event.QueryNavigationLinks, function (eventArgs) { Array.prototype.push.apply(eventArgs.navigationLinks, SC.context.sessionTypeInfos.map(function (_) { return { href: SC.context.scriptBaseUrl + SC.context.hostPageUrl + # + SC.util.getEnumValueName(SC.types.SessionType, _.sessionType), text: SC.util.getSessionTypeResource(NavigationPanel.{0}LinkText, _.sessionType), imageUrl: SC.util.formatString(Images/Navigation{0}.svg, SC.util.getEnumValueName(SC.types.SessionType, _.sessionType)), sessionType: _.sessionType, } })); if (SC.context.isUserAdministrator) eventArgs.navigationLinks.push({ href: SC.context.scriptBaseUrl + SC.context.administrationPageUrl, text: SC.resNavigationPanel.AdministrationLinkText, imageUrl: Images/NavigationAdministration.svg, }); }); SC.event.addGlobalHandler(SC.event.QueryLiveData, function (eventArgs) { if (SC.context.isUserAuthenticated) SC.livedata.setRequestInfo(eventArgs, SC.livedata.ActionCenterInfo); }); SC.event.addGlobalHandler(SC.event.LiveDataRefreshed, function () { SC.css.ensureClass($(.NavigationPanel .TrayIconPanel .ActionCenter), NonEmpty, SC.util.any(SC.livedata.getResponseInfo(SC.livedata.ActionCenterInfo).ActionItems)); }); SC.event.addGlobalHandler(keydown, function (eventArgs) { if (SC.event.doesKeyEventIndicateTextEntryOrArrowKeyNavigation(eventArgs) && (!document.activeElement || SC.ui.isDefinitelyNotTextEntryElement(document.activeElement))) { var arrowKeyInfo SC.event.getArrowKeyInfo(eventArgs); if (arrowKeyInfo && document.activeElement && SC.css.containsClass(document.activeElement, ArrowNavigation)) { eventArgs.preventDefault(); SC.ui.setHiddenFocusAndClearOthers(); var targetPreviousOrNext arrowKeyInfo.isLeft || arrowKeyInfo.isUp; SC.event.dispatchEvent(document.activeElement, SC.event.KeyNavigation, { currentActiveElement: document.activeElement, currentSelectedElement: SC.ui.findDescendantBreadthFirst(document.activeElement, function (_) { return SC.ui.isSelected(_); }, !targetPreviousOrNext), targetPreviousOrNext: targetPreviousOrNext, arrowKeyInfo: arrowKeyInfo, hasShift: eventArgs.shiftKey, }); } else { var queryTextEntryElementArgs SC.event.dispatchGlobalEvent(SC.event.QueryTextEntryElement, { textEntryElement: null, }); if (queryTextEntryElementArgs.textEntryElement) { if (!SC.event.doesKeyEventIndicateTextEntryNavigation(eventArgs)) queryTextEntryElementArgs.textEntryElement.value ; queryTextEntryElementArgs.textEntryElement.focus(); } } } }); SC.event.addGlobalHandler(SC.event.KeyNavigation, function (eventArgs) { // default handling for key navigation var elementToNavigateTo; if (eventArgs.currentSelectedElement) { elementToNavigateTo SC.ui.getPreviousOrNextElementSibling(eventArgs.currentSelectedElement, eventArgs.targetPreviousOrNext) || eventArgs.currentSelectedElement; while (SC.util.isNullOrEmpty(elementToNavigateTo._commandName) && SC.ui.getPreviousOrNextElementSibling(elementToNavigateTo, eventArgs.targetPreviousOrNext)) { elementToNavigateTo SC.ui.getPreviousOrNextElementSibling(elementToNavigateTo, eventArgs.targetPreviousOrNext); } } else { elementToNavigateTo SC.ui.findDescendantBreadthFirst(eventArgs.currentActiveElement, function (_) { return !SC.util.isNullOrEmpty(_._commandName); }); // this can still be empty } SC.util.tryNavigateToElementUsingCommand(elementToNavigateTo, eventArgs.targetPreviousOrNext, eventArgs.hasShift); }); SC.event.addGlobalHandler(SC.event.PreRender, function () { var resetInactivityProc function () { window._lastNotifyActivityTime new Date().getTime(); if (SC.context.isUserAuthenticated && SC.context.loginAfterInactivityMilliseconds ! 0) { if (window._loginAfterInactivityTimer) window.clearTimeout(window._loginAfterInactivityTimer); window._loginAfterInactivityTimer window.setTimeout(function () { SC.util.sendToLogin(SC.types.LoginReason.IdleTooLong, true); }, Math.min(SC.context.loginAfterInactivityMilliseconds, 2147483647)); //interval stored as 32-bit signed int } }; SC.context.prehandleServiceFailureProc function (error) { if (error.statusCode ! 403) return false; SC.util.sendToLogin(SC.types.LoginReason.PermissionsInsufficient, true); } SC.context.unhandledServiceFailureProc function (error) { SC.dialog.showModalErrorBox(error.detail || error.message); } resetInactivityProc(); SC.ui.initializeWindowActivityTracking(function () { if (new Date().getTime() - window._lastNotifyActivityTime > SC.context.notifyActivityFrequencyMilliseconds) { resetInactivityProc(); SC.service.NotifyActivity(); } }); var parameterlessUrl SC.util.getParameterlessUrl(window.location.href); var createNavigationLinkFunc function (_) { return $div({ _commandName: Navigate, _commandArgument: _.href, _selected: _.href parameterlessUrl }, $img({ src: _.imageUrl }), $span(_.text), ); }; SC.ui.setContents($(.HeaderPanel), $a({ href: SC.context.guestPageUrl, className: LogoIconLink }), $a({ _commandName: ToggleMenu, className: ShowMenuButton }, ), $h1({ className: LogoPanel }), $div({ className: CommandPanel }), ); SC.command.queryAndAddCommandButtons($(.HeaderPanel .CommandPanel), ToolsPanel); SC.command.updateCommandButtonsState($(.HeaderPanel .CommandPanel)); var queryNavigationLinksEventArgs SC.event.dispatchGlobalEvent(SC.event.QueryNavigationLinks, { navigationLinks: }) SC.ui.setContents($(.NavigationPanel), queryNavigationLinksEventArgs.navigationLinks.map(createNavigationLinkFunc), $div({ className: FlexSpacer }), $div({ className: TrayPanelContainer }, $div({ className: TrayIconPanel }), $div({ className: UserMenuButton, _commandName: User }, $span(SC.context.userDisplayName null ? : SC.context.userDisplayName.toUpperCase()0), $span(SC.context.userDisplayName) ), ), ); SC.command.queryAndAddCommandButtons($(.NavigationPanel .TrayIconPanel), TrayIconPanel, null, { descriptionRenderStyle: SC.command.DescriptionRenderStyle.Tooltip }); SC.command.updateCommandButtonsState($(.NavigationPanel .TrayIconPanel)); var setSelectedFunc function () { $$(.NavigationPanel > div) .filter(function (_) { return !SC.util.isNullOrEmpty(_._commandArgument); }) .forEach(function (_) { SC.ui.setSelected(_, window.location.href.startsWith(_._commandArgument)); }); }; SC.event.addHandler(window, hashchange, setSelectedFunc); setSelectedFunc(); SC.livedata.startLoop(); }); var isTouchEnabled (typeof document.documentElement.ontouchstart ! undefined); SC.css.ensureClass(document.documentElement, TouchEnabled, isTouchEnabled); SC.css.ensureClass(document.documentElement, TouchDisabled, !isTouchEnabled); SC.css.ensureClass(document.documentElement, UserAuthenticated, SC.context.isUserAuthenticated); SC.css.ensureClass(document.documentElement, NativeClient, SC.util.isCapable(SC.util.Caps.NativeClient)); SC.css.ensureClass(document.documentElement, HasMasterPanel, $(.MasterPanel)); SC.css.ensureClass(document.documentElement, LogoImageVisible, SC.util.getBooleanResource(LogoPanel.ImageVisible)); SC.css.ensureClass(document.documentElement, LogoIconVisible, SC.util.getBooleanResource(LogoPanel.IconVisible)); SC.css.ensureClass(document.documentElement, LogoHeadingVisible, SC.util.getBooleanResource(LogoPanel.HeadingVisible)); SC.css.ensureClass(document.documentElement, AnimationReduced, SC.util.getBooleanResource(Page.AnimationReduced)); SC.css.ensureClass(document.documentElement, SC.context.pageType, true); SC.extension.initializeExtensions(); SC.event.dispatchGlobalEvent(SC.event.PreRender); SC.util.recordLifeCycleEvent(SC.event.PreRender); SC.ui.setVisible(document.body, true); SC.event.dispatchGlobalEvent(SC.event.PostRender); SC.util.recordLifeCycleEvent(SC.event.PostRender); $$(*tabIndex).forEach(function (_) { SC.event.addHandler(_, mousedown, function () { SC.ui.setHiddenFocusAndClearOthers(_); }); }); if (SC.context.focusedControlID) $(SC.context.focusedControlID).focus(); else if (document.activeElement document.body) { $(.NavigationPanel).focus(); SC.ui.setHiddenFocusAndClearOthers($(.NavigationPanel)); } /script>/body>/html>
Port 443
HTTP/1.1 200 OKServer: nginx/1.18.0 (Ubuntu)Date: Fri, 28 Mar 2025 05:54:09 GMTContent-Type: text/html; charsetutf-8Content-Length: 183382Connection: keep-aliveVary: Accept-EncodingCache-Control: privateX-Robots-Tag: noindexX-Content-Type-Options: nosniffP3P: CPNON CUR OUR STP STA PRE !DOCTYPE html>html>head>meta http-equivX-UA-Compatible contentIEedge />meta nameviewport contentwidthdevice-width, initial-scale1, maximum-scale1, user-scalableno /> script> function setTaggedSessionInfo(tag, taggedSessionInfo) { var oldTaggedSessionInfo window._taggedSessionInfostag; window._taggedSessionInfostag taggedSessionInfo; if (!oldTaggedSessionInfo || taggedSessionInfo.SessionID ! oldTaggedSessionInfo.SessionID || taggedSessionInfo.Code ! oldTaggedSessionInfo.Code) SC.livedata.notifyDirty(); } // backwards compatibility with extensions function setTaggedSessionID(tag, sessionID) { window.setTaggedSessionInfo(tag, { SessionID: sessionID }); } function getTaggedSessionInfo(tag) { return window._taggedSessionInfostag; } function getSessionInfo() { var liveData SC.livedata.get(); return liveData && liveData.ResponseInfoMap && liveData.ResponseInfoMapGuestSessionInfo } /script>script srcScript.ashx?__Cache098fcc65-245f-4f32-9963-80e254a8e6ec iddefaultScript>/script>script srcScripts/SC.polyfill.ts?ScriptImportTypeNoModule&__Cache63db820d-06fa-4fde-a91e-5251df5f8e95 nomodulenomodule>/script>script srcScripts/SC.main.ts?ScriptImportTypeNoModule&__Cache3ae0aae1-d2f1-4a4b-9400-f120abe22a3b nomodulenomodule>/script>script srcScripts/SC.main.ts?ScriptImportTypeClassic&__Cache3ae0aae1-d2f1-4a4b-9400-f120abe22a3b>/script>link hrefApp_Themes/LightWithRed/Default.css?__Cachecc9dff61-e7e0-4e4f-acd6-4bb5c48fa930 typetext/css relstylesheet />link hrefFavIcon.axd?__Cachebe149956-92b5-414f-8908-867b86a220bf relshortcut icon />script>SC.util.mergeIntoContext({focusedControlID:null,userName:,userDisplayName:,isUserAuthenticated:false,antiForgeryToken:rFkvjLUVTCexrIHhe0xEwP5ci5YTSNX7tA4VGAw/Kz8BAACB5tVg8L4tQg,isUserAdministrator:false,canManageSharedToolbox:false,pageBaseFileName:Guest,notifyActivityFrequencyMilliseconds:600000,loginAfterInactivityMilliseconds:36000000,canChangePassword:false,controlPanelUrl:null,pageType:GuestPage,processType:2,userAgentOverride:null,sessionTypeInfos:,imports:{SC.editor:Scripts/SC.editor.ts?ScriptImportTypeEsModule\u0026__Cachec9b2571f-5031-4d47-81cb-1e3349afc735}});/script>script>SC.extension.addInitializeProc(d55008eb-fe3b-4285-a45c-b16d78156530, function (extensionContext) {var hasSentCommand false;SC.event.addGlobalHandler(SC.event.InitializeTab, function (eventArgs) { if (isGeneralTab(eventArgs.tabName)) { hasSentCommand false; var descriptionList eventArgs.container.firstChild; SC.ui.addElement(descriptionList, dt, {id: modelContainer, innerHTML: Model :}); SC.ui.addElement(descriptionList, dd, {id: modelValueContainer}); SC.ui.addElement(descriptionList, dt, {id: manufacturerContainer, innerHTML: Manufacturer:}); SC.ui.addElement(descriptionList, dd, {id: manufacturerValueContainer}); SC.ui.addElement(descriptionList, dt, {id: biosNameContainer, innerHTML: BIOS Name:}); SC.ui.addElement(descriptionList, dd, {id: biosNameValueContainer}); SC.ui.addElement(descriptionList, dt, {id: biosSerialContainer, innerHTML: BIOS Serial:}); SC.ui.addElement(descriptionList, dd, {id: biosSerialValueContainer}); }});SC.event.addGlobalHandler(SC.event.RefreshTab, function (eventArgs) { if (isGeneralTab(eventArgs.tabName)) { SC.ui.clear($(modelValueContainer)); SC.ui.clear($(manufacturerValueContainer)); SC.ui.clear($(biosNameValueContainer)); SC.ui.clear($(biosSerialValueContainer)); if (isSupportedOperatingSystem(eventArgs.session.GuestOperatingSystemName)) displayInformationRequest( getLatestInformationRequestEvent( eventArgs.sessionDetails, eventArgs.tabName ), eventArgs ); }});function isSupportedOperatingSystem(operatingSystemName) { if (operatingSystemName.startsWith(Windows) || operatingSystemName.startsWith(Microsoft)) return true; else return false;}function sendInformationalCommand() { SC.service.AddGeneralInfoEventToSession( SC.pagedata.get().SessionGroupPath, SC.types.SessionEventType.QueuedCommand, window.getSessionUrlPart(), getInputCommand(General) );}function getInputCommand(commandType) { var headers getHeaders(); headers.CommandType commandType; var commandText $computer get-wmiobject win32_computersystem | select Manufacturer, Model + \n + $bios get-wmiobject win32_bios | select Name, SerialNumber + \n + write-output $computer.Manufacturer, $computer.Model, $bios.Name, $bios.SerialNumber| ConvertTo-Xml -As Stream; var emptyLinePrefix ; if (headers.Processor sh) { emptyLinePrefix echo ; } else { emptyLinePrefix echo ; commandText $Host.UI.RawUI.BufferSize New-Object Management.Automation.Host.Size (500, 25) + \n + commandText; } return #! + headers.shaBang + \n + #maxlength100000 + \n + #timeout90000 + \n + headers.modifier + INFORMATIONREQUEST-RESPONSE/1 + headers.delimiter + \n + headers.modifier + CommandType: + headers.CommandType + headers.delimiter + \n + headers.modifier + ContentType: + headers.ContentType + headers.delimiter + \n + emptyLinePrefix + \n + commandText;}function getHeaders() { return { Processor: ps, Interface: powershell, ContentType: xml, shaBang: ps, modifier: echo \, delimiter: \ };}function isGeneralTab(tabName) { switch (tabName) { case General: return true; default: return false; }}function isInformationRequestContent(eventData) { if (eventData.startsWith(INFORMATIONREQUEST-RESPONSE/1)) return true; else if (eventData.startsWith(\ufeffINFORMATIONREQUEST-RESPONSE/1)) return true; else return false;}function getLatestInformationRequestEvent(sessionDetails, CommandEventType) { return sessionDetails.Connections .map(function(c) { return c.Events; }) .reduce(function (outputArray, events) { Array.prototype.push.apply(outputArray, events); return outputArray; }, ) .filter(function (e) { return e.EventType SC.types.SessionEventType.RanCommand && isInformationRequestContent(e.Data) }) .sort(function (x, y) { return x.Time - y.Time; }) 0;}function parseDataHeaders(eventData) { var currentIndex 0; var headers {}; var isStatusLine true; while (true) { var nextNewLineIndex eventData.indexOf(\n, currentIndex); if (isStatusLine) isStatusLine false; else if (nextNewLineIndex currentIndex + 2 || nextNewLineIndex 0) break; else { var lineParts eventData.substring(currentIndex, nextNewLineIndex).split(: ); headerslineParts0 lineParts1; } currentIndex nextNewLineIndex + 1; } return headers;}function displayInformationRequest(latestCommandEvent, eventArgs) { if (typeof latestCommandEvent undefined && hasSentCommand false && window.isCommandEnabled(RunCommand, null, eventArgs.session, eventArgs.session.Permissions) && eventArgs.session.ActiveConnections.length > 0) { sendInformationalCommand(); hasSentCommand true; } else { var headers parseDataHeaders(latestCommandEvent.Data); displayCommandData( getEventDataXml(latestCommandEvent.Data), eventArgs.session ); }}function getEventDataXml(eventData) { return parseXml(eventData.substring(eventData.indexOf(?xml), eventData.length));}function displayCommandData(xml, session) { var x xml.getElementsByTagName(Object); if (isUsingInternetExplorerOrEdge()) { $(manufacturerValueContainer).innerHTML x0.childNodes0.textContent; $(modelValueContainer).innerHTML x1.childNodes0.textContent; $(biosNameValueContainer).innerHTML x2.childNodes0.textContent; $(biosSerialValueContainer).innerHTML x3.childNodes0.textContent; addNoteIfNotAlreadyPresent( getAndFormatNoteContent( x0.childNodes0.textContent, x1.childNodes0.textContent, x2.childNodes0.textContent, x3.childNodes0.textContent), session ); } else { $(manufacturerValueContainer).innerHTML x0.innerHTML; $(modelValueContainer).innerHTML x1.innerHTML; $(biosNameValueContainer).innerHTML x2.innerHTML; $(biosSerialValueContainer).innerHTML x3.innerHTML; addNoteIfNotAlreadyPresent( getAndFormatNoteContent( x0.innerHTML, x1.innerHTML, x2.innerHTML, x3.innerHTML), session ); }}function addNoteIfNotAlreadyPresent(note, session) { if (!isAdditionalGeneralInfoNoteAlreadyPresent(session) && extensionContext.settingValues.ShouldStoreInfoInNote true && window.isCommandEnabled(AddNote, null, session, session.Permissions)) SC.service.AddGeneralInfoEventToSession( SC.pagedata.get().SessionGroupPath, SC.types.SessionEventType.AddedNote, window.getSessionUrlPart(), note );}function isAdditionalGeneralInfoNoteAlreadyPresent(session) { if (session.Notes.includes(Manufacturer:)) return true; else return false;}function getAndFormatNoteContent(a, b, c, d) { return Manufacturer: + a + \nModel: + b + \nBIOS Name: + c + \nBIOS Serial: + d;}function parseXml(xml) { var dom null; if (window.DOMParser) { try { dom (new DOMParser()).parseFromString(xml, text/xml); } catch (e) { dom null; } } else if (window.ActiveXObject) { try { dom new ActiveXObject(Microsoft.XMLDOM); dom.async false; if (!dom.loadXML(xml)) window.alert(dom.parseError.reason + dom.parseError.srcText); } catch (e) { dom null; } } else { alert(cannot parse xml string!); } return dom;}function isUsingInternetExplorerOrEdge() { var ua window.navigator.userAgent; var msie ua.indexOf(Trident); if (ua.indexOf(Trident) > 0 || ua.indexOf(Edge) > 0) return true; else return false;}});/script>script>SC.extension.addInitializeProc(fa369545-ba27-4670-b053-a9f65f3269b0, function (extensionContext) {if (SC.context.pageType AdministrationPage && SC.context.isUserAuthenticated) SC.service.GetThemeInfo(function (themeInfo) { SC.util.includeStyleSheet(extensionContext.baseUrl + css/Style.css); });SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case WebConfigSave: SC.dialog.showModalButtonDialog( Prompt, SC.resAdvancedConfig.ApplyChanges, OK, Default, function (container) { SC.ui.setContents(container, eventArgs.commandArgument WebConfigRestore ? $p(SC.resAdvancedConfig.RestoreDefaults.WebConfigWarning) : $p(SC.resAdvancedConfig.RestartInstanceWarning) ); }, function () { var appSettings JSON.parse(sessionStorage.getItem(WebConfigAppSettings)); var pageSettings JSON.parse(JSON.stringify(appSettings.location)); delete appSettings.location; SC.service.WriteChangesToWebConfig(appSettings, pageSettings, function (result) { if (result OK) { sessionStorage.removeItem(WebConfigAppSettings); SC.dialog.showModalActivityAndReload(Save, true, window.location.href.split(#)0); } else { SC.dialog.showModalMessageBox(SC.resAdvancedConfig.SaveError.Title, SC.resAdvancedConfig.SaveError.WebConfigDescription + + result); } }); } ); break; case AppConfigSave: SC.dialog.showModalButtonDialog( Prompt, SC.resAdvancedConfig.ApplyChanges, OK, Default, function (container) { SC.ui.setContents(container, eventArgs.commandArgument AppConfigRestore ? $p(SC.resAdvancedConfig.RestoreDefaults.AppConfigWarning) : $p(SC.resAdvancedConfig.ReinstallWarning) ); }, function () { var applicationSettings JSON.parse(sessionStorage.getItem(AppConfigAppSettings)); SC.service.WriteChangesToAppConfigNew(applicationSettings, AppConfigDefaults, function (result) { if (result OK) { sessionStorage.removeItem(AppConfigAppSettings); window.location.reload(); } else { SC.dialog.showModalMessageBox(SC.resAdvancedConfig.SaveError.Title, SC.resAdvancedConfig.SaveError.AppConfigDescription + + result); } }); } ); break; }});});/script>script>SC.extension.addInitializeProc(66e10a3a-5e69-4960-9bc7-a7db8f1e0d7c, function (extensionContext) {var AgentDeployerHelpLink https://docs.connectwise.com/ConnectWise_Control_Documentation; // TODO update with new help link.var getAgentDeployerExtensionIdFromExtensionContext function () { var urlParts extensionContext.baseUrl.split(/); return (urlParts.length > 1) ? urlParts.slice(-2)0 : ;};SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { if (eventArgs.commandName EditExtensionSettings) { var agentDeployerExtensionId getAgentDeployerExtensionIdFromExtensionContext(); if (eventArgs.commandContext.extensionInfo.ExtensionID agentDeployerExtensionId && eventArgs.commandElement._commandName EditExtensionSettings) SC.ui.addElement( eventArgs.target.parentElement, A, { href: #, _commandName: ShowHelpLink_ + agentDeployerExtensionId, innerHTML: Help } ); }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { var AgentDeployerExtensionId getAgentDeployerExtensionIdFromExtensionContext(); if (eventArgs.commandName ShowHelpLink_ + AgentDeployerExtensionId) window.open(AgentDeployerHelpLink, _blank);});SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType AdministrationPage || (SC.context.pageType HostPage && SC.context.canAdminister true)) { eventArgs.buttonDefinitions.push( { commandName: DownloadAgentDeployer, text: SC.resAgentDeployer.BuildButtonText } ); } break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case DownloadAgentDeployer: SC.util.launchUrl(extensionContext.baseUrl + Download.ashx); break; }});});/script>script>SC.extension.addInitializeProc(07979477-b058-44c4-9829-035b041eeb01, function (extensionContext) {SC.event.addGlobalHandler(SC.event.PreRender, function (eventArgs) { if (SC.context.pageType HostPage || SC.context.pageType AdministrationPage) SC.util.includeStyleSheet(extensionContext.baseUrl + CommandToolboxStyle.css);});SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case HostCommandListMorePopoutPanel: case HostDetailTablePopoutPanel: eventArgs.buttonDefinitions.push({ commandName: OpenCommandToolboxExecutionModal, text: SC.resCommandToolbox.DetailPopout.Modal }); break; case UpdateCommand: eventArgs.buttonDefinitions.push({ commandName: UpdateToolboxCommand, text: SC.resCommandToolbox.Modal.UpdateButtonText, commandArgument: eventArgs.commandContext.commandArgument }); break; }});SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { switch (eventArgs.commandName) { case OpenCommandToolboxExecutionModal: eventArgs.isEnabled SC.context.canRunCommand; break; case UpdateToolboxCommand: eventArgs.isEnabled SC.context.canAdminister; break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case OpenCommandToolboxExecutionModal: let commandBodyBox, commandSelector, commandNameBox, commandDescriptionBox, commandIncludedBox; SC.service.GetCommandConfigInfo(config > { SC.dialog.showModalButtonDialog( CommandToolbox, SC.resCommandToolbox.Modal.Title, SC.resCommandToolbox.Modal.RunCommand, Default, function (container) { if (config.Commands.length ! 0) { SC.ui.addContent(container, $dl( $dt({_textResource: CommandToolbox.Modal.Instruction}), $dd(commandSelector $select({}, config.Commands.map(c > { return $option({ text: c.Name, value: c.Data, _dataItem: { description: c.Description, isIncluded: c.ShouldIncludeInToolbox } }); }))), $dt({ _textResource: CommandToolbox.CreateModal.NameLabelText }), $dd(commandNameBox $input({ type: text, value: commandSelector.optionscommandSelector.selectedIndex.text })), $dt({ _textResource: CommandToolbox.CreateModal.DescriptionLabelText }), $dd(commandDescriptionBox $input({ className: CommandDescriptionTextInput, type: text, value: SC.command.getDataItem(commandSelector.optionscommandSelector.selectedIndex).description })), $dt({ _textResource: CommandToolbox.CreateModal.DataLabelText }), $dd(commandBodyBox $textarea({ className: CommandDataTextArea, value: commandSelector.optionscommandSelector.selectedIndex.value })), $dt(), $dd(commandIncludedBox $input({ className: CommandIncludedCheckBox, type: checkbox, checked: SC.command.getDataItem(commandSelector.optionscommandSelector.selectedIndex).isIncluded })), $dt(), $dd(SC.command.queryAndCreateCommandButtons(UpdateCommand, { commandArgument: commandNameBox.value })), $dt(), $dd({ className: UpdateCommandStatus }) ), ); SC.command.updateCommandButtonsState(container); commandSelector.onchange function () { commandBodyBox.value commandSelector.optionscommandSelector.selectedIndex.value; commandDescriptionBox.value SC.command.getDataItem(commandSelector.optionscommandSelector.selectedIndex).description; commandNameBox.value commandSelector.optionscommandSelector.selectedIndex.text; commandIncludedBox.checked SC.command.getDataItem(commandSelector.optionscommandSelector.selectedIndex).isIncluded; } } else SC.ui.addContent(container, $div({ className: CommandToolboxModalEmptyStateContainer }, $h2({ _textResource: CommandToolbox.Modal.EmptyStateTitleText}), $p({ _textResource: CommandToolbox.Modal.EmptyStateText}), ), ); }, function (eventArgs) { switch (eventArgs.commandName) { case UpdateToolboxCommand: $(.UpdateCommandStatus).innerText SC.resCommandToolbox.Modal.UpdateCommandSavingText; SC.service.SaveCommandToolboxCommand( commandSelector.optionscommandSelector.selectedIndex.text, commandNameBox.value, commandDescriptionBox.value, commandBodyBox.value, commandIncludedBox.checked, function (response) { SC.pagedata.notifyDirty(); SC.css.ensureClass($(.UpdateCommandStatus), UpdateCommandStatusSuccess, true); $(.UpdateCommandStatus).innerText SC.resCommandToolbox.Modal.UpdateCommandStatusSaved.Text; } ); break; case Default: let allRows ; if ($(.DetailTable) null) allRows $(detailTable).rows; else allRows $(.DetailTable).rows; let commandRows Array.prototype.filter.call(allRows, function (r) { return SC.ui.isChecked(r) || SC.ui.isSelected(r); }); let sessions Array.prototype.map.call(commandRows, function (r) { return r._dataItem; }); let sessionIDs Array.prototype.map.call(sessions, function (s) { return s.SessionID; }); window.addEventToSessions( window.getSessionGroupUrlPart()0, SC.types.SessionType.Access, sessionIDs, SC.types.SessionEventType.QueuedCommand, null, commandBodyBox.value, false, false, true ); SC.dialog.hideModalDialog(); break; } } ); }); break; }});});/script>script>SC.extension.addInitializeProc(75fe3a74-43ba-45eb-9eab-12ff335b91cb, function (extensionContext) {/** Edit App.Config Settings **//** Global Extension Variables **/var extensionId extensionContext.baseUrl.split(/).slice(-2)0;const numberRegex new RegExp(/(^0-9$)|(^1-90-9+$)/);/** Custom top modal dialog to show alert type messages in modal dialog on top of existing modal dialogs **/function setupTopModalDialog(disable){ if (!disable) { eval(SC.dialog.showModalDialogRawOnTop + SC.dialog.showModalDialogRaw.toString().replace(SC.dialog.hideModalDialog();,).replace(/hideModalDialog/g,hideTopModalDialog)); eval(SC.dialog.hideTopModalDialog + SC.dialog.hideModalDialog.toString().replace(/getModalDialog/g,getTopModalDialog)); SC.dialog.getTopModalDialog function() { return Array.prototype.map.call(window.document.querySelectorAll(#dialog),function(_){return _;}).pop(); }; } else { delete SC.dialog.showModalDialogRawOnTop; delete SC.dialog.hideTopModalDialog; delete SC.dialog.getTopModalDialog; }}function alertModal(message){ if (!SC.dialog.showModalDialogRawOnTop) setupTopModalDialog(); SC.dialog.showModalDialogRawOnTop( message.subClass || MessageBox, message.titlePanel || SC.dialog.createTitlePanel(message.title || SC.resErrorPanel.Title), message.contentPanel || SC.dialog.createContentPanel($div(message.content || message)), message.buttonPanel || SC.dialog.createButtonPanel(message.button || OK,message.extraButtons || null) , message.onExecProc || function(eventArgs){ SC.dialog.hideTopModalDialog(); }, message.onQueryProc || null, message.onHideProc || function(){ if (SC.dialog.getTopModalDialog() SC.dialog.getModalDialog()) setupTopModalDialog(true); } );}/**********************************************//** Table Sorting Functions **/var sortBy {};function sortTable(table, col) { if (sortBy.table){ var oldSortCol document.querySelector(# + sortBy.table).tHead.rows0.cellssortBy.col || 0; SC.css.ensureClass(oldSortCol,Ascending,false); SC.css.ensureClass(oldSortCol,Descending,false); } if (sortBy.table table.id && sortBy.col col){ sortBy.dir -((+sortBy.dir) || -1); } else { sortBy.table table.id; sortBy.col col; sortBy.dir 1; } if (sortBy.dir ! 0) SC.css.ensureClass(table.tHead.rows0.cellscol,sortBy.dir > 0 ? Ascending : Descending, true); var tb table.tBodies0; var tr Array.prototype.slice.call(tb.rows, 0); tr tr.sort(function (a, b) { var aVal a.cellscol.order ? a.cellscol.order : a.cellscol.textContent; var bVal b.cellscol.order ? b.cellscol.order : b.cellscol.textContent; return sortBy.dir * (typeof aVal number ? aVal - bVal : aVal.localeCompare(bVal)); }); for(var i0; itr.length; ++i){ tb.appendChild(tri); }}function makeSortable(table) { var th table.tHead, i; th && (th th.rows0) && (th th.cells); if (th) i th.length; else return; // if no `thead>` then do nothing while (--i > 0) (function (i) { SC.css.ensureClass(thi,Sortable,true); thi.addEventListener(click, function () {sortTable(table, i)}); }(i));}function makeAllSortable(parent) { parent parent || document.body; var t parent.getElementsByTagName(table), i t.length; while (--i > 0) makeSortable(ti);}/*****************************//** General Extension Functions **/function checkVersion(minVer, curVer) { if (typeof curVer + typeof minVer ! stringstring) return false; var a curVer.split(.), b minVer.split(.), i 0, len Math.max(a.length, b.length); for (; i len; i++) { if ((ai && !bi && parseInt(ai) > 0) || (parseInt(ai) > parseInt(bi))) { return true; } else if ((bi && !ai && parseInt(bi) > 0) || (parseInt(ai) parseInt(bi))) { return false; } } return true;}function checkLongBitmask(flagInput,maskInput) { var maxJSMaskLength 8; flags flagInput.substring(flagInput.length,flagInput.length-(Math.min(maxJSMaskLength,flagInput.length))); mask maskInput.substring(maskInput.length,maskInput.length-(Math.min(maxJSMaskLength,maskInput.length))); if (isNaN(flags) || isNaN(mask)){ return false; } if (parseInt(mask,16) 0) { if (maskInput.length > maxJSMaskLength) { return checkLongBitmask(flagInput.substring(0,flagInput.length - maxJSMaskLength),maskInput.substring(0,maskInput.length - maxJSMaskLength)); } else { return false; } } if ((parseInt(flags,16) & parseInt(mask,16)) parseInt(mask,16)){ return true; }}function setLongBitmask(flags, mask, on) { for (var x mask.length, i; x > 0; x--){ i x-1; if (mask.charAt(i) 0 || mask.charAt(i) x){ continue; } var replChar flags.charAt(i); if (on) { replChar (parseInt(flags.charAt(i),16) | parseInt(mask.charAt(i),16)).toString(); } else { replChar (parseInt(flags.charAt(i),16) & ~parseInt(mask.charAt(i),16)).toString(); } flags flags.substr(0, i) + replChar + flags.substr(i+replChar.length); } return flags;}function clickToSelect(event) { //this event.target event.preventDefault(); var scroll_offset this.parentElement.scrollTop; this.selected !this.selected; this.parentElement.scrollTop scroll_offset;}function disableMouseMoveUnselect(event) { event.preventDefault();}function getValueSetForMaxVersion(settings, maxVersion) { var returnValue ; var maxDVver 0.0; for (var v in settings){ if (checkVersion(v,maxVersion) && checkVersion(maxDVver,v)) { maxDVver v; returnValue settingsv; } } return returnValue;}function addCacheBuster(url) { var cachebuster __CacheBuster + new Date().getTime(); return ( url.indexOf(?) ! -1 ? url.split(?)0 + ? + cachebuster + & + url.split(?)1 : (url.indexOf(#) ! -1 ? url.split(#)0 + ? + cachebuster + # + url.split(#)1 : url + ? + cachebuster ) );}function httpRequestJSONObjectAsync(theUrl, callback){ var xmlHttp new XMLHttpRequest(); xmlHttp.onreadystatechange function() { if (xmlHttp.readyState 4 && xmlHttp.status 200) { callback(JSON.parse(xmlHttp.responseText)); } else if (xmlHttp.readyState 4) { console.warn(Metaquery failed); } }; xmlHttp.open(GET, addCacheBuster(theUrl), true); xmlHttp.send();}/********************/SC.event.addGlobalHandler(SC.event.QueryCommandButtons,function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType AdministrationPage) { eventArgs.buttonDefinitions.push( { commandName: command_ + extensionId, text: SC.resExtension.EditAppConfig.CommandText} ); } break; case resetbutton_ + extensionId: eventArgs.buttonDefinitions.push( { commandName: resetcommand_ + extensionId, text: SC.resExtension.EditAppConfig.ResetDefaultsButtonText} ); break; case restorebutton_ + extensionId: eventArgs.buttonDefinitions.push( { commandName: restorecommand_ + extensionId, text: SC.resExtension.EditAppConfig.RestoreSettingsButtonText} ); break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch(eventArgs.commandName) { case command_ + extensionId: SC.util.includeStyleSheet(extensionContext.baseUrl + Style.css); SC.service.EditAppConfigSettings_GetAppConfigFileContents(function(AppConfigContents){ httpRequestJSONObjectAsync(extensionContext.baseUrl + Defaults.json?cache + (Math.random()*1000000),function(defaults){ var serverVersion SC.context.productVersion; var dataUri SC.ui.createDataUri(SC.util.isCapable(SC.util.Caps.Safari) ? attachment/config : text/config, AppConfigContents); var settings {}; if (AppConfigContents ! null) { var xmlParser new DOMParser(); var xmlString atob(AppConfigContents); xmlString xmlString.substring(xmlString.indexOf(),xmlString.lastIndexOf(>)+1); if (xmlString ! !-- + SC.resExtension.EditAppConfig.AppConfigFileNotFoundText + -->) { try{ var xmlDoc xmlParser.parseFromString(xmlString,text/xml); var xmlSettings xmlDoc.getElementsByTagName(setting); for (var i 0; i xmlSettings.length; i++) { settingsxmlSettingsi.getAttribute(name).trim() xmlSettingsi.textContent.trim(); } } catch (err) { alertModal(SC.resExtension.EditAppConfig.InvalidAppConfigXML + \n\n + err); settings {}; } } } var masks defaults.DEFAULTS.SCBitmaskDefaults; var usingCustomDefaults false; if (extensionContext.settingValues.AppConfigDefaultsCode ! ){ var newDefaults {}; try { if (extensionContext.settingValues.AppConfigDefaultsCode.startsWith({) && extensionContext.settingValues.AppConfigDefaultsCode.endsWith(})) newDefaults JSON.parse(extensionContext.settingValues.AppConfigDefaultsCode); else newDefaults JSON.parse(atob(extensionContext.settingValues.AppConfigDefaultsCode)); } catch (err) { alertModal(SC.resExtension.EditAppConfig.InvalidDefaultsCode + \n\n + err); }; // This semicolon is NOT un-necessary... Javascript Try/Catch wont run the catch code in some browsers without it. for (var key in newDefaults) { if (keyDEFAULTS) continue; defaultskey newDefaultskey; } if (DEFAULTS in newDefaults) { for (var mask in newDefaults.DEFAULTS.SCBitmaskDefaults) { masksmask newDefaults.DEFAULTS.SCBitmaskDefaultsmask; } } if (Object.keys(newDefaults).length) usingCustomDefaults true; } var enableAdvancedBitmaskEditor extensionContext.settingValues.UseEasyBitmaskEditor true; var enableCommandsSelector extensionContext.settingValues.UseCommandsSelector true; var instructions SC.resExtension.EditAppConfig.DialogInstructions + (usingCustomDefaults ? \n + SC.resExtension.EditAppConfig.CustomDefaultsInstructionNote : ); SC.dialog.showModalButtonDialog( EditAppConfigSettings, SC.resExtension.EditAppConfig.DialogTitle, SC.resExtension.EditAppConfig.DialogButtonText, Default, function (container) { SC.ui.addElement(container, P, instructions); var AppConfigLinksContainer SC.ui.addElement(container, ul,{}); var AppConfigHelpLink SC.ui.createElement(A,{href:SC.resExtension.EditAppConfig.AppConfigSettingsLinkHref,target:_blank, _innerText:SC.resExtension.EditAppConfig.AppConfigSettingsLinkText}); var AppConfigMacHelpLink SC.ui.createElement(A,{href:SC.resExtension.EditAppConfig.AppConfigSettingsLinkHrefForMac,target:_blank, _innerText:SC.resExtension.EditAppConfig.AppConfigSettingsLinkTextMacLinux}); var AppConfigDownloadLink SC.ui.createElement(A,{download:app.config,href:dataUri,_innerText:SC.resExtension.EditAppConfig.AppConfigLinkText}); SC.ui.setDisabled(AppConfigDownloadLink,AppConfigContents null); var AppConfigDeleteLink SC.command.queryAndCreateCommandButtons(resetbutton_ + extensionId); var AppConfigRestoreLink SC.command.queryAndCreateCommandButtons(restorebutton_ + extensionId); SC.ui.addElement(AppConfigLinksContainer,li,AppConfigDownloadLink); SC.ui.addElement(AppConfigLinksContainer,li,AppConfigHelpLink); if (checkVersion(6.1,serverVersion)) // Mac settings only available on 6.1, so only show the help link on 6.1+ SC.ui.addElement(AppConfigLinksContainer,li,AppConfigMacHelpLink); SC.ui.addElement(AppConfigLinksContainer,li,AppConfigDeleteLink); SC.ui.addElement(AppConfigLinksContainer,li,AppConfigRestoreLink); var AppConfigTablesContainer SC.ui.addElement(container, div,{className:AppConfigTablesContainer}); var flagsTable SC.ui.createElement(TABLE,{id:AppConfigFlags,className:AppConfigFlagsTable}); var flagsTableHead SC.ui.addElement(flagsTable,THEAD,{}); var flagsHeaderRow SC.ui.addElement(flagsTableHead,tr, {}); SC.ui.addElement(flagsHeaderRow,th,{_innerText:SC.resExtension.EditAppConfig.FlagColumnTitle}); var flagsTableBody SC.ui.addElement(flagsTable,TBODY,{}); var settingsTable SC.ui.createElement(TABLE,{id:AppConfigSettings,className:AppConfigSettingsTable}); var settingsTableHead SC.ui.addElement(settingsTable,THEAD,{}); var settingsHeaderRow SC.ui.addElement(settingsTableHead,tr, {}); SC.ui.addElement(settingsHeaderRow,th,{_innerText:SC.resExtension.EditAppConfig.KeyColumnTitle}); SC.ui.addElement(settingsHeaderRow,th,{_innerText:SC.resExtension.EditAppConfig.ValueColumnTitle}); var settingsTableBody SC.ui.addElement(settingsTable,TBODY,{}); var bitmasksTable SC.ui.createElement(TABLE,{id:AppConfigBitmasks,className:AppConfigBitmasksTable}); var bitmasksTableHead SC.ui.addElement(bitmasksTable,THEAD,{}); var bitmasksHeaderRow SC.ui.addElement(bitmasksTableHead,tr, {}); SC.ui.addElement(bitmasksHeaderRow,th,{_innerText:SC.resExtension.EditAppConfig.BitmaskColumnTitle}); var bitmasksTableBody SC.ui.addElement(bitmasksTable,TBODY,{}); SC.ui.addElement(AppConfigTablesContainer,div,flagsTable); SC.ui.addElement(AppConfigTablesContainer,div,settingsTable); SC.ui.addElement(AppConfigTablesContainer,div,bitmasksTable); var settingNum 0; for (var key in defaults) { if (key DEFAULTS || !checkVersion(defaultskey.ver,serverVersion)) { continue; } if (defaultskey.removed && checkVersion(defaultskey.removed,serverVersion)) { continue; } var keyDV getValueSetForMaxVersion(defaultskey.dv,serverVersion); var keyValue (key in settings && !eventArgs.loadDefaults) ? settingskey : keyDV; var keyType defaultskey.type; var keyValueEditor ; var valueTip SC.util.formatString(SC.resExtension.EditAppConfig.CurrentValueString,keyValue) + \n + SC.util.formatString(SC.resExtension.EditAppConfig.DefaultValueString,keyDV); var keySide defaultskey.side; var keySideText ; switch(keySide){ case Guest: keySideText SC.util.formatString(SC.resExtension.EditAppConfig.AppliesTo.Format, SC.resExtension.EditAppConfig.AppliesTo.GuestText) + \n; break; case Host: keySideText SC.util.formatString(SC.resExtension.EditAppConfig.AppliesTo.Format, SC.resExtension.EditAppConfig.AppliesTo.HostText) + \n; break; case Host and Guest: keySideText SC.util.formatString(SC.resExtension.EditAppConfig.AppliesTo.Format, SC.resExtension.EditAppConfig.AppliesTo.BothText) + \n; break; } var keyTip defaultskey.tip + \n + keySideText + valueTip; var row SC.ui.createElement(tr, {id:key + Row}); switch (keyType) { case flag: SC.ui.addContent(flagsTableBody,row); break; case bitmask: SC.ui.addContent(bitmasksTableBody,row); break; default: SC.ui.addContent(settingsTableBody,row); break; } settingNum++; switch (keyType) { case flag: keyValueEditor SC.ui.createElement(INPUT,{type:checkbox,id:key,keyType:flag,title:valueTip}); if (keyValue true) keyValueEditor.checked true; var flagLabel SC.ui.createElement(LABEL,{_innerText:key,title:keyTip}); if (keyDV true) { flagLabel.style.fontWeight bold; } SC.ui.addElement(row,td,keyValueEditor, ,flagLabel); break; case commands: if (enableCommandsSelector) { keyValueEditor SC.ui.createElement(SELECT,{id:key,keyType:commands,className:appConfigCommandsSelect,multiple:true,title:valueTip,size:10}); for (var each in defaultskey.commands){ if (!checkVersion(defaultskey.commandseach.ver,serverVersion)) { continue; } if (defaultskey.commandseach.removed && checkVersion(defaultskey.commandseach.removed,serverVersion)) { continue; } var commandOption SC.ui.createElement(OPTION,{value:each,text:each,title:defaultskey.commandseach.tip}); commandOption.onmousedown clickToSelect; commandOption.onmousemove disableMouseMoveUnselect; if (keyValue.match(new RegExp((?:^|,)+each+(?:,|$)))) { commandOption.selected true; } if (keyDV.match(new RegExp((?:^|,)+each+(?:,|$)))) { commandOption.style.fontWeight bold; } keyValueEditor.add(commandOption); } } else { keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:commands,type:text,value:keyValue,_innerText:keyValue,title:valueTip}); } SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; break; case directory: keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:directory,className:appConfigDirectoryInput,type:text,value:keyValue,_innerText:keyValue,title:valueTip}); SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; break; case bitmask: if (enableAdvancedBitmaskEditor) { keyValueEditor SC.ui.createElement(ul,{id:key,keyType:bitmask,value:keyValue, className:appConfigBitmaskValue,title:valueTip}); for (var mask in masks){ if (!checkVersion(masksmask.ver,serverVersion)) { continue; } if (masksmask.removed && checkVersion(masksmask.removed,serverVersion)) { continue; } var varCheck SC.ui.createElement(INPUT,{type:checkbox,id:key + mask,mask:mask,initChecked:false,keyType:bitmask,className:appConfigBitmaskValue,title:masksmask.tip}); var bitMaskChecked false; if (checkLongBitmask(keyValue,masksmask.mask)){ varCheck.checked true; varCheck.initChecked true; bitMaskChecked true; } var bitmaskLabel SC.ui.createElement(LABEL,{_innerText:mask,className:appConfigBitmaskValue,title:masksmask.tip}); if (checkLongBitmask(keyDV,masksmask.mask)){ bitmaskLabel.style.fontWeight bold; } SC.ui.addElement(keyValueEditor,li,varCheck,bitmaskLabel); } SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip,className:appConfigBitmaskLabel}),keyValueEditor); } else { keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:bitmask,type:text,value:keyValue,_innerText:keyValue,title:valueTip}); SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip}), SC.ui.createElement(BR,{}), keyValueEditor); } break; case selection: keyValueEditor SC.ui.createElement(SELECT,{id:key,keyType:selection,title:valueTip}); var maxOptVer 0; for (var oset in defaultskey.options){ if (checkVersion(oset,serverVersion) && checkVersion(maxOptVer,oset)) { maxOptVer oset; } } if (maxOptVer 0) { continue; } for (var opt in defaultskey.optionsmaxOptVer){ var selectionOption SC.ui.createElement(OPTION,{id:key+-+opt,value:defaultskey.optionsmaxOptVeropt,text:opt}); if (selectionOption.id key + - + keyValue){ selectionOption.selected true; } keyValueEditor.add(selectionOption); } SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; break; case number: keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:number,type:number,value:keyValue,_innerText:keyValue,title:valueTip}); for (var cset in defaultskey.constraints) { if (!checkVersion(cset,serverVersion)) { continue; } for (var constraint in defaultskey.constraintscset) { keyValueEditorconstraint defaultskey.constraintscsetconstraint; } } SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; break; case string: default: keyValueEditor SC.ui.createElement(INPUT,{id:key,keyType:text,type:text,value:keyValue,_innerText:keyValue,title:valueTip}); SC.ui.addElement(row,td, SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var ele SC.ui.addElement(row,td,keyValueEditor); ele.order settingNum; } if (keyType ! flag) { keyValueEditor.className + keyValueEditor.className ? AppConfigKeyValueEditor : AppConfigKeyValueEditor; } } }, function (eventArgs) { if (eventArgs.commandName resetcommand_ + extensionId){ SC.event.dispatchEvent(,executecommand,{commandName:command_ + extensionId,loadDefaults:true}); return; } if (eventArgs.commandName restorecommand_ + extensionId){ SC.event.dispatchEvent(,executecommand,{commandName:command_ + extensionId}); return; } var jsObj {}; var bitmaskRegex new RegExp(/(^0x0-7{16}$)/); var scBitmaskMaxValidValue getValueSetForMaxVersion(defaults.ControlPanelIDs.dv,serverVersion); var invalidSettings false; var invalidSettingList ; var nonstandardSettings false; var nonstandardSettingList ; for (var key in defaults){ if (key DEFAULTS || $(key) null || !checkVersion(defaultskey.ver,serverVersion)) { continue; } var newValue $(key).value; var defaultValue getValueSetForMaxVersion(defaultskey.dv,serverVersion);; var oldValue (key in settings) ? settingskey : defaultValue; var saveValue oldValue; var keyType $(key).keyType; switch (keyType){ case flag: if ($(key).checked) { saveValue true; } else { saveValue false; } if (saveValue defaultValue) continue; break; case commands: if (enableCommandsSelector) { saveValue ; for (var i 0; i $(key).length; i++) { if ($(key).optionsi.selected) { if (saveValue ! ){ saveValue saveValue + ,; } saveValue saveValue + $(key).optionsi.value; } } } else { saveValue newValue.replace(/^\w\s/gi, ,).replace(/\s/gi,); } break; case bitmask: if (enableAdvancedBitmaskEditor) { // checkboxes or true var keyCheckboxCollection $(key).getElementsByTagName(INPUT); for (var x0; xkeyCheckboxCollection.length; x++) { if (keyCheckboxCollectionx.type checkbox && (keyCheckboxCollectionx.initChecked ! keyCheckboxCollectionx.checked)) { newValue setLongBitmask(newValue,maskskeyCheckboxCollectionx.mask.mask,keyCheckboxCollectionx.checked); } } } if (newValue ){ // Blank values will indicate using the default value. newValue defaultValue; } if (bitmaskRegex.test(newValue)){ if (setLongBitmask(newValue,scBitmaskMaxValidValue,false) 0x0000000000000000){ saveValue newValue; } else { if (confirm(SC.util.formatString(SC.resExtension.EditAppConfig.QuestionableBitmaskValue,key,newValue,serverVersion))) { saveValue newValue; } else { return; } } } else { alertModal(SC.util.formatString(SC.resExtension.EditAppConfig.InvalidBitmaskValue,key,newValue,0x0000000000000000,0x7777777777777777)); return; } break; case directory: if (newValue ) { // Blank values will indicate using the default value. newValue defaultValue; } saveValue newValue; break; case selection: saveValue $(key).options$(key).selectedIndex.value; break; case number: if (!numberRegex.test(newValue)){ alertModal(SC.util.formatString(SC.resExtension.EditAppConfig.ValueNotANumber,key)); return; } saveValue newValue; break; default: saveValue newValue; } if (saveValue defaultValue) { continue; } jsObjkey saveValue,defaultskey.area; } json JSON.stringify(jsObj); SC.dialog.showModalActivityBox(SC.resExtension.EditAppConfig.SavingModalTitle,SC.resExtension.EditAppConfig.SavingModalMessage); SC.service.EditAppConfigSettings_SetAppConfigSettings( json, function () { SC.event.dispatchEvent(,executecommand,{commandName:command_ + extensionId}); } ); } ); SC.dialog.setButtonPanelError(SC.ui.findDescendent(SC.dialog.getModalDialog(),function(_){return _.className && _.className.indexOf(ButtonPanel) > -1;}),{message:SC.resExtension.EditAppConfig.DialogButtonNotice}); makeAllSortable($(dialog)); }); }); break; }});/** Extend Extension Options **/var extendedExtensionOptions {};/* Option Settings Below */extendedExtensionOptions.helpUrl https://help.screenconnect.com/Extension:Edit_App.Config_Settings;extendedExtensionOptions.extensionResourceID EditAppConfig;/* Option Settings Above */extendedExtensionOptions.extensionIdextensionContext.baseUrl.split(/).slice(-2)0;SC.resHelpPanel.Link+extendedExtensionOptions.extensionId+.UrlextendedExtensionOptions.helpUrl;SC.event.addGlobalHandler(SC.event.QueryCommandButtonState,function(eventArgs){ if(eventArgs.commandNameEditExtensionSettings&&eventArgs.commandContext.extensionInfo.ExtensionIDextendedExtensionOptions.extensionId&&eventArgs.commandElement._commandNameEditExtensionSettings){ if(extendedExtensionOptions.extensionResourceID&&extendedExtensionOptions.extensionResourceID.length) SC.ui.addElement(eventArgs.target.parentElement,A,{_commandName:command_+extensionId,_innerText:SC.resExtension.+extendedExtensionOptions.extensionResourceID+.CommandText}); SC.ui.addElement(eventArgs.target.parentElement,A,{_commandName:NavigateHelpLink,_commandArgument:extendedExtensionOptions.extensionId,_innerText:SC.resCommand.Help.Text.replace( ▽,)}); }});/******************************/});/script>script>SC.extension.addInitializeProc(443da44f-06c7-4a60-bae8-bb4f01f49131, function (extensionContext) {/** Edit Web.Config AppSettings 2.0.3 **//** Global Extension Variables and Constants **/const extensionId extensionContext.baseUrl.split(/).slice(-2)0;var serverEnvironment local;var settingsChanged false;var userIPAddress null;var currentURIs {};var dataUri;var showAdvancedSettings extensionContext.settingValues.ShowAdvancedSettings.toLowerCase() true;const numberRegex new RegExp(/(^0-9$)|(^1-90-9+$)/);const webServerListenUriRegex new RegExp(/^(http|https):\/\/((\+)|((0-9a-z\.-+)\.(a-z{2,63}))|((((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))\.){3}((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))))(:0-9{1,5})(\/0-9a-zA-Z-+)?\/$/i);const relayListenUriRegex new RegExp(/^relay:\/\/((\+)|((((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))\.){3}((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))))(:0-9{1,5})\/$/i);const webServerAddressableUriRegex new RegExp(/^(http|https):\/\/(((0-9a-z\.-+)\.(a-z{2,63}))|((((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))\.){3}((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))))(:0-9{1,5})?(\/0-9a-zA-Z-+)?\/$/i);const relayAddressableUriRegex new RegExp(/^relay:\/\/(((0-9a-z\.-+)\.(a-z{2,63}))|((((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))\.){3}((250-5)|(20-40-9)|(10-90-9)|(1-9?0-9))))(:0-9{1,5})\/$/i);const regExIPv4 /^((0-9|1-90-9|10-9{2}|20-40-9|250-5)\.){3}(0-9|1-90-9|10-9{2}|20-40-9|250-5)(\/(0-9|1-20-9|30-2))?$/;const regExIPv6 /^s*(((0-9A-Fa-f{1,4}:){7}(0-9A-Fa-f{1,4}|:))|((0-9A-Fa-f{1,4}:){6}(:0-9A-Fa-f{1,4}|((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3})|:))|((0-9A-Fa-f{1,4}:){5}(((:0-9A-Fa-f{1,4}){1,2})|:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3})|:))|((0-9A-Fa-f{1,4}:){4}(((:0-9A-Fa-f{1,4}){1,3})|((:0-9A-Fa-f{1,4})?:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:))|((0-9A-Fa-f{1,4}:){3}(((:0-9A-Fa-f{1,4}){1,4})|((:0-9A-Fa-f{1,4}){0,2}:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:))|((0-9A-Fa-f{1,4}:){2}(((:0-9A-Fa-f{1,4}){1,5})|((:0-9A-Fa-f{1,4}){0,3}:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:))|((0-9A-Fa-f{1,4}:){1}(((:0-9A-Fa-f{1,4}){1,6})|((:0-9A-Fa-f{1,4}){0,4}:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:))|(:(((:0-9A-Fa-f{1,4}){1,7})|((:0-9A-Fa-f{1,4}){0,5}:((250-5|20-4d|1dd|1-9?d)(.(250-5|20-4d|1dd|1-9?d)){3}))|:)))(%.+)?s*(\/(d|dd|10-1d|120-8))?$/;const cloudRegEx new RegExp(/:\/\/.*\.(screenconnect)\.com/i);const hostedrmmRegEx new RegExp(/:\/\/.*\.(hostedrmm)\.com/i);/** JavaScript Libraries **/if (typeof ipaddr undefined) SC.util.includeScript(extensionContext.baseUrl + ipaddr.min.js); // See javascript file for Copyright information and permission notice./**************************//** Custom top modal dialog to show alert type messages in modal dialog on top of existing modal dialogs **/function setupTopModalDialog(disable){ if (!disable) { eval(SC.dialog.showModalDialogRawOnTop + SC.dialog.showModalDialogRaw.toString().replace(SC.dialog.hideModalDialog();,).replace(/hideModalDialog/g,hideTopModalDialog)); eval(SC.dialog.hideTopModalDialog + SC.dialog.hideModalDialog.toString().replace(/getModalDialog/g,getTopModalDialog)); SC.dialog.getTopModalDialog function() { return Array.prototype.map.call(window.document.querySelectorAll(#dialog),function(_){return _;}).pop(); }; } else { delete SC.dialog.showModalDialogRawOnTop; delete SC.dialog.hideTopModalDialog; delete SC.dialog.getTopModalDialog; }}function alertModal(message){ if (!SC.dialog.showModalDialogRawOnTop) setupTopModalDialog(); SC.dialog.showModalDialogRawOnTop( message.subClass || MessageBox, message.titlePanel || SC.dialog.createTitlePanel(message.title || SC.resErrorPanel.Title), message.contentPanel || SC.dialog.createContentPanel($div(message.content || message)), message.buttonPanel || SC.dialog.createButtonPanel(message.button || OK,message.extraButtons || null) , message.onExecProc || function(eventArgs){ SC.dialog.hideTopModalDialog(); }, message.onQueryProc || null, message.onHideProc || function(){ if (SC.dialog.getTopModalDialog() SC.dialog.getModalDialog()) setupTopModalDialog(true); } );}/**********************************************//** Cookie Settings Management Functions **/function loadExtCookieSettings(){ var cookieSettings JSON.parse(SC.util.getCookieValue(extensionId)); for (var cs in cookieSettings) { extensionContext.settingValuescs cookieSettingscs; }}function saveExtCookieSetting(settingName){ var cookieSettings JSON.parse(SC.util.getCookieValue(extensionId)); if (!cookieSettings) cookieSettings {}; cookieSettingssettingName extensionContext.settingValuessettingName; SC.util.setCookieValue(extensionId,JSON.stringify(cookieSettings),3650);}function deleteExtCookieSetting(settingName){ var cookieSettings JSON.parse(SC.util.getCookieValue(extensionId)); if (!cookieSettings) cookieSettings {}; delete cookieSettingssettingName; SC.util.setCookieValue(extensionId,JSON.stringify(cookieSettings),3650);}function clearExtCookieSettings(){ SC.util.setCookieValue(extensionId,,-1);}/******************************************//** Table Sorting Functions **/var sortBy {};function sortTable(table, col) { if (sortBy.table) { var oldSortCol document.querySelector(# + sortBy.table).tHead.rows0.cellssortBy.col || 0; SC.css.removeClass(oldSortCol, Ascending); SC.css.removeClass(oldSortCol, Descending); } if (sortBy.table table.id && sortBy.col col) { sortBy.dir -((+sortBy.dir) || -1); } else { sortBy.table table.id; sortBy.col col; sortBy.dir 1; } if (sortBy.dir ! 0) { Array.prototype.forEach.call(table.tHead.rows0.cells, (td, index) > { if (col index) { SC.css.ensureClass(td, sortBy.dir > 0 ? Ascending : Descending, true); SC.css.removeClass(td, sortBy.dir > 0 ? Descending : Ascending); } else { SC.css.removeClass(td, Ascending); SC.css.removeClass(td, Descending); } }); } var tb table.tBodies0; var tr Array.prototype.slice.call(tb.rows, 0); tr tr.sort(function (a, b) { var aVal a.cellscol.order ? a.cellscol.order : a.cellscol.textContent; var bVal b.cellscol.order ? b.cellscol.order : b.cellscol.textContent; return sortBy.dir * (typeof aVal number ? aVal - bVal : aVal.localeCompare(bVal)); }); for(var i0; itr.length; ++i){ tb.appendChild(tri); }}function makeSortable(table) { var th table.tHead, i; th && (th th.rows0) && (th th.cells); if (th) i th.length; else return; // if no `thead>` then do nothing while (--i > 0) (function (i) { SC.css.ensureClass(thi,Sortable,true); thi.addEventListener(click, function () {sortTable(table, i)}); }(i));}function makeAllSortable(parent) { parent parent || document.body; var t parent.getElementsByTagName(table), i t.length; while (--i > 0) makeSortable(ti);}/*****************************//** General Extension Functions **/function checkVersion(minVer, curVer) { if (typeof curVer + typeof minVer ! stringstring) return false; var acurVer.split(.), bminVer.split(.), i0, lenMath.max(a.length, b.length); for (; ilen; i++) { if ((ai && !bi && parseInt(ai) > 0) || (parseInt(ai) > parseInt(bi))) return true; else if ((bi && !ai && parseInt(bi) > 0) || (parseInt(ai) parseInt(bi))) return false; } return true;}function browserSupportsNumberInput(){ var i document.createElement(input),r; i.typenumber; i.setAttribute(value, t); return i.value ! i.getAttribute(value);}function addCacheBuster(url) { var cachebuster ?__CacheBuster + new Date().getTime(); if (url.indexOf(?) ! -1) return url.replace(?,cachebuster + &); if (url.indexOf(#) ! -1) return url.replace(#,cachebuster + #); return url + cachebuster;}function httpRequestJSONObjectAsync(theUrl, callback) { var r new XMLHttpRequest(); r.onreadystatechange function() { if (r.readyState 4 && r.status 200) { callback(JSON.parse(r.responseText)); } else if (r.readyState 4) { console.warn(Metaquery failed. (Extension: + extensionId + )); } }; r.open(GET, addCacheBuster(theUrl), true); r.send();}function getValueSetForMaxVersion(settings, maxVersion) { var rv ; var maxDVver 0.0; for (var v in settings){ if (checkVersion(v,maxVersion) && checkVersion(maxDVver,v)) { maxDVver v; rv settingsv; } } return rv;}function checkIPList(str) { var tokens str.split(,); for (var i0; itokens.length; ++i){ if (!regExIPv4.test(tokensi) && !regExIPv6.test(tokensi)) return false; } return true;}function cleanKeyName(keyName){ return keyName.replace(/\./g,_).replace(/\//g,_);}function displayNotice(title,noticeTextOrContentProc,buttonText,buttonCommand,buttonPanelErrorOrContentProc){ var titlePanel SC.dialog.createTitlePanel(title); var mainContentPanel SC.dialog.createContentPanel(typeof noticeTextOrContentProc string ? $div(noticeTextOrContentProc) : null); if (typeof noticeTextOrContentProc function) noticeTextOrContentProc(mainContentPanel); var buttonPanel SC.dialog.createButtonPanel(); var button SC.ui.addElement(buttonPanel, INPUT, { type: button, value: buttonText, _commandName: buttonCommand || Close }); switch (typeof buttonPanelErrorOrContentProc){ case string: SC.dialog.setButtonPanelError(buttonPanel,buttonPanelErrorOrContentProc); break; case function: buttonPanelErrorOrContentProc(buttonPanel); break; } SC.dialog.showModalDialogRaw(MessageBox,titlePanel, mainContentPanel, buttonPanel); button.focus();}function userIPIsInIPList(ipList, userIP) { if (typeof ipaddr ! object) { return null; } var addr ipaddr.parse(userIP); var ips ipList.split(,); for (var ip of ips){ if (ip.indexOf(/) 0) { var checkIP ipaddr.parse(ip); if (addr.kind() checkIP.kind() && addr.match(checkIP,addr.kind() ipv6 ? 128 : 32)) return true; } else { var subnet ipaddr.parseCIDR(ip); if (addr.kind() subnet0.kind() && addr.match(subnet)) return true; } } return false;}function getValidationClass(element){ var e element; var v e.value, n e.id, s e.getAttribute(savedValue), d e.getAttribute(defaultValue), t e.getAttribute(keyType); if (v s && v d) return IsDefault; if (v s) return Unchanged; if (v d) return ToDefault; switch (t){ case WebServerAddressableUri: if (!webServerAddressableUriRegex.test(v)) return Invalid; break; case RelayAddressableUri: if (!relayAddressableUriRegex.test(v)) return Invalid; break; case WebServerListenUri: case WebServerAlternateListenUri: if (!webServerListenUriRegex.test(v)) return Invalid; break; case RelayListenUri: if (!relayListenUriRegex.test(v)) return Invalid; break; case IPList: if (!checkIPList(v)) return Invalid; else if (userIPIsInIPList(v,userIPAddress) (n.indexOf(Block) > -1)) return PartialValidation; else return Validated; break; case Number: if (!numberRegex.test(v)) return Invalid; break; case DuoIntegrationKey: case DuoSecretKey: case DuoApiHostname: break; } return Changed;}function validateEntry(event){ if (!event.srcElement.getAttribute(keyType)) return; var validationClasses NoValidation, IsDefault, ToDefault, Unchanged, Changed, Validated, PartialValidation, Invalid ; var validation ; validation0 getValidationClass(event.srcElement); for (var cn in validationClasses){ SC.css.ensureClass(event.srcElement,validationClassescn,validation.indexOf(validationClassescn) > -1); }}function addRowsToTable (table,keys,keyInfo,location){ var sectionName location ? location.replace(/^0-9a-zA-Z+/g,-) + _ : ; var rowNum 0; for (var key in keys) { if (keyInfokey.show.indexOf(serverEnvironment) -1) continue; if (keyInfokey.isAdvanced true && !showAdvancedSettings) continue; if (!checkVersion(keyInfokey.minVer,SC.context.productVersion)) continue; var keyValue keyskey #KeyNotPresent ? : keyskey; var keyValueType keyInfokey.valueType; var keyValueEditor ; var keyDV keyInfokey.defaultValue; var keyDVText keyDV && keyInfokey.defaultValueInfo ? keyInfokey.defaultValueInfo : keyDV; var valueTip SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.CurrentValueString,keyValue) + \n + SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.DefaultValueString,keyDVText); var keyTip keyInfokey.toolTip.replace(/\\n/g,\n) + \n + valueTip; rowNum++; switch (keyValueType) { case IPList: valueTip SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.IPListTipMessageFormat,key.indexOf(Block) > -1 ? NOT : ,userIPAddress) + \n + valueTip + \n + SC.resExtension.EditWebConfigAppSettings.IPListTipValidationFormat.replace(/\|/g,\n); keyValueEditor SC.ui.createElement(TEXTAREA,{rows:1}); break; case Number: keyValueEditor SC.ui.createElement(INPUT,{id:sectionName + key,type:number,keyType:keyValueType,min:0}); break; case Select: keyValueEditor SC.ui.createElement(SELECT,{title:valueTip}); if (keyskey #KeyNotPresent) SC.ui.addElement(keyValueEditor,OPTION,{ value:, _innerText:Not Present, selected:true, title:Not Present }); var kvOptions getValueSetForMaxVersion(keyInfokey.validValues,SC.context.productVersion); for(var kvo in kvOptions) { SC.ui.addElement(keyValueEditor,OPTION,{ value:kvo, _innerText:kvo, selected:(keyValuekvo), title:kvOptionskvo }); } break; case CommaSeparatedValues: keyValueEditor SC.ui.createElement(ul,{className:csvEditor}); var validValues getValueSetForMaxVersion(keyInfokey.validValues,SC.context.productVersion); for(var v in validValues) { var varCheck SC.ui.createElement(INPUT,{ type:checkbox, initChecked:false, setting:v, id:sectionName + key+v, keyType:keyValueType }); if (keyValue.split(,).indexOf(v) > 0){ varCheck.checkedtrue; varCheck.initChecked true; } var cbLabel SC.ui.createElement(LABEL,{_innerText: v, title:validValuesv}); if (keyDV.split(,).indexOf(v) > 0) { cbLabel.style.fontWeight bold; } SC.ui.addElement(keyValueEditor, li,varCheck,cbLabel); } break; case SessionTypeDisplayOrder: keyValueEditor SC.ui.createElement(INPUT,{id:sectionName + key,type:text,keyType:keyValueType}); break; case WebServerListenUri: case WebServerAlternateListenUri: case RelayListenUri: valueTip valueTip + \n + SC.resExtension.EditWebConfigAppSettings.UriTipValidationFormat.replace(/\|/g,\n); keyValueEditor SC.ui.createElement(INPUT,{type:url}); break; case WebServerAddressableUri: case RelayAddressableUri: valueTip valueTip + \n + SC.resExtension.EditWebConfigAppSettings.UriTipValidationFormat.replace(/\|/g,\n); keyValueEditor SC.ui.createElement(INPUT,{type:url}); break; case CryptoKey: if (!SC.context.enableCryptoKeySetting) continue; keyValueEditor SC.ui.createElement(TEXTAREA,{type:CryptoKey}); keyValueEditor.style.height 100px; break; case DuoIntegrationKey: case DuoSecretKey: case DuoApiHostname: keyValueEditor SC.ui.createElement(INPUT, { type:text }); break; default: keyValueEditor SC.ui.createElement(INPUT,{type:text,disabled:true,title:key + is not expected.}); } keyValueEditor.setAttribute(id,sectionName + key); keyValueEditor.setAttribute(title,valueTip); keyValueEditor.setAttribute(value,keyValue); keyValueEditor.setAttribute(keyType,keyValueType); keyValueEditor.setAttribute(defaultValue,keyDV); keyValueEditor.setAttribute(savedValue,keyValue); if (Select,CommaSeparatedValues.indexOf(keyValueType) 0) SC.ui.setInnerText(keyValueEditor,keyValue); var row SC.ui.addElement(table,tr, {id:sectionName + key + Row}); var keyNameCol SC.ui.addElement(row,td,SC.ui.createElement(LABEL,{_innerText:key,title:keyTip})); var keyValueCol SC.ui.addElement(row,td,keyValueEditor); if (extensionContext.settingValues.ShowDefaultValueColumn true){ var keyDefaultCol SC.ui.addElement(row,td,{_innerText:typeof(keyDV) ! undefined ? keyDV : ,title:valueTip}); } var keyExampleCol SC.ui.addElement(row,td,{ _innerText: (keyskey #KeyNotPresent ? SC.resExtension.EditWebConfigAppSettings.KeyNotPresentText : ) + add key + key + value + (keyValue.length > 100 ? keyValue.replace(keyValue.slice(16,-16),...) : keyValue) + />, title:keyTip }); keyValueCol.order rowNum; }}function getChangedItems (keys, keyInfo, location) { var sectionName ; if (location) sectionName location.replace(/^0-9a-zA-Z+/g,-) + _; var jsObj {}; for (var key in keys){ var keyElement $(sectionName + key); if (keyElement null) { continue; } var newValue keyElement.value; var oldValue keyskey; var keyType keyElement.getAttribute(keyType); var keyName (location ? location + > : ) + key; if (keyType ! CommaSeparatedValues){ if (newValue && oldValue #KeyNotPresent) { continue; } if (newValue oldValue) { continue; } } if (keyInfokey.show.indexOf(serverEnvironment) -1) continue; if (keyInfokey.isAdvancedtrue && !showAdvancedSettings) continue; var isCritical keyInfokey.isCritical true; switch (keyType){ case CommaSeparatedValues: newValue Array.prototype.filter.call(keyElement.querySelectorAll(input),function(i){return i.checked;}).map(function(e){return e.setting;}).join(,); if (newValue oldValue || (newValue && oldValue #KeyNotPresent)) continue; if (newValue ) { isCritical false; newValue #RemoveKey; } break; case SessionTypeDisplayOrder: var values newValue.split(,); var validValues getValueSetForMaxVersion(keyInfokey.validValues,SC.context.productVersion); if(!values || values.length ! validValues.length || values.find(_ > !validValues.includes(_.trim())) || new Set(values).size ! validValues.length) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.SessionTypeDisplayOrderInvalidMessage, validValues)); return false; } break; case Select: var kvOptions getValueSetForMaxVersion(keyInfokey.validValues,SC.context.productVersion); if (!kvOptionsnewValue) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.InvalidSelectionAlertMessage,keyName,Object.keys(kvOptions).join(, ))); return false; } break; case IPList: if (newValue ) { isCritical false; newValue #BlankValue; break; } if (!checkIPList(newValue)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.InvalidIPListAlertMessage,keyName)); return false; } if ((key.indexOf(Block) > -1) userIPIsInIPList(newValue,userIPAddress)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.IPListDoesNotContainCurrentIPAlertMessage,keyName,userIPAddress)); return false; } break; case Number: if (!numberRegex.test(newValue)){ alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.NumberAlertMessage,keyName)); return false; } break; case WebServerAddressableUri: if (newValue ){ newValue #RemoveKey; isCritical false; break; } if (!webServerAddressableUriRegex.test(newValue)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.AddressableUriAlertMessage,keyName,\n + currentURIs.WebServer)); return false; } break; case RelayAddressableUri: if (newValue ){ newValue #RemoveKey; isCritical false; break; } if (!relayAddressableUriRegex.test(newValue)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.AddressableUriAlertMessage,keyName,\n + currentURIs.Relay)); return false; } break; case WebServerAlternateListenUri: if (newValue ){ newValue #RemoveKey; isCritical false; break; } case WebServerListenUri: if (newValue || !webServerListenUriRegex.test(newValue)) { alertModal(SC.util.formatString( SC.resExtension.EditWebConfigAppSettings.ListenUriAlertMessage,keyName,\n + currentURIs.WebServerUri.protocol + //+: + (currentURIs.WebServerUri.port ? ( currentURIs.WebServerUri.protocol http: ? 80 : 443 ) : currentURIs.WebServerUri.port ) + /)); return false; } isCritical true; break; case RelayListenUri: if (newValue || !relayListenUriRegex.test(newValue)) { alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.ListenUriAlertMessage,keyName,\nrelay://+: + SC.context.clp.p + /)); return false; } isCritical true; break; case CryptoKey: if (!SC.context.enableCryptoKeySetting) return false; isCritical true; if (newValue || newValue #RemoveKey) { alertModal(SC.resExtension.EditWebConfigAppSettings.EmptyAsymmetricKey); return false; } else { if(!confim(SC.resExtension.EditWebConfigAppSettings.ChangeAsymmetricKeyWarning)) { return false; } } break; case DuoIntegrationKey: case DuoSecretKey: case DuoApiHostname: if (newValue ) { newValue #RemoveKey; break; } break; default: alertModal(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.UnknownTypeAlertMessage,keyName)); return false; } if (isCritical){ if(!confirm(SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.CriticalSettingUpdateConfirmationMessage,keyName,oldValue,newValue).replace(/\\n/g,\n))){ return false; } } jsObjkey newValue; settingsChanged true; } return jsObj;}/***** Event Handlers *****/SC.event.addGlobalHandler(SC.event.QueryCommandButtons,function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType AdministrationPage) { eventArgs.buttonDefinitions.push( { commandName: command_ + extensionId, text: SC.resExtension.EditWebConfigAppSettings.CommandText} ); } break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch(eventArgs.commandName) { case SelectTab_ + extensionId: var tabcontent document.getElementsByClassName(TabContent); for (i 0; i tabcontent.length; i++) { SC.ui.setVisible(tabcontenti,false); } var tablinks document.getElementsByClassName(TabLink); for (i 0; i tablinks.length; i++) { SC.ui.setSelected(tablinksi,false); } SC.ui.setSelected(eventArgs.commandElement,true); var activeContent document.querySelector(# + eventArgs.commandArgument + .TabContent); SC.ui.setVisible(activeContent,true); break; case command_ + extensionId: loadExtCookieSettings(); if (extensionContext.settingValues.HideServiceRestartNotice ! true) { displayNotice( SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeTitle, SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeMessage, SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeButton, noticeAccepted_ + extensionId, function(buttonPanel){ var checkbox SC.ui.createElement(input,{type:checkbox}); SC.event.addHandler(checkbox,change,function(eventArgs){ buttonPanel.querySelector(inputtypebutton)._commandArgumenteventArgs.target.checked ? true : null; }); SC.ui.addContent(buttonPanel,$span(checkbox,SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeDoNotShowText)); } ); break; } case noticeAccepted_ + extensionId: if (eventArgs.commandArgument) { extensionContext.settingValues.HideServiceRestartNotice true; saveExtCookieSetting(HideServiceRestartNotice); } case displaySettings_ + extensionId: SC.util.includeStyleSheet(extensionContext.baseUrl + Style.css); SC.service.EditWebConfigAppSettings_GetUserIPAddress(function(returnedIP){ userIPAddress returnedIP; SC.service.EditWebConfigAppSettings_GetUris(function(uriJSON){ var uris JSON.parse(uriJSON); currentURIs.WebServer uris.WebServerUri; currentURIs.WebServerUri SC.ui.createElement(A,{id:WebServerUri,href:uris.WebServerUri}); currentURIs.Relay uris.RelayUri; currentURIs.RelayUri SC.ui.createElement(A,{id:RelayUri,href:uris.RelayUri}); if (cloudRegEx.test(currentURIs.WebServer) || cloudRegEx.test(currentURIs.Relay)) serverEnvironment hosted; else if (hostedrmmRegEx.test(currentURIs.WebServer) || hostedrmmRegEx.test(currentURIs.Relay)) serverEnvironment hostedrmm; else serverEnvironment local; SC.service.EditWebConfigAppSettings_GetWebConfigFileContents(function(WebConfigContents){ dataUri SC.ui.createDataUri(SC.util.isCapable(SC.util.Caps.Safari) ? attachment/config : text/config, WebConfigContents); httpRequestJSONObjectAsync(extensionContext.baseUrl + Defaults.json,function(keyInfo){ var validKeys Object.keys(keyInfo) .filter(function(x){ return x ! LocationSettings && checkVersion(keyInfox.minVer,SC.context.productVersion) && keyInfox.show.indexOf(serverEnvironment) > 0 && (keyInfox.isAdvanced true ? showAdvancedSettings : true ) && (x ! AsymmetricKey || SC.context.enableCryptoKeySetting); }); SC.service.EditWebConfigAppSettings_GetEditableWebConfigAppSettingKeysAndValues(validKeys,keyInfo.LocationSettings.EditableSettings, function(json){ var allKeys JSON.parse(json); var keys allKeys.AppSettings; var lkeys allKeys.Locations; var showAdvancedSettingsButton SC.ui.createElement(a,{_innerText:SC.resExtension.EditWebConfigAppSettings.ShowAdvancedSettingsText}); showAdvancedSettingsButton.addEventListener(click,function(){ showAdvancedSettings true; SC.event.dispatchEvent(null,SC.event.ExecuteCommand,{commandName:displaySettings_ + extensionId}); }); var instructions $p(SC.resExtension.EditWebConfigAppSettings.DialogInstructions, (browserSupportsNumberInput() ? : + SC.resExtension.EditWebConfigAppSettings.NoNumberSupportMessage), (!showAdvancedSettings ? $span( , showAdvancedSettingsButton, .) : + SC.util.formatString(SC.resExtension.EditWebConfigAppSettings.YourIPAddressMessage,userIPAddress)) ); SC.dialog.showModalButtonDialog( EditWebConfigAppSettings, SC.resExtension.EditWebConfigAppSettings.DialogTitle, SC.resExtension.EditWebConfigAppSettings.DialogButtonText, Default, function (container) { container.addEventListener(keyup,function(event){validateEntry(event);}); container.addEventListener(mouseup,function(event){validateEntry(event);}); SC.ui.addContent(container, instructions); var WebConfigLinksContainer SC.ui.addElement(container, ul,{}); var WebConfigHelpLink SC.ui.createElement(A,{href:SC.resExtension.EditWebConfigAppSettings.WebConfigSettingsLinkHref,target:_blank, _innerText:SC.resExtension.EditWebConfigAppSettings.WebConfigSettingsLinkText}); var WebConfigDownloadLink SC.ui.createElement(A,{download:web.config,href:dataUri,_innerText:SC.resExtension.EditWebConfigAppSettings.WebConfigLinkText}); SC.ui.addElement(WebConfigLinksContainer,li,WebConfigDownloadLink); SC.ui.addElement(WebConfigLinksContainer,li,WebConfigHelpLink); if (showAdvancedSettings) { // Need to add tabs for Main AppSettings and individual Location AppSetting sections var tabs SC.ui.addElement(container,ul,{className:SectionTabs}); SC.ui.addElement(tabs,li,{innerText:AppSettings,id:TabLink_AppSettings,className:TabLink Selected,_commandName:SelectTab_ + extensionId,_commandArgument:AppSettings}); SC.ui.addElement(tabs,li,{innerText:Per-Page Settings,id:TabLink_PerPageSettings,className:TabLink,_commandName:SelectTab_ + extensionId,_commandArgument:PerPageSettings}); var pageSettingContainer SC.ui.addElement(container,dl,{id:PerPageSettings,className:TabContent}); for (var i0; i Object.keys(lkeys).length; i++){ // Avoid find and findIndex being provided as keys in IE when using Object.keys(obj) var lkeyName Object.keys(lkeys)i; var dt SC.ui.addElement(pageSettingContainer,dt,$span({innerText:lkeyName,id:SectionHeader_ + cleanKeyName(lkeyName),className:SectionHeader})); var dd SC.ui.addElement(pageSettingContainer,dd,{}); var dddiv SC.ui.addElement(dd,div,{}); var table SC.ui.addElement(dddiv,TABLE,{id:cleanKeyName(lkeyName)}); var thead SC.ui.addElement(table,thead,{}); var headerRow SC.ui.addElement(thead,tr,{}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.KeyColumnTitle}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.ValueColumnTitle}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.SettingColumnTitle}); var tbody SC.ui.addElement(table,tbody,{}); addRowsToTable( tbody, lkeyslkeyName, keyInfo.LocationSettings.LocationslkeyName.AppSettings, lkeyName ); } SC.ui.setVisible(pageSettingContainer,false); } var tablecontainer SC.ui.addElement(container,DIV,{id:AppSettings,className:TabContent}) var table SC.ui.addElement(tablecontainer,TABLE,{}); var thead SC.ui.addElement(table,thead,{}); var headerRow SC.ui.addElement(thead,tr, {}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.KeyColumnTitle}); SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.ValueColumnTitle}); if (extensionContext.settingValues.ShowDefaultValueColumn true){ SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.DefaultColumnTitle}); } SC.ui.addElement(headerRow,th,{_innerText:SC.resExtension.EditWebConfigAppSettings.SettingColumnTitle}); var tbody SC.ui.addElement(table,tbody,{}); addRowsToTable(tbody,keys,keyInfo); SC.ui.setVisible(tablecontainer,true); }, function (eventArgs) { if (eventArgs.commandName SelectTab_ + extensionId) return; var appSettingsJsObj getChangedItems(keys,keyInfo); if (appSettingsJsObj false) return; var locationJsObj {}; for (var i0; i Object.keys(lkeys).length; i++){ var lkeyName Object.keys(lkeys)i; var thisLocObj getChangedItems(lkeyslkeyName,keyInfo.LocationSettings.LocationslkeyName.AppSettings,lkeyName); if (thisLocObj false) return; if (Object.keys(thisLocObj).length > 0) locationJsObjlkeyName thisLocObj; }; if (settingsChanged) { SC.service.EditWebConfigAppSettings_SetWebConfigAppSettingValues( JSON.stringify(appSettingsJsObj), JSON.stringify(locationJsObj), function () { SC.dialog.showModalActivityAndReload(Save, true, window.location.href); } ); } else { SC.dialog.hideModalDialog(); } } ); makeAllSortable($(dialog)); SC.dialog.setButtonPanelError(SC.ui.findDescendent(SC.dialog.getModalDialog(),function(_){return _.className && _.className.indexOf(ButtonPanel) > -1;}),{message:SC.resExtension.EditWebConfigAppSettings.ServiceRestartNoticeTitle}); }); }); }); }); }); break; }});/** Extend Extension Options **/var extendedExtensionOptions {};/* Option Settings Below */extendedExtensionOptions.helpUrl https://help.screenconnect.com/Extension:Edit_Web.Config_AppSettings;extendedExtensionOptions.extensionResourceID EditWebConfigAppSettings;/* Option Settings Above */extendedExtensionOptions.extensionIdextensionContext.baseUrl.split(/).slice(-2)0;SC.resHelpPanel.Link+extendedExtensionOptions.extensionId+.UrlextendedExtensionOptions.helpUrl;SC.event.addGlobalHandler(SC.event.QueryCommandButtonState,function(eventArgs){ if(eventArgs.commandNameEditExtensionSettings&&eventArgs.commandContext.extensionInfo.ExtensionIDextendedExtensionOptions.extensionId&&eventArgs.commandElement._commandNameEditExtensionSettings){ if(extendedExtensionOptions.extensionResourceID&&extendedExtensionOptions.extensionResourceID.length) SC.ui.addElement(eventArgs.target.parentElement,A,{_commandName:command_+extensionId,_innerText:SC.resExtension.+extendedExtensionOptions.extensionResourceID+.CommandText}); SC.ui.addElement(eventArgs.target.parentElement,A,{_commandName:NavigateHelpLink,_commandArgument:extendedExtensionOptions.extensionId,_innerText:SC.resCommand.Help.Text.replace( ▽,)}); }});/******************************/});/script>script>SC.extension.addInitializeProc(4be5307a-130a-4afa-b655-63e633e7ca36, function (extensionContext) {SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType GuestPage) SC.installer.getSortedInstallerTypeInfos() .filter(function (i) { return i.type.match(extensionContext.settingValues.TypeFilter); }) .forEach(function (i) { eventArgs.buttonDefinitions.push({ commandName: BuildInstaller, commandArgument: i.type, text: SC.util.formatString(SC.resCommand.BuildInstaller.TextFormat, i.text), }); }); break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case BuildInstaller: var url SC.util.getInstallerUrl(eventArgs.commandArgument); SC.util.launchUrl(url); break; }});});/script>script>SC.extension.addInitializeProc(a7b5a8f2-9fd0-489c-89d0-3c1888fde971, function (extensionContext) {SC.event.addGlobalHandler(SC.event.PreRender, function (eventArgs) { if (SC.context.pageType HostPage) { SC.util.includeStyleSheet(extensionContext.baseUrl + DiagnosticsNewStyle.css); }});function getValidEventLogCount() { var tempValue extensionContext.settingValues.EventLogRequestCount; if ((tempValue > 0) && (tempValue 100)) return tempValue; else return 10;}SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case HostDetailTabList: eventArgs.buttonDefinitions.push( { commandName: Select, commandArgument: Processes, text: SC.resDiagnostics.ProcessTab.Label, imageUrl: extensionContext.baseUrl + Images/Processes.png }, { commandName: Select, commandArgument: Software, text: SC.resDiagnostics.SoftwareTab.Label, imageUrl: extensionContext.baseUrl + Images/Software.png }, { commandName: Select, commandArgument: EventLog, text: SC.resDiagnostics.EventLogTab.Label, imageUrl: extensionContext.baseUrl + Images/EventLog.png }, { commandName: Select, commandArgument: Services, text: SC.resDiagnostics.ServicesTab.Label, imageUrl: extensionContext.baseUrl + Images/Services.png } ); break; case ProcessesButtons: eventArgs.buttonDefinitions.push({ commandName: GetInfo, commandArgument: Processes, text: SC.resDiagnostics.ProcessTab.Button }); break; case SoftwareButtons: eventArgs.buttonDefinitions.push({ commandName: GetInfo, commandArgument: Software, text: SC.resDiagnostics.SoftwareTab.Button }); break; case EventLogButtons: eventArgs.buttonDefinitions.push({ commandName: GetInfo, commandArgument: EventLog, text: SC.resDiagnostics.EventLogTab.Button }); break; case ServicesButtons: eventArgs.buttonDefinitions.push({ commandName: GetInfo, commandArgument: Services, text: SC.resDiagnostics.ServicesTab.Button }); break; }});SC.event.addGlobalHandler(SC.event.InitializeTab, function (eventArgs) { if (isMyTab(eventArgs.tabName)) { SC.command.queryAndAddCommandButtons(eventArgs.container, eventArgs.tabName + Buttons); SC.ui.addElement(eventArgs.container, DIV, {id: lastUpdateContainer}); SC.ui.addElement(eventArgs.container, DIV, {id: dataContainer}); var filterContainer $div({className: filterContainer}); var filterInput $input({className: EventLogFilterInput, type: TEXT}); var filterLabel $span({innerHTML: SC.resDiagnostics.Filter.Label}); filterInput.onkeyup function (value) { ProcessFilterInput(filterInput.value); } SC.ui.addContent(filterContainer, filterLabel); SC.ui.addContent(filterContainer, filterInput); SC.ui.addContent(eventArgs.container, filterContainer); SC.ui.addElement(eventArgs.container, TABLE, {id: dataTable}); }});SC.event.addGlobalHandler(SC.event.RefreshTab, function (eventArgs) { if (isMyTab(eventArgs.tabName)) { SC.ui.clear($(dataContainer)); SC.ui.clear($(lastUpdateContainer)); SC.ui.clear($(dataTable)); SC.ui.findDescendent( eventArgs.container, function (e) { return e._commandName GetInfo; } )._commandArgument { type: eventArgs.tabName, operatingSystemName: eventArgs.session.GuestOperatingSystemName }; displayDiagnosticInformation( getLatestDiagnosticEvent( eventArgs.sessionDetails, eventArgs.tabName ), eventArgs.sessionDetails.BaseTime ); }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case GetInfo: window.addEventToSessions( window.getSessionGroupUrlPart()0, SC.types.SessionType.Access, window.getSessionUrlPart(), SC.types.SessionEventType.QueuedCommand, null, getInputCommand( eventArgs.commandArgument.type, eventArgs.commandArgument.operatingSystemName ), false, false, true ); break; }});function ProcessFilterInput(value) { var dataTable document.getElementById(dataTable); for (var i dataTable.getElementsByTagName(th).length; i dataTable.children.length; i++) { var element dataTable.childreni; //IE/opera dont support .includes() //if(!element.innerHTML.toUpperCase().includes(value.toUpperCase())) if (element.innerHTML.toUpperCase().search(value.toUpperCase()) -1) element.style.display none; else element.style.display ; }}function getInputCommand(diagnosticType, operatingSystem) { var headers getHeaders(operatingSystem); headers.DiagnosticType diagnosticType; var commandText getDiagnosticCommandText(headers); var emptyLinePrefix ; if (headers.Processor sh) emptyLinePrefix echo ; else { emptyLinePrefix echo ; commandText $Host.UI.RawUI.BufferSize New-Object Management.Automation.Host.Size (500, 25) + \n + commandText; } return #! + headers.shaBang + \n + #maxlength50000000 + \n + #timeout90000 + \n + headers.modifier + DIAGNOSTIC-RESPONSE/1 + headers.delimiter + \n + headers.modifier + DiagnosticType: + headers.DiagnosticType + headers.delimiter + \n + headers.modifier + ContentType: + headers.ContentType + headers.delimiter + \n + emptyLinePrefix + \n + commandText;}function getHeaders(operatingSystem) { if (operatingSystem.indexOf(Windows) > 0 || operatingSystem.indexOf(Server) > 0) return { Processor: ps, Interface: powershell, ContentType: xml, shaBang: ps, modifier: echo \, delimiter: \ }; else if (operatingSystem.indexOf(Linux) > 0) return { Processor: sh, Interface: linux, ContentType: text, shaBang: sh, modifier: echo , delimiter: }; else if (operatingSystem.indexOf(Mac) > 0) return { Processor: sh, Interface: osx, ContentType: text, shaBang: sh, modifier: echo , delimiter: };}function isMyTab(tabName) { switch (tabName) { case Processes: case Software: case EventLog: case Services: return true; default: return false; }}function isDiagnosticContent(eventData) { return (eventData.startsWith(DIAGNOSTIC-RESPONSE/1) || eventData.startsWith(\ufeffDIAGNOSTIC-RESPONSE/1) ? true : false);}function getLatestDiagnosticEvent(sessionDetails, diagnosticEventType) { var versionParts SC.context.productVersion.split(.); if (versionParts && versionParts.length > 1 && SC.util.isVersion({major: 22, minor: 9}, null, {major: versionParts0, minor: versionParts1})) { return sessionDetails.Events .filter(function (e) { return e.EventType SC.types.SessionEventType.RanCommand && isDiagnosticContent(e.Data) && parseDataHeaders(e.Data).DiagnosticType.trim() diagnosticEventType; }) .sort(function (x, y) { return x.Time - y.Time; }) 0; } else { return sessionDetails.Connections .map(function (c) { return c.Events; }) .reduce(function (outputArray, events) { Array.prototype.push.apply(outputArray, events); return outputArray; }, ) .filter(function (e) { return e.EventType SC.types.SessionEventType.RanCommand && isDiagnosticContent(e.Data) && parseDataHeaders(e.Data).DiagnosticType.trim() diagnosticEventType; }) .sort(function (x, y) { return x.Time - y.Time; }) 0; }}function parseDataHeaders(eventData) { var currentIndex 0; var headers {}; var isStatusLine true; while (true) { var nextNewLineIndex eventData.indexOf(\n, currentIndex); if (isStatusLine) { isStatusLine false; } else if (nextNewLineIndex currentIndex + 2 || nextNewLineIndex 0) { break; } else { var lineParts eventData.substring(currentIndex, nextNewLineIndex).split(: ); headerslineParts0 lineParts1; } currentIndex nextNewLineIndex + 1; } return headers;}function displayDiagnosticInformation(latestDiagnosticEvent, baseTime) { if (latestDiagnosticEvent ! null) { var headers parseDataHeaders(latestDiagnosticEvent.Data); if (headers.ContentType.trim() xml) displayDataXml(getEventDataXml(latestDiagnosticEvent.Data)); else displayDataText(getEventDataText(latestDiagnosticEvent.Data)); $(lastUpdateContainer).innerHTML SC.resDiagnostics.LastUpdateField.Label + new Date(latestDiagnosticEvent.Time + baseTime); }}function getEventDataXml(eventData) { return parseXml(eventData.substring(eventData.indexOf(?xml), eventData.length));}function displayDataXml(xml) { var x xml.getElementsByTagName(Object); var iterationLength 0; try { iterationLength x0.children.length; } catch (error) { iterationLength x0.childNodes.length; } //because IE/Edge are dumb if (isUsingInternetExplorerOrEdge()) { for (j 0; j iterationLength; j++) { var child x0.childNodesj; if (child.nodeType ! 1) continue; SC.ui.addElement($(dataTable), th, { id: dataTableHeader, innerHTML: x0.childNodesj.attributes.Name.nodeValue }); } for (i 0; i x.length; i++) { SC.ui.addElement($(dataTable), tr, {id: dataRow + i}); for (j 0; j xi.childNodes.length; j++) { var childX xi.childNodesj; if (childX.nodeType ! 1) continue; SC.ui.addElement($(dataRow + i), td, { id: dataTableData, innerHTML: xi.childNodesj.textContent }); } } } else { for (j 0; j x0.children.length; j++) { SC.ui.addElement($(dataTable), th, { id: dataTableHeader, innerHTML: x0.childrenj.attributes.Name.nodeValue }); } for (i 0; i x.length; i++) { SC.ui.addElement($(dataTable), tr, {id: dataRow + i}); for (j 0; j xi.children.length; j++) { SC.ui.addElement($(dataRow + i), td, {id: dataTableData, innerHTML: xi.childrenj.innerHTML}); } } }}function getEventDataText(eventData) { return parseText( eventData .split(\n) .splice(3, eventData.length) .join(\n) );}function displayDataText(eventData) { for (var category in eventData0) { SC.ui.addElement($(dataTable), th, {id: dataTableHeader, innerHTML: category}); } for (var i 0; i eventData.length; i++) { SC.ui.addElement($(dataTable), tr, {id: dataRow + i}); for (var item in eventDatai) { SC.ui.addElement($(dataRow + i), td, {id: dataTableData, innerHTML: eventDataiitem}); } }}function parseXml(xml) { var dom null; if (window.DOMParser) { try { dom (new DOMParser()).parseFromString(xml, text/xml); } catch (e) { dom null; } } else if (window.ActiveXObject) { try { dom new ActiveXObject(Microsoft.XMLDOM); dom.async false; if (!dom.loadXML(xml)) // parse error .. window.alert(dom.parseError.reason + dom.parseError.srcText); } catch (e) { dom null; } } else alert(cannot parse xml string!); return dom;}function parseText(data) { var lines data.split(\n); var result ; var headers lines1.split(,); for (var i 3; i lines.length; i++) { var obj {}; var currentline linesi.split(,); for (var j 0; j headers.length; j++) { objheadersj currentlinej; } result.push(obj); } return result;}function isUsingInternetExplorerOrEdge() { var ua window.navigator.userAgent; var msie ua.indexOf(Trident); if (ua.indexOf(Trident) > 0 || ua.indexOf(Edge) > 0) return true; else return false;}//ripped directly from http://stackoverflow.com/questions/6108819/javascript-timestamp-to-relative-time-eg-2-seconds-ago-one-week-ago-etc-bestfunction timeDifference(current, previous) { var msPerMinute 60 * 1000; var msPerHour msPerMinute * 60; var msPerDay msPerHour * 24; var msPerMonth msPerDay * 30; var msPerYear msPerDay * 365; var elapsed current - previous; if (elapsed msPerMinute) return Math.abs(Math.round(elapsed / 1000)) + seconds ago; else if (elapsed msPerHour) return Math.round(elapsed / msPerMinute) + minutes ago; else if (elapsed msPerDay) return Math.round(elapsed / msPerHour) + hours ago; else if (elapsed msPerMonth) return approximately + Math.round(elapsed / msPerDay) + days ago; else if (elapsed msPerYear) return approximately + Math.round(elapsed / msPerMonth) + months ago; else return approximately + Math.round(elapsed / msPerYear) + years ago;}function getDiagnosticCommandText(headers) { switch (headers.Processor + / + headers.Interface + / + headers.ContentType + / + headers.DiagnosticType) { case ps/powershell/xml/Processes: return Get-Process | select ProcessName, Id, NPM, PM, WS, VM | Sort ProcessName | ConvertTo-Xml -As Stream; case ps/powershell/xml/EventLog: return Get-EventLog Application -newest + getValidEventLogCount() + | Select TimeWritten, EntryType, Source, Message | Sort TimeWritten -Descending | ConvertTo-Xml -As Stream; case ps/powershell/xml/Services: return Get-Service | select displayName, Name, Status | Sort DisplayName | ConvertTo-Xml -As Stream; case ps/powershell/xml/Software: return $registryPath if (Environment::Is64BitOperatingSystem) { HKLM:\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*, HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* } else { HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* } Get-ItemProperty -Path $registryPath | Select @{NIdentifyingNumber;E{$_.PSChildName}}, @{NName;E{$_.DisplayName}}, @{NVendor;E{$_.Publisher}}, @{NVersion;E{$_.DisplayVersion}} | Where-Object{!string::IsNullOrEmpty($_.Name)} | Sort Name | ConvertTo-Xml -As Stream; case sh/linux/text/Processes: return ps -eo \%U,%p,%x,%C,%c\; case sh/linux/text/EventLog: return echo + headers.DiagnosticType + ; dmesg -T | tail - + getValidEventLogCount(); case sh/linux/text/Services: return echo + headers.DiagnosticType + ; ls /etc/init.d; case sh/linux/text/Software: return echo + headers.DiagnosticType + ; dpkg --get-selections; case sh/osx/text/Processes: return ps -eo \pid,%cpu,command\; case sh/osx/text/EventLog: return echo + headers.DiagnosticType + ; syslog -C; case sh/osx/text/Services: return echo + headers.DiagnosticType + ; launchctl list; case sh/osx/text/Software: return echo + headers.DiagnosticType + ; ls /Applications; default: throw unknown os; }}});/script>script>SC.extension.addInitializeProc(4bfb0c0d-b7a0-4911-b76e-df1d86fa88cd, function (extensionContext) {// If Report Generator extension is enabled, add help link to extension options dropdownvar reportGeneratorExtensionId extensionContext.baseUrl.split(/).slice(-2)0;var reportManagerHelpLink https://docs.connectwise.com/ConnectWise_Control_Documentation/Supported_extensions/Administration/Report_Manager;SC.event.addGlobalHandler(SC.event.PreRender, function (eventArgs) { SC.util.includeStyleSheet(extensionContext.baseUrl + Style.css);});SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { if (eventArgs.commandName EditExtensionSettings) if (eventArgs.commandContext.extensionInfo.ExtensionID reportGeneratorExtensionId && eventArgs.commandElement._commandName EditExtensionSettings) SC.ui.addElement( eventArgs.target.parentElement, A, { href: #, _commandName: ShowHelpLink_ + reportGeneratorExtensionId, innerHTML: Help } );});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { if (eventArgs.commandName ShowHelpLink_ + reportGeneratorExtensionId) window.open(reportManagerHelpLink, _blank);});});/script>script>SC.extension.addInitializeProc(8fabf97d-7b08-481b-ab06-3f501436e864, function (extensionContext) {// If Report Manager extension is enabled, add help link to extension options dropdownvar reportManagerExtensionId extensionContext.baseUrl.split(/).slice(-2)0;var reportManagerHelpLink https://help.screenconnect.com/Extension:Report_Manager;var currentVersion {major : Number(SC.context.productVersion.split(.)0), minor : Number(SC.context.productVersion.split(.)1)}SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { if (eventArgs.commandName EditExtensionSettings) if (eventArgs.commandContext.extensionInfo.ExtensionID reportManagerExtensionId && eventArgs.commandElement._commandName EditExtensionSettings) SC.ui.addElement( eventArgs.target.parentElement, A, { href: #, _commandName: ShowHelpLink_ + reportManagerExtensionId, innerHTML: Help } );});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { if (eventArgs.commandName ShowHelpLink_ + reportManagerExtensionId) window.open(reportManagerHelpLink, _blank);});var ReportManagerMetaTables {}var getMetaTableFromReportManagerMetaTables function(reportType) { if (!(reportType in ReportManagerMetaTables)) { ReportManagerMetaTablesreportType { Items: } } return ReportManagerMetaTablesreportType}var httpGetReportAsync function (theUrl) { return new Promise((resolve, reject) > { var xmlHttp new XMLHttpRequest(); xmlHttp.onreadystatechange function () { if (xmlHttp.readyState 4 && xmlHttp.status 200) { resolve(JSON.parse(xmlHttp.responseText)); } else if (xmlHttp.readyState 4) { console.log(Metaquery failed); } }; xmlHttp.open(GET, theUrl, true); xmlHttp.send(); });};var editReportProc function () { var i; httpGetReportAsync(SC.context.scriptBaseUrl + Report.json) .then(sessionMetadataResponse > { if (getMetaTableFromReportManagerMetaTables(Session).Items.length 0) { for (i 0; i sessionMetadataResponse.Items.length; i++) { if (SC.util.isVersion({major: 22, minor: 9}, null, currentVersion)) { getMetaTableFromReportManagerMetaTables(sessionMetadataResponse.Itemsi0).Items.push(sessionMetadataResponse.Itemsi); } else if (sessionMetadataResponse.Itemsi0 ! SessionConnectionEvent) { getMetaTableFromReportManagerMetaTables(sessionMetadataResponse.Itemsi0).Items.push(sessionMetadataResponse.Itemsi); } } } return httpGetReportAsync(SC.context.scriptBaseUrl + Report.json?ReportSecurity); }) .then(securityMetadataResponse > { if (getMetaTableFromReportManagerMetaTables(SecurityEvent).Items.length 0) { for (i 0; i securityMetadataResponse.Items.length; i++) { getMetaTableFromReportManagerMetaTables(SecurityEvent).Items.push(securityMetadataResponse.Itemsi); } } SC.util.includeStyleSheet(extensionContext.baseUrl + Style.css); var ReportDownloadBuilderSelectionPanel; SC.dialog.showModalDialogRaw(ReportDownloadBuilder, SC.dialog.createTitlePanel(SC.resReportDownloadBuilder.Title), $div( $div({ className: CommandPanel }, SC.command.queryAndCreateCommandButtons(ReportDownloadBuilderEditorPanel), ) ), $div( $div({ className: MasterPanel }, ReportDownloadBuilderSelectionPanel $div({ id: ReportDownloadBuilderSelectionPanel, className: MasterSelectionPanel }) ), $div({ id: ReportDownloadBuilderEditorPanel, className: DetailPanel }) ) , null, null, null ); SC.service.GetReportDefinitionStrings(function (reports) { if (reports0 ! ) { var parsedReportString; for (i 0; i reports.length - 1; i++) { parsedReportString reportsi.split(?); // report name, report definition addReportFileProc(decodeURIComponent(parsedReportString0), null, false, true, ? + parsedReportString1); loadReportFileProc(decodeURIComponent(parsedReportString0), parsedReportString1); } tryEditReportFileProc(ReportDownloadBuilderSelectionPanel.childNodes0._commandArgument); } else { updateReportViewProc(); } }); });};var addReportFileProc function (reportName, reportLoadFileName, isDirty, validReport, definition) { var i 0; // maintain lexical order if ($(ReportDownloadBuilderSelectionPanel).childNodes.length > 0) { for (var j 0; j $(ReportDownloadBuilderSelectionPanel).childNodes.length; j++) { if (reportName.toLowerCase() > $(ReportDownloadBuilderSelectionPanel).childNodesj._commandArgument.toLowerCase()) { i++; } else { break; } } } SC.ui.insertChild($(ReportDownloadBuilderSelectionPanel), createReportSelectionLinkFunc(reportName), i); SC.ui.insertChild($(ReportDownloadBuilderEditorPanel), createReportEditPanelFunc(reportName, reportLoadFileName, isDirty, validReport, definition), i); updateReportViewProc();};var loadReportFileProc function (reportName, reportDefinition) { var i; if (reportDefinition ) { $(report + reportName)._validReport false; $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; $(reportDefinitionContent + reportName).style.display none; $(groupFields + reportName).style.display none; $(aggregateFilterDiv + reportName).style.display none; updateReportViewProc(); } else if (reportDefinition.split(&)0.split()0 InvalidGrouped) { $(report + reportName)._validReport false; $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; $(reportDefinitionContent + reportName).style.display block; $(groupFields + reportName).style.display none; $(aggregateFilterDiv + reportName).style.display none; $(filter + reportName).value ; $(aggregateFilter + reportName).value ; var parsedDefinition reportDefinition.split(&); if (parsedDefinition1.search(ReportType) ! -1) { var reportType parsedDefinition1.split()1; for (i 0; i $(reportType + reportName).length; i++) { if ($(reportType + reportName).optionsi.value reportType) { $(reportType + reportName).selectedIndex i; break; } } $(filterExample + reportName).innerHTML SC.resReportDownloadBuilder. + reportType + .Filter.Example; $(aggregateFilterExample + reportName).innerHTML SC.resReportDownloadBuilder. + reportType + .AggregateFilter.Example; } $(reportExplanation + reportName).innerHTML SC.resReportDownloadBuilder. + $(reportType + reportName).options$(reportType + reportName).selectedIndex.value + .Explanation; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked true; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value ungrouped }).checked false; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, $(reportType + reportName), reportName), 1); SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(GroupedSelect, $(reportType + reportName), reportName), 1); $(groupFields + reportName).style.display block; $(aggregateFilterDiv + reportName).style.display block; i 2; if (parsedDefinition.length > 2) { var sl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType select }); var pl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); while (i parsedDefinition.length) { if (parsedDefinitioni.search(SelectFields) ! -1) { var selectField parsedDefinitioni.split()1; var selectIndex sl.selectedIndex; var selectOptions sl.options; var pickOptions pl.options; var pickOptLength pickOptions.length; for (var j 0; j selectOptions.length; j++) { if (selectOptionsj.value selectField) { pickOptionspickOptLength $option(slj.text); pickOptionspickOptLength.value slj.value; pickOptionspickOptLength.title slj.title; pickOptionspickOptLength._index slj._index; selectOptionsj null; break; } } } else if (parsedDefinitioni.search(AggregateFilter) ! -1) { var aggregateFilter parsedDefinitioni.split()1; $(aggregateFilter + reportName).value decodeURIComponent(aggregateFilter); } else if (parsedDefinitioni.search(Filter) ! -1) { var filter parsedDefinitioni.split()1; $(filter + reportName).value decodeURIComponent(filter); } else if (parsedDefinitioni.search(ItemLimit) ! -1) { var itemLimit parsedDefinitioni.split()1; $(itemLimit + reportName).value itemLimit; } i++; } sl.options.length > 0 ? sl.options0.selected true : ; pl.options.length > 0 ? pl.options0.selected true : ; } var gsl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType select }); gsl.options0.selected true; updateReportViewProc(); } else { var encounteredField false; $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; $(reportDefinitionContent + reportName).style.display block; $(groupFields + reportName).style.display none; $(aggregateFilterDiv + reportName).style.display none; $(filter + reportName).value ; $(aggregateFilter + reportName).value ; var parsedDefinition reportDefinition.split(&); if (parsedDefinition0.search(ReportType) ! -1) { var reportType parsedDefinition0.split()1; for (i 0; i $(reportType + reportName).length; i++) { if ($(reportType + reportName).optionsi.value reportType) { $(reportType + reportName).selectedIndex i; break; } } $(filterExample + reportName).innerHTML SC.resReportDownloadBuilder. + reportType + .Filter.Example; $(aggregateFilterExample + reportName).innerHTML SC.resReportDownloadBuilder. + reportType + .AggregateFilter.Example; } $(reportExplanation + reportName).innerHTML SC.resReportDownloadBuilder. + $(reportType + reportName).options$(reportType + reportName).selectedIndex.value + .Explanation; i 1; if (parsedDefinition.length > 1) { while (i parsedDefinition.length) { if (parsedDefinitioni.search(GroupFields) ! -1) { if (!encounteredField) { SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked true; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value ungrouped }).checked false; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, $(reportType + reportName), reportName), 1); SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(GroupedSelect, $(reportType + reportName), reportName), 1); $(groupFields + reportName).style.display block; $(aggregateFilterDiv + reportName).style.display block; encounteredField true; } var groupField parsedDefinitioni.split()1; var gsl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType select }); var selectIndex gsl.selectedIndex; var selectOptions gsl.options; var gpl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType pick }); var pickOptions gpl.options; var pickOptLength pickOptions.length; for (var j 0; j selectOptions.length; j++) { if (selectOptionsj.value groupField) { pickOptionspickOptLength $option(gslj.text); pickOptionspickOptLength.value gslj.value; pickOptionspickOptLength.title gslj.title; pickOptionspickOptLength._index gslj._index; selectOptionsj null; break; } } } else if (parsedDefinitioni.search(SelectFields) ! -1) { if (!encounteredField) { SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked false; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value ungrouped }).checked true; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, $(reportType + reportName), reportName), 1); SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(NotGroupedSelect, $(reportType + reportName), reportName), 1); encounteredField true; } var selectField parsedDefinitioni.split()1; var ssl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType select }); var selectIndex ssl.selectedIndex; var selectOptions ssl.options; var spl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); var pickOptions spl.options; var pickOptLength pickOptions.length; for (var j 0; j selectOptions.length; j++) { if (selectOptionsj.value selectField) { pickOptionspickOptLength $option(sslj.text); pickOptionspickOptLength.value sslj.value; pickOptionspickOptLength.title sslj.title; pickOptionspickOptLength._index sslj._index; selectOptionsj null; break; } } } else if (parsedDefinitioni.search(AggregateFilter) ! -1) { var aggregateFilter parsedDefinitioni.split()1; $(aggregateFilter + reportName).value decodeURIComponent(aggregateFilter); } else if (parsedDefinitioni.search(Filter) ! -1) { var filter parsedDefinitioni.split()1; $(filter + reportName).value decodeURIComponent(filter); } else if (parsedDefinitioni.search(ItemLimit) ! -1) { var itemLimit parsedDefinitioni.split()1; $(itemLimit + reportName).value itemLimit; } i++; } // if have not encountered a single group or select field at this point, then the report is ungrouped with an empty set of select fields if (!encounteredField) { SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked false; SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value ungrouped }).checked true; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, $(reportType + reportName), reportName), 1); SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(NotGroupedSelect, $(reportType + reportName), reportName), 1); } var gsl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType select }); var gpl SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType pick }); var ssl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType select }); var spl SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); if (gsl && gsl.options0) { gsl.options0.selected true; } if (gpl && gpl.options0) { gpl.options0.selected true; } if (ssl && ssl.options0) { ssl.options0.selected true; } if (spl && spl.options0) { spl.options0.selected true; } } }};var checkForReportInputChange function (reportName) { return function () { var valid true; // if this is a grouped report, need to check that at least one group field is selected if (SC.ui.findDescendent($(reportTypeSelection + reportName), function (e) { return e.type radio && e.value grouped }).checked true) { valid false; if (SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType pick }).options.length > 0) { valid true; } } $(report + reportName)._validReport valid; // check if any changes made to the report since last saved if ($(report + reportName)._reportDefinition ! getReportDefinitionString(reportName)) { $(report + reportName)._isDirty true; } else { $(report + reportName)._isDirty false; } updateReportViewProc(); };};// generate a new group or select field selector based on the type of reportvar generateReportFieldPickListDiv function (fieldSelectionType, reportType, reportName) { // build a group or select field selector var buildPickListDiv function (primaryOrAggregate, fieldType, reportType) { var pickDiv, i; var pickListDivBuilder function (selectList, pickList) { var addButton $button({ className: SecondaryButton }, >); var deleteButton $button({ className: SecondaryButton }, ); var upButton $button({ className: SecondaryButton }, ∧); var downButton $button({ className: SecondaryButton }, ∨); SC.event.addHandler(addButton, click, addOptionToPickList(selectList, pickList)); SC.event.addHandler(deleteButton, click, removeOptionFromPickList(selectList, pickList)); SC.event.addHandler(addButton, click, checkForReportInputChange(reportName)); SC.event.addHandler(deleteButton, click, checkForReportInputChange(reportName)); SC.event.addHandler(upButton, click, function () { var pl pickList; var pickIndex pl.selectedIndex; var pickOptions pl.options; var selectedIndices ; for (var i 0; i pl.length; i++) { if (pickOptionsi.selected) { selectedIndices.push(i); } } if ((selectedIndices.length > 0) && (selectedIndices0 ! 0)) { for (var j 0; j selectedIndices.length; j++) { pl.add($option(plselectedIndicesj.text), selectedIndicesj - 1); pickOptionsselectedIndicesj - 1.value plselectedIndicesj + 1.value; pickOptionsselectedIndicesj - 1.title plselectedIndicesj + 1.title; pickOptionsselectedIndicesj - 1._index plselectedIndicesj + 1._index; pickOptionsselectedIndicesj - 1.selected true; pl.remove(selectedIndicesj + 1); } } }); SC.event.addHandler(upButton, click, checkForReportInputChange(reportName)); SC.event.addHandler(downButton, click, function () { var pl pickList; var pickIndex pl.selectedIndex; var pickOptions pl.options; var selectedIndices ; for (var i 0; i pl.length; i++) { if (pickOptionsi.selected) { selectedIndices.push(i); } } if ((selectedIndices.length > 0) && (selectedIndicesselectedIndices.length - 1 (pl.length - 1))) { for (var j (selectedIndices.length - 1); j > 0; j--) { pl.add($option(plselectedIndicesj.text), selectedIndicesj + 2); pickOptionsselectedIndicesj + 2.value plselectedIndicesj.value; pickOptionsselectedIndicesj + 2.title plselectedIndicesj.title; pickOptionsselectedIndicesj + 2._index plselectedIndicesj._index; pickOptionsselectedIndicesj + 2.selected true; pl.remove(selectedIndicesj); } } }); SC.event.addHandler(downButton, click, checkForReportInputChange(reportName)); return $div( $table( $tr( $td(selectList, $div({ className: pickListDescription }, Available)), $td(addButton, $br(), deleteButton), $td(pickList, $div({ className: pickListDescription }, Selected)), $td(upButton, $br(), downButton) ) ) ); }; var addOptionToPickList function (selectList, pickList) { return function () { var sl selectList; var selectIndex sl.selectedIndex; var selectOptions sl.options; var pl pickList; var pickOptions pl.options; var pickOptLength pickOptions.length; for (var i 0; i pickOptLength; i++) { pickOptionsi.selected false; } while (selectIndex > -1) { pickOptionspickOptLength $option(slselectIndex.text); pickOptionspickOptLength.value slselectIndex.value; pickOptionspickOptLength.title slselectIndex.title; pickOptionspickOptLength._index slselectIndex._index; pickOptionspickOptLength.selected true; selectOptionsselectIndex null; selectIndex sl.selectedIndex; pickOptLength pickOptions.length; } }; }; var removeOptionFromPickList function (selectList, pickList) { return function () { var sl selectList; var selectOptions sl.options; var selectOptLength selectOptions.length; var pl pickList; var pickIndex pl.selectedIndex; var pickOptions pl.options; for (var i 0; i selectOptLength; i++) { selectOptionsi.selected false; } while (pickIndex > -1) { var j 0; while (selectOptionsj && (pickOptionspickIndex._index > selectOptionsj._index)) { j++; } sl.add($option(plpickIndex.text), j); selectOptionsj.value plpickIndex.value; selectOptionsj.title plpickIndex.title; selectOptionsj._index plpickIndex._index; selectOptionsj.selected true; pickOptionspickIndex null; pickIndex pl.selectedIndex; } }; }; var name reportName ! null ? reportName : Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); })._commandArgument; var pickList $select({ id: primaryOrAggregate + pickList + name, size: 7, multiple: true, _listType: pick }); var selectList $select({ id: primaryOrAggregate + selectList + name, size: 7, multiple: true, _listType: select }); var j 0; var reportTypeValue reportType.optionsreportType.selectedIndex.value; if (reportTypeValue ! SessionConnectionEvent || SC.util.isVersion(null, {major: 22, minor : 9}, currentVersion)) { for (i 0; i getMetaTableFromReportManagerMetaTables(reportTypeValue).Items.length; i++) { if (getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi1.toLowerCase() primaryOrAggregate) { SC.ui.addContent(selectList, $option({ label: getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi3, value: getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi3, title: SC.resreportTypeValue + . + getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi3 + .Definition, _index: j }, getMetaTableFromReportManagerMetaTables(reportTypeValue).Itemsi3)); j++; } } selectList.options0.selected true; pickDiv pickListDivBuilder(selectList, pickList); } return pickDiv; }; switch (fieldSelectionType) { case NotGroupedSelect: return buildPickListDiv(primary, selectFields, reportType); case GroupedGroup: return buildPickListDiv(primary, groupFields, reportType); case GroupedSelect: return buildPickListDiv(aggregate, selectFields, reportType); }};var createReportEditPanelFunc function (reportName, reportLoadFileName, isDirty, validReport, definition) { var reportTypeInput, reportTypeSelection, groupFieldSelection, selectFieldsSelection, aggregateFilterContent, aggregateFilterInput, reportDefinitionContent, filterInput, itemLimitInput, filterExample, aggregateFilterExample; var inputs Session, SessionConnection, SessionConnectionEvent, SessionEvent, SecurityEvent; if (SC.util.isVersion({major: 22, minor : 9}, null, currentVersion)) { inputs Session, SessionConnection, SessionEvent, SecurityEvent; } var reportEditPanel $div({ className: reportEditPanel, id: report + reportName, _isDirty: isDirty, _reportDefinition: definition null ? : definition, _validReport: validReport }, $table( $tr( $td( $div({ id: rawReporter + reportName }, $div({ className: reportBuilderSection }, reportTypeSelection $div({ className: aggregationSection, id: reportTypeSelection + reportName }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.AggregationType.Label), $table( $tr( $td(SC.ui.createRadioButtonOption(span, SC.resReportDownloadBuilder.UngroupedReport.Label, reportType + reportName, ungrouped, false, true)), $td({ id: ungroupedTooltip }, $dfn({ _textResource: InfoIcon.Text, _dataMap: { tooltip: SC.resReportDownloadBuilder.UngroupedReport.Tooltip } })) ), $tr( $td(SC.ui.createRadioButtonOption(span, SC.resReportDownloadBuilder.GroupedReport.Label, reportType + reportName, grouped, false, true)), $td({ id: groupedTooltip }, $dfn({ _textResource: InfoIcon.Text, _dataMap: { tooltip: SC.resReportDownloadBuilder.GroupedReport.Tooltip } })) ) ) ), reportDefinitionContent $div({ id: reportDefinitionContent + reportName }, $div({ className: reportSection }, $div($label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.ReportType.Label)), $div(reportTypeInput $select({ className: reportTypeInput, id: reportType + reportName }, inputs.map(function (reportType) { return $option({ label: reportType, value: reportType }, reportType); }))), $div({ className: ReportExplanation, id: reportExplanation + reportName }, SC.resReportDownloadBuilder.Session.Explanation) ), groupFieldSelection $div({ id: groupFields + reportName, className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.GroupFieldSet.Label) ), selectFieldsSelection $div({ id: selectFields + reportName, className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.SelectFieldSet.Label) ), $div({ className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.Filter.Label), $div(filterInput SC.ui.createElement(INPUT, { className: reportFilterInput, id: filter + reportName, type: text })), filterExample $label({ id: filterExample + reportName, className: filterExample }, SC.resReportDownloadBuilder.Session.Filter.Example) ), aggregateFilterContent $div({ id: aggregateFilterDiv + reportName, className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.AggregateFilter.Label), $div(aggregateFilterInput SC.ui.createElement(INPUT, { className: reportFilterInput, id: aggregateFilter + reportName, type: text })), aggregateFilterExample $label({ id: aggregateFilterExample + reportName, className: filterExample }, SC.resReportDownloadBuilder.Session.AggregateFilter.Example) ), $div({ className: reportSection }, $label({ className: ReportBuilderHeader }, SC.resReportDownloadBuilder.ItemLimit.Label), $div(itemLimitInput SC.ui.createElement(INPUT, { id: itemLimit + reportName, type: number, value: SC.resReportDownloadBuilder.ItemLimit.DefaultValue })) ) ), ) ) ) ) ) ); // initialize display reportDefinitionContent.style.display none; groupFieldSelection.style.display none; aggregateFilterContent.style.display none; // add handlers SC.event.addHandler(aggregateFilterInput, input, checkForReportInputChange(reportName)); SC.event.addHandler(filterInput, input, checkForReportInputChange(reportName)); SC.event.addHandler(itemLimitInput, input, checkForReportInputChange(reportName)); SC.event.addHandler(SC.ui.findDescendent(reportTypeSelection, function (e) { return e.type radio && e.value ungrouped }), click, function () { reportDefinitionContent.style.display block; groupFieldSelection.style.display none; aggregateFilterContent.style.display none; reportTypeSelection.title ; $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(NotGroupedSelect, reportTypeInput, reportName), 1); }); SC.event.addHandler(SC.ui.findDescendent(reportTypeSelection, function (e) { return e.type radio && e.value grouped }), click, function () { reportDefinitionContent.style.display block; groupFieldSelection.style.display block; aggregateFilterContent.style.display block; reportTypeSelection.title ; $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, reportTypeInput, reportName), 1); $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(GroupedSelect, reportTypeInput, reportName), 1); }); SC.event.addHandler(SC.ui.findDescendent(reportTypeSelection, function (e) { return e.type radio && e.value ungrouped }), click, checkForReportInputChange(reportName)); SC.event.addHandler(SC.ui.findDescendent(reportTypeSelection, function (e) { return e.type radio && e.value grouped }), click, checkForReportInputChange(reportName)); var updateGroup function (callback) { $(groupFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(groupFields + reportName), 1) : null; SC.ui.insertChild($(groupFields + reportName), generateReportFieldPickListDiv(GroupedGroup, reportTypeInput, reportName), 1); $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(GroupedSelect, reportTypeInput, reportName), 1); callback(); }; var updateNotGroup function (callback) { $(selectFields + reportName).childNodes.length 2 ? SC.ui.removeChildAt($(selectFields + reportName), 1) : null; SC.ui.insertChild($(selectFields + reportName), generateReportFieldPickListDiv(NotGroupedSelect, reportTypeInput, reportName), 1); callback(); }; // update options in GroupFields and SelectFields dropdown if reportType changes SC.event.addHandler(reportTypeInput, change, function () { $(reportExplanation + reportName).innerHTML SC.resReportDownloadBuilder. + reportTypeInput.optionsreportTypeInput.selectedIndex.value + .Explanation; filterExample.innerHTML SC.resReportDownloadBuilder. + reportTypeInput.optionsreportTypeInput.selectedIndex.value + .Filter.Example; aggregateFilterExample.innerHTML SC.resReportDownloadBuilder. + reportTypeInput.optionsreportTypeInput.selectedIndex.value + .AggregateFilter.Example; reportTypeInput.optionsreportTypeInput.selectedIndex.value if (SC.ui.getSelectedRadioButtonValue(reportTypeSelection) grouped) { updateGroup(checkForReportInputChange(reportName)); } else { updateNotGroup(checkForReportInputChange(reportName)); } }); return reportEditPanel;};var createReportSelectionLinkFunc function (reportName) { return $a({ className: SelectionLink, _commandName: EditReport, _commandArgument: reportName });};var tryRemoveReportFileProc function (reportName) { var index getIndexOfReportFilePathFunc(reportName); if (index ! -1) { SC.ui.removeChildAt($(ReportDownloadBuilderSelectionPanel), index); SC.ui.removeChildAt($(ReportDownloadBuilderEditorPanel), index); if ($(ReportDownloadBuilderSelectionPanel).childNodes.length ! 0) { if (index $(ReportDownloadBuilderSelectionPanel).childNodes.length) { tryEditReportFileProc($(ReportDownloadBuilderSelectionPanel).childNodesindex - 1._commandArgument); } else { tryEditReportFileProc($(ReportDownloadBuilderSelectionPanel).childNodesindex._commandArgument); } } } updateReportViewProc();};var tryEditReportFileProc function (reportName) { var index getIndexOfReportFilePathFunc(reportName); Array.prototype.forEach.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l, i) { SC.ui.setSelected(l, i index); }); Array.prototype.forEach.call($(ReportDownloadBuilderEditorPanel).childNodes, function (p, i) { SC.ui.setVisible(p, i index); }); updateReportViewProc();};var getIndexOfReportFilePathFunc function (reportName) { return Array.prototype.findIndex.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (sl) { return sl._commandArgument reportName; });};var getSelectedReportFileIndexFunc function () { return Array.prototype.findIndex.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (sl) { return SC.ui.isSelected(sl); });};var updateReportViewProc function () { var commandPanel document.querySelector(.ModalDialog.ReportDownloadBuilder .CommandPanel); var index getSelectedReportFileIndexFunc(); //update Clone and Delete command button states if ($(ReportDownloadBuilderSelectionPanel).childNodes.length > 0) { commandPanel.childNodes1.className ; commandPanel.childNodes2.className ; } else { commandPanel.childNodes1.className Disabled; commandPanel.childNodes2.className Disabled; } //update Save command button state if ($(ReportDownloadBuilderEditorPanel).childNodesindex) { if ($(ReportDownloadBuilderEditorPanel).childNodesindex._isDirty) { commandPanel.childNodes3.className ; } else { commandPanel.childNodes3.className Disabled; } } else { commandPanel.childNodes3.className Disabled; } //update Save All command button state if ($(ReportDownloadBuilderEditorPanel).childNodesindex) { var enableSaveAll false; for (var i 0; i $(ReportDownloadBuilderEditorPanel).childNodes.length; i++) { if ($(ReportDownloadBuilderEditorPanel).childNodesi._isDirty) { enableSaveAll true; } else { enableSaveAll enableSaveAll | false; } } if (enableSaveAll) { commandPanel.childNodes4.className ; } else { commandPanel.childNodes4.className Disabled; } } else { commandPanel.childNodes4.className Disabled; } //update Download and Email command button states if ($(ReportDownloadBuilderEditorPanel).childNodesindex) { if ($(ReportDownloadBuilderEditorPanel).childNodesindex._validReport) { commandPanel.childNodes5.className ; commandPanel.childNodes6.className ; } else { commandPanel.childNodes5.className Disabled; commandPanel.childNodes6.className Disabled; } } else { commandPanel.childNodes5.className Disabled; commandPanel.childNodes6.className Disabled; } Array.prototype.forEach.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (sl, i) { var linkContent sl._commandArgument; if ($(ReportDownloadBuilderEditorPanel).childNodesi._isDirty) linkContent + *; SC.ui.setInnerText(sl, linkContent); SC.css.ensureClass(sl, LoadError, sl._status SC.types.ExtensionRuntimeStatus.LoadError); sl.title (SC.util.isNullOrEmpty(sl._loadMessage) ? : sl._loadMessage); });};var getReportDefinitionString function (reportName) { var selectedGroupFields ; var selectedSelectFields ; var reportDefinition; if (SC.ui.getSelectedRadioButtonValue($(reportTypeSelection + reportName)) grouped) { var pListGroup SC.ui.findDescendent($(groupFields + reportName), function (e) { return e._listType pick }); for (i 0; i pListGroup.options.length; i++) { selectedGroupFields.push(pListGroupi.value); } var pListSelect SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); for (i 0; i pListSelect.options.length; i++) { selectedSelectFields.push(pListSelecti.value); } if (pListGroup.options.length 0) { reportDefinition { InvalidGrouped: true, ReportType: $(reportType + reportName).options$(reportType + reportName).selectedIndex.value, GroupFields: , SelectFields: selectedSelectFields, Filter: $(filter + reportName).value.length > 0 ? $(filter + reportName).value : , AggregateFilter: $(aggregateFilter + reportName).value.length > 0 ? $(aggregateFilter + reportName).value : , ItemLimit: $(itemLimit + reportName).value.length > 0 ? $(itemLimit + reportName).value : 10000 }; } else { reportDefinition { ReportType: $(reportType + reportName).options$(reportType + reportName).selectedIndex.value, GroupFields: selectedGroupFields, SelectFields: selectedSelectFields, Filter: $(filter + reportName).value.length > 0 ? $(filter + reportName).value : , AggregateFilter: $(aggregateFilter + reportName).value.length > 0 ? $(aggregateFilter + reportName).value : , ItemLimit: $(itemLimit + reportName).value.length > 0 ? $(itemLimit + reportName).value : 10000 }; } } else if (SC.ui.getSelectedRadioButtonValue($(reportTypeSelection + reportName)) ungrouped) { var pListSelect SC.ui.findDescendent($(selectFields + reportName), function (e) { return e._listType pick }); for (i 0; i pListSelect.options.length; i++) { selectedSelectFields.push(pListSelecti.value); } reportDefinition { ReportType: $(reportType + reportName).options$(reportType + reportName).selectedIndex.value, GroupFields: , SelectFields: selectedSelectFields, Filter: $(filter + reportName).value.length > 0 ? $(filter + reportName).value : , AggregateFilter: , ItemLimit: $(itemLimit + reportName).value.length > 0 ? $(itemLimit + reportName).value : 10000 }; } else { reportDefinition { ReportType: , GroupFields: , SelectFields: , Filter: , AggregateFilter: , ItemLimit: }; } if (reportDefinition.ReportType SecurityEvent) { reportDefinition.Report Security; } return SC.util.getQueryString(reportDefinition);};var downloadReport function (reportName, fileFormat) { if (fileFormat csv) { SC.util.launchUrl(SC.context.scriptBaseUrl + Report.csv + getReportDefinitionString(reportName)); } else { window.open(SC.context.scriptBaseUrl + Report. + fileFormat + getReportDefinitionString(reportName)); }};var getUniqueReportName function (desiredReportName) { var duplicate false; for (var i 0; i $(ReportDownloadBuilderSelectionPanel).childNodes.length; i++) { if (desiredReportName $(ReportDownloadBuilderSelectionPanel).childNodesi._commandArgument) { duplicate true; } } if (duplicate) { var created false; var duplicateIndicator 1; var reportName desiredReportName + - + duplicateIndicator; while (!created) { duplicate false; for (var i 0; i $(ReportDownloadBuilderSelectionPanel).childNodes.length; i++) { if (reportName $(ReportDownloadBuilderSelectionPanel).childNodesi._commandArgument) { duplicate true; } } if (duplicate) { duplicateIndicator++; reportName desiredReportName + - + duplicateIndicator; } else { return reportName; } } } else { return desiredReportName; }};var updateReportDefinition function (reportName) { $(report + reportName)._reportDefinition getReportDefinitionString(reportName);};var makeReportClean function (reportName) { $(report + reportName)._isDirty false;};var startSaveReportFileProc function (reportName) { makeReportClean(reportName); updateReportDefinition(reportName); updateReportViewProc();};SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType AdministrationPage) { eventArgs.buttonDefinitions.push( { commandName: ManageRawReports, text: SC.resReportDownloadBuilder.ButtonText } ); } break; case ReportDownloadBuilderEditorPanel: Array.prototype.push.apply(eventArgs.buttonDefinitions, { commandName: NewReport }, { commandName: CloneReport }, { commandName: DeleteReport }, { commandName: SaveReport }, { commandName: SaveAllReports }, { commandName: DownloadReport }, { commandName: EmailReport } ); break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { var dialog SC.dialog.getModalDialog(); switch (eventArgs.commandName) { case ManageRawReports: editReportProc(); break; case NewReport: if (eventArgs.clickedElement.tagName INPUT) { var unprocessedReportName (eventArgs.clickedElement.value ? SC.resReportDownloadBuilder.NewReportName.DefaultName : eventArgs.clickedElement.value); var reportFile { ReportName: unprocessedReportName, ReportContent: }; var reportName getUniqueReportName(reportFile.ReportName); addReportFileProc(reportName, null, true, false, null); tryEditReportFileProc(reportName); } else { SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { SC.ui.setContents(container, $p(SC.ui.createTextBox({ _commandName: eventArgs.commandName }, false, false, SC.resReportDownloadBuilder.NewReportName.Placeholder)), ); }, function (container) { SC.ui.findDescendentByTag(container, INPUT).focus(); } ); } break; case EditReport: tryEditReportFileProc(eventArgs.commandArgument); break; case DeleteReport: if (eventArgs.commandArgument) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); SC.service.TryDeleteReportDefinitionString(encodeURIComponent(currentSelectionLink._commandArgument), function () { tryRemoveReportFileProc(currentSelectionLink._commandArgument); }); } else { SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); SC.ui.setContents(container, $p(SC.resReportDownloadBuilder.DeleteReport.ConfirmationText), $p($input({ type: button, value: SC.resReportDownloadBuilder.DeleteReport.ButtonText, _commandName: eventArgs.commandName, _commandArgument: true })) ); }, function (container) { if (SC.ui.findDescendentByTag(container, INPUT) ! null) { SC.ui.findDescendentByTag(container, INPUT).focus(); } } ); } break; case SaveReport: var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); var definition getReportDefinitionString(currentSelectionLink._commandArgument); definition definition ! ? definition : ?; SC.service.SaveReportDefinitionString(encodeURIComponent(currentSelectionLink._commandArgument), definition, function () { startSaveReportFileProc(currentSelectionLink._commandArgument); }); break; case SaveAllReports: var selectionLinks $(ReportDownloadBuilderSelectionPanel).childNodes; var reportEditPanels $(ReportDownloadBuilderEditorPanel).childNodes; var reportNamesAndDefinitions ; for (var i 0; i selectionLinks.length; i++) { if (reportEditPanelsi._isDirty) { var definition getReportDefinitionString(selectionLinksi._commandArgument); definition definition ! ? definition : ?; startSaveReportFileProc(selectionLinksi._commandArgument); reportNamesAndDefinitions + encodeURIComponent(selectionLinksi._commandArgument) + definition + SC.resReportDownloadBuilder.Query.Delimiter; } } SC.service.SaveAllReportDefinitionStrings(reportNamesAndDefinitions); break; case CloneReport: if (eventArgs.clickedElement.tagName INPUT) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); var unprocessedReportName (eventArgs.clickedElement.value ? SC.resReportDownloadBuilder.NewReportName.DefaultName : eventArgs.clickedElement.value); var reportFile { ReportName: unprocessedReportName, ReportContent: }; var reportName getUniqueReportName(reportFile.ReportName); var definition getReportDefinitionString(currentSelectionLink._commandArgument); var definitionForAddAndSave definition ! ? definition : ?; var definitionForLoad definitionForAddAndSave.charAt(0) ! ? ? definitionForAddAndSave : definitionForAddAndSave.substring(1); addReportFileProc(reportName, null, false, true, definitionForAddAndSave); loadReportFileProc(reportName, definitionForLoad); tryEditReportFileProc(reportName); SC.service.SaveReportDefinitionString(encodeURIComponent(reportName), definitionForAddAndSave, function () { startSaveReportFileProc(reportName); }); } else { SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { SC.ui.setContents(container, $p(SC.ui.createTextBox({ _commandName: eventArgs.commandName }, false, false, SC.resReportDownloadBuilder.NewReportName.Placeholder)), ); }, function (container) { SC.ui.findDescendentByTag(container, INPUT).focus(); } ); } break; case DownloadReport: SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); var downloadFormatSelection $select({ id: DownloadReportFormatSelector }, CSV, XML, JSON.map(function (downloadFormat) { return $option({ label: downloadFormat, value: downloadFormat.toLowerCase() }, downloadFormat); })); var downloadButton $input({ id: DownloadReportButton, type: button, value: SC.resReportDownloadBuilder.DownloadReport.Button.Text }); var downloadURL $input(); downloadURL.value SC.context.scriptBaseUrl + Report.csv + getReportDefinitionString(currentSelectionLink._commandArgument); SC.ui.addContent(container, $p(downloadFormatSelection, downloadButton), $p(downloadURL), $p( $input({ id: CopyReportDownloadLink, type: button, value: SC.resReportDownloadBuilder.CopyDownloadURL.Button.Text, _eventHandlerMap: { click: function (eventArgs) { downloadURL.select(); try { document.execCommand(copy); SC.ui.setVisible(eventArgs.target.parentNode.lastChild, true); } catch (ex) { // dont care } } } }), $span({ id: CopyReportDownloadLinkSuccess, className: Success, _visible: false, innerHTML: SC.resReportDownloadBuilder.CopySuccessMessage }) ) ); downloadURL.select(); SC.event.addHandler(downloadButton, click, function () { downloadReport(currentSelectionLink._commandArgument, downloadFormatSelection.value); downloadURL.select(); }); SC.event.addHandler(downloadFormatSelection, change, function () { downloadURL.value SC.context.scriptBaseUrl + Report. + downloadFormatSelection.value + getReportDefinitionString(currentSelectionLink._commandArgument); downloadURL.select(); SC.ui.setVisible($(CopyReportDownloadLinkSuccess), false); }); }, function (container) { } ); break; case EmailReport: SC.popout.togglePanel( SC.ui.findDescendent(dialog, function (e) { return e._commandName eventArgs.commandName; }), function (container) { var currentSelectionLink Array.prototype.find.call($(ReportDownloadBuilderSelectionPanel).childNodes, function (l) { return SC.ui.isSelected(l); }); var emailReportToAddress $input({ id: emailReportToAddressInput, type: text, placeholder: SC.resReportDownloadBuilder.EmailReport.Placeholder }); var emailReportButton $input({ id: EmailReportButton, type: button, value: SC.resReportDownloadBuilder.EmailReport.Button.Text }); var emailReportStatusMessage $span({ innerHTML: SC.resCommand.EmailReport.DefaultMessage }); var reportParameters getReportDefinitionString(currentSelectionLink._commandArgument); SC.service.GetReportEmailDefaultToAddress(function (emailToAddress) { emailReportToAddress.value emailToAddress; SC.ui.addContent(container, $p(emailReportToAddress, emailReportButton), $p(emailReportStatusMessage) ); }); SC.event.addHandler(emailReportButton, click, function () { emailReportToAddress.disabled true; emailReportButton.disabled true; SC.service.EmailReport(emailReportToAddress.value, currentSelectionLink.innerHTML, reportParameters, function (response) { emailReportStatusMessage.innerHTML response; emailReportToAddress.disabled false; emailReportButton.disabled false; } ); } ); }, function (container) { } ); break; }});});/script>script>SC.extension.addInitializeProc(850c08be-d904-48d4-977a-5c2fcb277fd4, function (extensionContext) {SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case ExtrasPopoutPanel: if (SC.context.pageType HostPage) eventArgs.buttonDefinitions.push( { commandName: DownloadScreenConnector } ); break; }});SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case DownloadScreenConnector: SC.util.launchUrl(extensionContext.baseUrl + Download.ashx); break; }});});/script>title> Szigetköz.Net - Helpdesk Rendszer/title>/head>body> div classHiddenPanel>/div> script> SC.ui.setVisible(document.body, false); /script> div classOuterPanel> div classHeaderPanel>/div> div classNavigationPanel ArrowNavigation tabindex10>/div> div classMainPanel> div classContentPanel> div> div classWelcomePanel>/div> div classActionPanel>/div> /div> div classInfoPanel>/div> /div> /div> /div> script> SC.context.scriptBaseUrl SC.util.getBaseUrl($(defaultScript).src); /script> script> SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { var session null; var hostAccessToken null; switch (eventArgs.commandName) { case JoinBySessionID: session window.getSessionInfo().Sessions.filter(function (s) { return s.SessionID eventArgs.commandArgument; })0; break; case JoinByTag: var taggedSessionInfo window.getTaggedSessionInfo(eventArgs.commandArgument); hostAccessToken taggedSessionInfo.HostAccessToken; session window.getSessionInfo().Sessions.filter(function (s) { return s.SessionID taggedSessionInfo.SessionID || (taggedSessionInfo.Code && s.Code.toLowerCase() taggedSessionInfo.Code.toLowerCase()); })0; break; } // older IE only allows launching urls on actual clicks and this could be sent by a keystroke if (session && (SC.command.doesClickDispatch(eventArgs.commandElement) || !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 11 }))) { SC.launch.startJoinSession( { session: session, hostAccessToken: hostAccessToken, processType: hostAccessToken ? SC.types.ProcessType.Host : SC.types.ProcessType.Guest }, function (joinInfo, _, onSuccess, onFailure) { onSuccess( SC.util.getClientLaunchParameters( joinInfo.session.SessionID, joinInfo.session.SessionType, joinInfo.session.Name, joinInfo.fieldMap.participantName.value, null, joinInfo.hostAccessToken, joinInfo.processType ) ); } ); } }); SC.event.addGlobalHandler(SC.event.QueryJoinInfo, function (eventArgs) { if (eventArgs.session) { eventArgs.shouldShowPrompt SC.util.getSessionTypeBooleanResource(JoinPanel.{0}PromptVisible, eventArgs.session.SessionType); eventArgs.promptText SC.util.getSessionTypeResource(JoinPanel.{0}PromptMessage, eventArgs.session.SessionType); eventArgs.buttonText SC.util.getSessionTypeResource(JoinPanel.{0}PromptButtonText, eventArgs.session.SessionType); eventArgs.fieldMap.participantName { labelText: SC.util.getSessionTypeResource(JoinPanel.{0}ParticipantNameLabelText, eventArgs.session.SessionType), value: , visible: SC.util.getSessionTypeBooleanResource(JoinPanel.{0}PromptParticipantNameVisible, eventArgs.session.SessionType), }; } }); SC.event.addGlobalHandler(SC.event.QueryParticipantJoinedCount, function (eventArgs) { var sessionInfo window.getSessionInfo(); var session sessionInfo.Sessions.find(function (s) { return s.SessionID eventArgs.clientLaunchParameters.s; }); if (session ! undefined) eventArgs.participantJoinedCount session.ActiveConnections.filter(function (ac) { if (eventArgs.clientLaunchParameters.n) return ac.ProcessType SC.types.ProcessType.Host; return ac.ProcessType SC.types.ProcessType.Guest && ac.ParticipantName eventArgs.clientLaunchParameters.r; }).length; }); SC.event.addGlobalHandler(SC.event.QueryPanels, function (eventArgs) { switch (eventArgs.area) { case GuestActionPanel: eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $div({ className: Loading })); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 1 && sessionInfo null; } }); eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $a({ _commandName: JoinByTag, _commandArgument: DefaultSession, className: GoLink Large, _attributeMap: { aria-label: SC.resGuestActionPanel.ButtonDescription } }), $h2({ _htmlResource: GuestActionPanel.InvitationSession.Heading }), $p({ _htmlResource: GuestActionPanel.InvitationSession.Message }), ); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 3 && previousPassVisibleCount 0 && sessionInfo ! null && sessionInfo.Sessions.find(function (s) { return s.SessionID window.getTaggedSessionInfo(DefaultSession).SessionID; }); } }); eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $h2({ _htmlResource: GuestActionPanel.CodeSession.Heading }), $p({ _htmlResource: GuestActionPanel.CodeSession.Message }), $p({ className: GuestActionBar }, SC.ui.createSearchTextBox({ _commandName: JoinByTag, _commandArgument: DefaultCode, value: window.getTaggedSessionInfo(DefaultCode).Code || }, function (eventArgs) { var sessionCode SC.util.getTrimmedOrNull(SC.event.getElement(eventArgs).value); window.setTaggedSessionInfo(DefaultCode, { Code: sessionCode }); }), $a({ _commandName: JoinByTag, _commandArgument: DefaultCode, className: GoLink Medium, _attributeMap: { aria-label: SC.resGuestActionPanel.ButtonDescription } }), ), ); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 5 && previousPassVisibleCount 0 && sessionInfo ! null && sessionInfo.DoNonPublicCodeSessionsExist; }, refreshProc: function (container, sessionInfo, wasMadeVisible) { var taggedSessionInfo window.getTaggedSessionInfo(DefaultCode); SC.ui.setDisabled( SC.ui.findDescendentByTag(container, A), !sessionInfo.Sessions.find(function (s) { return taggedSessionInfo.Code && s.Code.toLowerCase() taggedSessionInfo.Code.toLowerCase(); }) ); if (wasMadeVisible) SC.ui.findDescendentByTag(container, INPUT).focus(); } }); eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $h2({ _htmlResource: GuestActionPanel.PublicSession.Heading }), $p({ _htmlResource: GuestActionPanel.PublicSession.Message }), $p({ className: GuestActionBar }, $select(), $a({ _commandName: JoinBySessionID, className: GoLink Medium, _attributeMap: { aria-label: SC.resGuestActionPanel.ButtonDescription } }), ), ); SC.event.addHandler(SC.ui.findDescendentByTag(container, SELECT), change, function (eventArgs) { var selectBox SC.event.getElement(eventArgs); SC.ui.findDescendentByTag(container, A)._commandArgument selectBox.optionsselectBox.selectedIndex.value; }); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 5 && previousPassVisibleCount 0 && sessionInfo ! null && sessionInfo.Sessions.filter(function (s) { return s.IsPublic; }).length > 0; }, refreshProc: function (container, sessionInfo, wasMadeVisible) { var selectBox SC.ui.findDescendentByTag(container, SELECT); var link SC.ui.findDescendentByTag(container, A); SC.ui.setContents(selectBox, sessionInfo.Sessions.filter(function (s) { return s.IsPublic; }).map(function (s) { return $option({ value: s.SessionID }, s.Name); }) ); var optionIndex Array.prototype.findIndex.call(selectBox.options, function (o) { return o.value link._commandArgument; }); if (optionIndex ! -1) selectBox.selectedIndex optionIndex; else link._commandArgument selectBox.optionsselectBox.selectedIndex.value; } }); eventArgs.panelDefinitions.push({ initProc: function (container) { SC.ui.setContents(container, $h2({ _htmlResource: GuestActionPanel.NoAvailableSessions.Heading }), $p({ _htmlResource: GuestActionPanel.NoAvailableSessions.Message }), ); }, isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { return pass 8 && previousPassVisibleCount 0; } }); break; } }); SC.event.addGlobalHandler(SC.event.QueryLiveData, function (eventArgs) { var getTaggedValuesFunc function (propertyName) { return Object.keys(window._taggedSessionInfos) .map(function (key) { return window._taggedSessionInfoskey; }) .filter(function (_) { return _propertyName; }) .map(function (_) { return _propertyName; }); } eventArgs.requestInfoMapGuestSessionInfo { sessionCodes: getTaggedValuesFunc(Code), sessionIDs: getTaggedValuesFunc(SessionID), }; }); SC.event.addGlobalHandler(SC.event.PreRender, function () { window._taggedSessionInfos {}; SC.css.ensureClass(document.documentElement, ShowMenu, false); var queryStringMap SC.util.parseQueryString(window.location.search); window.setTaggedSessionInfo(DefaultCode, { Code: queryStringMap.Code }); window.setTaggedSessionInfo(DefaultSession, { SessionID: queryStringMap.Session, HostAccessToken: queryStringMap.HostAccessToken }); var welcomePanel $(.WelcomePanel); var actionPanel $(.ActionPanel); SC.ui.setVisible(welcomePanel, SC.util.getBooleanResource(GuestWelcomePanel.Visible)); SC.ui.setContents(welcomePanel, $h2({ _htmlResource: GuestWelcomePanel.Heading }), $p({ _htmlResource: GuestWelcomePanel.Message }), ); SC.panellist.queryAndInitializePanels(actionPanel); SC.panellist.refreshPanels(actionPanel, null); }); SC.event.addGlobalHandler(SC.event.LiveDataRefreshed, function () { SC.panellist.refreshPanels($(.ActionPanel), window.getSessionInfo()); if (!window._hasJoinedDefault && !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 11 })) { SC.command.dispatchExecuteCommand(window.document.body, window.document.body, window.document.body, JoinByTag, DefaultSession); window._hasJoinedDefault true; } }); /script> script> SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { switch (eventArgs.area) { case TrayIconPanel: eventArgs.buttonDefinitions.push( { commandName: ActionCenter, imageUrl: Images/ActionCenter.svg }, { commandName: Extras, imageUrl: Images/Extras.svg }, { commandName: Applications, imageUrl: Images/Applications.svg } ); break; case ExtrasNavigationPopoutPanel: eventArgs.buttonDefinitions.push( { commandName: NavigateExtensionBrowser } ); break; case ToolsPanel: eventArgs.buttonDefinitions.push( { commandName: Extras, imageUrl: Images/Extras.svg }, { commandName: Login } ); break; case UserPopoutPanel: eventArgs.buttonDefinitions.push( { commandName: NavigateControlPanel }, { commandName: ChangePassword }, { commandName: Logout } ); break; case UserHelpPopoutPanel: if (SC.context.pageType ! GuestPage && SC.context.pageType ! LoginPage) { eventArgs.buttonDefinitions.push({ commandName: GiveFeedback }); for (var i 1; ; i++) { var resourceValue SC.resHelpPanel.Link + i + .Text; if (resourceValue undefined || resourceValue ) break; var url SC.util.sanitizeUrl(SC.resHelpPanel.Link + i + .Url); eventArgs.buttonDefinitions.push({ commandName: NavigateHelpLink, commandArgument: url, text: resourceValue, title: url }); } } break; } }); SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { switch (eventArgs.commandName) { case User: case ActionCenter: eventArgs.isVisible SC.context.isUserAuthenticated; break; case Login: eventArgs.isVisible SC.context.pageType ! SetupWizardPage && !SC.context.isUserAuthenticated && !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 12 }); // Login page doesnt support IE break; case NavigateControlPanel: eventArgs.isVisible !!SC.context.controlPanelUrl; break; case ChangePassword: eventArgs.isVisible SC.context.canChangePassword; break; case Extras: eventArgs.isVisible SC.popout.computePopoutCommandsVisible(eventArgs, , Navigation); break; case Applications: case Help: eventArgs.isVisible SC.popout.computePopoutCommandsVisible(eventArgs); break; case NavigateExtensionBrowser: eventArgs.isVisible SC.context.isUserAdministrator; break; } }); SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { switch (eventArgs.commandName) { case Extras: SC.popout.showPanelFromCommand(eventArgs, null, { subAreas: , Navigation }); break; case Applications: SC.popout.showPanelFromCommand(eventArgs); break; case ActionCenter: SC.popout.showPanelFromCommand(eventArgs, null, { buildProc: function (popoutPanel) { var actionCenterInfo SC.livedata.getResponseInfo(SC.livedata.ActionCenterInfo); SC.ui.setContents(popoutPanel, $div({ className: ActionCenterPanel }, $h2({ _textResource: ActionCenterPanel.Text }), $ul({ className: List, _visible: SC.util.any(actionCenterInfo.ActionItems) }, (actionCenterInfo.ActionItems || ) .map(function (it) { var parsedEventData SC.util.parseEventData(it.Data); return $li({ _eventHandlerMap: { click: function () { window.location.href SC.nav.getHostUrl({ sessionType: it.SessionType, sessionID: it.SessionID, tabName: SC.nav.getHostTabName(it.EventType), tabContext: it.EventID }); }, } }, $img({ src: Images/Notification + SC.util.getEnumValueName(SC.types.SessionEventType, it.EventType) + .svg }), $h3({ className: Type }, SC.resSessionEvent. + SC.util.getEnumValueName(SC.types.SessionEventType, it.EventType) + .Title), $p({ className: Name, title: it.Name }, it.Name), $p({ className: DataContent, title: parsedEventData.content }, parsedEventData.content), $p({ className: Time }, SC.util.formatDateTime(it.Time, { includeRelativeDate: true })), ) }) ), $div({ className: EmptyPanel, _visible: !SC.util.any(actionCenterInfo.ActionItems) }, $p($img({ src: images/EmptyActionCenter.svg })), $h4({ _textResource: ActionCenterPanel.EmptyHeader }), $p({ _textResource: ActionCenterPanel.EmptyText }), ), )); }, }); break; case Login: SC.util.sendToLogin(SC.types.LoginReason.None, false); break; case Logout: SC.util.sendToLogin(SC.types.LoginReason.Logout, false); break; case User: SC.popout.showPanelFromCommand(eventArgs, null, { subAreas: Help, }); break; case NavigateControlPanel: window.open(SC.util.sanitizeUrl(SC.context.controlPanelUrl)); break; case ChangePassword: var params {}; paramsSC.context.loginUserNameParameterName eventArgs.commandArgument; window.location.href SC.context.changePasswordPageUrl + SC.util.getQueryString(params); break; case NavigateHelpLink: window.open(eventArgs.commandArgument); break; case ToggleMenu: SC.css.toggleClass(document.documentElement, ShowMenu); break; case GiveFeedback: SC.dialog.showModalButtonDialog( GiveFeedback, SC.resCommand.GiveFeedback.Text, SC.resCommand.GiveFeedback.ButtonText, Default, function (container) { SC.ui.setContents(container, $div({ _textResource: GiveFeedbackPanel.ReviewLabelText }), $div({ className: RatingSelectionPanel }, Good, Neutral, Bad.map(function (rating) { return $span( $label({ className: rating }, $input({ type: radio, name: rating, value: rating.toLowerCase() }), $div({ className: RadioImage }), $span({ _textResource: GiveFeedbackPanel. + rating + RatingLabelText }), ) ); }) ), $div( $label({ _textResource: GiveFeedbackPanel.EmailLabelText }, $input({ type: email, id: email }), ), ), $div( $label({ _textResource: GiveFeedbackPanel.CommentsLabelText }, SC.ui.createTextBox({ id: commentsBox }, true), ), ), ); }, function (eventArgs) { SC.service.SendFeedback( Array.prototype.map.call(document.querySelectorAll(inputnamerating:checked), function (e) { return e.value; })0, $(commentsBox).value, $(email).value, function () { SC.dialog.showModalMessageBox( SC.resGiveFeedbackPanel.SuccessHeading, SC.resGiveFeedbackPanel.SuccessMessage ); } ); } ); break; case ManageToolbox: SC.toolbox.showToolboxDialog(eventArgs.commandName, eventArgs.commandArgument); break; case Navigate: window.location.href eventArgs.commandArgument; break; case NavigateExtensionBrowser: window.location.href SC.context.administrationPageUrl + ?TabExtensions#ShowExtensionBrowser; break; } }); SC.event.addGlobalHandler(SC.event.QueryNavigationLinks, function (eventArgs) { Array.prototype.push.apply(eventArgs.navigationLinks, SC.context.sessionTypeInfos.map(function (_) { return { href: SC.context.scriptBaseUrl + SC.context.hostPageUrl + # + SC.util.getEnumValueName(SC.types.SessionType, _.sessionType), text: SC.util.getSessionTypeResource(NavigationPanel.{0}LinkText, _.sessionType), imageUrl: SC.util.formatString(Images/Navigation{0}.svg, SC.util.getEnumValueName(SC.types.SessionType, _.sessionType)), sessionType: _.sessionType, } })); if (SC.context.isUserAdministrator) eventArgs.navigationLinks.push({ href: SC.context.scriptBaseUrl + SC.context.administrationPageUrl, text: SC.resNavigationPanel.AdministrationLinkText, imageUrl: Images/NavigationAdministration.svg, }); }); SC.event.addGlobalHandler(SC.event.QueryLiveData, function (eventArgs) { if (SC.context.isUserAuthenticated) SC.livedata.setRequestInfo(eventArgs, SC.livedata.ActionCenterInfo); }); SC.event.addGlobalHandler(SC.event.LiveDataRefreshed, function () { SC.css.ensureClass($(.NavigationPanel .TrayIconPanel .ActionCenter), NonEmpty, SC.util.any(SC.livedata.getResponseInfo(SC.livedata.ActionCenterInfo).ActionItems)); }); SC.event.addGlobalHandler(keydown, function (eventArgs) { if (SC.event.doesKeyEventIndicateTextEntryOrArrowKeyNavigation(eventArgs) && (!document.activeElement || SC.ui.isDefinitelyNotTextEntryElement(document.activeElement))) { var arrowKeyInfo SC.event.getArrowKeyInfo(eventArgs); if (arrowKeyInfo && document.activeElement && SC.css.containsClass(document.activeElement, ArrowNavigation)) { eventArgs.preventDefault(); SC.ui.setHiddenFocusAndClearOthers(); var targetPreviousOrNext arrowKeyInfo.isLeft || arrowKeyInfo.isUp; SC.event.dispatchEvent(document.activeElement, SC.event.KeyNavigation, { currentActiveElement: document.activeElement, currentSelectedElement: SC.ui.findDescendantBreadthFirst(document.activeElement, function (_) { return SC.ui.isSelected(_); }, !targetPreviousOrNext), targetPreviousOrNext: targetPreviousOrNext, arrowKeyInfo: arrowKeyInfo, hasShift: eventArgs.shiftKey, }); } else { var queryTextEntryElementArgs SC.event.dispatchGlobalEvent(SC.event.QueryTextEntryElement, { textEntryElement: null, }); if (queryTextEntryElementArgs.textEntryElement) { if (!SC.event.doesKeyEventIndicateTextEntryNavigation(eventArgs)) queryTextEntryElementArgs.textEntryElement.value ; queryTextEntryElementArgs.textEntryElement.focus(); } } } }); SC.event.addGlobalHandler(SC.event.KeyNavigation, function (eventArgs) { // default handling for key navigation var elementToNavigateTo; if (eventArgs.currentSelectedElement) { elementToNavigateTo SC.ui.getPreviousOrNextElementSibling(eventArgs.currentSelectedElement, eventArgs.targetPreviousOrNext) || eventArgs.currentSelectedElement; while (SC.util.isNullOrEmpty(elementToNavigateTo._commandName) && SC.ui.getPreviousOrNextElementSibling(elementToNavigateTo, eventArgs.targetPreviousOrNext)) { elementToNavigateTo SC.ui.getPreviousOrNextElementSibling(elementToNavigateTo, eventArgs.targetPreviousOrNext); } } else { elementToNavigateTo SC.ui.findDescendantBreadthFirst(eventArgs.currentActiveElement, function (_) { return !SC.util.isNullOrEmpty(_._commandName); }); // this can still be empty } SC.util.tryNavigateToElementUsingCommand(elementToNavigateTo, eventArgs.targetPreviousOrNext, eventArgs.hasShift); }); SC.event.addGlobalHandler(SC.event.PreRender, function () { var resetInactivityProc function () { window._lastNotifyActivityTime new Date().getTime(); if (SC.context.isUserAuthenticated && SC.context.loginAfterInactivityMilliseconds ! 0) { if (window._loginAfterInactivityTimer) window.clearTimeout(window._loginAfterInactivityTimer); window._loginAfterInactivityTimer window.setTimeout(function () { SC.util.sendToLogin(SC.types.LoginReason.IdleTooLong, true); }, Math.min(SC.context.loginAfterInactivityMilliseconds, 2147483647)); //interval stored as 32-bit signed int } }; SC.context.prehandleServiceFailureProc function (error) { if (error.statusCode ! 403) return false; SC.util.sendToLogin(SC.types.LoginReason.PermissionsInsufficient, true); } SC.context.unhandledServiceFailureProc function (error) { SC.dialog.showModalErrorBox(error.detail || error.message); } resetInactivityProc(); SC.ui.initializeWindowActivityTracking(function () { if (new Date().getTime() - window._lastNotifyActivityTime > SC.context.notifyActivityFrequencyMilliseconds) { resetInactivityProc(); SC.service.NotifyActivity(); } }); var parameterlessUrl SC.util.getParameterlessUrl(window.location.href); var createNavigationLinkFunc function (_) { return $div({ _commandName: Navigate, _commandArgument: _.href, _selected: _.href parameterlessUrl }, $img({ src: _.imageUrl }), $span(_.text), ); }; SC.ui.setContents($(.HeaderPanel), $a({ href: SC.context.guestPageUrl, className: LogoIconLink }), $a({ _commandName: ToggleMenu, className: ShowMenuButton }, ), $h1({ className: LogoPanel }), $div({ className: CommandPanel }), ); SC.command.queryAndAddCommandButtons($(.HeaderPanel .CommandPanel), ToolsPanel); SC.command.updateCommandButtonsState($(.HeaderPanel .CommandPanel)); var queryNavigationLinksEventArgs SC.event.dispatchGlobalEvent(SC.event.QueryNavigationLinks, { navigationLinks: }) SC.ui.setContents($(.NavigationPanel), queryNavigationLinksEventArgs.navigationLinks.map(createNavigationLinkFunc), $div({ className: FlexSpacer }), $div({ className: TrayPanelContainer }, $div({ className: TrayIconPanel }), $div({ className: UserMenuButton, _commandName: User }, $span(SC.context.userDisplayName null ? : SC.context.userDisplayName.toUpperCase()0), $span(SC.context.userDisplayName) ), ), ); SC.command.queryAndAddCommandButtons($(.NavigationPanel .TrayIconPanel), TrayIconPanel, null, { descriptionRenderStyle: SC.command.DescriptionRenderStyle.Tooltip }); SC.command.updateCommandButtonsState($(.NavigationPanel .TrayIconPanel)); var setSelectedFunc function () { $$(.NavigationPanel > div) .filter(function (_) { return !SC.util.isNullOrEmpty(_._commandArgument); }) .forEach(function (_) { SC.ui.setSelected(_, window.location.href.startsWith(_._commandArgument)); }); }; SC.event.addHandler(window, hashchange, setSelectedFunc); setSelectedFunc(); SC.livedata.startLoop(); }); var isTouchEnabled (typeof document.documentElement.ontouchstart ! undefined); SC.css.ensureClass(document.documentElement, TouchEnabled, isTouchEnabled); SC.css.ensureClass(document.documentElement, TouchDisabled, !isTouchEnabled); SC.css.ensureClass(document.documentElement, UserAuthenticated, SC.context.isUserAuthenticated); SC.css.ensureClass(document.documentElement, NativeClient, SC.util.isCapable(SC.util.Caps.NativeClient)); SC.css.ensureClass(document.documentElement, HasMasterPanel, $(.MasterPanel)); SC.css.ensureClass(document.documentElement, LogoImageVisible, SC.util.getBooleanResource(LogoPanel.ImageVisible)); SC.css.ensureClass(document.documentElement, LogoIconVisible, SC.util.getBooleanResource(LogoPanel.IconVisible)); SC.css.ensureClass(document.documentElement, LogoHeadingVisible, SC.util.getBooleanResource(LogoPanel.HeadingVisible)); SC.css.ensureClass(document.documentElement, AnimationReduced, SC.util.getBooleanResource(Page.AnimationReduced)); SC.css.ensureClass(document.documentElement, SC.context.pageType, true); SC.extension.initializeExtensions(); SC.event.dispatchGlobalEvent(SC.event.PreRender); SC.util.recordLifeCycleEvent(SC.event.PreRender); SC.ui.setVisible(document.body, true); SC.event.dispatchGlobalEvent(SC.event.PostRender); SC.util.recordLifeCycleEvent(SC.event.PostRender); $$(*tabIndex).forEach(function (_) { SC.event.addHandler(_, mousedown, function () { SC.ui.setHiddenFocusAndClearOthers(_); }); }); if (SC.context.focusedControlID) $(SC.context.focusedControlID).focus(); else if (document.activeElement document.body) { $(.NavigationPanel).focus(); SC.ui.setHiddenFocusAndClearOthers($(.NavigationPanel)); } /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]