Returning 2 result(s) out of 2 in 0.112 second(s)

  • 63.143.92.196:1222 (tcp/http) - last seen on 2024-11-07 at 03:18:52 UTC

    • IP
      63.143.92.196
      Network
      63.143.92.0/24
      Device

      <enterprise field>: device.class

      URL

      http://63.143.92.196:1222/login.htm?page=%2F 200

      HTTP Title
      Blue Iris Login
      ASN
      AS33576
      Organization
      DIG001
      Protocol
      http
      Source
      urlscan::redirect
    • This feature requires at least a "Lion View" to unlock. Go to our Pricing page for more.

    • Data MD5
      17a51d730c59786a455b835bd3a62998
      HTTP Header MD5
      5d54868b24920b5e30dd7aae2120a75b
      HTTP Body MD5
      614b6899aa470df49a5cc32628b4f5a4
    • HTTP/1.0 200 OK
      Server: BlueServer/5.4.7.11
      Date: Thu, 07 Nov 2024 03:18:46 GMT
      P3P: CP="CAO COR CURa ADMa DEVa OUR IND ONL COM DEM PRE"
      Access-Control-Allow-Origin: *
      Set-Cookie: session=5849280f33bf73925eac5b7e3fb813d8; path=/
      Connection: close
      Content-Type: text/html; charset=UTF-8
      Content-Length: 16154
      Cache-Control: no-cache, no-store
      X-Frame-Options: SAMEORIGIN
      
      <!DOCTYPE html>
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
      	<link rel="icon" id="ui3launcher1">
      	<link rel="apple-touch-icon" id="ui3launcher2">
      	<meta name="viewport" content="width=device-width, initial-scale=1" />
      	<meta name="apple-mobile-web-app-capable" content="yes"> <!--iOS Safari-->
      	<meta name="apple-mobile-web-app-status-bar-style" content="black">
      	<meta name="mobile-web-app-capable" content="yes"><!--Android Chrome-->
      	<meta name="theme-color" content="#000000">
      	<link rel="manifest" id="ui3manifest">
      	<title>Blue Iris Login</title>
      	<script type="text/javascript">
      		var login_version = "23";
      		var bi_version = "5.4.7.11";
      		var combined_version = login_version + "-" + bi_version;
      		var appPath = "/" + "/".replace(/^\/+|\/+$/g, '');
      		if (!appPath.endsWith("/"))
      			appPath = appPath + "/";
      	</script>
      	<script type="text/javascript">
      		window.onerror = function (msg, url, line, charIdx)
      		{
      			try
      			{
      				var versionStr = "unknown";
      				if (typeof login_version !== "undefined")
      					versionStr = login_version;
      				var biVersionStr = "unknown";
      				if (typeof bi_version !== "undefined")
      					biVersionStr = bi_version;
      				url = url.replace(/\/\/.*?\//, '//censored_hostname/');
      				alert("An unexpected error has occurred in Blue Iris Login (v " + versionStr + " / " + biVersionStr + "). If you wish to report the error, please SCREENSHOT the browser now.\n\n" + msg + "\nat " + url + " [" + line + ":" + charIdx + "]\n" + navigator.userAgent);
      			}
      			catch (ex)
      			{
      				alert(ex);
      			}
      		};
      	</script>
      	<script type="text/javascript">
      		document.getElementById("ui3manifest").href = 'applet/manifest.json?v=' + combined_version;
      		document.getElementById("ui3launcher1").href = 'applet/logos/launcher-icon48.png?v=' + combined_version;
      		document.getElementById("ui3launcher2").href = 'applet/launcher-icon.png?v=' + combined_version;
      	</script>
      	<style type="text/css">
      		body
      		{
      			font-family: sans-serif;
      			background: #212325;
      		}
      
      		#loginLoading
      		{
      			display: none;
      			text-shadow: 0 0 10px rgba(0,0,0,0.3);
      			position: absolute;
      			text-align: center;
      			top: 40%;
      			width: 100%;
      			color: #FFFFFF;
      		}
      
      			#loginLoading h1
      			{
      				margin: 0 0 20px 0;
      				font-size: 32px;
      			}
      
      			#loginLoading div
      			{
      				font-size: 20px;
      			}
      
      		#login
      		{
      			display: none;
      		}
      
      		.checkboxWrapper
      		{
      			max-width: 488px;
      		}
      	</style>
      </head>
      <body>
      	<div id="loginLoading">
      		<h1>Oakmont</h1>
      		<div>Loading login page...</div>
      	</div>
      	<div id="login">
      		<h1>Oakmont</h1>
      		<input id="txtUn" type="text" class="text" placeholder="Username" autocapitalize="off" autocorrect="off" />
      		<input id="txtPw" type="password" class="text" placeholder="Password" onkeypress="return pwKeypress(this, event);" autocapitalize="off" autocorrect="off" />
      		<div class="checkboxWrapper">
      			<input id="cbLoginAutomatically" type="checkbox" class="checkbox" onchange="cbLoginAutomaticallyClicked();" /><label for="cbLoginAutomatically" id="lblLoginAutomatically"><span class="ui"></span>Log in automatically:</label>
      		</div>
      		<div id="status_wrapper_upper"></div>
      		<input id="btnLogin" type="button" class="btn" value="Log in" onclick="login();" />
      		<div id="status_wrapper_lower"><div id="status"></div></div>
      	</div>
      	<script type="text/javascript">
      		var loadingOpacity = 0;
      		function IncreaseLoadingOpacity()
      		{
      			loadingOpacity += 0.05;
      			if (loadingOpacity > 1)
      				loadingOpacity = 1;
      			var ele = document.getElementById('loginLoading');
      			ele.style.display = "block";
      			ele.style.opacity = loadingOpacity;
      			if (loadingOpacity < 1)
      				showLoadingMessageTimeout = setTimeout(IncreaseLoadingOpacity, 33);
      		}
      		var showLoadingMessageTimeout = setTimeout(IncreaseLoadingOpacity, 67);
      
      		document.write('<link href="applet/loginStyles.css?v=' + combined_version + '" rel="stylesheet" />'
      			+ '<script src="applet/loginScripts.js?v=' + combined_version + '"><\/script>');
      	</script>
      	<script type="text/javascript">
      		/* eslint no-extra-parens: 0 */
      		var autologin_timeout_1 = null;
      		var autologin_timeout_2 = null;
      		var existingSession = "5849280f33bf73925eac5b7e3fb813d8";
      		var authStatus = "unknown";
      		var authExempt = "no";
      		var loginSession = "";
      		var isStoredDataLoaded = false;
      		var windowUnloading = false;
      		var cookiesEnabled;
      		var localStorageEnabled;
      
      		/**
      		 * Changes the current URL by removing the specified query string parameter(s) from it.
      		 * @returns {String} Returns null if successful, otherwise returns the new URL if changing the history state failed.
      		 */
      		function NavRemoveUrlParams()
      		{
      			var url = RemoveUrlParams.apply(this, arguments);
      			try { history.replaceState(history.state, "", url); return null; } catch (ex) { return url; }
      		}
      		function RemoveUrlParams()
      		{
      			var s = location.search;
      			for (var i = 0; i < arguments.length; i++)
      			{
      				var param = arguments[i];
      				var rx = new RegExp('(&|\\?)' + param + '=[^&?#%]+', 'gi');
      				s = s.replace(rx, "");
      				while (s.indexOf("&") === 0)
      				{
      					if (s.length > 1)
      						s = s.substr(1);
      					else
      						s = "";
      				}
      				if (s.length > 0 && s.indexOf("?") === -1)
      					s = "?" + s;
      			}
      			return location.origin + location.pathname + s + location.hash;
      		}
      
      		NavRemoveUrlParams("session");
      
      		$(function ()
      		{
      			cookiesEnabled = testCookieFunctionality();
      			localStorageEnabled = isLocalStorageEnabled();
      			var skipAutoLogin = GetPersistedValue("bi_override_disable_auto_login_once") === "1";
      			if (UrlParameters.Get("autologin") === "0")
      			{
      				skipAutoLogin = true;
      				var url = NavRemoveUrlParams("session", "autologin");
      				if (url)
      				{
      					SetPersistedValue("bi_override_disable_auto_login_once", "1");
      					location.href = url;
      					return;
      				}
      			}
      			if (skipAutoLogin)
      			{
      				SetPersistedValue("bi_override_disable_auto_login_once", "0");
      			}
      			var lastUnload = GetPersistedValue("bi_lastunload");
      			if (lastUnload > Date.now())
      				SetPersistedValue("bi_lastunload", 0);
      			else if (!skipAutoLogin)
      				skipAutoLogin = Date.now() - lastUnload < 5000;
      			clearTimeout(showLoadingMessageTimeout);
      			$("#loginLoading").hide();
      			$("#login").show();
      			if (typeof window.JSON === 'undefined')
      			{
      				$("#login").html("<div>Your web browser is too old to use the Blue Iris web interface properly.<br><br>To proceed with this browser, disable the \"Secure only\" requirement within Blue Iris's web server settings.</div>");
      				$("#login").css("color", "#EEEEEE").css("margin", "8px");
      				return;
      			}
      			if (!existingSession || (existingSession.length === 11 && existingSession.startsWith("%") && existingSession.endsWith("%") && existingSession.indexOf("SESSION") === 2))
      			{
      				$("#login").html("<div>Session data was not provided as expected. This login page only works when served by Blue Iris 4.8.2.3 or newer.</div>");
      				$("#login").css("color", "#EEEEEE").css("margin", "8px");
      				return;
      			}
      			if (!localStorageEnabled)
      				$("#cbLoginAutomatically").parent().text("Note: Local Storage is disabled in your browser, so credentials can not be saved.").css("color", "#EEEEEE");
      			SetupLoginContextMenu();
      			SetStatus();
      			$(window).resize(resized);
      			resized();
      			window.onbeforeunload = function ()
      			{
      				windowUnloading = true;
      				cbLoginAutomaticallyClicked();
      				return;
      			};
      			// Handle automatic login
      			if (GetPersistedValue("bi_rememberMe") === "1")
      			{
      				$("#cbLoginAutomatically").attr('checked', 'checked');
      				$("#txtUn").val(Base64.decode(GetPersistedValue("bi_username")));
      				$("#txtPw").val(Base64.decode(GetPersistedValue("bi_password")));
      
      				if (!skipAutoLogin)
      				{
      					if ($("#txtUn").val() !== "" && $("#txtPw").val() !== "")
      					{
      						if (GetAutoLoginInstantly())
      						{
      							if ($("#cbLoginAutomatically").is(":checked"))
      								login();
      						}
      						else
      						{
      							$("#btnLogin").val("Logging in, in 2 seconds");
      							autologin_timeout_1 = setTimeout(function () { $("#btnLogin").val("Logging in, in 1 second"); }, 1000);
      							autologin_timeout_2 = setTimeout(function ()
      							{
      								if ($("#cbLoginAutomatically").is(":checked"))
      									login();
      							}, 2000);
      						}
      					}
      				}
      			}
      			else
      			{
      				$("#cbLoginAutomatically").removeAttr('checked');
      				SetPersistedValue("bi_username", "");
      				SetPersistedValue("bi_password", "");
      			}
      
      			var sessionType = "";
      
      			// authExempt predefined values: no, user, admin, unknown (should not happen)
      			if (authExempt === "user")
      				sessionType = "anonymous user";
      			else if (authExempt === "admin")
      				sessionType = "anonymous admin";
      
      			// authStatus predefined values: unknown, admin, anonymous, user
      			if (authStatus === "admin")
      				sessionType = "existing admin";
      			else if (authStatus === "user")
      				sessionType = "existing user";
      			else if (authStatus === "anonymous")
      				sessionType = "existing anonymous user";
      
      			if (sessionType)
      				SetStatus("An " + sessionType + ' session is available. <a href="javascript:UseAltSession(\'' + sessionType + '\')">Click here to use it.</a>');
      
      			// Set focus on first empty field
      			if (!$("#txtUn").val())
      				$("#txtUn").get(0).focus();
      			else if (!$("#txtPw").val())
      				$("#txtPw").get(0).focus();
      			else
      				$("#btnLogin").get(0).focus();
      
      			isStoredDataLoaded = true;
      		});
      		function login()
      		{
      			cbLoginAutomaticallyClicked();
      			$("#btnLogin").val("Logging in ...");
      			SetStatus();
      			if (authStatus === "unknown")
      				loginSession = existingSession;
      
      			if (!loginSession)
      				authenticateNewSession();
      			else
      				authenticateSession(loginSession);
      		}
      		function authenticateNewSession(user, pass)
      		{
      			ExecJSON({ cmd: "login" }, function (response)
      			{
      				loginSession = response.session;
      				authenticateSession(loginSession, true);
      			}, loginFail);
      		}
      		function authenticateSession(session, isNewSession)
      		{
      			var myResponse = md5($("#txtUn").val() + ":" + session + ":" + $("#txtPw").val());
      			ExecJSON({ cmd: "login", session: session, response: myResponse }, function (response)
      			{
      				if (response.result === "success")
      				{
      					$("#btnLogin").attr("disabled", "disabled").val("Redirecting...");
      					existingSession = response.session;
      					LeaveLoginPage();
      				}
      				else
      				{
      					if ((!response.data || !response.data.reason) && !isNewSession)
      					{
      						// This happens when the session we were trying to authenticate has expired.
      						authenticateNewSession();
      					}
      					else
      					{
      						$("#cbLoginAutomatically").removeAttr('checked');
      						SetPersistedValue("bi_rememberMe", "0");
      						SetPersistedValue("bi_username", "");
      						SetPersistedValue("bi_password", "");
      						$("#btnLogin").val("Log in");
      						HandleError(response.data ? response.data.reason : "Login failed but Blue Iris did not provide a reason.");
      					}
      				}
      			}, loginFail);
      		}
      		function loginFail(jqXHR, textStatus, errorThrown)
      		{
      			HandleError("Unable to contact Blue Iris server");
      			$("#btnLogin").val("Log in");
      		}
      		function UseAltSession(sessionType)
      		{
      			if (!sessionType)
      				alert("Error. Please reload.");
      			else if (sessionType.indexOf("existing") > -1)
      				LeaveLoginPage();
      			else
      			{
      				existingSession = "";
      				LeaveLoginPage();
      			}
      		}
      		function LeaveLoginPage()
      		{
      			var page = UrlParameters.Get("page");
      			if (page.indexOf(appPath) !== 0)
      				page = appPath + page.replace(/^\/+/g, '');
      			page = page.replace(/&session=[^&?#%]+/gi, '');
      			page = page.replace(/\?session=[^&?#%]+/gi, '?');
      			if (existingSession)
      			{
      				page += (page.indexOf("?") < 0 ? "?" : "&") + "session=" + existingSession;
      				if (cookiesEnabled)
      					$.cookie("session", existingSession, { path: "/" });
      			}
      			location.href = page + location.hash;
      		}
      		function cancelAutoLogin()
      		{
      			if (autologin_timeout_1 !== null)
      			{
      				clearTimeout(autologin_timeout_1);
      				autologin_timeout_1 = null;
      			}
      			if (autologin_timeout_2 !== null)
      			{
      				clearTimeout(autologin_timeout_2);
      				autologin_timeout_2 = null;
      			}
      			$("#btnLogin").val(windowUnloading ? "Redirecting..." : "Log in");
      		}
      		function cbLoginAutomaticallyClicked()
      		{
      			cancelAutoLogin();
      			if (!isStoredDataLoaded)
      				return;
      			var isChecked = $("#cbLoginAutomatically").is(":checked");
      			SetPersistedValue("bi_rememberMe", isChecked ? "1" : "0");
      			SetPersistedValue("bi_username", isChecked ? Base64.encode($("#txtUn").val()) : "");
      			SetPersistedValue("bi_password", isChecked ? Base64.encode($("#txtPw").val()) : "");
      		}
      		function GetPersistedValue(key)
      		{
      			var value;
      			if (localStorageEnabled)
      				value = localStorage.getItem(key);
      			if (!value)
      				value = "";
      			return value;
      		}
      		function SetPersistedValue(key, value)
      		{
      			if (localStorageEnabled)
      				return localStorage.setItem(key, value);
      		}
      		function pwKeypress(ele, e)
      		{
      			var keycode;
      			if (window.event) keycode = window.event.keyCode;
      			else if (typeof e !== "undefined" && e) keycode = e.which;
      			else return true;
      
      			if (keycode === 13)
      			{
      				login();
      				return false;
      			}
      			else
      				return true;
      		}
      		function resized()
      		{
      			if ($("#status").is(":visible"))
      			{
      				$("#status").hide();
      				$("#status").css("max-width", $("#login").width() + "px");
      				$("#status").show();
      			}
      			$('#login').css({ position: 'absolute', left: ($(window).width() - $('#login').outerWidth()) / 2, top: ($(window).height() - $('#login').outerHeight()) / 2 });
      			$("#status").css("max-width", $("#login").width() + "px");
      			var heightTotal = 0;
      			$("#login").children().each(function (idx, ele)
      			{
      				heightTotal += $(ele).outerHeight(true);
      			});
      			if (heightTotal > $(window).height())
      			{
      				if ($("#status").parent().attr("id") !== "status_wrapper_upper")
      					$("#status_wrapper_upper").append($("#status"));
      			}
      			else
      			{
      				if ($("#status").parent().attr("id") !== "status_wrapper_lower")
      					$("#status_wrapper_lower").append($("#status"));
      			}
      			$("#lblLoginAutomatically").parent().css("padding-left", (($('#login').outerWidth() - $("#lblLoginAutomatically").outerWidth(true)) / 2) + "px");
      		}
      		function HandleError(error)
      		{
      			SetStatus(error, "#FF6262");
      		}
      		function SetStatus(html, color)
      		{
      			if (typeof html === "undefined" || html === null || html === "")
      			{
      				html = "";
      				$("#status").hide();
      			}
      			else
      				$("#status").show();
      			if (typeof color === "undefined" || color === null || color === "")
      				color = "#FFFFFF";
      			$("#status").html(html);
      			$("#status").css("color", color);
      			resized();
      		}
      		function GetAutoLoginInstantly()
      		{
      			return GetPersistedValue("bi_autoLoginInstant") === "1";
      		}
      		function GetPreferredContextMenuTrigger()
      		{
      			return GetPersistedValue("ui3_contextMenus_longPress") === "1" ? "longpress" : "right";
      		}
      		function SetupLoginContextMenu()
      		{
      			var onTriggerContextMenu = function (e)
      			{
      				if (GetAutoLoginInstantly())
      					$("#autoLoginNoDelay").text("Auto Login: Instant (click to change)");
      				else
      					$("#autoLoginNoDelay").text("Auto Login: Delayed (click to change)");
      				return true;
      			};
      			var onContextMenuAction = function ()
      			{
      				if (this.data.alias === "autoLoginNoDelay")
      					SetPersistedValue("bi_autoLoginInstant", GetAutoLoginInstantly() ? "0" : "1");
      			};
      			var menuOptions =
      			{
      				alias: "cmroot_login", width: "300px", items:
      					[
      						{ text: '<span id="autoLoginNoDelay"></span>', icon: "", alias: "autoLoginNoDelay", action: onContextMenuAction }
      					]
      				, onContextMenu: onTriggerContextMenu
      		
    • {
         "@category" : "datascan",
         "@timestamp" : "2024-11-07T03:18:52.000Z",
         "app" : {
            "extract" : {
               "domain" : [
                  "w3.org"
               ],
               "hostname" : [
                  "www.w3.org"
               ],
               "ip" : [
                  "4.8.2.3",
                  "5.4.7.11"
               ],
               "url" : [
                  "http://www.w3.org/1999/xhtml"
               ]
            },
            "http" : {
               "bodymd5" : "614b6899aa470df49a5cc32628b4f5a4",
               "bodymmh3" : 206361390,
               "headermd5" : "5d54868b24920b5e30dd7aae2120a75b",
               "headermmh3" : -1062942104,
               "title" : "Blue Iris Login"
            },
            "length" : 16384
         },
         "asn" : "AS33576",
         "city" : "Kingston",
         "country" : "JM",
         "data" : "HTTP/1.0 200 OK\r\nServer: BlueServer/5.4.7.11\r\nDate: Thu, 07 Nov 2024 03:18:46 GMT\r\nP3P: CP=\"CAO COR CURa ADMa DEVa OUR IND ONL COM DEM PRE\"\r\nAccess-Control-Allow-Origin: *\r\nSet-Cookie: session=5849280f33bf73925eac5b7e3fb813d8; path=/\r\nConnection: close\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 16154\r\nCache-Control: no-cache, no-store\r\nX-Frame-Options: SAMEORIGIN\r\n\r\n<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\r\n\t<link rel=\"icon\" id=\"ui3launcher1\">\r\n\t<link rel=\"apple-touch-icon\" id=\"ui3launcher2\">\r\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n\t<meta name=\"apple-mobile-web-app-capable\" content=\"yes\"> <!--iOS Safari-->\r\n\t<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\r\n\t<meta name=\"mobile-web-app-capable\" content=\"yes\"><!--Android Chrome-->\r\n\t<meta name=\"theme-color\" content=\"#000000\">\r\n\t<link rel=\"manifest\" id=\"ui3manifest\">\r\n\t<title>Blue Iris Login</title>\r\n\t<script type=\"text/javascript\">\r\n\t\tvar login_version = \"23\";\r\n\t\tvar bi_version = \"5.4.7.11\";\r\n\t\tvar combined_version = login_version + \"-\" + bi_version;\r\n\t\tvar appPath = \"/\" + \"/\".replace(/^\\/+|\\/+$/g, '');\r\n\t\tif (!appPath.endsWith(\"/\"))\r\n\t\t\tappPath = appPath + \"/\";\r\n\t</script>\r\n\t<script type=\"text/javascript\">\r\n\t\twindow.onerror = function (msg, url, line, charIdx)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tvar versionStr = \"unknown\";\r\n\t\t\t\tif (typeof login_version !== \"undefined\")\r\n\t\t\t\t\tversionStr = login_version;\r\n\t\t\t\tvar biVersionStr = \"unknown\";\r\n\t\t\t\tif (typeof bi_version !== \"undefined\")\r\n\t\t\t\t\tbiVersionStr = bi_version;\r\n\t\t\t\turl = url.replace(/\\/\\/.*?\\//, '//censored_hostname/');\r\n\t\t\t\talert(\"An unexpected error has occurred in Blue Iris Login (v \" + versionStr + \" / \" + biVersionStr + \"). If you wish to report the error, please SCREENSHOT the browser now.\\n\\n\" + msg + \"\\nat \" + url + \" [\" + line + \":\" + charIdx + \"]\\n\" + navigator.userAgent);\r\n\t\t\t}\r\n\t\t\tcatch (ex)\r\n\t\t\t{\r\n\t\t\t\talert(ex);\r\n\t\t\t}\r\n\t\t};\r\n\t</script>\r\n\t<script type=\"text/javascript\">\r\n\t\tdocument.getElementById(\"ui3manifest\").href = 'applet/manifest.json?v=' + combined_version;\r\n\t\tdocument.getElementById(\"ui3launcher1\").href = 'applet/logos/launcher-icon48.png?v=' + combined_version;\r\n\t\tdocument.getElementById(\"ui3launcher2\").href = 'applet/launcher-icon.png?v=' + combined_version;\r\n\t</script>\r\n\t<style type=\"text/css\">\r\n\t\tbody\r\n\t\t{\r\n\t\t\tfont-family: sans-serif;\r\n\t\t\tbackground: #212325;\r\n\t\t}\r\n\r\n\t\t#loginLoading\r\n\t\t{\r\n\t\t\tdisplay: none;\r\n\t\t\ttext-shadow: 0 0 10px rgba(0,0,0,0.3);\r\n\t\t\tposition: absolute;\r\n\t\t\ttext-align: center;\r\n\t\t\ttop: 40%;\r\n\t\t\twidth: 100%;\r\n\t\t\tcolor: #FFFFFF;\r\n\t\t}\r\n\r\n\t\t\t#loginLoading h1\r\n\t\t\t{\r\n\t\t\t\tmargin: 0 0 20px 0;\r\n\t\t\t\tfont-size: 32px;\r\n\t\t\t}\r\n\r\n\t\t\t#loginLoading div\r\n\t\t\t{\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\r\n\t\t#login\r\n\t\t{\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\r\n\t\t.checkboxWrapper\r\n\t\t{\r\n\t\t\tmax-width: 488px;\r\n\t\t}\r\n\t</style>\r\n</head>\r\n<body>\r\n\t<div id=\"loginLoading\">\r\n\t\t<h1>Oakmont</h1>\r\n\t\t<div>Loading login page...</div>\r\n\t</div>\r\n\t<div id=\"login\">\r\n\t\t<h1>Oakmont</h1>\r\n\t\t<input id=\"txtUn\" type=\"text\" class=\"text\" placeholder=\"Username\" autocapitalize=\"off\" autocorrect=\"off\" />\r\n\t\t<input id=\"txtPw\" type=\"password\" class=\"text\" placeholder=\"Password\" onkeypress=\"return pwKeypress(this, event);\" autocapitalize=\"off\" autocorrect=\"off\" />\r\n\t\t<div class=\"checkboxWrapper\">\r\n\t\t\t<input id=\"cbLoginAutomatically\" type=\"checkbox\" class=\"checkbox\" onchange=\"cbLoginAutomaticallyClicked();\" /><label for=\"cbLoginAutomatically\" id=\"lblLoginAutomatically\"><span class=\"ui\"></span>Log in automatically:</label>\r\n\t\t</div>\r\n\t\t<div id=\"status_wrapper_upper\"></div>\r\n\t\t<input id=\"btnLogin\" type=\"button\" class=\"btn\" value=\"Log in\" onclick=\"login();\" />\r\n\t\t<div id=\"status_wrapper_lower\"><div id=\"status\"></div></div>\r\n\t</div>\r\n\t<script type=\"text/javascript\">\r\n\t\tvar loadingOpacity = 0;\r\n\t\tfunction IncreaseLoadingOpacity()\r\n\t\t{\r\n\t\t\tloadingOpacity += 0.05;\r\n\t\t\tif (loadingOpacity > 1)\r\n\t\t\t\tloadingOpacity = 1;\r\n\t\t\tvar ele = document.getElementById('loginLoading');\r\n\t\t\tele.style.display = \"block\";\r\n\t\t\tele.style.opacity = loadingOpacity;\r\n\t\t\tif (loadingOpacity < 1)\r\n\t\t\t\tshowLoadingMessageTimeout = setTimeout(IncreaseLoadingOpacity, 33);\r\n\t\t}\r\n\t\tvar showLoadingMessageTimeout = setTimeout(IncreaseLoadingOpacity, 67);\r\n\r\n\t\tdocument.write('<link href=\"applet/loginStyles.css?v=' + combined_version + '\" rel=\"stylesheet\" />'\r\n\t\t\t+ '<script src=\"applet/loginScripts.js?v=' + combined_version + '\"><\\/script>');\r\n\t</script>\r\n\t<script type=\"text/javascript\">\r\n\t\t/* eslint no-extra-parens: 0 */\r\n\t\tvar autologin_timeout_1 = null;\r\n\t\tvar autologin_timeout_2 = null;\r\n\t\tvar existingSession = \"5849280f33bf73925eac5b7e3fb813d8\";\r\n\t\tvar authStatus = \"unknown\";\r\n\t\tvar authExempt = \"no\";\r\n\t\tvar loginSession = \"\";\r\n\t\tvar isStoredDataLoaded = false;\r\n\t\tvar windowUnloading = false;\r\n\t\tvar cookiesEnabled;\r\n\t\tvar localStorageEnabled;\r\n\r\n\t\t/**\r\n\t\t * Changes the current URL by removing the specified query string parameter(s) from it.\r\n\t\t * @returns {String} Returns null if successful, otherwise returns the new URL if changing the history state failed.\r\n\t\t */\r\n\t\tfunction NavRemoveUrlParams()\r\n\t\t{\r\n\t\t\tvar url = RemoveUrlParams.apply(this, arguments);\r\n\t\t\ttry { history.replaceState(history.state, \"\", url); return null; } catch (ex) { return url; }\r\n\t\t}\r\n\t\tfunction RemoveUrlParams()\r\n\t\t{\r\n\t\t\tvar s = location.search;\r\n\t\t\tfor (var i = 0; i < arguments.length; i++)\r\n\t\t\t{\r\n\t\t\t\tvar param = arguments[i];\r\n\t\t\t\tvar rx = new RegExp('(&|\\\\?)' + param + '=[^&?#%]+', 'gi');\r\n\t\t\t\ts = s.replace(rx, \"\");\r\n\t\t\t\twhile (s.indexOf(\"&\") === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (s.length > 1)\r\n\t\t\t\t\t\ts = s.substr(1);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\ts = \"\";\r\n\t\t\t\t}\r\n\t\t\t\tif (s.length > 0 && s.indexOf(\"?\") === -1)\r\n\t\t\t\t\ts = \"?\" + s;\r\n\t\t\t}\r\n\t\t\treturn location.origin + location.pathname + s + location.hash;\r\n\t\t}\r\n\r\n\t\tNavRemoveUrlParams(\"session\");\r\n\r\n\t\t$(function ()\r\n\t\t{\r\n\t\t\tcookiesEnabled = testCookieFunctionality();\r\n\t\t\tlocalStorageEnabled = isLocalStorageEnabled();\r\n\t\t\tvar skipAutoLogin = GetPersistedValue(\"bi_override_disable_auto_login_once\") === \"1\";\r\n\t\t\tif (UrlParameters.Get(\"autologin\") === \"0\")\r\n\t\t\t{\r\n\t\t\t\tskipAutoLogin = true;\r\n\t\t\t\tvar url = NavRemoveUrlParams(\"session\", \"autologin\");\r\n\t\t\t\tif (url)\r\n\t\t\t\t{\r\n\t\t\t\t\tSetPersistedValue(\"bi_override_disable_auto_login_once\", \"1\");\r\n\t\t\t\t\tlocation.href = url;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (skipAutoLogin)\r\n\t\t\t{\r\n\t\t\t\tSetPersistedValue(\"bi_override_disable_auto_login_once\", \"0\");\r\n\t\t\t}\r\n\t\t\tvar lastUnload = GetPersistedValue(\"bi_lastunload\");\r\n\t\t\tif (lastUnload > Date.now())\r\n\t\t\t\tSetPersistedValue(\"bi_lastunload\", 0);\r\n\t\t\telse if (!skipAutoLogin)\r\n\t\t\t\tskipAutoLogin = Date.now() - lastUnload < 5000;\r\n\t\t\tclearTimeout(showLoadingMessageTimeout);\r\n\t\t\t$(\"#loginLoading\").hide();\r\n\t\t\t$(\"#login\").show();\r\n\t\t\tif (typeof window.JSON === 'undefined')\r\n\t\t\t{\r\n\t\t\t\t$(\"#login\").html(\"<div>Your web browser is too old to use the Blue Iris web interface properly.<br><br>To proceed with this browser, disable the \\\"Secure only\\\" requirement within Blue Iris's web server settings.</div>\");\r\n\t\t\t\t$(\"#login\").css(\"color\", \"#EEEEEE\").css(\"margin\", \"8px\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!existingSession || (existingSession.length === 11 && existingSession.startsWith(\"%\") && existingSession.endsWith(\"%\") && existingSession.indexOf(\"SESSION\") === 2))\r\n\t\t\t{\r\n\t\t\t\t$(\"#login\").html(\"<div>Session data was not provided as expected. This login page only works when served by Blue Iris 4.8.2.3 or newer.</div>\");\r\n\t\t\t\t$(\"#login\").css(\"color\", \"#EEEEEE\").css(\"margin\", \"8px\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!localStorageEnabled)\r\n\t\t\t\t$(\"#cbLoginAutomatically\").parent().text(\"Note: Local Storage is disabled in your browser, so credentials can not be saved.\").css(\"color\", \"#EEEEEE\");\r\n\t\t\tSetupLoginContextMenu();\r\n\t\t\tSetStatus();\r\n\t\t\t$(window).resize(resized);\r\n\t\t\tresized();\r\n\t\t\twindow.onbeforeunload = function ()\r\n\t\t\t{\r\n\t\t\t\twindowUnloading = true;\r\n\t\t\t\tcbLoginAutomaticallyClicked();\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\t\t\t// Handle automatic login\r\n\t\t\tif (GetPersistedValue(\"bi_rememberMe\") === \"1\")\r\n\t\t\t{\r\n\t\t\t\t$(\"#cbLoginAutomatically\").attr('checked', 'checked');\r\n\t\t\t\t$(\"#txtUn\").val(Base64.decode(GetPersistedValue(\"bi_username\")));\r\n\t\t\t\t$(\"#txtPw\").val(Base64.decode(GetPersistedValue(\"bi_password\")));\r\n\r\n\t\t\t\tif (!skipAutoLogin)\r\n\t\t\t\t{\r\n\t\t\t\t\tif ($(\"#txtUn\").val() !== \"\" && $(\"#txtPw\").val() !== \"\")\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (GetAutoLoginInstantly())\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif ($(\"#cbLoginAutomatically\").is(\":checked\"))\r\n\t\t\t\t\t\t\t\tlogin();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t$(\"#btnLogin\").val(\"Logging in, in 2 seconds\");\r\n\t\t\t\t\t\t\tautologin_timeout_1 = setTimeout(function () { $(\"#btnLogin\").val(\"Logging in, in 1 second\"); }, 1000);\r\n\t\t\t\t\t\t\tautologin_timeout_2 = setTimeout(function ()\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif ($(\"#cbLoginAutomatically\").is(\":checked\"))\r\n\t\t\t\t\t\t\t\t\tlogin();\r\n\t\t\t\t\t\t\t}, 2000);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t$(\"#cbLoginAutomatically\").removeAttr('checked');\r\n\t\t\t\tSetPersistedValue(\"bi_username\", \"\");\r\n\t\t\t\tSetPersistedValue(\"bi_password\", \"\");\r\n\t\t\t}\r\n\r\n\t\t\tvar sessionType = \"\";\r\n\r\n\t\t\t// authExempt predefined values: no, user, admin, unknown (should not happen)\r\n\t\t\tif (authExempt === \"user\")\r\n\t\t\t\tsessionType = \"anonymous user\";\r\n\t\t\telse if (authExempt === \"admin\")\r\n\t\t\t\tsessionType = \"anonymous admin\";\r\n\r\n\t\t\t// authStatus predefined values: unknown, admin, anonymous, user\r\n\t\t\tif (authStatus === \"admin\")\r\n\t\t\t\tsessionType = \"existing admin\";\r\n\t\t\telse if (authStatus === \"user\")\r\n\t\t\t\tsessionType = \"existing user\";\r\n\t\t\telse if (authStatus === \"anonymous\")\r\n\t\t\t\tsessionType = \"existing anonymous user\";\r\n\r\n\t\t\tif (sessionType)\r\n\t\t\t\tSetStatus(\"An \" + sessionType + ' session is available. <a href=\"javascript:UseAltSession(\\'' + sessionType + '\\')\">Click here to use it.</a>');\r\n\r\n\t\t\t// Set focus on first empty field\r\n\t\t\tif (!$(\"#txtUn\").val())\r\n\t\t\t\t$(\"#txtUn\").get(0).focus();\r\n\t\t\telse if (!$(\"#txtPw\").val())\r\n\t\t\t\t$(\"#txtPw\").get(0).focus();\r\n\t\t\telse\r\n\t\t\t\t$(\"#btnLogin\").get(0).focus();\r\n\r\n\t\t\tisStoredDataLoaded = true;\r\n\t\t});\r\n\t\tfunction login()\r\n\t\t{\r\n\t\t\tcbLoginAutomaticallyClicked();\r\n\t\t\t$(\"#btnLogin\").val(\"Logging in ...\");\r\n\t\t\tSetStatus();\r\n\t\t\tif (authStatus === \"unknown\")\r\n\t\t\t\tloginSession = existingSession;\r\n\r\n\t\t\tif (!loginSession)\r\n\t\t\t\tauthenticateNewSession();\r\n\t\t\telse\r\n\t\t\t\tauthenticateSession(loginSession);\r\n\t\t}\r\n\t\tfunction authenticateNewSession(user, pass)\r\n\t\t{\r\n\t\t\tExecJSON({ cmd: \"login\" }, function (response)\r\n\t\t\t{\r\n\t\t\t\tloginSession = response.session;\r\n\t\t\t\tauthenticateSession(loginSession, true);\r\n\t\t\t}, loginFail);\r\n\t\t}\r\n\t\tfunction authenticateSession(session, isNewSession)\r\n\t\t{\r\n\t\t\tvar myResponse = md5($(\"#txtUn\").val() + \":\" + session + \":\" + $(\"#txtPw\").val());\r\n\t\t\tExecJSON({ cmd: \"login\", session: session, response: myResponse }, function (response)\r\n\t\t\t{\r\n\t\t\t\tif (response.result === \"success\")\r\n\t\t\t\t{\r\n\t\t\t\t\t$(\"#btnLogin\").attr(\"disabled\", \"disabled\").val(\"Redirecting...\");\r\n\t\t\t\t\texistingSession = response.session;\r\n\t\t\t\t\tLeaveLoginPage();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif ((!response.data || !response.data.reason) && !isNewSession)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// This happens when the session we were trying to authenticate has expired.\r\n\t\t\t\t\t\tauthenticateNewSession();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t$(\"#cbLoginAutomatically\").removeAttr('checked');\r\n\t\t\t\t\t\tSetPersistedValue(\"bi_rememberMe\", \"0\");\r\n\t\t\t\t\t\tSetPersistedValue(\"bi_username\", \"\");\r\n\t\t\t\t\t\tSetPersistedValue(\"bi_password\", \"\");\r\n\t\t\t\t\t\t$(\"#btnLogin\").val(\"Log in\");\r\n\t\t\t\t\t\tHandleError(response.data ? response.data.reason : \"Login failed but Blue Iris did not provide a reason.\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, loginFail);\r\n\t\t}\r\n\t\tfunction loginFail(jqXHR, textStatus, errorThrown)\r\n\t\t{\r\n\t\t\tHandleError(\"Unable to contact Blue Iris server\");\r\n\t\t\t$(\"#btnLogin\").val(\"Log in\");\r\n\t\t}\r\n\t\tfunction UseAltSession(sessionType)\r\n\t\t{\r\n\t\t\tif (!sessionType)\r\n\t\t\t\talert(\"Error. Please reload.\");\r\n\t\t\telse if (sessionType.indexOf(\"existing\") > -1)\r\n\t\t\t\tLeaveLoginPage();\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\texistingSession = \"\";\r\n\t\t\t\tLeaveLoginPage();\r\n\t\t\t}\r\n\t\t}\r\n\t\tfunction LeaveLoginPage()\r\n\t\t{\r\n\t\t\tvar page = UrlParameters.Get(\"page\");\r\n\t\t\tif (page.indexOf(appPath) !== 0)\r\n\t\t\t\tpage = appPath + page.replace(/^\\/+/g, '');\r\n\t\t\tpage = page.replace(/&session=[^&?#%]+/gi, '');\r\n\t\t\tpage = page.replace(/\\?session=[^&?#%]+/gi, '?');\r\n\t\t\tif (existingSession)\r\n\t\t\t{\r\n\t\t\t\tpage += (page.indexOf(\"?\") < 0 ? \"?\" : \"&\") + \"session=\" + existingSession;\r\n\t\t\t\tif (cookiesEnabled)\r\n\t\t\t\t\t$.cookie(\"session\", existingSession, { path: \"/\" });\r\n\t\t\t}\r\n\t\t\tlocation.href = page + location.hash;\r\n\t\t}\r\n\t\tfunction cancelAutoLogin()\r\n\t\t{\r\n\t\t\tif (autologin_timeout_1 !== null)\r\n\t\t\t{\r\n\t\t\t\tclearTimeout(autologin_timeout_1);\r\n\t\t\t\tautologin_timeout_1 = null;\r\n\t\t\t}\r\n\t\t\tif (autologin_timeout_2 !== null)\r\n\t\t\t{\r\n\t\t\t\tclearTimeout(autologin_timeout_2);\r\n\t\t\t\tautologin_timeout_2 = null;\r\n\t\t\t}\r\n\t\t\t$(\"#btnLogin\").val(windowUnloading ? \"Redirecting...\" : \"Log in\");\r\n\t\t}\r\n\t\tfunction cbLoginAutomaticallyClicked()\r\n\t\t{\r\n\t\t\tcancelAutoLogin();\r\n\t\t\tif (!isStoredDataLoaded)\r\n\t\t\t\treturn;\r\n\t\t\tvar isChecked = $(\"#cbLoginAutomatically\").is(\":checked\");\r\n\t\t\tSetPersistedValue(\"bi_rememberMe\", isChecked ? \"1\" : \"0\");\r\n\t\t\tSetPersistedValue(\"bi_username\", isChecked ? Base64.encode($(\"#txtUn\").val()) : \"\");\r\n\t\t\tSetPersistedValue(\"bi_password\", isChecked ? Base64.encode($(\"#txtPw\").val()) : \"\");\r\n\t\t}\r\n\t\tfunction GetPersistedValue(key)\r\n\t\t{\r\n\t\t\tvar value;\r\n\t\t\tif (localStorageEnabled)\r\n\t\t\t\tvalue = localStorage.getItem(key);\r\n\t\t\tif (!value)\r\n\t\t\t\tvalue = \"\";\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\tfunction SetPersistedValue(key, value)\r\n\t\t{\r\n\t\t\tif (localStorageEnabled)\r\n\t\t\t\treturn localStorage.setItem(key, value);\r\n\t\t}\r\n\t\tfunction pwKeypress(ele, e)\r\n\t\t{\r\n\t\t\tvar keycode;\r\n\t\t\tif (window.event) keycode = window.event.keyCode;\r\n\t\t\telse if (typeof e !== \"undefined\" && e) keycode = e.which;\r\n\t\t\telse return true;\r\n\r\n\t\t\tif (keycode === 13)\r\n\t\t\t{\r\n\t\t\t\tlogin();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\t\tfunction resized()\r\n\t\t{\r\n\t\t\tif ($(\"#status\").is(\":visible\"))\r\n\t\t\t{\r\n\t\t\t\t$(\"#status\").hide();\r\n\t\t\t\t$(\"#status\").css(\"max-width\", $(\"#login\").width() + \"px\");\r\n\t\t\t\t$(\"#status\").show();\r\n\t\t\t}\r\n\t\t\t$('#login').css({ position: 'absolute', left: ($(window).width() - $('#login').outerWidth()) / 2, top: ($(window).height() - $('#login').outerHeight()) / 2 });\r\n\t\t\t$(\"#status\").css(\"max-width\", $(\"#login\").width() + \"px\");\r\n\t\t\tvar heightTotal = 0;\r\n\t\t\t$(\"#login\").children().each(function (idx, ele)\r\n\t\t\t{\r\n\t\t\t\theightTotal += $(ele).outerHeight(true);\r\n\t\t\t});\r\n\t\t\tif (heightTotal > $(window).height())\r\n\t\t\t{\r\n\t\t\t\tif ($(\"#status\").parent().attr(\"id\") !== \"status_wrapper_upper\")\r\n\t\t\t\t\t$(\"#status_wrapper_upper\").append($(\"#status\"));\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif ($(\"#status\").parent().attr(\"id\") !== \"status_wrapper_lower\")\r\n\t\t\t\t\t$(\"#status_wrapper_lower\").append($(\"#status\"));\r\n\t\t\t}\r\n\t\t\t$(\"#lblLoginAutomatically\").parent().css(\"padding-left\", (($('#login').outerWidth() - $(\"#lblLoginAutomatically\").outerWidth(true)) / 2) + \"px\");\r\n\t\t}\r\n\t\tfunction HandleError(error)\r\n\t\t{\r\n\t\t\tSetStatus(error, \"#FF6262\");\r\n\t\t}\r\n\t\tfunction SetStatus(html, color)\r\n\t\t{\r\n\t\t\tif (typeof html === \"undefined\" || html === null || html === \"\")\r\n\t\t\t{\r\n\t\t\t\thtml = \"\";\r\n\t\t\t\t$(\"#status\").hide();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\t$(\"#status\").show();\r\n\t\t\tif (typeof color === \"undefined\" || color === null || color === \"\")\r\n\t\t\t\tcolor = \"#FFFFFF\";\r\n\t\t\t$(\"#status\").html(html);\r\n\t\t\t$(\"#status\").css(\"color\", color);\r\n\t\t\tresized();\r\n\t\t}\r\n\t\tfunction GetAutoLoginInstantly()\r\n\t\t{\r\n\t\t\treturn GetPersistedValue(\"bi_autoLoginInstant\") === \"1\";\r\n\t\t}\r\n\t\tfunction GetPreferredContextMenuTrigger()\r\n\t\t{\r\n\t\t\treturn GetPersistedValue(\"ui3_contextMenus_longPress\") === \"1\" ? \"longpress\" : \"right\";\r\n\t\t}\r\n\t\tfunction SetupLoginContextMenu()\r\n\t\t{\r\n\t\t\tvar onTriggerContextMenu = function (e)\r\n\t\t\t{\r\n\t\t\t\tif (GetAutoLoginInstantly())\r\n\t\t\t\t\t$(\"#autoLoginNoDelay\").text(\"Auto Login: Instant (click to change)\");\r\n\t\t\t\telse\r\n\t\t\t\t\t$(\"#autoLoginNoDelay\").text(\"Auto Login: Delayed (click to change)\");\r\n\t\t\t\treturn true;\r\n\t\t\t};\r\n\t\t\tvar onContextMenuAction = function ()\r\n\t\t\t{\r\n\t\t\t\tif (this.data.alias === \"autoLoginNoDelay\")\r\n\t\t\t\t\tSetPersistedValue(\"bi_autoLoginInstant\", GetAutoLoginInstantly() ? \"0\" : \"1\");\r\n\t\t\t};\r\n\t\t\tvar menuOptions =\r\n\t\t\t{\r\n\t\t\t\talias: \"cmroot_login\", width: \"300px\", items:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{ text: '<span id=\"autoLoginNoDelay\"></span>', icon: \"\", alias: \"autoLoginNoDelay\", action: onContextMenuAction }\r\n\t\t\t\t\t]\r\n\t\t\t\t, onContextMenu: onTriggerContextMenu\r\n\t\t",
         "datamd5" : "17a51d730c59786a455b835bd3a62998",
         "datammh3" : -686350018,
         "device" : {
            "class" : "<enterprise field>: device.class"
         },
         "forward" : "63.143.92.196",
         "geolocus" : {
            "asn" : "AS33576",
            "continent" : "NA",
            "continentname" : "North America",
            "country" : "JM",
            "countryname" : "Jamaica",
            "domain" : [
               "digicelbroadband.com",
               "digicelgroup.com"
            ],
            "isineu" : "false",
            "latitude" : "18.109581",
            "location" : "18.109581,-77.297508",
            "longitude" : "-77.297508",
            "netname" : "DIGICEL",
            "organization" : "Digicel Jamaica",
            "subnet" : "63.143.88.0/21"
         },
         "hostname" : [
            "63.143.92.196"
         ],
         "ip" : "63.143.92.196",
         "ipv6" : "false",
         "latitude" : "17.9962",
         "location" : "17.9962,-76.8019",
         "longitude" : "-76.8019",
         "node" : {
            "country" : "<enterprise field>: node.country",
            "groupid" : "<enterprise field>: node.groupid",
            "id" : "<enterprise field>: node.id",
            "physicalcountry" : "<enterprise field>: node.physicalcountry"
         },
         "organization" : "DIG001",
         "port" : 1222,
         "protocol" : "http",
         "protocolversion" : "1.0",
         "reason" : "OK",
         "seen_date" : "2024-11-07",
         "source" : "urlscan::redirect",
         "status" : 200,
         "subnet" : "63.143.92.0/24",
         "tag" : "<enterprise field>: tag",
         "tls" : "false",
         "transport" : "tcp",
         "url" : "/login.htm?page=%2F"
      }
      
  • 63.143.92.196:1222 (tcp/http) - last seen on 2024-10-19 at 01:08:14 UTC

    • IP
      63.143.92.196
      Network
      63.143.92.0/24
      Device

      <enterprise field>: device.class

      URL

      http://63.143.92.196:1222/login.htm?page=%2F 200

      HTTP Title
      Blue Iris Login
      ASN
      AS33576
      Organization
      DIG001
      Protocol
      http
      Source
      urlscan::redirect
    • This feature requires at least a "Lion View" to unlock. Go to our Pricing page for more.

    • Data MD5
      84c23e9e71132704cd8b312d2cb6ef8a
      HTTP Header MD5
      5d54868b24920b5e30dd7aae2120a75b
      HTTP Body MD5
      614b6899aa470df49a5cc32628b4f5a4
    • HTTP/1.0 200 OK
      Server: BlueServer/5.4.7.11
      Date: Sat, 19 Oct 2024 01:08:07 GMT
      P3P: CP="CAO COR CURa ADMa DEVa OUR IND ONL COM DEM PRE"
      Access-Control-Allow-Origin: *
      Set-Cookie: session=067c73915272037819726d3e33dc2833; path=/
      Connection: close
      Content-Type: text/html; charset=UTF-8
      Content-Length: 16154
      Cache-Control: no-cache, no-store
      X-Frame-Options: SAMEORIGIN
      
      <!DOCTYPE html>
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
      	<link rel="icon" id="ui3launcher1">
      	<link rel="apple-touch-icon" id="ui3launcher2">
      	<meta name="viewport" content="width=device-width, initial-scale=1" />
      	<meta name="apple-mobile-web-app-capable" content="yes"> <!--iOS Safari-->
      	<meta name="apple-mobile-web-app-status-bar-style" content="black">
      	<meta name="mobile-web-app-capable" content="yes"><!--Android Chrome-->
      	<meta name="theme-color" content="#000000">
      	<link rel="manifest" id="ui3manifest">
      	<title>Blue Iris Login</title>
      	<script type="text/javascript">
      		var login_version = "23";
      		var bi_version = "5.4.7.11";
      		var combined_version = login_version + "-" + bi_version;
      		var appPath = "/" + "/".replace(/^\/+|\/+$/g, '');
      		if (!appPath.endsWith("/"))
      			appPath = appPath + "/";
      	</script>
      	<script type="text/javascript">
      		window.onerror = function (msg, url, line, charIdx)
      		{
      			try
      			{
      				var versionStr = "unknown";
      				if (typeof login_version !== "undefined")
      					versionStr = login_version;
      				var biVersionStr = "unknown";
      				if (typeof bi_version !== "undefined")
      					biVersionStr = bi_version;
      				url = url.replace(/\/\/.*?\//, '//censored_hostname/');
      				alert("An unexpected error has occurred in Blue Iris Login (v " + versionStr + " / " + biVersionStr + "). If you wish to report the error, please SCREENSHOT the browser now.\n\n" + msg + "\nat " + url + " [" + line + ":" + charIdx + "]\n" + navigator.userAgent);
      			}
      			catch (ex)
      			{
      				alert(ex);
      			}
      		};
      	</script>
      	<script type="text/javascript">
      		document.getElementById("ui3manifest").href = 'applet/manifest.json?v=' + combined_version;
      		document.getElementById("ui3launcher1").href = 'applet/logos/launcher-icon48.png?v=' + combined_version;
      		document.getElementById("ui3launcher2").href = 'applet/launcher-icon.png?v=' + combined_version;
      	</script>
      	<style type="text/css">
      		body
      		{
      			font-family: sans-serif;
      			background: #212325;
      		}
      
      		#loginLoading
      		{
      			display: none;
      			text-shadow: 0 0 10px rgba(0,0,0,0.3);
      			position: absolute;
      			text-align: center;
      			top: 40%;
      			width: 100%;
      			color: #FFFFFF;
      		}
      
      			#loginLoading h1
      			{
      				margin: 0 0 20px 0;
      				font-size: 32px;
      			}
      
      			#loginLoading div
      			{
      				font-size: 20px;
      			}
      
      		#login
      		{
      			display: none;
      		}
      
      		.checkboxWrapper
      		{
      			max-width: 488px;
      		}
      	</style>
      </head>
      <body>
      	<div id="loginLoading">
      		<h1>Oakmont</h1>
      		<div>Loading login page...</div>
      	</div>
      	<div id="login">
      		<h1>Oakmont</h1>
      		<input id="txtUn" type="text" class="text" placeholder="Username" autocapitalize="off" autocorrect="off" />
      		<input id="txtPw" type="password" class="text" placeholder="Password" onkeypress="return pwKeypress(this, event);" autocapitalize="off" autocorrect="off" />
      		<div class="checkboxWrapper">
      			<input id="cbLoginAutomatically" type="checkbox" class="checkbox" onchange="cbLoginAutomaticallyClicked();" /><label for="cbLoginAutomatically" id="lblLoginAutomatically"><span class="ui"></span>Log in automatically:</label>
      		</div>
      		<div id="status_wrapper_upper"></div>
      		<input id="btnLogin" type="button" class="btn" value="Log in" onclick="login();" />
      		<div id="status_wrapper_lower"><div id="status"></div></div>
      	</div>
      	<script type="text/javascript">
      		var loadingOpacity = 0;
      		function IncreaseLoadingOpacity()
      		{
      			loadingOpacity += 0.05;
      			if (loadingOpacity > 1)
      				loadingOpacity = 1;
      			var ele = document.getElementById('loginLoading');
      			ele.style.display = "block";
      			ele.style.opacity = loadingOpacity;
      			if (loadingOpacity < 1)
      				showLoadingMessageTimeout = setTimeout(IncreaseLoadingOpacity, 33);
      		}
      		var showLoadingMessageTimeout = setTimeout(IncreaseLoadingOpacity, 67);
      
      		document.write('<link href="applet/loginStyles.css?v=' + combined_version + '" rel="stylesheet" />'
      			+ '<script src="applet/loginScripts.js?v=' + combined_version + '"><\/script>');
      	</script>
      	<script type="text/javascript">
      		/* eslint no-extra-parens: 0 */
      		var autologin_timeout_1 = null;
      		var autologin_timeout_2 = null;
      		var existingSession = "067c73915272037819726d3e33dc2833";
      		var authStatus = "unknown";
      		var authExempt = "no";
      		var loginSession = "";
      		var isStoredDataLoaded = false;
      		var windowUnloading = false;
      		var cookiesEnabled;
      		var localStorageEnabled;
      
      		/**
      		 * Changes the current URL by removing the specified query string parameter(s) from it.
      		 * @returns {String} Returns null if successful, otherwise returns the new URL if changing the history state failed.
      		 */
      		function NavRemoveUrlParams()
      		{
      			var url = RemoveUrlParams.apply(this, arguments);
      			try { history.replaceState(history.state, "", url); return null; } catch (ex) { return url; }
      		}
      		function RemoveUrlParams()
      		{
      			var s = location.search;
      			for (var i = 0; i < arguments.length; i++)
      			{
      				var param = arguments[i];
      				var rx = new RegExp('(&|\\?)' + param + '=[^&?#%]+', 'gi');
      				s = s.replace(rx, "");
      				while (s.indexOf("&") === 0)
      				{
      					if (s.length > 1)
      						s = s.substr(1);
      					else
      						s = "";
      				}
      				if (s.length > 0 && s.indexOf("?") === -1)
      					s = "?" + s;
      			}
      			return location.origin + location.pathname + s + location.hash;
      		}
      
      		NavRemoveUrlParams("session");
      
      		$(function ()
      		{
      			cookiesEnabled = testCookieFunctionality();
      			localStorageEnabled = isLocalStorageEnabled();
      			var skipAutoLogin = GetPersistedValue("bi_override_disable_auto_login_once") === "1";
      			if (UrlParameters.Get("autologin") === "0")
      			{
      				skipAutoLogin = true;
      				var url = NavRemoveUrlParams("session", "autologin");
      				if (url)
      				{
      					SetPersistedValue("bi_override_disable_auto_login_once", "1");
      					location.href = url;
      					return;
      				}
      			}
      			if (skipAutoLogin)
      			{
      				SetPersistedValue("bi_override_disable_auto_login_once", "0");
      			}
      			var lastUnload = GetPersistedValue("bi_lastunload");
      			if (lastUnload > Date.now())
      				SetPersistedValue("bi_lastunload", 0);
      			else if (!skipAutoLogin)
      				skipAutoLogin = Date.now() - lastUnload < 5000;
      			clearTimeout(showLoadingMessageTimeout);
      			$("#loginLoading").hide();
      			$("#login").show();
      			if (typeof window.JSON === 'undefined')
      			{
      				$("#login").html("<div>Your web browser is too old to use the Blue Iris web interface properly.<br><br>To proceed with this browser, disable the \"Secure only\" requirement within Blue Iris's web server settings.</div>");
      				$("#login").css("color", "#EEEEEE").css("margin", "8px");
      				return;
      			}
      			if (!existingSession || (existingSession.length === 11 && existingSession.startsWith("%") && existingSession.endsWith("%") && existingSession.indexOf("SESSION") === 2))
      			{
      				$("#login").html("<div>Session data was not provided as expected. This login page only works when served by Blue Iris 4.8.2.3 or newer.</div>");
      				$("#login").css("color", "#EEEEEE").css("margin", "8px");
      				return;
      			}
      			if (!localStorageEnabled)
      				$("#cbLoginAutomatically").parent().text("Note: Local Storage is disabled in your browser, so credentials can not be saved.").css("color", "#EEEEEE");
      			SetupLoginContextMenu();
      			SetStatus();
      			$(window).resize(resized);
      			resized();
      			window.onbeforeunload = function ()
      			{
      				windowUnloading = true;
      				cbLoginAutomaticallyClicked();
      				return;
      			};
      			// Handle automatic login
      			if (GetPersistedValue("bi_rememberMe") === "1")
      			{
      				$("#cbLoginAutomatically").attr('checked', 'checked');
      				$("#txtUn").val(Base64.decode(GetPersistedValue("bi_username")));
      				$("#txtPw").val(Base64.decode(GetPersistedValue("bi_password")));
      
      				if (!skipAutoLogin)
      				{
      					if ($("#txtUn").val() !== "" && $("#txtPw").val() !== "")
      					{
      						if (GetAutoLoginInstantly())
      						{
      							if ($("#cbLoginAutomatically").is(":checked"))
      								login();
      						}
      						else
      						{
      							$("#btnLogin").val("Logging in, in 2 seconds");
      							autologin_timeout_1 = setTimeout(function () { $("#btnLogin").val("Logging in, in 1 second"); }, 1000);
      							autologin_timeout_2 = setTimeout(function ()
      							{
      								if ($("#cbLoginAutomatically").is(":checked"))
      									login();
      							}, 2000);
      						}
      					}
      				}
      			}
      			else
      			{
      				$("#cbLoginAutomatically").removeAttr('checked');
      				SetPersistedValue("bi_username", "");
      				SetPersistedValue("bi_password", "");
      			}
      
      			var sessionType = "";
      
      			// authExempt predefined values: no, user, admin, unknown (should not happen)
      			if (authExempt === "user")
      				sessionType = "anonymous user";
      			else if (authExempt === "admin")
      				sessionType = "anonymous admin";
      
      			// authStatus predefined values: unknown, admin, anonymous, user
      			if (authStatus === "admin")
      				sessionType = "existing admin";
      			else if (authStatus === "user")
      				sessionType = "existing user";
      			else if (authStatus === "anonymous")
      				sessionType = "existing anonymous user";
      
      			if (sessionType)
      				SetStatus("An " + sessionType + ' session is available. <a href="javascript:UseAltSession(\'' + sessionType + '\')">Click here to use it.</a>');
      
      			// Set focus on first empty field
      			if (!$("#txtUn").val())
      				$("#txtUn").get(0).focus();
      			else if (!$("#txtPw").val())
      				$("#txtPw").get(0).focus();
      			else
      				$("#btnLogin").get(0).focus();
      
      			isStoredDataLoaded = true;
      		});
      		function login()
      		{
      			cbLoginAutomaticallyClicked();
      			$("#btnLogin").val("Logging in ...");
      			SetStatus();
      			if (authStatus === "unknown")
      				loginSession = existingSession;
      
      			if (!loginSession)
      				authenticateNewSession();
      			else
      				authenticateSession(loginSession);
      		}
      		function authenticateNewSession(user, pass)
      		{
      			ExecJSON({ cmd: "login" }, function (response)
      			{
      				loginSession = response.session;
      				authenticateSession(loginSession, true);
      			}, loginFail);
      		}
      		function authenticateSession(session, isNewSession)
      		{
      			var myResponse = md5($("#txtUn").val() + ":" + session + ":" + $("#txtPw").val());
      			ExecJSON({ cmd: "login", session: session, response: myResponse }, function (response)
      			{
      				if (response.result === "success")
      				{
      					$("#btnLogin").attr("disabled", "disabled").val("Redirecting...");
      					existingSession = response.session;
      					LeaveLoginPage();
      				}
      				else
      				{
      					if ((!response.data || !response.data.reason) && !isNewSession)
      					{
      						// This happens when the session we were trying to authenticate has expired.
      						authenticateNewSession();
      					}
      					else
      					{
      						$("#cbLoginAutomatically").removeAttr('checked');
      						SetPersistedValue("bi_rememberMe", "0");
      						SetPersistedValue("bi_username", "");
      						SetPersistedValue("bi_password", "");
      						$("#btnLogin").val("Log in");
      						HandleError(response.data ? response.data.reason : "Login failed but Blue Iris did not provide a reason.");
      					}
      				}
      			}, loginFail);
      		}
      		function loginFail(jqXHR, textStatus, errorThrown)
      		{
      			HandleError("Unable to contact Blue Iris server");
      			$("#btnLogin").val("Log in");
      		}
      		function UseAltSession(sessionType)
      		{
      			if (!sessionType)
      				alert("Error. Please reload.");
      			else if (sessionType.indexOf("existing") > -1)
      				LeaveLoginPage();
      			else
      			{
      				existingSession = "";
      				LeaveLoginPage();
      			}
      		}
      		function LeaveLoginPage()
      		{
      			var page = UrlParameters.Get("page");
      			if (page.indexOf(appPath) !== 0)
      				page = appPath + page.replace(/^\/+/g, '');
      			page = page.replace(/&session=[^&?#%]+/gi, '');
      			page = page.replace(/\?session=[^&?#%]+/gi, '?');
      			if (existingSession)
      			{
      				page += (page.indexOf("?") < 0 ? "?" : "&") + "session=" + existingSession;
      				if (cookiesEnabled)
      					$.cookie("session", existingSession, { path: "/" });
      			}
      			location.href = page + location.hash;
      		}
      		function cancelAutoLogin()
      		{
      			if (autologin_timeout_1 !== null)
      			{
      				clearTimeout(autologin_timeout_1);
      				autologin_timeout_1 = null;
      			}
      			if (autologin_timeout_2 !== null)
      			{
      				clearTimeout(autologin_timeout_2);
      				autologin_timeout_2 = null;
      			}
      			$("#btnLogin").val(windowUnloading ? "Redirecting..." : "Log in");
      		}
      		function cbLoginAutomaticallyClicked()
      		{
      			cancelAutoLogin();
      			if (!isStoredDataLoaded)
      				return;
      			var isChecked = $("#cbLoginAutomatically").is(":checked");
      			SetPersistedValue("bi_rememberMe", isChecked ? "1" : "0");
      			SetPersistedValue("bi_username", isChecked ? Base64.encode($("#txtUn").val()) : "");
      			SetPersistedValue("bi_password", isChecked ? Base64.encode($("#txtPw").val()) : "");
      		}
      		function GetPersistedValue(key)
      		{
      			var value;
      			if (localStorageEnabled)
      				value = localStorage.getItem(key);
      			if (!value)
      				value = "";
      			return value;
      		}
      		function SetPersistedValue(key, value)
      		{
      			if (localStorageEnabled)
      				return localStorage.setItem(key, value);
      		}
      		function pwKeypress(ele, e)
      		{
      			var keycode;
      			if (window.event) keycode = window.event.keyCode;
      			else if (typeof e !== "undefined" && e) keycode = e.which;
      			else return true;
      
      			if (keycode === 13)
      			{
      				login();
      				return false;
      			}
      			else
      				return true;
      		}
      		function resized()
      		{
      			if ($("#status").is(":visible"))
      			{
      				$("#status").hide();
      				$("#status").css("max-width", $("#login").width() + "px");
      				$("#status").show();
      			}
      			$('#login').css({ position: 'absolute', left: ($(window).width() - $('#login').outerWidth()) / 2, top: ($(window).height() - $('#login').outerHeight()) / 2 });
      			$("#status").css("max-width", $("#login").width() + "px");
      			var heightTotal = 0;
      			$("#login").children().each(function (idx, ele)
      			{
      				heightTotal += $(ele).outerHeight(true);
      			});
      			if (heightTotal > $(window).height())
      			{
      				if ($("#status").parent().attr("id") !== "status_wrapper_upper")
      					$("#status_wrapper_upper").append($("#status"));
      			}
      			else
      			{
      				if ($("#status").parent().attr("id") !== "status_wrapper_lower")
      					$("#status_wrapper_lower").append($("#status"));
      			}
      			$("#lblLoginAutomatically").parent().css("padding-left", (($('#login').outerWidth() - $("#lblLoginAutomatically").outerWidth(true)) / 2) + "px");
      		}
      		function HandleError(error)
      		{
      			SetStatus(error, "#FF6262");
      		}
      		function SetStatus(html, color)
      		{
      			if (typeof html === "undefined" || html === null || html === "")
      			{
      				html = "";
      				$("#status").hide();
      			}
      			else
      				$("#status").show();
      			if (typeof color === "undefined" || color === null || color === "")
      				color = "#FFFFFF";
      			$("#status").html(html);
      			$("#status").css("color", color);
      			resized();
      		}
      		function GetAutoLoginInstantly()
      		{
      			return GetPersistedValue("bi_autoLoginInstant") === "1";
      		}
      		function GetPreferredContextMenuTrigger()
      		{
      			return GetPersistedValue("ui3_contextMenus_longPress") === "1" ? "longpress" : "right";
      		}
      		function SetupLoginContextMenu()
      		{
      			var onTriggerContextMenu = function (e)
      			{
      				if (GetAutoLoginInstantly())
      					$("#autoLoginNoDelay").text("Auto Login: Instant (click to change)");
      				else
      					$("#autoLoginNoDelay").text("Auto Login: Delayed (click to change)");
      				return true;
      			};
      			var onContextMenuAction = function ()
      			{
      				if (this.data.alias === "autoLoginNoDelay")
      					SetPersistedValue("bi_autoLoginInstant", GetAutoLoginInstantly() ? "0" : "1");
      			};
      			var menuOptions =
      			{
      				alias: "cmroot_login", width: "300px", items:
      					[
      						{ text: '<span id="autoLoginNoDelay"></span>', icon: "", alias: "autoLoginNoDelay", action: onContextMenuAction }
      					]
      				, onContextMenu: onTriggerContextMenu
      		
    • {
         "@category" : "datascan",
         "@timestamp" : "2024-10-19T01:08:14.000Z",
         "app" : {
            "extract" : {
               "domain" : [
                  "w3.org"
               ],
               "hostname" : [
                  "www.w3.org"
               ],
               "ip" : [
                  "4.8.2.3",
                  "5.4.7.11"
               ],
               "url" : [
                  "http://www.w3.org/1999/xhtml"
               ]
            },
            "http" : {
               "bodymd5" : "614b6899aa470df49a5cc32628b4f5a4",
               "bodymmh3" : 336824382,
               "headermd5" : "5d54868b24920b5e30dd7aae2120a75b",
               "headermmh3" : 1633269663,
               "title" : "Blue Iris Login"
            },
            "length" : 16384
         },
         "asn" : "AS33576",
         "city" : "Kingston",
         "country" : "JM",
         "data" : "HTTP/1.0 200 OK\r\nServer: BlueServer/5.4.7.11\r\nDate: Sat, 19 Oct 2024 01:08:07 GMT\r\nP3P: CP=\"CAO COR CURa ADMa DEVa OUR IND ONL COM DEM PRE\"\r\nAccess-Control-Allow-Origin: *\r\nSet-Cookie: session=067c73915272037819726d3e33dc2833; path=/\r\nConnection: close\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 16154\r\nCache-Control: no-cache, no-store\r\nX-Frame-Options: SAMEORIGIN\r\n\r\n<!DOCTYPE html>\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\r\n\t<link rel=\"icon\" id=\"ui3launcher1\">\r\n\t<link rel=\"apple-touch-icon\" id=\"ui3launcher2\">\r\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n\t<meta name=\"apple-mobile-web-app-capable\" content=\"yes\"> <!--iOS Safari-->\r\n\t<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\r\n\t<meta name=\"mobile-web-app-capable\" content=\"yes\"><!--Android Chrome-->\r\n\t<meta name=\"theme-color\" content=\"#000000\">\r\n\t<link rel=\"manifest\" id=\"ui3manifest\">\r\n\t<title>Blue Iris Login</title>\r\n\t<script type=\"text/javascript\">\r\n\t\tvar login_version = \"23\";\r\n\t\tvar bi_version = \"5.4.7.11\";\r\n\t\tvar combined_version = login_version + \"-\" + bi_version;\r\n\t\tvar appPath = \"/\" + \"/\".replace(/^\\/+|\\/+$/g, '');\r\n\t\tif (!appPath.endsWith(\"/\"))\r\n\t\t\tappPath = appPath + \"/\";\r\n\t</script>\r\n\t<script type=\"text/javascript\">\r\n\t\twindow.onerror = function (msg, url, line, charIdx)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tvar versionStr = \"unknown\";\r\n\t\t\t\tif (typeof login_version !== \"undefined\")\r\n\t\t\t\t\tversionStr = login_version;\r\n\t\t\t\tvar biVersionStr = \"unknown\";\r\n\t\t\t\tif (typeof bi_version !== \"undefined\")\r\n\t\t\t\t\tbiVersionStr = bi_version;\r\n\t\t\t\turl = url.replace(/\\/\\/.*?\\//, '//censored_hostname/');\r\n\t\t\t\talert(\"An unexpected error has occurred in Blue Iris Login (v \" + versionStr + \" / \" + biVersionStr + \"). If you wish to report the error, please SCREENSHOT the browser now.\\n\\n\" + msg + \"\\nat \" + url + \" [\" + line + \":\" + charIdx + \"]\\n\" + navigator.userAgent);\r\n\t\t\t}\r\n\t\t\tcatch (ex)\r\n\t\t\t{\r\n\t\t\t\talert(ex);\r\n\t\t\t}\r\n\t\t};\r\n\t</script>\r\n\t<script type=\"text/javascript\">\r\n\t\tdocument.getElementById(\"ui3manifest\").href = 'applet/manifest.json?v=' + combined_version;\r\n\t\tdocument.getElementById(\"ui3launcher1\").href = 'applet/logos/launcher-icon48.png?v=' + combined_version;\r\n\t\tdocument.getElementById(\"ui3launcher2\").href = 'applet/launcher-icon.png?v=' + combined_version;\r\n\t</script>\r\n\t<style type=\"text/css\">\r\n\t\tbody\r\n\t\t{\r\n\t\t\tfont-family: sans-serif;\r\n\t\t\tbackground: #212325;\r\n\t\t}\r\n\r\n\t\t#loginLoading\r\n\t\t{\r\n\t\t\tdisplay: none;\r\n\t\t\ttext-shadow: 0 0 10px rgba(0,0,0,0.3);\r\n\t\t\tposition: absolute;\r\n\t\t\ttext-align: center;\r\n\t\t\ttop: 40%;\r\n\t\t\twidth: 100%;\r\n\t\t\tcolor: #FFFFFF;\r\n\t\t}\r\n\r\n\t\t\t#loginLoading h1\r\n\t\t\t{\r\n\t\t\t\tmargin: 0 0 20px 0;\r\n\t\t\t\tfont-size: 32px;\r\n\t\t\t}\r\n\r\n\t\t\t#loginLoading div\r\n\t\t\t{\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\r\n\t\t#login\r\n\t\t{\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\r\n\t\t.checkboxWrapper\r\n\t\t{\r\n\t\t\tmax-width: 488px;\r\n\t\t}\r\n\t</style>\r\n</head>\r\n<body>\r\n\t<div id=\"loginLoading\">\r\n\t\t<h1>Oakmont</h1>\r\n\t\t<div>Loading login page...</div>\r\n\t</div>\r\n\t<div id=\"login\">\r\n\t\t<h1>Oakmont</h1>\r\n\t\t<input id=\"txtUn\" type=\"text\" class=\"text\" placeholder=\"Username\" autocapitalize=\"off\" autocorrect=\"off\" />\r\n\t\t<input id=\"txtPw\" type=\"password\" class=\"text\" placeholder=\"Password\" onkeypress=\"return pwKeypress(this, event);\" autocapitalize=\"off\" autocorrect=\"off\" />\r\n\t\t<div class=\"checkboxWrapper\">\r\n\t\t\t<input id=\"cbLoginAutomatically\" type=\"checkbox\" class=\"checkbox\" onchange=\"cbLoginAutomaticallyClicked();\" /><label for=\"cbLoginAutomatically\" id=\"lblLoginAutomatically\"><span class=\"ui\"></span>Log in automatically:</label>\r\n\t\t</div>\r\n\t\t<div id=\"status_wrapper_upper\"></div>\r\n\t\t<input id=\"btnLogin\" type=\"button\" class=\"btn\" value=\"Log in\" onclick=\"login();\" />\r\n\t\t<div id=\"status_wrapper_lower\"><div id=\"status\"></div></div>\r\n\t</div>\r\n\t<script type=\"text/javascript\">\r\n\t\tvar loadingOpacity = 0;\r\n\t\tfunction IncreaseLoadingOpacity()\r\n\t\t{\r\n\t\t\tloadingOpacity += 0.05;\r\n\t\t\tif (loadingOpacity > 1)\r\n\t\t\t\tloadingOpacity = 1;\r\n\t\t\tvar ele = document.getElementById('loginLoading');\r\n\t\t\tele.style.display = \"block\";\r\n\t\t\tele.style.opacity = loadingOpacity;\r\n\t\t\tif (loadingOpacity < 1)\r\n\t\t\t\tshowLoadingMessageTimeout = setTimeout(IncreaseLoadingOpacity, 33);\r\n\t\t}\r\n\t\tvar showLoadingMessageTimeout = setTimeout(IncreaseLoadingOpacity, 67);\r\n\r\n\t\tdocument.write('<link href=\"applet/loginStyles.css?v=' + combined_version + '\" rel=\"stylesheet\" />'\r\n\t\t\t+ '<script src=\"applet/loginScripts.js?v=' + combined_version + '\"><\\/script>');\r\n\t</script>\r\n\t<script type=\"text/javascript\">\r\n\t\t/* eslint no-extra-parens: 0 */\r\n\t\tvar autologin_timeout_1 = null;\r\n\t\tvar autologin_timeout_2 = null;\r\n\t\tvar existingSession = \"067c73915272037819726d3e33dc2833\";\r\n\t\tvar authStatus = \"unknown\";\r\n\t\tvar authExempt = \"no\";\r\n\t\tvar loginSession = \"\";\r\n\t\tvar isStoredDataLoaded = false;\r\n\t\tvar windowUnloading = false;\r\n\t\tvar cookiesEnabled;\r\n\t\tvar localStorageEnabled;\r\n\r\n\t\t/**\r\n\t\t * Changes the current URL by removing the specified query string parameter(s) from it.\r\n\t\t * @returns {String} Returns null if successful, otherwise returns the new URL if changing the history state failed.\r\n\t\t */\r\n\t\tfunction NavRemoveUrlParams()\r\n\t\t{\r\n\t\t\tvar url = RemoveUrlParams.apply(this, arguments);\r\n\t\t\ttry { history.replaceState(history.state, \"\", url); return null; } catch (ex) { return url; }\r\n\t\t}\r\n\t\tfunction RemoveUrlParams()\r\n\t\t{\r\n\t\t\tvar s = location.search;\r\n\t\t\tfor (var i = 0; i < arguments.length; i++)\r\n\t\t\t{\r\n\t\t\t\tvar param = arguments[i];\r\n\t\t\t\tvar rx = new RegExp('(&|\\\\?)' + param + '=[^&?#%]+', 'gi');\r\n\t\t\t\ts = s.replace(rx, \"\");\r\n\t\t\t\twhile (s.indexOf(\"&\") === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (s.length > 1)\r\n\t\t\t\t\t\ts = s.substr(1);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\ts = \"\";\r\n\t\t\t\t}\r\n\t\t\t\tif (s.length > 0 && s.indexOf(\"?\") === -1)\r\n\t\t\t\t\ts = \"?\" + s;\r\n\t\t\t}\r\n\t\t\treturn location.origin + location.pathname + s + location.hash;\r\n\t\t}\r\n\r\n\t\tNavRemoveUrlParams(\"session\");\r\n\r\n\t\t$(function ()\r\n\t\t{\r\n\t\t\tcookiesEnabled = testCookieFunctionality();\r\n\t\t\tlocalStorageEnabled = isLocalStorageEnabled();\r\n\t\t\tvar skipAutoLogin = GetPersistedValue(\"bi_override_disable_auto_login_once\") === \"1\";\r\n\t\t\tif (UrlParameters.Get(\"autologin\") === \"0\")\r\n\t\t\t{\r\n\t\t\t\tskipAutoLogin = true;\r\n\t\t\t\tvar url = NavRemoveUrlParams(\"session\", \"autologin\");\r\n\t\t\t\tif (url)\r\n\t\t\t\t{\r\n\t\t\t\t\tSetPersistedValue(\"bi_override_disable_auto_login_once\", \"1\");\r\n\t\t\t\t\tlocation.href = url;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (skipAutoLogin)\r\n\t\t\t{\r\n\t\t\t\tSetPersistedValue(\"bi_override_disable_auto_login_once\", \"0\");\r\n\t\t\t}\r\n\t\t\tvar lastUnload = GetPersistedValue(\"bi_lastunload\");\r\n\t\t\tif (lastUnload > Date.now())\r\n\t\t\t\tSetPersistedValue(\"bi_lastunload\", 0);\r\n\t\t\telse if (!skipAutoLogin)\r\n\t\t\t\tskipAutoLogin = Date.now() - lastUnload < 5000;\r\n\t\t\tclearTimeout(showLoadingMessageTimeout);\r\n\t\t\t$(\"#loginLoading\").hide();\r\n\t\t\t$(\"#login\").show();\r\n\t\t\tif (typeof window.JSON === 'undefined')\r\n\t\t\t{\r\n\t\t\t\t$(\"#login\").html(\"<div>Your web browser is too old to use the Blue Iris web interface properly.<br><br>To proceed with this browser, disable the \\\"Secure only\\\" requirement within Blue Iris's web server settings.</div>\");\r\n\t\t\t\t$(\"#login\").css(\"color\", \"#EEEEEE\").css(\"margin\", \"8px\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!existingSession || (existingSession.length === 11 && existingSession.startsWith(\"%\") && existingSession.endsWith(\"%\") && existingSession.indexOf(\"SESSION\") === 2))\r\n\t\t\t{\r\n\t\t\t\t$(\"#login\").html(\"<div>Session data was not provided as expected. This login page only works when served by Blue Iris 4.8.2.3 or newer.</div>\");\r\n\t\t\t\t$(\"#login\").css(\"color\", \"#EEEEEE\").css(\"margin\", \"8px\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!localStorageEnabled)\r\n\t\t\t\t$(\"#cbLoginAutomatically\").parent().text(\"Note: Local Storage is disabled in your browser, so credentials can not be saved.\").css(\"color\", \"#EEEEEE\");\r\n\t\t\tSetupLoginContextMenu();\r\n\t\t\tSetStatus();\r\n\t\t\t$(window).resize(resized);\r\n\t\t\tresized();\r\n\t\t\twindow.onbeforeunload = function ()\r\n\t\t\t{\r\n\t\t\t\twindowUnloading = true;\r\n\t\t\t\tcbLoginAutomaticallyClicked();\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\t\t\t// Handle automatic login\r\n\t\t\tif (GetPersistedValue(\"bi_rememberMe\") === \"1\")\r\n\t\t\t{\r\n\t\t\t\t$(\"#cbLoginAutomatically\").attr('checked', 'checked');\r\n\t\t\t\t$(\"#txtUn\").val(Base64.decode(GetPersistedValue(\"bi_username\")));\r\n\t\t\t\t$(\"#txtPw\").val(Base64.decode(GetPersistedValue(\"bi_password\")));\r\n\r\n\t\t\t\tif (!skipAutoLogin)\r\n\t\t\t\t{\r\n\t\t\t\t\tif ($(\"#txtUn\").val() !== \"\" && $(\"#txtPw\").val() !== \"\")\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (GetAutoLoginInstantly())\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif ($(\"#cbLoginAutomatically\").is(\":checked\"))\r\n\t\t\t\t\t\t\t\tlogin();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t$(\"#btnLogin\").val(\"Logging in, in 2 seconds\");\r\n\t\t\t\t\t\t\tautologin_timeout_1 = setTimeout(function () { $(\"#btnLogin\").val(\"Logging in, in 1 second\"); }, 1000);\r\n\t\t\t\t\t\t\tautologin_timeout_2 = setTimeout(function ()\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif ($(\"#cbLoginAutomatically\").is(\":checked\"))\r\n\t\t\t\t\t\t\t\t\tlogin();\r\n\t\t\t\t\t\t\t}, 2000);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t$(\"#cbLoginAutomatically\").removeAttr('checked');\r\n\t\t\t\tSetPersistedValue(\"bi_username\", \"\");\r\n\t\t\t\tSetPersistedValue(\"bi_password\", \"\");\r\n\t\t\t}\r\n\r\n\t\t\tvar sessionType = \"\";\r\n\r\n\t\t\t// authExempt predefined values: no, user, admin, unknown (should not happen)\r\n\t\t\tif (authExempt === \"user\")\r\n\t\t\t\tsessionType = \"anonymous user\";\r\n\t\t\telse if (authExempt === \"admin\")\r\n\t\t\t\tsessionType = \"anonymous admin\";\r\n\r\n\t\t\t// authStatus predefined values: unknown, admin, anonymous, user\r\n\t\t\tif (authStatus === \"admin\")\r\n\t\t\t\tsessionType = \"existing admin\";\r\n\t\t\telse if (authStatus === \"user\")\r\n\t\t\t\tsessionType = \"existing user\";\r\n\t\t\telse if (authStatus === \"anonymous\")\r\n\t\t\t\tsessionType = \"existing anonymous user\";\r\n\r\n\t\t\tif (sessionType)\r\n\t\t\t\tSetStatus(\"An \" + sessionType + ' session is available. <a href=\"javascript:UseAltSession(\\'' + sessionType + '\\')\">Click here to use it.</a>');\r\n\r\n\t\t\t// Set focus on first empty field\r\n\t\t\tif (!$(\"#txtUn\").val())\r\n\t\t\t\t$(\"#txtUn\").get(0).focus();\r\n\t\t\telse if (!$(\"#txtPw\").val())\r\n\t\t\t\t$(\"#txtPw\").get(0).focus();\r\n\t\t\telse\r\n\t\t\t\t$(\"#btnLogin\").get(0).focus();\r\n\r\n\t\t\tisStoredDataLoaded = true;\r\n\t\t});\r\n\t\tfunction login()\r\n\t\t{\r\n\t\t\tcbLoginAutomaticallyClicked();\r\n\t\t\t$(\"#btnLogin\").val(\"Logging in ...\");\r\n\t\t\tSetStatus();\r\n\t\t\tif (authStatus === \"unknown\")\r\n\t\t\t\tloginSession = existingSession;\r\n\r\n\t\t\tif (!loginSession)\r\n\t\t\t\tauthenticateNewSession();\r\n\t\t\telse\r\n\t\t\t\tauthenticateSession(loginSession);\r\n\t\t}\r\n\t\tfunction authenticateNewSession(user, pass)\r\n\t\t{\r\n\t\t\tExecJSON({ cmd: \"login\" }, function (response)\r\n\t\t\t{\r\n\t\t\t\tloginSession = response.session;\r\n\t\t\t\tauthenticateSession(loginSession, true);\r\n\t\t\t}, loginFail);\r\n\t\t}\r\n\t\tfunction authenticateSession(session, isNewSession)\r\n\t\t{\r\n\t\t\tvar myResponse = md5($(\"#txtUn\").val() + \":\" + session + \":\" + $(\"#txtPw\").val());\r\n\t\t\tExecJSON({ cmd: \"login\", session: session, response: myResponse }, function (response)\r\n\t\t\t{\r\n\t\t\t\tif (response.result === \"success\")\r\n\t\t\t\t{\r\n\t\t\t\t\t$(\"#btnLogin\").attr(\"disabled\", \"disabled\").val(\"Redirecting...\");\r\n\t\t\t\t\texistingSession = response.session;\r\n\t\t\t\t\tLeaveLoginPage();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif ((!response.data || !response.data.reason) && !isNewSession)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// This happens when the session we were trying to authenticate has expired.\r\n\t\t\t\t\t\tauthenticateNewSession();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t$(\"#cbLoginAutomatically\").removeAttr('checked');\r\n\t\t\t\t\t\tSetPersistedValue(\"bi_rememberMe\", \"0\");\r\n\t\t\t\t\t\tSetPersistedValue(\"bi_username\", \"\");\r\n\t\t\t\t\t\tSetPersistedValue(\"bi_password\", \"\");\r\n\t\t\t\t\t\t$(\"#btnLogin\").val(\"Log in\");\r\n\t\t\t\t\t\tHandleError(response.data ? response.data.reason : \"Login failed but Blue Iris did not provide a reason.\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, loginFail);\r\n\t\t}\r\n\t\tfunction loginFail(jqXHR, textStatus, errorThrown)\r\n\t\t{\r\n\t\t\tHandleError(\"Unable to contact Blue Iris server\");\r\n\t\t\t$(\"#btnLogin\").val(\"Log in\");\r\n\t\t}\r\n\t\tfunction UseAltSession(sessionType)\r\n\t\t{\r\n\t\t\tif (!sessionType)\r\n\t\t\t\talert(\"Error. Please reload.\");\r\n\t\t\telse if (sessionType.indexOf(\"existing\") > -1)\r\n\t\t\t\tLeaveLoginPage();\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\texistingSession = \"\";\r\n\t\t\t\tLeaveLoginPage();\r\n\t\t\t}\r\n\t\t}\r\n\t\tfunction LeaveLoginPage()\r\n\t\t{\r\n\t\t\tvar page = UrlParameters.Get(\"page\");\r\n\t\t\tif (page.indexOf(appPath) !== 0)\r\n\t\t\t\tpage = appPath + page.replace(/^\\/+/g, '');\r\n\t\t\tpage = page.replace(/&session=[^&?#%]+/gi, '');\r\n\t\t\tpage = page.replace(/\\?session=[^&?#%]+/gi, '?');\r\n\t\t\tif (existingSession)\r\n\t\t\t{\r\n\t\t\t\tpage += (page.indexOf(\"?\") < 0 ? \"?\" : \"&\") + \"session=\" + existingSession;\r\n\t\t\t\tif (cookiesEnabled)\r\n\t\t\t\t\t$.cookie(\"session\", existingSession, { path: \"/\" });\r\n\t\t\t}\r\n\t\t\tlocation.href = page + location.hash;\r\n\t\t}\r\n\t\tfunction cancelAutoLogin()\r\n\t\t{\r\n\t\t\tif (autologin_timeout_1 !== null)\r\n\t\t\t{\r\n\t\t\t\tclearTimeout(autologin_timeout_1);\r\n\t\t\t\tautologin_timeout_1 = null;\r\n\t\t\t}\r\n\t\t\tif (autologin_timeout_2 !== null)\r\n\t\t\t{\r\n\t\t\t\tclearTimeout(autologin_timeout_2);\r\n\t\t\t\tautologin_timeout_2 = null;\r\n\t\t\t}\r\n\t\t\t$(\"#btnLogin\").val(windowUnloading ? \"Redirecting...\" : \"Log in\");\r\n\t\t}\r\n\t\tfunction cbLoginAutomaticallyClicked()\r\n\t\t{\r\n\t\t\tcancelAutoLogin();\r\n\t\t\tif (!isStoredDataLoaded)\r\n\t\t\t\treturn;\r\n\t\t\tvar isChecked = $(\"#cbLoginAutomatically\").is(\":checked\");\r\n\t\t\tSetPersistedValue(\"bi_rememberMe\", isChecked ? \"1\" : \"0\");\r\n\t\t\tSetPersistedValue(\"bi_username\", isChecked ? Base64.encode($(\"#txtUn\").val()) : \"\");\r\n\t\t\tSetPersistedValue(\"bi_password\", isChecked ? Base64.encode($(\"#txtPw\").val()) : \"\");\r\n\t\t}\r\n\t\tfunction GetPersistedValue(key)\r\n\t\t{\r\n\t\t\tvar value;\r\n\t\t\tif (localStorageEnabled)\r\n\t\t\t\tvalue = localStorage.getItem(key);\r\n\t\t\tif (!value)\r\n\t\t\t\tvalue = \"\";\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\tfunction SetPersistedValue(key, value)\r\n\t\t{\r\n\t\t\tif (localStorageEnabled)\r\n\t\t\t\treturn localStorage.setItem(key, value);\r\n\t\t}\r\n\t\tfunction pwKeypress(ele, e)\r\n\t\t{\r\n\t\t\tvar keycode;\r\n\t\t\tif (window.event) keycode = window.event.keyCode;\r\n\t\t\telse if (typeof e !== \"undefined\" && e) keycode = e.which;\r\n\t\t\telse return true;\r\n\r\n\t\t\tif (keycode === 13)\r\n\t\t\t{\r\n\t\t\t\tlogin();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\t\tfunction resized()\r\n\t\t{\r\n\t\t\tif ($(\"#status\").is(\":visible\"))\r\n\t\t\t{\r\n\t\t\t\t$(\"#status\").hide();\r\n\t\t\t\t$(\"#status\").css(\"max-width\", $(\"#login\").width() + \"px\");\r\n\t\t\t\t$(\"#status\").show();\r\n\t\t\t}\r\n\t\t\t$('#login').css({ position: 'absolute', left: ($(window).width() - $('#login').outerWidth()) / 2, top: ($(window).height() - $('#login').outerHeight()) / 2 });\r\n\t\t\t$(\"#status\").css(\"max-width\", $(\"#login\").width() + \"px\");\r\n\t\t\tvar heightTotal = 0;\r\n\t\t\t$(\"#login\").children().each(function (idx, ele)\r\n\t\t\t{\r\n\t\t\t\theightTotal += $(ele).outerHeight(true);\r\n\t\t\t});\r\n\t\t\tif (heightTotal > $(window).height())\r\n\t\t\t{\r\n\t\t\t\tif ($(\"#status\").parent().attr(\"id\") !== \"status_wrapper_upper\")\r\n\t\t\t\t\t$(\"#status_wrapper_upper\").append($(\"#status\"));\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif ($(\"#status\").parent().attr(\"id\") !== \"status_wrapper_lower\")\r\n\t\t\t\t\t$(\"#status_wrapper_lower\").append($(\"#status\"));\r\n\t\t\t}\r\n\t\t\t$(\"#lblLoginAutomatically\").parent().css(\"padding-left\", (($('#login').outerWidth() - $(\"#lblLoginAutomatically\").outerWidth(true)) / 2) + \"px\");\r\n\t\t}\r\n\t\tfunction HandleError(error)\r\n\t\t{\r\n\t\t\tSetStatus(error, \"#FF6262\");\r\n\t\t}\r\n\t\tfunction SetStatus(html, color)\r\n\t\t{\r\n\t\t\tif (typeof html === \"undefined\" || html === null || html === \"\")\r\n\t\t\t{\r\n\t\t\t\thtml = \"\";\r\n\t\t\t\t$(\"#status\").hide();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\t$(\"#status\").show();\r\n\t\t\tif (typeof color === \"undefined\" || color === null || color === \"\")\r\n\t\t\t\tcolor = \"#FFFFFF\";\r\n\t\t\t$(\"#status\").html(html);\r\n\t\t\t$(\"#status\").css(\"color\", color);\r\n\t\t\tresized();\r\n\t\t}\r\n\t\tfunction GetAutoLoginInstantly()\r\n\t\t{\r\n\t\t\treturn GetPersistedValue(\"bi_autoLoginInstant\") === \"1\";\r\n\t\t}\r\n\t\tfunction GetPreferredContextMenuTrigger()\r\n\t\t{\r\n\t\t\treturn GetPersistedValue(\"ui3_contextMenus_longPress\") === \"1\" ? \"longpress\" : \"right\";\r\n\t\t}\r\n\t\tfunction SetupLoginContextMenu()\r\n\t\t{\r\n\t\t\tvar onTriggerContextMenu = function (e)\r\n\t\t\t{\r\n\t\t\t\tif (GetAutoLoginInstantly())\r\n\t\t\t\t\t$(\"#autoLoginNoDelay\").text(\"Auto Login: Instant (click to change)\");\r\n\t\t\t\telse\r\n\t\t\t\t\t$(\"#autoLoginNoDelay\").text(\"Auto Login: Delayed (click to change)\");\r\n\t\t\t\treturn true;\r\n\t\t\t};\r\n\t\t\tvar onContextMenuAction = function ()\r\n\t\t\t{\r\n\t\t\t\tif (this.data.alias === \"autoLoginNoDelay\")\r\n\t\t\t\t\tSetPersistedValue(\"bi_autoLoginInstant\", GetAutoLoginInstantly() ? \"0\" : \"1\");\r\n\t\t\t};\r\n\t\t\tvar menuOptions =\r\n\t\t\t{\r\n\t\t\t\talias: \"cmroot_login\", width: \"300px\", items:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{ text: '<span id=\"autoLoginNoDelay\"></span>', icon: \"\", alias: \"autoLoginNoDelay\", action: onContextMenuAction }\r\n\t\t\t\t\t]\r\n\t\t\t\t, onContextMenu: onTriggerContextMenu\r\n\t\t",
         "datamd5" : "84c23e9e71132704cd8b312d2cb6ef8a",
         "datammh3" : -220087246,
         "device" : {
            "class" : "<enterprise field>: device.class"
         },
         "forward" : "63.143.92.196",
         "geolocus" : {
            "asn" : "AS33576",
            "continent" : "NA",
            "continentname" : "North America",
            "country" : "JM",
            "countryname" : "Jamaica",
            "domain" : [
               "digicelbroadband.com",
               "digicelgroup.com"
            ],
            "isineu" : "false",
            "latitude" : "18.109581",
            "location" : "18.109581,-77.297508",
            "longitude" : "-77.297508",
            "netname" : "DIGICEL",
            "organization" : "Digicel Jamaica",
            "subnet" : "63.143.88.0/21"
         },
         "hostname" : [
            "63.143.92.196"
         ],
         "ip" : "63.143.92.196",
         "ipv6" : "false",
         "latitude" : "17.9962",
         "location" : "17.9962,-76.8019",
         "longitude" : "-76.8019",
         "node" : {
            "country" : "<enterprise field>: node.country",
            "groupid" : "<enterprise field>: node.groupid",
            "id" : "<enterprise field>: node.id",
            "physicalcountry" : "<enterprise field>: node.physicalcountry"
         },
         "organization" : "DIG001",
         "port" : 1222,
         "protocol" : "http",
         "protocolversion" : "1.0",
         "reason" : "OK",
         "seen_date" : "2024-10-19",
         "source" : "urlscan::redirect",
         "status" : 200,
         "subnet" : "63.143.92.0/24",
         "tag" : "<enterprise field>: tag",
         "tls" : "false",
         "transport" : "tcp",
         "url" : "/login.htm?page=%2F"
      }