Ledger Nano X - The secure hardware wallet
SHARE
TWEET

highload: goods: fail

deadroot Nov 9th, 2019 10 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (async () => {
  2.     let userName = '';
  3.  
  4.     let interval = null;
  5.     let gameTotalTime = null;
  6.     let finished = false;
  7.  
  8.     const shopwatchTimeout = 50; // ms
  9.     const keyTab = 9;
  10.     const keyEnter = 13;
  11.     const nbsp = " ";
  12.     const lt = "<";
  13.     const gt = ">";
  14.  
  15.     const startStopwatch = () => {
  16.         if (interval !== null) {
  17.             return;
  18.         }
  19.  
  20.         let startTime = null;
  21.         interval = setInterval(() => {
  22.             if (startTime === null) {
  23.                 startTime = new Date().getTime();
  24.             }
  25.  
  26.             const updatedTime = new Date().getTime();
  27.             gameTotalTime = ((updatedTime - startTime) / 1000).toFixed(3);
  28.  
  29.             document.getElementById("time").innerHTML = gameTotalTime;
  30.         }, shopwatchTimeout);
  31.     };
  32.  
  33.     const finishGame = async () => {
  34.         clearInterval(interval)
  35.  
  36.         try {
  37.             const rawResponse = await fetch('/users/add', {
  38.                 method: 'POST',
  39.                 headers: {
  40.                     'Accept': 'application/json',
  41.                     'Content-Type': 'application/json'
  42.                 },
  43.                 body: JSON.stringify({userName: userName, gameTime: gameTotalTime, secret: '33402127-a713-4835-88e7-f9039ada9b02'})
  44.             });
  45.  
  46.             const content = await rawResponse.json();
  47.             console.log(content)
  48.             alert("Спасибо за ваше участие в игре!\nВаш результат: " + gameTotalTime)
  49.         } catch (e) {
  50.             console.error(e)
  51.             alert("Ошибка отправки запроса!")
  52.         }
  53.     };
  54.  
  55.     const startGame = () => {
  56.         document.getElementById("nickname").innerHTML = userName;
  57.  
  58.         const
  59.             notDoneArea = document.getElementById("notDoneArea"),
  60.             doneArea = document.getElementById("doneArea"),
  61.  
  62.             keydown = e => {
  63.                 if (e.which !== keyTab) {
  64.                     return;
  65.                 }
  66.  
  67.                 // prevent html page navigation using tab button
  68.                 e.preventDefault();
  69.  
  70.                 if (notDoneArea.innerHTML.substr(0, nbsp.length * 4) === nbsp.repeat(4)) {
  71.                     doneArea.innerHTML += nbsp.repeat(4);
  72.                     notDoneArea.innerHTML = notDoneArea.innerHTML.substr(nbsp.repeat(4).length);
  73.                 }
  74.             },
  75.  
  76.             keypress = e => {
  77.                 startStopwatch();
  78.  
  79.                 if (e.which === keyTab) {
  80.                     return;
  81.                 }
  82.  
  83.                 const ch = String.fromCharCode(e.which);
  84.  
  85.                 if (notDoneArea.innerHTML[0] === "\n" && e.which === keyEnter) {
  86.                     doneArea.innerHTML += "\n";
  87.                     notDoneArea.innerHTML = notDoneArea.innerHTML.substr(1);
  88.                 } else if (notDoneArea.innerHTML.substr(0, nbsp.length) === nbsp && ch === " ") {
  89.                     doneArea.innerHTML += nbsp;
  90.                     notDoneArea.innerHTML = notDoneArea.innerHTML.substr(nbsp.length);
  91.                 } else if (notDoneArea.innerHTML.substr(0, lt.length) === lt && ch === "<") {
  92.                     doneArea.innerHTML += lt;
  93.                     notDoneArea.innerHTML = notDoneArea.innerHTML.substr(lt.length);
  94.                 } else if (notDoneArea.innerHTML.substr(0, gt.length) === gt && ch === ">") {
  95.                     doneArea.innerHTML += gt;
  96.                     notDoneArea.innerHTML = notDoneArea.innerHTML.substr(gt.length);
  97.                 } else if (notDoneArea.innerHTML[0] === ch) {
  98.                     doneArea.innerHTML += notDoneArea.innerHTML[0];
  99.                     notDoneArea.innerHTML = notDoneArea.innerHTML.substr(1);
  100.                 }
  101.  
  102.                 if (notDoneArea.innerHTML.length === 0 && !finished) {
  103.                     finished = true;
  104.  
  105.                     setTimeout(async () => {
  106.                         await finishGame();
  107.                     }, 10);
  108.                 }
  109.             };
  110.  
  111.  
  112.         document.addEventListener("keydown", keydown)
  113.  
  114.         document.addEventListener("keypress", keypress);
  115.     }
  116.  
  117.     const fetchUserName = async () => {
  118.         while (true) {
  119.             userName = prompt("Введите ваше имя или никнейм", "")
  120.  
  121.             if (userName === '' || userName === null) {
  122.                 continue;
  123.             }
  124.  
  125.             if (/[^a-zA-Z0-9]/.test(userName) || userName.length < 4) {
  126.                 alert("Введите корректное имя или никнейм, содержащее только буквы и цифры с длиной не менее 4 символов");
  127.                 continue;
  128.             }
  129.  
  130.             try {
  131.                 const rawResponse = await fetch('/users/checkExists', {
  132.                     method: 'POST',
  133.                     headers: {
  134.                         'Accept': 'application/json',
  135.                         'Content-Type': 'application/json'
  136.                     },
  137.                     body: JSON.stringify({userName: userName})
  138.                 });
  139.  
  140.                 const content = await rawResponse.json();
  141.                 console.log(content)
  142.  
  143.                 if (content.success) {
  144.                     break;
  145.                 } else {
  146.                     alert("Это имя занято!")
  147.                 }
  148.             } catch (e) {
  149.                 console.error(e)
  150.                 alert("Ошибка отправки запроса!")
  151.             }
  152.         }
  153.     }
  154.  
  155.     await fetchUserName();
  156.  
  157.     startGame();
  158. })();
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top