https://mail.web2t.net/

Submitted URL:
https://mail.web2t.net/
Report Finished:

The outgoing links identified from the page

JavaScript Variables · 30 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

NameType
onbeforetogglestring
documentPictureInPicturestring
onscrollendstring
headstring
linkstring
escapeHtmlstring
unescapeHtmlstring
addTagstring
copyToClipboardstring
$string

Console log messages · 0 found

Messages logged to the web console

HTML

The raw HTML body of the page

<!DOCTYPE html><html lang="en-gb"><head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
  <meta name="theme-color" content="#F5D76E">
  <meta http-equiv="Referrer-Policy" content="same-origin">
  <title>WillaBee Mail Server UI</title>

  <link rel="stylesheet" href="/cache/e9d7abaa5bdece3e1bd297a0acd7d21041e36c05.css">
  <script>
    // check if darkmode is preferred by OS or set by localStorage
    if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches && localStorage.getItem("theme") !== "light" ||
        localStorage.getItem("theme") === "dark") {
      var head  = document.getElementsByTagName('head')[0];
      var link  = document.createElement('link');
      link.id   = 'dark-mode-theme';
      link.rel  = 'stylesheet';
      link.type = 'text/css';
      link.href = '/css/themes/mailcow-darkmode.css';
      head.appendChild(link);
    }
  </script>

  <link rel="shortcut icon" href="/favicon.png" type="image/png">
  <link rel="icon" href="/favicon.png" type="image/png">
</head>
<body>
<div class="overlay" style="display: none;"></div>

<form action="/" method="post" id="logout"><input type="hidden" name="logout"><input type="hidden" value="7336e5f09fb150afd208462589d0e8c2c633bd55de653d6f0c2135fb74837f1a" name="csrf_token"></form>


<div class="container my-4">
<div class="row mb-4" style="margin-top: 60px">
  <div class="col-12 col-md-7 col-lg-6 col-xl-5 ms-auto me-auto">
    <div class="card">
      <div class="card-header d-flex align-items-center">
        <i class="bi bi-person-fill me-2"></i> Login
        <div class="ms-auto form-check form-switch my-auto d-flex align-items-center">
          <label class="form-check-label"><i class="bi bi-moon-fill"></i></label>
          <input class="form-check-input ms-2" type="checkbox" id="dark-mode-toggle">
        </div>
      </div>
      <div class="card-body">
        <div class="text-center mailcow-logo mb-4">
          <img class="main-logo" src="data:image/png;base64,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" alt="mailcow">
          <img class="main-logo-dark d-none" src="data:image/png;base64,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" alt="mailcow-logo-dark">
        </div>
                <legend>Mail Server UI</legend><hr>
                <form method="post" autofill="off">
          <div class="d-flex mt-3">
            <label class="visually-hidden" for="login_user">Username</label>
            <div class="input-group">
              <div class="input-group-text"><i class="bi bi-person-fill"></i></div>
              <input name="login_user" autocorrect="off" autocapitalize="none" type="text" id="login_user" class="form-control" placeholder="Username" required="" autofocus="" autocomplete="username">
            </div>
          </div>
          <div class="d-flex mt-3">
            <label class="visually-hidden" for="pass_user">Password</label>
            <div class="input-group">
              <div class="input-group-text"><i class="bi bi-lock-fill"></i></div>
              <input name="pass_user" type="password" id="pass_user" class="form-control" placeholder="Password" required="" autocomplete="current-password">
            </div>
          </div>
          <div class="d-flex justify-content-between mt-4" style="position: relative">
            <div class="d-grid gap-2 d-sm-block">
              <button type="submit" class="btn btn-xs-lg btn-success" value="Login">Login</button>
              <button type="button" class="btn btn-xs-lg btn-success" id="fido2-login"><i class="bi bi-shield-fill-check"></i> FIDO2/WebAuthn Login</button>
            </div>
                        <div class="d-grid d-sm-block">
            <button type="button" class="btn btn-secondary ms-auto dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
              <span class="flag-icon flag-icon-gb"></span>
            </button>
            <ul class="dropdown-menu ms-auto login">
                              <li>
                  <a class="dropdown-item " href="?lang=cs-cz">
                    <span class="flag-icon flag-icon-cz"></span>Čeština (Czech)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=da-dk">
                    <span class="flag-icon flag-icon-dk"></span>Danish (Dansk)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=de-de">
                    <span class="flag-icon flag-icon-de"></span>Deutsch (German)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item active" href="?lang=en-gb">
                    <span class="flag-icon flag-icon-gb"></span>English
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=es-es">
                    <span class="flag-icon flag-icon-es"></span>Español (Spanish)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=fi-fi">
                    <span class="flag-icon flag-icon-fi"></span>Suomi (Finish)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=fr-fr">
                    <span class="flag-icon flag-icon-fr"></span>Français (French)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=gr-gr">
                    <span class="flag-icon flag-icon-gr"></span>Ελληνικά (Greek)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=hu-hu">
                    <span class="flag-icon flag-icon-hu"></span>Magyar (Hungarian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=it-it">
                    <span class="flag-icon flag-icon-it"></span>Italiano (Italian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=ko-kr">
                    <span class="flag-icon flag-icon-kr"></span>한국어 (Korean)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=lv-lv">
                    <span class="flag-icon flag-icon-lv"></span>latviešu (Latvian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=lt-lt">
                    <span class="flag-icon flag-icon-lt"></span>Lietuvių (Lithuanian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=nb-no">
                    <span class="flag-icon flag-icon-no"></span>Norsk (Norwegian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=nl-nl">
                    <span class="flag-icon flag-icon-nl"></span>Nederlands (Dutch)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=pl-pl">
                    <span class="flag-icon flag-icon-pl"></span>Język Polski (Polish)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=pt-br">
                    <span class="flag-icon flag-icon-br"></span>Português brasileiro (Brazilian Portuguese)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=pt-pt">
                    <span class="flag-icon flag-icon-pt"></span>Português (Portuguese)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=ro-ro">
                    <span class="flag-icon flag-icon-ro"></span>Română (Romanian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=ru-ru">
                    <span class="flag-icon flag-icon-ru"></span>Pусский (Russian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=si-si">
                    <span class="flag-icon flag-icon-si"></span>Slovenščina (Slovenian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=sk-sk">
                    <span class="flag-icon flag-icon-sk"></span>Slovenčina (Slovak)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=sv-se">
                    <span class="flag-icon flag-icon-se"></span>Svenska (Swedish)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=tr-tr">
                    <span class="flag-icon flag-icon-tr"></span>Türkçe (Turkish)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=uk-ua">
                    <span class="flag-icon flag-icon-ua"></span>Українська (Ukrainian)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=zh-cn">
                    <span class="flag-icon flag-icon-cn"></span>简体中文 (Simplified Chinese)
                  </a>
                </li>
                              <li>
                  <a class="dropdown-item " href="?lang=zh-tw">
                    <span class="flag-icon flag-icon-tw"></span>繁體中文 (Traditional Chinese)
                  </a>
                </li>
                          </ul>
            </div>
                      </div>
        <input type="hidden" value="7336e5f09fb150afd208462589d0e8c2c633bd55de653d6f0c2135fb74837f1a" name="csrf_token"></form>
        <div class="mt-3 mb-4">
          <a href="/reset-password">&gt; Forgot Password?</a>
        </div>
                <div class="my-4" id="fido2-alerts"></div>
                <legend><i class="bi bi-link-45deg"></i> Apps</legend><hr>
        <div class="my-2 d-grid gap-2 d-sm-block apps">
                                    <a href="/SOGo/" role="button" class="btn btn-primary">Webmail</a>
                                        </div>
              </div>
    </div>
  </div>
</div>
<div class="row">
  <div class="col-12 col-md-7 col-lg-6 col-xl-5 ms-auto me-auto">
    <div class="card">
      <div class="card-header">
        <a class="btn btn-link" data-bs-toggle="collapse" href="#collapse1"><i class="bi bi-patch-question-fill"></i> Show/Hide help panel</a>
      </div>
      <div id="collapse1" class="card-collapse collapse">
        <div class="card-body">
                    <p><span style="border-bottom: 1px dotted #999;">Mail Server UI</span></p>
          <p><b>Domain administrators</b> create, modify or delete mailboxes and aliases, change domains and read further information about their assigned domains.<br>
<b>Mailbox users</b> are able to create time-limited aliases (spam aliases), change their password and spam filter settings.</p>
          <p><span style="border-bottom: 1px dotted #999;">Apps</span></p>
          <p>Use a mailcow app to access your mails, calendar, contacts and more.</p>
                  </div>
      </div>
    </div>
  </div>
  </div>
</div>

<div id="ConfirmDeleteModal" class="modal fade" role="dialog">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h3 class="modal-title">Confirm deletion</h3>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <div class="modal-body">
        <p id="DeleteText">Please confirm your changes to the following object id</p>
        <ul id="ItemsToDelete"></ul>
        <hr>
        <button class="btn btn-sm btn-xs-half d-block d-sm-inline btn-danger" id="IsConfirmed">Delete now</button>
        <button class="btn btn-sm btn-xs-half d-block d-sm-inline btn-secondary" id="isCanceled">Cancel</button>
      </div>
    </div>
  </div>
</div>
<!-- version modal -->
<div class="modal fade" id="showVersionModal" tabindex="-1" role="dialog" aria-hidden="true">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title"></h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <div class="modal-body d-flex flex-column mt-2 p-4">
        <div class="spinner-border mx-auto" role="status">
          <span class="visually-hidden">Loading...</span>
        </div>
      </div>
    </div>
  </div>
</div><!-- version modal -->

<script src="/cache/e595c6fb15432764e19ab4fd52f7c67eca5bfbf4.js"></script>
<script>
  var lang_footer = {"cancel":"Cancel","confirm_delete":"Confirm deletion","delete_now":"Delete now","delete_these_items":"Please confirm your changes to the following object id","hibp_check":"Check against haveibeenpwned.com","hibp_nok":"Matched! This is a potentially dangerous password!","hibp_ok":"No match found.","loading":"Please wait...","nothing_selected":"Nothing selected","restart_container":"Restart container","restart_container_info":"<b>Important:<\/b> A graceful restart may take a while to complete, please wait for it to finish.","restart_now":"Restart now","restarting_container":"Restarting container, this may take a while"};
  var lang_acl = {"alias_domains":"Add alias domains","app_passwds":"Manage app passwords","bcc_maps":"BCC maps","delimiter_action":"Delimiter action","domain_desc":"Change domain description","domain_relayhost":"Change relayhost for a domain","eas_reset":"Reset EAS devices","extend_sender_acl":"Allow to extend sender ACL by external addresses","filters":"Filters","login_as":"Login as mailbox user","mailbox_relayhost":"Change relayhost for a mailbox","prohibited":"Prohibited by ACL","protocol_access":"Change protocol access","pushover":"Pushover","pw_reset":"Allow to reset mailcow user password","quarantine":"Quarantine actions","quarantine_attachments":"Quarantine attachments","quarantine_category":"Change quarantine notification category","quarantine_notification":"Change quarantine notifications","ratelimit":"Rate limit","recipient_maps":"Recipient maps","smtp_ip_access":"Change allowed hosts for SMTP","sogo_access":"Allow management of SOGo access","sogo_profile_reset":"Reset SOGo profile","spam_alias":"Temporary aliases","spam_policy":"Blacklist\/Whitelist","spam_score":"Spam score","syncjobs":"Sync jobs","tls_policy":"TLS policy","unlimited_quota":"Unlimited quota for mailboxes"};
  var lang_tfa = {"authenticators":"Authenticators","api_register":"%s uses the Yubico Cloud API. Please get an API key for your key <a href=\"https:\/\/upgrade.yubico.com\/getapikey\/\" target=\"_blank\">here<\/a>","confirm":"Confirm","confirm_totp_token":"Please confirm your changes by entering the generated token","delete_tfa":"Disable TFA","disable_tfa":"Disable TFA until next successful login","enter_qr_code":"Your TOTP code if your device cannot scan QR codes","error_code":"Error code","init_webauthn":"Initializing, please wait...","key_id":"An identifier for your Device","key_id_totp":"An identifier for your key","none":"Deactivate","reload_retry":"- (reload browser if the error persists)","scan_qr_code":"Please scan the following code with your authenticator app or enter the code manually.","select":"Please select","set_tfa":"Set two-factor authentication method","start_webauthn_validation":"Start validation","tfa":"Two-factor authentication","tfa_token_invalid":"TFA token invalid","totp":"Time-based OTP (Google Authenticator, Authy, etc.)","u2f_deprecated":"It seems that your Key was registered using the deprecated U2F method. We will deactivate Two-Factor-Authenticaiton for you and delete your Key.","u2f_deprecated_important":"Please register your Key in the admin panel with the new WebAuthn method.","webauthn":"WebAuthn authentication","waiting_usb_auth":"<i>Waiting for USB device...<\/i><br><br>Please tap the button on your USB device now.","waiting_usb_register":"<i>Waiting for USB device...<\/i><br><br>Please enter your password above and confirm your registration by tapping the button on your USB device.","yubi_otp":"Yubico OTP authentication"};
  var lang_fido2 = {"confirm":"Confirm","fido2_auth":"Login with FIDO2","fido2_success":"Device successfully registered","fido2_validation_failed":"Validation failed","fn":"Friendly name","known_ids":"Known IDs","none":"Disabled","register_status":"Registration status","rename":"Rename","set_fido2":"Register FIDO2 device","set_fido2_touchid":"Register Touch ID on Apple M1","set_fn":"Set friendly name","start_fido2_validation":"Start FIDO2 validation"};
  var docker_timeout = 60 * 1000;
  var mailcow_cc_role = '';
  var mailcow_info = {
    version_tag: '2024-08a',
    last_version_tag: '',
    updatedAt: '1724338590',
    project_url: 'https://github.com/mailcow/mailcow-dockerized',
    project_owner: 'mailcow',
    project_repo: 'mailcow-dockerized',
    branch: 'master'
  };

$(window).scroll(function() {
  sessionStorage.scrollTop = $(this).scrollTop();
});
// Select language and reopen active URL without POST
function setLang(sel) {
  $.post( '/', {lang: sel} );
  window.location.href = window.location.pathname + window.location.search;
}
// FIDO2 functions
function arrayBufferToBase64(buffer) {
  let binary = '';
  let bytes = new Uint8Array(buffer);
  let len = bytes.byteLength;
  for (let i = 0; i < len; i++) {
    binary += String.fromCharCode( bytes[ i ] );
  }
  return window.btoa(binary);
}
function recursiveBase64StrToArrayBuffer(obj) {
  let prefix = '=?BINARY?B?';
  let suffix = '?=';
  if (typeof obj === 'object') {
    for (let key in obj) {
      if (typeof obj[key] === 'string') {
        let str = obj[key];
        if (str.substring(0, prefix.length) === prefix && str.substring(str.length - suffix.length) === suffix) {
          str = str.substring(prefix.length, str.length - suffix.length);
          let binary_string = window.atob(str);
          let len = binary_string.length;
          let bytes = new Uint8Array(len);
          for (let i = 0; i < len; i++) {
            bytes[i] = binary_string.charCodeAt(i);
          }
          obj[key] = bytes.buffer;
        }
      } else {
        recursiveBase64StrToArrayBuffer(obj[key]);
      }
    }
  }
}
  $(window).on('load', function() {
    $(".overlay").hide();
  });
  $(document).ready(function() {
    $(document).on('shown.bs.modal', function(e) {
      modal_id = $(e.relatedTarget).data('target');
      $(modal_id).attr("aria-hidden","false");
    });
    // TFA, CSRF, Alerts in footer.inc.php
    // Other general functions in mailcow.js
    
    // Confirm TFA modal
  

    // Validate FIDO2
  $("#fido2-login").click(function(){
    $('#fido2-alerts').html();
    if (!window.fetch || !navigator.credentials || !navigator.credentials.create) {
      window.alert('Browser not supported.');
      return;
    }
    window.fetch("/api/v1/get/fido2-get-args", {method:'GET',cache:'no-cache'}).then(function(response) {
      return response.json();
    }).then(function(json) {
    if (json.success === false) {
      throw new Error();
    }
    recursiveBase64StrToArrayBuffer(json);
    return json;
    }).then(function(getCredentialArgs) {
      return navigator.credentials.get(getCredentialArgs);
    }).then(function(cred) {
      return {
        id: cred.rawId ? arrayBufferToBase64(cred.rawId) : null,
        clientDataJSON: cred.response.clientDataJSON  ? arrayBufferToBase64(cred.response.clientDataJSON) : null,
        authenticatorData: cred.response.authenticatorData ? arrayBufferToBase64(cred.response.authenticatorData) : null,
        signature : cred.response.signature ? arrayBufferToBase64(cred.response.signature) : null
      };
    }).then(JSON.stringify).then(function(AuthenticatorAttestationResponse) {
      return window.fetch("/api/v1/process/fido2-args", {method:'POST', body: AuthenticatorAttestationResponse, cache:'no-cache'});
    }).then(function(response) {
      return response.json();
    }).then(function(json) {
      if (json.success) {
        window.location = window.location.href.split("#")[0];
  } else {
    throw new Error();
  }
  }).catch(function(err) {
    if (typeof err.message === 'undefined') {
      mailcow_alert_box(lang_fido2.fido2_validation_failed, "danger");
    } else {
      mailcow_alert_box(lang_fido2.fido2_validation_failed + ":<br><i>" + err.message + "</i>", "danger");
    }
  });
  });
  // Set TFA/FIDO2
  $("#register-fido2, #register-fido2-touchid").click(function(){
    let t = $(this);

    $("option:selected").prop("selected", false);
    if (!window.fetch || !navigator.credentials || !navigator.credentials.create) {
      window.alert('Browser not supported.');
      return;
    }

    window.fetch("/api/v1/get/fido2-registration/null", {method:'GET',cache:'no-cache'}).then(function(response) {
      return response.json();
    }).then(function(json) {
      if (json.success === false) {
        throw new Error(json.msg);
      }
      recursiveBase64StrToArrayBuffer(json);

      // set attestation to node if we are registering apple touch id
      if(t.attr('id') === 'register-fido2-touchid') {
        json.publicKey.attestation = 'none';
        json.publicKey.authenticatorSelection.authenticatorAttachment = "platform";
      }

      return json;
    }).then(function(createCredentialArgs) {
      console.log(createCredentialArgs);
      return navigator.credentials.create(createCredentialArgs);
    }).then(function(cred) {
      return {
        clientDataJSON: cred.response.clientDataJSON  ? arrayBufferToBase64(cred.response.clientDataJSON) : null,
        attestationObject: cred.response.attestationObject ? arrayBufferToBase64(cred.response.attestationObject) : null
      };
    }).then(JSON.stringify).then(function(AuthenticatorAttestationResponse) {
      return window.fetch("/api/v1/add/fido2-registration", {method:'POST', body: AuthenticatorAttestationResponse, cache:'no-cache'});
    }).then(function(response) {
      return response.json();
    }).then(function(json) {
      if (json.success) {
        window.location = window.location.href.split("#")[0];
      } else {
        throw new Error(json.msg);
      }
    }).catch(function(err) {
      $('#fido2-alerts').html('<span class="text-danger"><b>' + err.message + '</b></span>');
    });
  });
  $('#selectTFA').change(function () {
    if ($(this).val() == "yubi_otp") {
      $('#YubiOTPModal').modal('show');
      $("option:selected").prop("selected", false);
    }
    if ($(this).val() == "totp") {
      $('#TOTPModal').modal('show');
      request_token = $('#tfa-qr-img').data('totp-secret');
      $.ajax({
        url: '/inc/ajax/qr_gen.php',
        data: {
          token: request_token,
        },
      }).done(function (result) {
        $("#tfa-qr-img").attr("src", result);
      });
      $("option:selected").prop("selected", false);
    }
    if ($(this).val() == "webauthn") {
        // check if Browser is supported
        if (!window.fetch || !navigator.credentials || !navigator.credentials.create) {
            window.alert('Browser not supported.');
            return;
        }

        // show modal
        $('#WebAuthnModal').modal('show');
        $("option:selected").prop("selected", false);

        $("#start_webauthn_register").click(() => {
            var key_id = document.getElementsByName('key_id')[1].value;
            var confirm_password = document.getElementsByName('confirm_password')[1].value;

            // fetch WebAuthn create args
            window.fetch("/api/v1/get/webauthn-tfa-registration/null", {method:'GET',cache:'no-cache'}).then(response => {
                return response.json();
            }).then(json => {
                console.log(json);
                if (json.success === false) throw new Error(json.msg);
                recursiveBase64StrToArrayBuffer(json);

                return json;
            }).then(createCredentialArgs => {
                // create credentials
                return navigator.credentials.create(createCredentialArgs);
            }).then(cred => {
                return {
                    clientDataJSON: cred.response.clientDataJSON  ? arrayBufferToBase64(cred.response.clientDataJSON) : null,
                    attestationObject: cred.response.attestationObject ? arrayBufferToBase64(cred.response.attestationObject) : null,
                    key_id: key_id,
                    tfa_method: "webauthn",
                    confirm_password: confirm_password
                };
            }).then(JSON.stringify).then(AuthenticatorAttestationResponse => {
                // send request
                return window.fetch("/api/v1/add/webauthn-tfa-registration", {method:'POST', body: AuthenticatorAttestationResponse, cache:'no-cache'});
            }).then(response => {
                return response.json();
            }).then(json => {
                if (json.success) {
                    // reload on success
                    window.location = window.location.href.split("#")[0];
                } else {
                    throw new Error(json.msg);
                }
            }).catch(function(err) {
                console.log(err);
                var webauthn_return_code = document.getElementById('webauthn_return_code');
                webauthn_return_code.style.display = webauthn_return_code.style.display === 'none' ? '' : null;
                webauthn_return_code.innerHTML = lang_tfa.error_code + ': ' + err + ' ' + lang_tfa.reload_retry;
            });
        });
    }
    if ($(this).val() == "none") {
      $('#DisableTFAModal').modal('show');
      $("option:selected").prop("selected", false);
    }
  });

  
  // CSRF
  $('<input type="hidden" value="7336e5f09fb150afd208462589d0e8c2c633bd55de653d6f0c2135fb74837f1a">').attr('name', 'csrf_token').appendTo('form');
  if (sessionStorage.scrollTop != "undefined") {
    $(window).scrollTop(sessionStorage.scrollTop);
  }
  });
</script>

<div class="container footer">
    <hr><span class="rot-enc">Proudly Managed By WillaBee Consulting Group, LLC</span>
      
  </div>


</body></html>