https://bobobet555.com/

Eingereichte URL:
https://bobobet555.com/
Bericht beendet:

Die von der Seite ausgehenden identifizierten Links

JavaScript-Variablen · 16 gefunden

Globale JavaScript-Variablen, die in das Window Object einer Seite geladen werden, sind Variablen, die außerhalb von Funktionen deklariert werden und von jeder Stelle des Codes innerhalb des aktuellen Bereichs zugänglich sind

NameTyp
0object
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
checkDomainfunction
selectHaUrlfunction
checkUrlfunction
loadIframefunction
selectAppfunction
loginfunction

Konsolenprotokoll-Meldungen · 5 gefunden

In der Web-Konsole protokollierte Meldungen

TypKategorieProtokoll
warningother
URL
https://bobobet555.com/
Text
Allow attribute will take precedence over 'allowfullscreen'.
errornetwork
URL
https://bobobet555.com/favicon.ico
Text
Failed to load resource: the server responded with a status of 404 ()
verbosedom
URL
https://bobobet555.com/front/login/index.html
Text
[DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o
verbosedom
URL
https://bobobet555.com/front/login/index.html
Text
[DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o
verbosedom
URL
https://bobobet555.com/front/login/index.html
Text
[DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o

HTML

Der HTML-Rohtext der Seite

<!DOCTYPE html><html lang="en"><head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no viewport-fit=cover">
    <!--    <meta name="theme-color" content="#000" />-->
    <title>...</title>
    <link id="favicon" rel="icon" type="image/x-icon" href="front/face/all/current/z54/favicon.ico">
    <style>
      * {
        box-sizing: border-box;
      }
      html,
      body {
        height: 100%;
        width: 100%;
        margin: 0;
        padding: 0;
        overflow: hidden;
      }
      #app-iframe {
        position: relative;
        width: 100%;
        height: 100%;
        border: 0;
      }
      img {
        display: none;
      }
      body.bodyLandscape {
        padding-top: 10vh !important;
        height: 110vh;
        width: calc(100% - 80px);
        margin: 0 40px;
        padding: 0;
        overflow: auto;
      }
      .bodyScrolled {
        width: 100% !important;
        margin: 0 !important;
      }
      #app-iframe {
        position: relative;
        width: 100%;
        height: 100%;
        border: 0;
      }
      img {
        display: none;
      }
      @keyframes drag_animation {
        0% {
          transform: scale(1);
        }

        25% {
          transform: scale(1.5);
        }

        30% {
          transform: scale(1);
        }

        60% {
          opacity: 1;
        }

        to {
          transform: translateY(-200px);
          opacity: 0;
        }
      }
      .iosfullscreen {
        position: absolute;
        display: block;
        height: 150vh;
        pointer-events: all;
        color: #fff;
        top: 0;
        left: 0;
        width: 100%;
        background-color: #000;
        z-index: 1500;
        overflow: scroll;
      }

      .iosdragFullscreen {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
      }

      .iosscrollarea {
        position: relative;
        top: 0;
        left: 0;
        width: 100%;
        height: 100vh;
      }
      .iosscrollarea .warning {
        position: fixed;
        width: 60vw;
        height: 30vw;
        top: calc(50% - 15vw);
        left: calc(50% - 30vw);
        text-align: center;
      }
      .iosscrollarea .animation {
        position: absolute;
        top: 50vh;
        right: 15px;
        width: 50px;
        height: 50px;
        background-size: 100% 100%;
        background-position: 50%;
        background-repeat: no-repeat;
        background-image: url("./casinohand.webp");
        animation-name: drag_animation;
        animation-duration: 4s;
        animation-iteration-count: infinite;
      }
      #iphoneTest {
        display: none;
      }
    </style>
  <link rel="apple-touch-icon" href="front/face/all/current/z54/favicon.ico"></head>
  <body>
    <div id="iphoneTest" style="overflow: scroll" class="background iosfullscreen">
      <div class="element iosdragFullscreen">
        <div class="element background iosscrollarea">
          <div class="warning">
            <span id="drag-fullscreen-title" class="element title text-title">This game needs to be in fullscreen </span>
            <br>
            <span id="drag-fullscreen-message" class="element body text-title-1"> Use your finger to drag the screen </span>
          </div>
          <div class="animation"></div>
        </div>
      </div>
    </div>
    <script>
      let [domain, supportHa] = checkDomain();
      const haList = ["s1", "s2"];
      const af = /#af=([^#]*)/.exec(window.location.href);
      if (af && af[1]) {
        sessionStorage.afId = af[1];
      }

      function checkDomain() {
        let _domain = window.location.host;
        if (_domain === "localhost" || _domain === "192.168.2.12") return [_domain, false];
        const tempHostArray = window.location.host.split(".");

        if (["s1", "s2", "devel", "intern", "shop", "terminal"].includes(tempHostArray[0])) {
          _domain = tempHostArray.slice(1).join(".");
          return [_domain, false];
        }
        if (tempHostArray[0] === "www") {
          _domain = tempHostArray.slice(1).join(".");
        }
        return [_domain, true];
      }

      async function selectHaUrl(_haList) {
        if (supportHa) {
          const rand = Math.floor(Math.random() * _haList.length);
          if (_haList[rand]) {
            const url = `${window.location.protocol}//${_haList[rand]}.${domain}/`;
            if (!(await checkUrl(url))) {
              _haList.splice(rand, rand + 1);
              if (_haList.length === 1) {
                return `${window.location.protocol}//${_haList[0]}.${domain}/`;
              } else {
                return selectHaUrl(_haList);
              }
            }
            return url;
          } else {
            alert("Can't connect with server");
          }
        } else {
          return "";
        }
      }

      // TODO: remove
      function checkUrl(_url) {
        // TODO: fix cors error
        return true;
        const controller = new AbortController();
        const timeoutId = setTimeout(() => controller.abort(), 5000);
        return fetch(`${_url}index.html`, { signal: controller.signal })
          .then((r) => {
            return true;
          })
          .catch((e) => {
            console.error(e);
            return false;
          });
      }

      function loadIframe(path) {
        if (document.getElementById("app-iframe")) {
          document.getElementById("app-iframe").remove();
        }
        const iframe = document.createElement("iframe");
        iframe.src = selectApp(path);
        iframe.id = "app-iframe";
        iframe.name = "app";
        iframe.scrolling = "yes";
        iframe.allow = "fullscreen";
        iframe.allowFullscreen = true;
        document.body.appendChild(iframe);
      }

      function selectApp(path) {
        let core = +localStorage.core_v === 2 ? "sp/fmcore/current" : "portal";
        // core = "portal";
        if (localStorage.user_type === "manager") {
          const params = window.location.href.split("?")[1] || "";
          if (params.includes("sbooking")) {
            return `${path}front/${core}/index.html`;
          }
          // return `${path}front/${core}/index.html`;
          return `${path}front/mng/index.html`;
        }
        return `${path}front/${core}/index.html`;
      }

      async function login({ username, password, shard, part, haUrl, saveDevice }) {
        haUrl = haUrl || (await selectHaUrl(haList));
        if (typeof haUrl === "undefined") {
          return;
        }
        const headers = {
          "Content-Type": "application/json",
        };
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        fetch(`${haUrl}aaa/login`, {
          method: "POST",
          headers,
          body: JSON.stringify({ username, password, shard, part: part * 1 }),
        })
          .then((response) => {
            if (response.status === 200) {
              return response;
            } else {
              throw new Error(`Can't login!:${response.status}`);
            }
          })
          .then((response) => response.json())
          .then(async (data) => {
            if (data.rToken) {
              try {
                const user = JSON.parse(atob(data.rToken.split(".")[1]));
                if ([10, 11, 12].includes(user.role * 1)) {
                  localStorage.user_type = "manager";
                }
                localStorage.token = data.rToken;
                localStorage.user = JSON.stringify(user);
                localStorage.lastUser = user.id;
                localStorage["Auth-Usr"] = `${shard}${part}:${user.id}`;
                if (saveDevice) {
                  await trustDevice(haUrl, username, password, data.rToken);
                }
                window.location.reload();
              } catch (error) {
                console.log(error);
                alert(error.message);
              }
            }
          })
          .catch((error) => {
            console.log(error);
            alert(error.message);
          });
      }

      function trustDevice(haUrl, username, password, rToken) {
        const headers = {
          "Content-Type": "application/json",
          "x-access-token": rToken,
        };
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(`${haUrl}aaa/login_trust`, {
          method: "POST",
          headers,
          body: JSON.stringify({ username, password }),
        })
          .then((response) => {
            if (response.status === 200) {
              return response;
            } else {
              throw new Error(`Device not saved!:${response.status}`);
            }
          })
          .then((response) => response.json())
          .then(async (data) => {
            if (data.rToken) {
              try {
                const user = JSON.parse(atob(data.rToken.split(".")[1]));
                localStorage.token = data.rToken;
                localStorage.user = JSON.stringify(user);
              } catch (error) {
                console.log(error);
                alert(error.message);
              }
            }
          })
          .catch((error) => {
            console.log(error);
            alert(error.message);
          });
      }

      async function logout(haUrl, rToken) {
        haUrl = haUrl || (await selectHaUrl(haList));
        const headers = {
          "Content-Type": "application/json",
          "x-access-token": rToken,
        };
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(`${haUrl}aaa/logout`, {
          method: "POST",
          headers,
        }).catch((error) => {
          console.log(error);
          alert(error.message);
        });
      }

      async function u_logout(haUrl, rToken) {
        haUrl = haUrl || (await selectHaUrl(haList));
        const headers = {
          "Content-Type": "application/json",
          "x-access-token": rToken,
        };
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(`${haUrl}aaa/u_logout`, {
          method: "POST",
          headers,
        })
          .then((response) => response.json())
          .catch((error) => {
            console.log(error);
            alert(error.message);
          });
      }

      async function bookTicket(dataToSend, haUrl) {
        if (!haUrl) {
          haUrl = await selectHaUrl(haList);
        }
        if (typeof haUrl === "undefined") {
          return;
        }
        const method = "back/.in?action=nologin_call&subaction=set_book_ticket";
        const headers = {};
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(haUrl + method, {
          method: "POST",
          body: dataToSend,
          headers,
        }).then((response) => response.json());
      }

      async function searchTicket(data) {
        let { ticketNr, ticketCode, haUrl } = data;
        if (!haUrl) {
          haUrl = await selectHaUrl(haList);
        }
        if (typeof haUrl === "undefined") {
          return { Error: true, Message: "API Url Error!" };
        }
        let method = "back/.in?action=nologin_call&subaction=search_ticket";
        method += "&ticket_code=" + ticketCode;

        if (Number.isNaN(+ticketNr)) {
          method += "&ticket_name=" + ticketNr;
        } else {
          method += "&ticket_id=" + ticketNr;
        }
        const headers = {};
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(haUrl + method, {
          method: "POST",
          headers,
        }).then((response) => response.json());
      }

      async function getJackpot(data) {
        let { haUrl, model } = data;
        if (!haUrl) {
          haUrl = await selectHaUrl(haList);
        }
        let method = `back/.in?action=nologin_call&subaction=jackpot&model=${model}`;

        const headers = {};
        if (localStorage["Auth-Usr"]) {
          headers["Auth-Usr"] = localStorage["Auth-Usr"];
        }
        return fetch(haUrl + method, {
          method: "POST",
          headers,
        }).then((response) => response.json());
      }

      // init
      (async () => {
        let path = "";
        if (localStorage.token) {
          path = await selectHaUrl(haList);
        }
        loadIframe(path);
      })();

      window.addEventListener("message", async (event) => {
        switch (event.data.action) {
          case "fmcore-loaded": {
            const out = {
              action: "app-init",
              payload: {
                domain,
                token: localStorage.token,
                user: localStorage.user,
                facePath: "../../../face/",
                appsPath: "../../../",
              },
            };
            if (window.location.href.split("?").length > 1) {
              out.payload.params = window.location.href.split("?")[1];
            }
            window.frames.app.postMessage(out, "*");

            out.action = "fmcore-init";
            window.frames.app.postMessage(out, "*");

            // disable back button
            history.pushState(null, document.title, location.href);
            window.addEventListener("popstate", function () {
              history.pushState(null, document.title, location.href);
            });
            break;
          }
          case "app-init": {
            const out = {
              action: "app-init",
              payload: {
                domain,
                token: localStorage.token,
                user: localStorage.user,
                facePath: "../face/",
              },
            };
            if (window.location.href.split("?").length > 1) {
              out.payload.params = window.location.href.split("?")[1];
            }
            window.frames.app.postMessage(out, "*");

            out.action = "fmcore-init";
            window.frames.app.postMessage(out, "*");

            // disable back button
            history.pushState(null, document.title, location.href);
            window.addEventListener("popstate", function () {
              history.pushState(null, document.title, location.href);
            });
            break;
          }
          case "login": {
            if (event.data.payload.hasOwnProperty("shard") && event.data.payload.hasOwnProperty("part")) {
              await login(event.data.payload);
            } else {
              alert("Missing domain configurations!");
            }
            break;
          }
          case "logout": {
            const { haUrl, shard, part } = event.data.payload || {};
            if (shard && part) {
              await logout(haUrl, localStorage.token);
            }
            delete localStorage.token;
            delete localStorage.user_type;
            window.location.reload();
            break;
          }
          case "u_logout": {
            const { haUrl, rToken } = event.data.payload;
            if (event.data.payload.hasOwnProperty("shard") && event.data.payload.hasOwnProperty("part")) {
              const message = await u_logout(haUrl, rToken);
              const out = {
                action: "u_logout_response",
                payload: {
                  message,
                },
              };
              window.frames.app.postMessage(out, "*");
            }
            break;
          }
          case "delete-cred": {
            delete localStorage.token;
            delete localStorage.user_type;
            break;
          }
          case "reload": {
            window.location.reload();
            break;
          }
          case "book-ticket-api": {
            const { data, haUrl } = event.data.payload;
            let formData = new FormData();
            formData.append("data", JSON.stringify(data));
            const response = await bookTicket(formData, haUrl);
            if (event.ports?.[0]) {
              event.ports[0].postMessage(response);
            } else {
              const out = {
                action: "book-ticket-response",
                payload: { data: response },
              };
              window.frames.app.postMessage(out, "*");
            }
            break;
          }
          case "search-ticket-api": {
            const response = await searchTicket(event.data.payload);
            if (event.ports?.[0]) {
              event.ports[0].postMessage(response);
            } else {
              const out = {
                action: "search-ticket-response",
                payload: response,
              };
              window.frames.app.postMessage(out, "*");
            }
            break;
          }
          case "get-sessionStorage": {
            const { param } = event.data.payload;
            if (event.ports && event.ports[0]) {
              event.ports[0].postMessage(sessionStorage.getItem(param));
            }
            break;
          }
          case "get-localStorage-async": {
            const { param } = event.data.payload;
            if (event.ports && event.ports[0]) {
              event.ports[0].postMessage(localStorage.getItem(param));
            }
            break;
          }
          case "get-localStorage": {
            const { param } = event.data.payload;
            const out = {
              action: "get-localStorage",
              payload: {
                [param]: localStorage[param],
              },
            };

            window.frames.app.postMessage(out, "*");
            break;
          }
          case "set-sessionStorage": {
            const { param, value } = event.data.payload;
            sessionStorage[param] = value;
            break;
          }
          case "del-sessionStorage": {
            const { param } = event.data.payload;
            sessionStorage.removeItem(param);
            break;
          }
          case "del-localStorage": {
            const { param } = event.data.payload;
            localStorage.removeItem(param);
            break;
          }
          case "set-localStorage": {
            const { param, value } = event.data.payload;
            localStorage[param] = value;
            break;
          }
          case "set-title": {
            document.title = event.data.payload.title;
            break;
          }
          case "set-meta": {
            const { name, value } = event.data.payload;
            if (document.querySelector(`meta[name="${name}"]`)) {
              document.querySelector(`meta[name="${name}"]`).content = value;
            } else {
              const meta = document.createElement("meta");
              meta.setAttribute("name", name);
              meta.content = value;
              document.getElementsByTagName("head")[0].appendChild(meta);
            }
            break;
          }
          case "set-favicon": {
            const { path } = event.data.payload;
            document.getElementById("favicon").href = `front/face/${path}`;
            let head = window.parent.document.getElementsByTagName("head")[0];
            let link = window.parent.document.createElement("link");
            link.rel = "apple-touch-icon";
            link.href = `front/face/${path}`;
            head.appendChild(link);
            break;
          }
          case "printPost": {
            window.parent.postMessage(event.data.payload, "*");
            break;
          }
          case "open-sl": {
            const { type } = event.data.payload;
            const url = `${window.location.protocol}://${window.location.host}/?screen&type=${type}`;
            window.open(url);
            break;
          }
          case "open-sl-param": {
            const { param } = event.data.payload;
            const url = `${window.location.protocol}//${window.location.host}/${param}`;
            window.open(url);
            break;
          }
          case "open-window": {
            const { path, setCookie } = event.data.payload;
            if (setCookie) {
              document.cookie = `obs_wa=${localStorage.token};path=/;domain=${domain}`;
            }
            const url = `${await selectHaUrl(haList)}${path}`;
            window.open(url, "_blank", "height=600,width=600");
            // console.log('open-sl')
            break;
          }
          case "redirect": {
            const { path } = event.data.payload;
            window.location.href = path;
            break;
          }
          case "load-chat-smartsupp": {
            const { key, offset = "" } = event.data.payload;

            window._smartsupp = window._smartsupp || {};
            const [x, y] = offset.split(",");
            if (x) window._smartsupp.offsetX = x;
            if (y) window._smartsupp.offsetY = y;
            window._smartsupp.key = key;
            window.smartsupp ||
              (function (d) {
                let smartsupp;
                var s,
                  c,
                  o = (smartsupp = function () {
                    o._.push(arguments);
                  });
                o._ = [];
                s = d.getElementsByTagName("script")[0];
                c = d.createElement("script");
                c.type = "text/javascript";
                c.charset = "utf-8";
                c.async = true;
                c.src = "//www.smartsuppchat.com/loader.js?";
                s.parentNode.insertBefore(c, s);
              })(document);
            break;
          }
          case "load-google-tag-manager": {
            const { key } = event.data.payload;
            (function (w, d, s, l, i) {
              w[l] = w[l] || [];
              w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
              var f = d.getElementsByTagName(s)[0],
                j = d.createElement(s),
                dl = l !== "dataLayer" ? "&l=" + l : "";
              j.async = true;
              j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
              f.parentNode.insertBefore(j, f);
            })(window, document, "script", "dataLayer", key);
            break;
          }
          case "get-jackpot": {
            const response = await getJackpot(event.data.payload);
            if (event.ports?.[0]) {
              event.ports[0].postMessage(response);
            } else {
              const out = {
                action: "get-jackpot-response",
                payload: response,
              };
              window.frames.app.postMessage(out, "*");
            }
            break;
          }
          default:
            break;
        }
      });
    </script><iframe src="front/portal/index.html" id="app-iframe" name="app" scrolling="yes" allow="fullscreen" allowfullscreen=""></iframe>
  

</body></html>