diff --git a/js/legacy.js b/js/legacy.js index 38f3cb2d..638425aa 100644 --- a/js/legacy.js +++ b/js/legacy.js @@ -55,12 +55,43 @@ * blacklist of UserAgents (parts) known to belong to a bot * * @private - * @enum {Array} + * @type {string[]} * @readonly */ var badBotUA = [ + // Generic bot identifiers + 'bot', 'Bot', - 'bot' + 'crawler', + 'Crawler', + 'spider', + 'Spider', + 'scraper', + 'Scraper', + + // Search Engines + 'Mediapartners-Google', + 'BingPreview', + 'Yahoo! Slurp', + + // SEO & Analytics + 'Screaming Frog', + + // Social Media + 'facebookexternalhit', + + // AI & LLM + 'ChatGPT-User', + 'anthropic-ai', + + // Security Scanners + 'CensysInspect', + 'Shodan', + + // Other Common Crawlers + '80legs', + 'ia_archiver', + 'Teoma', ]; /** diff --git a/js/privatebin.js b/js/privatebin.js index 54f72d50..1c2429c1 100644 --- a/js/privatebin.js +++ b/js/privatebin.js @@ -3236,7 +3236,7 @@ jQuery.PrivateBin = (function($) { * @param {FileList[]} loadedFiles (optional) loaded files array * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/FileReader#readAsDataURL()} */ - function readFileData(loadedFiles) { + function readFileData(loadedFiles = []) { // Clear old cache me.removeAttachmentData(); @@ -3248,15 +3248,15 @@ jQuery.PrivateBin = (function($) { return; } - if (loadedFiles === undefined) { - loadedFiles = [...$fileInput[0].files]; - me.clearDragAndDrop(); - } else { + if (loadedFiles && loadedFiles.length > 0) { const fileNames = loadedFiles.map((loadedFile => loadedFile.name)); printDragAndDropFileNames(fileNames); + } else { + loadedFiles = [...$fileInput[0].files]; + me.clearDragAndDrop(); } - if (typeof loadedFiles !== 'undefined') { + if (loadedFiles.length > 0) { files = loadedFiles; loadedFiles.forEach((loadedFile, index) => { const fileReader = new FileReader(); diff --git a/lib/Configuration.php b/lib/Configuration.php index 1ac896f9..fcdb4720 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -120,9 +120,9 @@ class Configuration 'js/dark-mode-switch.js' => 'sha512-BhY7dNU14aDN5L+muoUmA66x0CkYUWkQT0nxhKBLP/o2d7jE025+dvWJa4OiYffBGEFgmhrD/Sp+QMkxGMTz2g==', 'js/jquery-3.7.1.js' => 'sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==', 'js/kjua-0.10.0.js' => 'sha512-BYj4xggowR7QD150VLSTRlzH62YPfhpIM+b/1EUEr7RQpdWAGKulxWnOvjFx1FUlba4m6ihpNYuQab51H6XlYg==', - 'js/legacy.js' => 'sha512-rGXYUpIqbFoHAgBXZ0UlJBdNAIMOC9EQ67MG0X46D5uRB8LvwzgKirbSQRGdYfk8I2jsUcm+tvHXYboUnC6DUg==', + 'js/legacy.js' => 'sha512-RQEo1hxpNc37i+jz/D9/JiAZhG8GFx3+SNxjYnI7jUgirDIqrCSj6QPAAZeaidditcWzsJ3jxfEj5lVm7ZwTRQ==', 'js/prettify.js' => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==', - 'js/privatebin.js' => 'sha512-Ln6NW/gCPGV/Ol6EEJUIqGOm5yklpbZ9/C3iexn+ab4bLY62Ke26ZgAz6YuYUH5aHhLhTZkodQQpOK+jdZg2jg==', + 'js/privatebin.js' => 'sha512-7/FCSrKeX5DFYbFvJbXdbf5uryunr3sVLFHzbw+iINc85oUXIptI20YxlZdAH4NEqVWXH1VNxB4kAKYRP5Qc1g==', 'js/purify-3.3.0.js' => 'sha512-lsHD5zxs4lu/NDzaaibe27Vd2t7Cy9JQ3qDHUvDfb4oZvKoWDNEhwUY+4bT3R68cGgpgCYp8U1x2ifeVxqurdQ==', 'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==', 'js/zlib-1.3.1-2.js' => 'sha512-4gT+v+BkBqdVBbKOO4qKGOAzuay+v1FmOLksS+bMgQ08Oo4xEb3X48Xq1Kv2b4HtiCQA7xq9dFRzxal7jmQI7w==',