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" }