From f51b350d554cd92337f4194168f2e3b3051eda90 Mon Sep 17 00:00:00 2001 From: HF Date: Mon, 31 Oct 2022 21:11:28 +0100 Subject: [PATCH] Sum up ModWatchTool columns over shards adjust userscript bot detection --- src/client.js | 23 ----------------------- src/core/parsePixelLog.js | 2 +- src/core/utils.js | 28 ++++++++++++++++++++++++++++ src/routes/api/banme.js | 5 ++++- src/ssr/Main.jsx | 3 ++- 5 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/client.js b/src/client.js index 72e59df..ac2dc92 100644 --- a/src/client.js +++ b/src/client.js @@ -18,7 +18,6 @@ import pixelTransferController from './ui/PixelTransferController'; import store from './store/store'; import renderApp from './components/App'; import { initRenderer, getRenderer } from './ui/renderer'; -import { requestBanMe } from './store/actions/fetch'; import socketClient from './socket/SocketClient'; persistStore(store, {}, () => { @@ -87,28 +86,6 @@ persistStore(store, {}, () => { } }, 300000); - // detect bot scripts - setTimeout(() => { - let elList = document.querySelectorAll('body > div > span'); - for (let i = 0; i < elList.length; i += 1) { - if (elList[i].innerText.includes('Void')) { - requestBanMe(1); - return; - } - } - elList = document.querySelectorAll('option'); - for (let i = 0; i < elList.length; i += 1) { - const el = elList[i]; - if (el.value === 'random') { - const parentEl = el.parentElement.parentElement; - if (parentEl && parentEl.innerText.startsWith('Strategy')) { - requestBanMe(1); - return; - } - } - } - }, 40000); - document.removeEventListener('DOMContentLoaded', onLoad); }; document.addEventListener('DOMContentLoaded', onLoad, false); diff --git a/src/core/parsePixelLog.js b/src/core/parsePixelLog.js index 2dc749c..e8f61bc 100644 --- a/src/core/parsePixelLog.js +++ b/src/core/parsePixelLog.js @@ -355,7 +355,7 @@ export async function getPixelsFromArea( let printIIDs = false; let printUsers = false; - const columns = ['#']; + const columns = ['rid']; const types = ['number']; if (!filterIP && ip2Id.size > 0) { printIIDs = true; diff --git a/src/core/utils.js b/src/core/utils.js index dd61159..2e9a660 100644 --- a/src/core/utils.js +++ b/src/core/utils.js @@ -541,8 +541,36 @@ export function combineTables(a, b) { bTable.rows = bTable.rows.concat(newRows); } if (bTable.columns[0] === 'rid') { + // make sure that row-ids are unique bTable.rows.forEach((row, i) => { row[0] = i; }); } + const amountCol = bTable.columns.indexOf('#'); + if (~amountCol) { + // sum amounts of duplicates if possible + let sumCol = bTable.columns.indexOf('canvas'); + if (sumCol === -1) sumCol = bTable.columns.indexOf('IID'); + if (~sumCol) { + const timeCol = bTable.columns.indexOf('time'); + for (let i = 0; i < bTable.rows.length; i += 1) { + const aCol = bTable.rows[i]; + const val = aCol[sumCol]; + if (val && val !== 'N/A') { + for (let u = i + 1; u < bTable.rows.length; u += 1) { + const bCol = bTable.rows[u]; + if (bCol[sumCol] === val) { + const amount = aCol[amountCol] + bCol[amountCol]; + if (~timeCol && aCol[timeCol] < bCol[timeCol]) { + bTable.rows[i] = bCol; + } + bTable.rows.splice(u, 1); + bTable.rows[i][amountCol] = amount; + u -= 1; + } + } + } + } + } + } return bTable; } diff --git a/src/routes/api/banme.js b/src/routes/api/banme.js index e41c80c..12f51b6 100644 --- a/src/routes/api/banme.js +++ b/src/routes/api/banme.js @@ -17,7 +17,7 @@ async function banme(req, res) { let expires = 0; if (code === 1) { reason = 'Userscript Bot'; - expires = Date.now() + 1000 * 3600 * 24 * 30; + expires = Date.now() + 1000 * 3600 * 24 * 14; /* * ignore it for now to collect data manually * @@ -32,6 +32,9 @@ async function banme(req, res) { reason = 'Captcha Solving Script'; expires = Date.now() + 1000 * 3600 * 24 * 3; */ + } else if (code === 3) { + reason = 'Updated Userscript Bot'; + expires = Date.now() + 1000 * 3600 * 24 * 30; } else { res.json({ status: 'nope', diff --git a/src/ssr/Main.jsx b/src/ssr/Main.jsx index 6146edc..677fa95 100644 --- a/src/ssr/Main.jsx +++ b/src/ssr/Main.jsx @@ -65,10 +65,11 @@ function generateMainPage(req) { /> - + +
${scripts.map((script) => ``).join('')}