MyITGuy
6/24/2025 - 1:17 PM

Flexera Loader.aspx

<%@ Page Language="VB" %>

<script runat="server">

    Public ApAppRoot As String = "/ap/"
    Public Browser As System.Web.HttpBrowserCapabilities
    Public ComputerDiscoveryMethodTimeout As Integer
    Public WebExtensionTimeoutInMilliSecs As Integer = 300

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

        If System.Configuration.ConfigurationManager.AppSettings("ApAppRoot") IsNot Nothing Then
            ApAppRoot = System.Configuration.ConfigurationManager.AppSettings("ApAppRoot").ToString
        End If
        Browser = Request.Browser

        ComputerDiscoveryMethodTimeout = AppPortal.Business.Common.StringExtensions.ToDbInt(SelfService.ESDConfig.getConfigValue("ComputerDiscoveryMethodTimeout"))
        If ComputerDiscoveryMethodTimeout = 0 Then
            ComputerDiscoveryMethodTimeout = 1
        End If
        ComputerDiscoveryMethodTimeout = ComputerDiscoveryMethodTimeout * 1000
        WebExtensionTimeoutInMilliSecs = AppPortal.Business.Common.StringExtensions.ToDbInt(SelfService.ESDConfig.getConfigValue("WebExtensionTimeoutInMilliSecs"))
		' If WebExtensionTimeoutInMilliSecs < ComputerDiscoveryMethodTimeout Then
		' 	WebExtensionTimeoutInMilliSecs = ComputerDiscoveryMethodTimeout

    End Sub

    ReadOnly Property CompanyLogoURL() As String
        Get
            Dim logoUrl As String = AppPortal.Business.Common.StringExtensions.ToDbString(SelfService.ESDConfig.getConfigValue("CompanyLogoURL")).Trim()
            If String.IsNullOrEmpty(logoUrl) Then
                logoUrl = ApAppRoot & "Images/ap-logo.jpg"
            End If

            Return logoUrl

        End Get
    End Property

</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Please wait...</title>
</head>
<body>
    
	<input type="hidden" id="WebExtRequest" name="WebExtRequest" value="ComputerDiscovery" />
    <script src="<% =ApAppRoot%>Scripts/jquery-3.6.4.min.js" type="text/javascript"></script>
    <script src="<% =ApAppRoot%>Scripts/jquery-migrate-3.3.2.min.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">

        var appRoot = "<% =ApAppRoot%>";
        var q = getURLParam("q");
		var detectWebExtensionTimeout = "<% =WebExtensionTimeoutInMilliSecs%>";
		console.log("detectWebExtensionTimeout: " + detectWebExtensionTimeout);
		var compDiscMethodTimeout = "<% =ComputerDiscoveryMethodTimeout%>"
		console.log("compDiscMethodTimeout: " + compDiscMethodTimeout);

        $(window).on("load", function () { // !! Window onLoad cause : document_end -> DOM should be loaded here
			if (q == "webext")
				console.log('Starting the detectWebExtension function in ' + detectWebExtensionTimeout + ' milliseconds.');
			else
				console.log('Starting the detectWebExtension function in 1000 milliseconds.');
			
            if (q === "webext")
                setTimeout(detectWebExtension, detectWebExtensionTimeout); //.3 secs default
            else
                setTimeout(loader, 1000);
        });

        function detectWebExtension() {
            try {
                // Set
                $body = $('body');
                if (document.body.classList.contains("appportalclientinstalled")) {
                    console.log('addon is installed');
					console.log('Starting the loader function in ' + compDiscMethodTimeout + ' milliseconds.');
                    setTimeout(loader, compDiscMethodTimeout);
                } else {
                    console.log('determine browser compatability - <% =Browser.Type%> (<% =Browser.Version%>)');
                    var browser = "<% =Browser.Type.ToLower()%>".search("chrome") >= 0 && <% =Browser.Version%> >= 29
                        ? "Chrome"
                        : "<% =Browser.Type.ToLower()%>".search("firefox") >= 0 && <% =Browser.Version%> >= 50
                            ? "Firefox"
                            : "<% =Browser.Type.ToLower()%>".search("opera") >= 0 && <% =Browser.Version%> >= 16
                                ? "Opera"
                                : "<% =Browser.Type.ToLower()%>".search("edge") >= 0 && <% =Browser.Version%> >= 15
                                    ? "Edge"
                                    : "";
                    switch (browser) {
                        case 'Chrome':
                        case 'Firefox':
                        case 'Opera':
                        case 'Edge':
                            console.log('request install of webextension');
                            //parent.location.href = appRoot + 'Install' + browser + 'WebExtension.aspx';
                            q = getURLParam("f");
                            break;
                        default:
                            console.log('browser/version does not support WebExtensions.');
                            q = getURLParam("f");
                            break;
                    }
					console.log('Starting the loader function in 1000 milliseconds.');
					setTimeout(loader, 1000);
                }
            } catch (e) {
				console.log('Starting the loader function in 1000 milliseconds.');
                setTimeout(loader, 1000);
            }
        }

        var lockLoader = false;
        function loader(q1, data) {
			
			console.log("lockLoader: " + lockLoader);
            if (lockLoader) return;
            lockLoader = true;

			if (!q1)
				console.log('Client to service failure. No detected extension method sent to service. (q1)');
			else
				console.log('Client to service success. Detected extension method sent to service. (q1)');			

			if (!data)
				console.log('Client to service failure. No computer name data sent to service. (data)');
			else
				console.log('Client to service success. Computer name data sent to service. (data)');			

            var cid = undefined;
            try {
                var obj = JSON.parse(data);
                cid = obj.ComputerName;
            } catch (e) { }

			if (!cid)
				console.log('Client to service failure. No computer name in JSON. (cid)');
			else
				console.log('Client to service success. Computer name in JSON. (cid)');			

            var tzo = (new Date()).getTimezoneOffset().toString();
            if (q === "webext" && !cid)
                q = getURLParam("f");
            if (q)
                q = (q.split(","))[0];
            
            switch (q) {
                case 'webext':
                    parent.location.href = appRoot + 'Processor.aspx?d=webext&cid=' + cid + '&tzo=' + tzo;
                    break;

                case 'activex':
                    try {
                        var name = new ActiveXObject("ESDComputerName.ESDGetComputerName");
                        var sSiteCode;
                        try {
                            sSiteCode = name.SiteCode;
                        }
                        catch (err) {
                            sSiteCode = '';
                        }
                        parent.location.href = appRoot + 'Processor.aspx?d=activex&cid=' + name.ComputerName + '&Site=' + sSiteCode + '&tzo=' + tzo;
                    }
                    catch (err) {
                        parent.location.href = appRoot + 'InstallActiveXControl.aspx';
                    }
                    break;

                case 'dns':
                    parent.location.href = appRoot + 'Processor.aspx?d=dns&tzo=' + tzo;
                    break;

                case 'sccm':
                    parent.location.href = appRoot + 'Processor.aspx?d=sccm&tzo=' + tzo;
                    break;

                case 'ad':
                    parent.location.href = appRoot + 'Processor.aspx?d=ad&tzo=' + tzo;
                    break;

                case 'imp':
                    var m = getURLParam("m");
                    parent.location.href = appRoot + 'Processor.aspx?d=imp&cid=' + m + '&Site=&tzo=' + tzo;
                    break;

                case '':
                    var m = getURLParam("m");
                    parent.location.href = appRoot + 'Processor.aspx?d=&cid=' + m + '&Site=&tzo=' + tzo;
                    break;
            }
        }

        function getURLParam(strParamName) {
            var strReturn = "";
            var strHref = window.location.href;
            var startPos = strHref.indexOf("?");
            if (startPos > -1) {
                var endPos = strHref.indexOf("#");
                var strQueryString = (endPos <= startPos)
                    ? strHref.substring(startPos).toLowerCase()
                    : strHref.substring(startPos, endPos).toLowerCase();
                var aQueryString = strQueryString.split("&");
                for (var iParam = 0; iParam < aQueryString.length; iParam++) {
                    if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1) {
                        var aParam = aQueryString[iParam].split("=");
                        strReturn = aParam[1];
                        break;
                    }
                }
            }
            strReturn = decodeURIComponent(strReturn);
            return unescape(strReturn);
        }

    </script>
    
    <form id="form1" runat="server">
        <div style="width: 100%; text-align: center; padding: 120px 0px 120px 0px;">

            <img src="<%=CompanyLogoURL%>" />
            <br /><br/>
            <img src="Images/37-1.gif" />

        </div>
    </form>
</body>
</html>