endpoints.path: /
endpoints.endpoint_type: HTTP
endpoints.scan_time: 2025-10-09T12:44:48.234319
endpoints.uri: https://stellakislovodsk.keenetic.pro/
endpoints.protocol: HTTP/1.1
endpoints.status_reason: OK
endpoints.key: Ndm-Stage
endpoints.headers: 4
endpoints.key: Referrer-Policy
endpoints.headers: strict-origin-when-cross-origin
endpoints.key: Content-Length
endpoints.headers: 4953
endpoints.key: Cache-Control
endpoints.headers: no-cache
endpoints.key: Content-Type
endpoints.headers: text/html
endpoints.key: Content-Security-Policy
endpoints.headers: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-hashes' 'unsafe-inline'; script-src-attr 'self' 'unsafe-inline' 'unsafe-hashes'; connect-src 'self'; img-src 'self'; style-src 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; style-src-elem 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; base-uri 'self'; form-action 'self';
endpoints.key: Server
endpoints.headers: Web server
endpoints.key: Expires
endpoints.headers: Thu, 09 Oct 2025 12:44:47 GMT
endpoints.key: X-Frame-Options
endpoints.headers: DENY
endpoints.key: Ndm-Sysmode
endpoints.headers: router
endpoints.key: Date
endpoints.headers: <REDACTED>
endpoints.key: Connection
endpoints.headers: keep-alive
endpoints.html_tags: <title>KeeneticOS Web Panel</title> <meta charset="utf-8"> <meta name="apple-mobile-web-app-title" content="KeeneticOS Web Panel"> <meta name="application-name" content="KeeneticOS Web Panel"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> <meta name="MobileOptimized" content="320"> <meta name="HandheldFriendly" content="true"> <meta name="msapplication-TileColor" content="#2d405c"> <meta name="msapplication-TileImage" content="/assets/images/favicon/ms-icon-144x144.png"> <meta name="theme-color" content="#ffffff"> <meta name="msapplication-config" content="/assets/images/favicon/browserconfig.xml">
endpoints.body: <!doctype html>
  <html data-critters-container>
  
  <head>
    <meta charset="utf-8">
    <title>KeeneticOS Web Panel</title>
    <base href="/">
  
    <meta name="apple-mobile-web-app-title" content="KeeneticOS Web Panel">
    <meta name="application-name" content="KeeneticOS Web Panel">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
    <meta name="MobileOptimized" content="320">
    <meta name="HandheldFriendly" content="true">
  
    <link rel="shortcut icon" type="image/x-icon" href="/assets/images/favicon/favicon.ico">
    <link rel="apple-touch-icon" sizes="180x180" href="/assets/images/favicon/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/assets/images/favicon/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/assets/images/favicon/favicon-16x16.png">
    <link rel="mask-icon" color="#0097dc" href="/assets/images/favicon/safari-pinned-tab.svg">
    <meta name="msapplication-TileColor" content="#2d405c">
    <meta name="msapplication-TileImage" content="/assets/images/favicon/ms-icon-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <link rel="manifest" href="/assets/images/favicon/manifest.json">
    <meta name="msapplication-config" content="/assets/images/favicon/browserconfig.xml">
    <noscript>
      <style>
        @font-face {
          font-family: Roboto;
          font-weight: 400;
          font-style: normal;
          src: local("Roboto"), local("Roboto-Regular"), url("/assets/fonts/roboto/Roboto-Regular.woff2") format("woff2");
        }
  
        .noscript-warn {
          font-family: "Roboto", sans-serif;
          font-size: 24px;
          width: 100%;
          height: 100%;
          display: flex;
          align-items: center;
          justify-content: center;
        }
      </style>
    </noscript>
    <!-- sso-script /-->
  
    <!-- cors-meta /-->
  
    <script>
      // (function redirectIfOldBrowser() {
      //   if (!/Edge?\/(10[3-9]|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(10[2-9]|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(10[3-9]|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(89|9\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[1-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[2-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[1-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(2[4-9]|[3-9]\d|\d{3,})\.\d+|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)/.test(window.navigator.userAgent)) {
      //     window.location.href = '/unsupported-browser.html';
      //   }
      // })()
    </script>
  <style>@charset "UTF-8";@font-face{font-family:Roboto;font-weight:300;font-style:normal;src:local("Roboto Italic"),local("Roboto-Italic"),url(/assets/fonts/roboto/Roboto-Italic.woff2) format("woff2")}@font-face{font-family:Roboto;font-weight:400;font-style:normal;src:local("Roboto"),local("Roboto-Regular"),url(/assets/fonts/roboto/Roboto-Regular.woff2) format("woff2")}@font-face{font-family:Roboto;font-weight:700;font-style:normal;src:local("Roboto Bold"),local("Roboto-Bold"),url(/assets/fonts/roboto/Roboto-Bold.woff2) format("woff2")}:root{--layout-scroll-width:0;--animation-speed:.05s;--transition-time:.05s;--save-pattern-min-height:64px;--z-index-save-pattern:20;--z-index-help:30;--z-index-search:40;--z-index-dialog:50;--z-index-save-pattern-dialog:60;--z-index-select-dialog:80;--z-index-dialog-top:70;--z-index-tooltip:90;--z-index-notification:100;--z-index-global-spinner:110;--z-index-layout-overlay:120;--z-index-layout-header:130;--z-index-layout-content-on-top:140;--z-index-navigation-menu:150}html,body{width:100%;height:100%;box-sizing:border-box;color:var(--primary-text)}body{position:relative;margin:0;overflow:hidden;background:var(--background);font-family:Roboto,sans-serif;font-size:14px;line-height:22px}*,*:before,*:after{box-sizing:inherit}</style><link rel="stylesheet" href="styles.1d2e1ec4187acf13.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.1d2e1ec4187acf13.css"></noscript></head>
  <body>
    <ndw-root></ndw-root>
  
    <noscript>
      <div class="noscript-warn">
        KeeneticOS Web Panel requires JavaScript. Please enable it for full functionality.
      </div>
    </noscript>
  <script src="runtime.2fb25874618f03d2.js" type="module"></script><script src="polyfills.cf3d3c09b1529154.js" type="module"></script><script src="vendor.238eaa341d3874ba.js" type="module"></script><script src="main.a672db597999c561.js" type="module"></script></body>
  </html>
  
endpoints.name: https://stellakislovodsk.keenetic.pro/assets/images/favicon/favicon.ico
endpoints.name: https://stellakislovodsk.keenetic.pro/assets/images/favicon/apple-touch-icon.png
endpoints.name: https://stellakislovodsk.keenetic.pro/assets/images/favicon/favicon-32x32.png
endpoints.name: https://stellakislovodsk.keenetic.pro/assets/images/favicon/favicon-16x16.png
endpoints.html_title: KeeneticOS Web Panel
endpoints.supported_versions: HTTP/1.1
endpoints.banner: HTTP/1.1 200 OK
  Server: Web server
  Date:  <REDACTED>
  Content-Type: text/html
  Content-Length: 4953
  Connection: keep-alive
  Expires: Thu, 09 Oct 2025 12:44:47 GMT
  Cache-Control: no-cache
  Ndm-Sysmode: router
  X-Frame-Options: DENY
  Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-hashes' 'unsafe-inline'; script-src-attr 'self' 'unsafe-inline' 'unsafe-hashes'; connect-src 'self'; img-src 'self'; style-src 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; style-src-elem 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; base-uri 'self'; form-action 'self'; 
  Referrer-Policy: strict-origin-when-cross-origin
  Ndm-Stage: 4
  
endpoints.ip: 95.213.212.50
endpoints.path: /unsupported-browser.html
endpoints.endpoint_type: HTTP
endpoints.scan_time: 2025-10-09T12:45:42.050421
endpoints.uri: https://stellakislovodsk.keenetic.pro/unsupported-browser.html
endpoints.protocol: HTTP/1.1
endpoints.status_reason: OK
endpoints.key: Connection
endpoints.headers: keep-alive
endpoints.key: Cache-Control
endpoints.headers: max-age=0 private must-revalidate
endpoints.key: ETag
endpoints.headers: W/"6883e84c-dcc"
endpoints.key: Transfer-Encoding
endpoints.headers: chunked
endpoints.key: Expires
endpoints.headers: Thu, 09 Oct 2025 12:45:44 GMT
endpoints.key: Content-Type
endpoints.headers: text/html; charset=utf-8
endpoints.key: Last-Modified
endpoints.headers: Fri, 25 Jul 2025 20:25:48 GMT
endpoints.key: Date
endpoints.headers: <REDACTED>
endpoints.key: Referrer-Policy
endpoints.headers: strict-origin-when-cross-origin
endpoints.key: Server
endpoints.headers: Web server
endpoints.key: Content-Encoding
endpoints.headers: gzip
endpoints.key: X-Frame-Options
endpoints.headers: DENY
endpoints.key: Vary
endpoints.headers: Accept-Encoding
endpoints.key: Content-Security-Policy
endpoints.headers: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-hashes' 'unsafe-inline'; script-src-attr 'self' 'unsafe-inline' 'unsafe-hashes'; connect-src 'self'; img-src 'self'; style-src 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; style-src-elem 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; base-uri 'self'; form-action 'self';
endpoints.html_tags: <title>KeeneticOS Web Panel</title>
endpoints.body: <html>
    <head>
      <title>KeeneticOS Web Panel</title>
      <style>
        @font-face {
          font-family: "Vendor Logo";
          font-weight: normal;
          font-style: normal;
          src:
            url("/assets/fonts/logo/logo.woff2") format("woff2"),
            url("/assets/fonts/logo/logo.woff2") format("woff"),
            url("/assets/fonts/models/models.woff2") format("truetype");
        }
  
        @font-face {
          font-family: Roboto;
          font-weight: 400;
          font-style: normal;
          src: local("Roboto"), local("Roboto-Regular"), url("/assets/fonts/roboto/Roboto-Regular.woff2") format("woff2");
        }
  
        * {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
        }
  
        body {
          display: flex;
          width: 100vw;
          height: 100vh;
          justify-content: center;
          align-items: center;
          flex-direction: column;
          gap: 16px;
          font-family: "Roboto", sans-serif;
        }
  
        #header {
          color: #0097dc;
          text-transform: uppercase;
          font-family: Vendor Logo, Roboto, sans-serif, sans-serif;
          font-size: 3vh;
        }
  
        #description {
          text-align: center;
          font-size: 2vh;
          padding: 16px 32px;
        }
  
        #wrapper {
          display: flex;
          gap: 24px;
          align-items: center;
          padding: 16px;
        }
  
        #help {
          --help-color: #bdb7b7;
  
          display: flex;
          align-items: center;
          justify-content: center;
          border: 1px solid var(--help-color);
          padding: 4px 10px;
          border-radius: 50%;
          color: var(--help-color);
          width: 3vh;
          height: 3vh;
          font-size: 2vh;
  
          &:hover {
            cursor: pointer;
            background-color: #0097dc;
            color: white;
            border-color: white;
          }
        }
  
        #language {
          font-size: 2vh;
        }
      </style>
  
      <script>
        (async () => {
          const languagesFile = await fetch('./ndmLanguages.json');
          const contactsFile = await fetch('./ndmContacts.json');
          const languages = (await languagesFile.json());
          const supportUrl = (await contactsFile.json())['contacts']['support-url'];
  
          const orderedLanguages = languages['LANGUAGES_ORDER']
            .filter(language => Object.keys(languages['profile']['languages']).includes(language))
  
          const translations = {};
  
          const help = document.getElementById('help');
          const description = document.getElementById('description');
          const select = document.getElementById('language');
  
          for (const language of orderedLanguages) {
            const translationFile = await fetch(`./assets/language/locale.${language}.json`);
            const localizeTranslation = (await translationFile.json());
  
            translations[language] = localizeTranslation['unsupported-browser'];
  
            select.appendChild(new Option(localizeTranslation['languages'][language], language));
          }
  
          select.addEventListener('change', () => {
            description.innerText = translations[select.value];
          });
  
          help.addEventListener('click', () => {
            window.open(supportUrl, '_blank');
          });
  
          description.innerText = translations['en'];
        })()
      </script>
    </head>
  
    <body>
      <h1 id="header">
        Keenetic
      </h1>
  
      <div id="description"></div>
  
      <div id="wrapper">
        <div id="help">?</div>
        <select id="language"></select>
      </div>
    </body>
  </html>
  
endpoints.html_title: KeeneticOS Web Panel
endpoints.supported_versions: HTTP/1.1
endpoints.banner: HTTP/1.1 200 OK
  Server: Web server
  Date:  <REDACTED>
  Content-Type: text/html; charset=utf-8
  Last-Modified: Fri, 25 Jul 2025 20:25:48 GMT
  Transfer-Encoding: chunked
  Connection: keep-alive
  Vary: Accept-Encoding
  ETag: W/"6883e84c-dcc"
  Expires: Thu, 09 Oct 2025 12:45:44 GMT
  Cache-Control: max-age=0
  Cache-Control: private
  Cache-Control: must-revalidate
  X-Frame-Options: DENY
  Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-hashes' 'unsafe-inline'; script-src-attr 'self' 'unsafe-inline' 'unsafe-hashes'; connect-src 'self'; img-src 'self'; style-src 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; style-src-elem 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-hashes'; base-uri 'self'; form-action 'self'; 
  Referrer-Policy: strict-origin-when-cross-origin
  Content-Encoding: gzip
  
endpoints.ip: 95.213.212.50
[binary data, 20 values, 462 bytes]