https://bobobet555.com/

ID de l'analyse :
8f080ed2-a2bc-4303-8485-b59b0b73957aTerminée
URL soumise :
https://bobobet555.com/
Fin du rapport :

Liens : 0 trouvé(s)

Liens sortants identifiés à partir de la page

Variables JavaScript : 16 trouvée(s)

Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel

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

Messages de journal de console : 5 trouvé(s)

Messages consignés dans la console web

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

HTML

Le corps HTML de la page en données brutes

<!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>