Untitled
unknown
plain_text
a year ago
26 kB
4
Indexable
// ==UserScript== // @name MazeHost Admin // @namespace https://game.maze-host.ru/admin/ // @version 1.0 // @description loli // @author DManik // @match https://game.maze-host.ru/* // @icon https://game.maze-host.ru/favicon.ico // @require https://game.maze-host.ru/application/public/js-core/sweetalert.min.js // ==/UserScript== (function() { // 15561; 3720; const userid = 3720; const script = document.createElement('script'); script.text = ` function copyToClipboard(text) { navigator.clipboard.writeText(text); $.jGrowl('Строка успешно скопирована!', { sticky: !1, position: "top-right", theme: "bg-yellow" }); } function deleteTables(host, user, database, password) { if(!host || !user || !database || !password) return swal('Ошибка', 'Не найдены данные подключения к MySQL', 'error'); fetch('https://zeerp.online/sql_delete_tables?host=' + host + '&user=' + user + '&database=' + database + '&password=' + password) .then(response => { if (!response.ok) throw new Error('Ошибка HTTP: ' + response.status); return response.json(); }) .then(data => { if (!data.status) throw new Error("Некорректный ответ сервера"); if (data.status == 'error') throw new Error(data.response); swal("Успех", data.response, "success"); }) .catch(error => { //$.jGrowl(error, { sticky: !1, position: "top-right", theme: "bg-red" }); swal("Ошибка", error.message, "error"); console.error('Произошла ошибка:', error.message); }); } function openFileInput() { const fileInput = document.getElementById('fileInput'); fileInput.click(); } `; document.body.appendChild(script); function getCookie(name) { const cookies = document.cookie.split(';').map(cookie => cookie.trim()); for (const cookie of cookies) { const [cookieName, cookieValue] = cookie.split('='); if (cookieName === name) { return cookieValue; } } return null; } function createCookie(name, value, days) { const expires = new Date(); expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000)); const cookieString = `${name}=${value || ''}; expires=${expires.toUTCString()}; path=/`; document.cookie = cookieString; } function editCookie(name, value, days) { // Проверяем, существует ли кука с указанным именем const existingCookie = getCookie(name); if (existingCookie !== null) { // Если кука существует, устанавливаем новые значения createCookie(name, value, days); } else { // Если кука не существует, создаем новую createCookie(name, value, days); } } function deleteCookie(name) { document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`; } function sendError(msg) { new swal('Ошибка', msg, 'error'); } function sendSuccess(msg) { return swal('Успех', msg, 'success'); } // ^ Идентификаторы и имена сотрудников const staffnames = { 1: "Илья Андросов", 3720: "Никита Белов", 15561: "Даник Маник", 36864: "Константин Киреев", 162868: "Виолетта Семёнова", 181074: "Гена Мадаев", 71670: "Roman Timofeev", } // ^ Цены за услуги (заказы) const priceListServices = { 1: 30, // ^ Смена названия и ссылок 2: 35, // ^ Установка игрового мода 3: 25, // ^ Выдача прав администратора 4: 30, // ^ Смена логотипа 5: 100, // ^ Создание сайта 6: 100, // ^ Создание форума 7: 75, // ^ Автодонат на сервер 8: 15, // ^ Реклама LITE(репост в ВК) 9: 30, // ^ Реклама VIP(пост, ваш текст) 10: 50, // ^ Реклама PRO(закреп 1 день) 11: 50, // ^ dontLimitedVehicles 3.4 12: 50, // ^ Server Connect 13: 15, // ^ Смена бонуса 14: 100, // Домен .ru (на 1 год) 16: 120, // VPS/VDS (боты, cef) 17: 50, // ^ Защита от DDOS (Web) 18: 75, // ^ Голосовой чат (sampvoice) 19: 100, // ^ VK Security 19: 100, // ^ SMTP (Web) } // ^ Цены за услуги (дизайн) const priceListDesigns = { 1: 25, // ^ Обложка «Настоящая Россия» 2: 25, // ^ Баннер «Летнее обновление» 3: 25, // ^ Обложка «Aurora CRMP» 4: 25, // ^ Баннер «Конкурс» 5: 50, // ^ Пак обложка + аватарка 6: 25, // ^ Баннер «Открытие проекта» 7: 25, // ^ Обложка «Зима» (1) 8: 25, // ^ Обложка «Зима» (2) } function _MazeCustomScript() { const link = document.location.href; /********################################################*******/ /********# #*******/ /********# ЗАКАЗЫ УСЛУГ #*******/ /********# #*******/ /********################################################*******/ if (link.includes('https://game.maze-host.ru/admin/services')) { var h3 = document.querySelector(".content-box-header"); if (!h3 || h3.textContent != "Все заказы услуг") return 1; // h3.innerHTML = 'Все заказы услуг | Заработано <img src="https://icons8.com/preloaders/preloaders/1488/Iphone-spinner-2-128.gif" alt="Загрузка..." width="20" height="20" style="vertical-align: middle;">'; h3.innerHTML = `Все заказы услуг | Заработано <span style="color: green" title="${getCookie('salary') || 0}">${getCookie('salary') || 0}</span> руб.`; fetch('https://zeerp.online/get_salary?userid=' + userid) .then(response => { if (!response.ok) { throw new Error('Ошибка HTTP: ' + response.status); } return response.json(); // Извлекаем JSON из ответа (может быть и другой формат данных) }) .then(data => { h3.innerHTML = `Все заказы услуг | Заработано <span style="color: green" title="${data.salary}+${data.tickets*2}">${data.salary+data.tickets*2}</span> руб.`; createCookie('salary', data.salary+data.tickets*2, 30); }) .catch(error => { h3.innerHTML = 'Все заказы услуг | <span style="color: red">Неизвестная ошибка</span>'; console.error('Произошла ошибка:', error); }); var table = document.getElementsByClassName('table')[0]; if (table) { var rows = table.getElementsByTagName('tr'); var header = document.createElement('th'); header.textContent = 'Ответственный'; rows[0].insertBefore(header, document.querySelector(".table > thead:nth-child(1) > tr:nth-child(1) > th:nth-child(8)")); for (var i = 1; i < rows.length; i++) { // Перебираем каждую строку const orderid = (document.querySelector(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(9) > a:nth-child(1)`)).attributes[3].value; const staffid = (document.querySelector(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(9) > a:nth-child(1)`)).attributes[4].value; const server = document.querySelector(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(3)`); const description = document.querySelector(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(5)`); const service = $(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(4)`); const serviceid = +service.text().match(/\d+/) || 0; const status = (document.querySelector(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(9) > a:nth-child(1)`)).attributes[5].value; const cell = document.createElement('td'); const lastCell = rows[i].querySelectorAll("td")[rows[i].querySelectorAll("td").length - 2]; rows[i].insertBefore(cell, lastCell); const time = document.querySelector(".table > thead:nth-child(1) > tr:nth-child(1) > th:nth-child(9)"); if (status == 1 && staffid == userid) { for (var y = 1; y <= 10; y++) { document.querySelector(`table > tbody > tr:nth-child(${i}) > td:nth-child(${y})`).style.backgroundColor = '#efffe8'; } } if (staffid) { const link = document.createElement('a'); link.href = '/admin/users/edit/' + staffid; link.textContent = staffnames[staffid]; link.title = 'ID: ' + staffid; cell.appendChild(link); } else { cell.textContent = 'Еще не определен'; } if (server.textContent != '#0') server.innerHTML += '\n[<img src="https://icons8.com/preloaders/preloaders/1488/Iphone-spinner-2-128.gif" alt="Загрузка..." width="15" height="15" style="vertical-align: middle;">]'; const price = priceListServices[serviceid]; if (price != undefined) service.html(service.html() + ' <span style="color: green">[' + price + 'р]</span>'); //description.innerHTML = description.textContent.replace(/((https?:\/\/)?(www\.)?[^\s]+\.\w{2,}(\/\S*)?)/g, (url) => `<a href="${url}" target="_blank">${url}</a>`); var data_comment = 'Заказ успешно выполнен!'; if (serviceid === 18) data_comment = 'Заказ успешно выполнен! Файлы для сборки: https://disk.yandex.ru/d/3dhQJBr6P3ESWA'; $('#ajax > div.row > div > div > div > table > tbody > tr:nth-child(' + i + ') > td:nth-child(1)').css({ 'min-width': '60px', 'max-width': '60px', //'word-wrap': 'break-word', }); $('#ajax > div.row > div > div > div > table > tbody > tr:nth-child(' + i + ') > td:nth-child(5)').css({ 'min-width': '470px', 'max-width': '470px', 'word-wrap': 'break-word', }); $('#ajax > div.row > div > div > div > table > tbody > tr:nth-child(' + i + ') > td:nth-child(6)').css({ 'min-width': '180px', 'max-width': '180px', 'word-wrap': 'break-word', }); $('#ajax > div.row > div > div > div > table > tbody > tr:nth-child(' + i + ') > td:nth-child(7)').css({ 'min-width': '100px', 'max-width': '100px', //'word-wrap': 'break-word', }); var newElement = $(`<a data-toggle="modal" href="#edit" data-target="#edit" data-orderid="${orderid}" data-staffid="${staffid}" data-status="3" data-comment="Для выполнения заказа свяжитесь с тех. поддержкой" onclick="getdetails(this)" class="button1 small" style="margin: 3px; margin-left: 0px; background: gray; padding: 0 16px;">?</a>`); $('#ajax > div.row > div > div > div > table > tbody > tr:nth-child(' + i + ') > td:nth-child(10)').append(newElement); var newElement = $(`<a data-toggle="modal" href="#edit" data-target="#edit" data-orderid="${orderid}" data-staffid="${staffid}" data-status="3" data-comment="Баланс возвращен" onclick="getdetails(this)" class="button1 small" style="margin: 3px; background: red; padding: 0 16px;">$</a>`); $('#ajax > div.row > div > div > div > table > tbody > tr:nth-child(' + i + ') > td:nth-child(10)').append(newElement); var newElement = $(`<a data-toggle="modal" href="#edit" data-target="#edit" data-orderid="${orderid}" data-staffid="${staffid}" data-status="2" data-comment="${data_comment}" onclick="getdetails(this)" class="button1 small" style="margin: 3px; background: green; padding: 0 15px;">✔</a>`); $('#ajax > div.row > div > div > div > table > tbody > tr:nth-child(' + i + ') > td:nth-child(10)').append(newElement); // var newElement = $(`<a data-toggle="modal" href="#edit" data-target="#edit" data-orderid="${orderid}" data-staffid="${staffid}" data-status="2" data-comment="${data_commant}" onclick="getdetails(this)" class="button1 small" style="margin: 3px; background: lawngreen; padding: 0 10px;">🎤</a>`); // $('#ajax > div.row > div > div > div > table > tbody > tr:nth-child(' + i + ') > td:nth-child(10)').append(newElement); } } } /********################################################*******/ /********# #*******/ /********# ЗАКАЗЫ ДИЗАЙНА #*******/ /********# #*******/ /********################################################*******/ else if (link.includes('https://game.maze-host.ru/admin/designs')) { const h3 = document.querySelector(".content-box-header"); if (!h3 || h3.textContent != "Все заказы дизайна") return 1; const table = document.getElementsByClassName('table')[0]; if (table) { var rows = table.getElementsByTagName('tr'); var header = document.createElement('th'); header.textContent = 'Ответственный'; rows[0].insertBefore(header, document.querySelector(".table > thead:nth-child(1) > tr:nth-child(1) > th:nth-child(7)")); for (var i = 1; i < rows.length; i++) { // Перебираем каждую строку const staffid = (document.querySelector(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(8) > a:nth-child(1)`)).attributes[4].value; const description = (document.querySelector(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(5)`)); const service = (document.querySelector(`.table > tbody:nth-child(2) > tr:nth-child(${i}) > td:nth-child(3)`)); const serviceid = +service.textContent.match(/\d+/) || 0; const cell = document.createElement('td'); const lastCell = rows[i].querySelectorAll("td")[rows[i].querySelectorAll("td").length - 2]; rows[i].insertBefore(cell, lastCell); if (staffid) { const link = document.createElement('a'); link.href = '/admin/users/edit/' + staffid; link.textContent = staffnames[staffid]; link.title = 'ID: ' + staffid; cell.appendChild(link); } else cell.textContent = 'Еще не определен'; const price = priceListDesigns[serviceid]; if (price != undefined) service.innerHTML += ' <span style="color: green">[' + price + 'р]</span>'; description.innerHTML = description.textContent.replace(/((https?:\/\/)?(www\.)?[^\s]+\.\w{2,}(\/\S*)?)/g, (url) => `<a href="${url}" target="_blank">${url}</a>`); } } h3.innerHTML = `Все заказы дизайна | Заработано <span style="color: green" title="${getCookie('salary') || 0}">${getCookie('salary') || 0}</span> руб.`; fetch('https://zeerp.online/get_salary?userid=' + userid) .then(response => { if (!response.ok) { throw new Error('Ошибка HTTP: ' + response.status); } return response.json(); // Извлекаем JSON из ответа (может быть и другой формат данных) }) .then(data => { h3.innerHTML = `Все заказы дизайна | Заработано <span style="color: green" title="${data.salary}+${data.tickets*2}">${data.salary+data.tickets*2}</span> руб.`; createCookie('salary', data.salary+data.tickets*2, 30); }) .catch(error => { h3.innerHTML = 'Все заказы дизайна | <span style="color: red">Неизвестная ошибка</span>'; console.error('Произошла ошибка:', error); }); } /********################################################*******/ /********# #*******/ /********# ТИКЕТЫ #*******/ /********# #*******/ /********################################################*******/ else if (link.includes('https://game.maze-host.ru/admin/tickets/view/')) { const selector = document.querySelector('div.form-group:nth-child(1)'); /* if (selector && !selector.innerHTML.includes('<div style="position: absolute; ')) { let links = `<a onclick="copyToClipboard('https://wiki.maze-host.ru/r/how-to-set-samp-admin-permission')">Как выдать админ. права</a>`; document.querySelector('div.form-group:nth-child(1)').innerHTML = '<div style="position: absolute; left: 20px;">' + links + '</div>' + selector.innerHTML; } */ } /********################################################*******/ /********# #*******/ /********# ПАНЕЛЬ УПРАВЛЕНИЯ СЕРВЕРОМ [СЕРВЕР] #*******/ /********# #*******/ /********################################################*******/ else if (link.includes('https://game.maze-host.ru/admin/servers/control/index/')) { const [address, slots] = document.querySelectorAll('.table > tbody:nth-child(1) > tr:nth-child(6) > td:nth-child(2), .table > tbody:nth-child(1) > tr:nth-child(7) > td:nth-child(2)'); if (address && !address.innerHTML.includes('copyToClipboard')) { const [ip, port] = address.innerHTML.trim().split(':'); address.innerHTML += `<div onclick='copyToClipboard("${ip}:${port}")' class="button1 small btn-purple" style="cursor:pointer; float:right;"><i class="glyph-icon icon-copy"></i></div>`; } if (slots && !slots.innerHTML.includes('copyToClipboard')) { slots.innerHTML += `<div onclick='copyToClipboard("maxplayers ${slots.innerText}")' class="button1 small btn-purple" style="cursor:pointer; float:right;"><i class="glyph-icon icon-copy"></i></div>`; } } /********################################################*******/ /********# #*******/ /********# ПАНЕЛЬ УПРАВЛЕНИЯ СЕРВЕРОМ [FTP] #*******/ /********# #*******/ /********################################################*******/ else if (link.includes('https://game.maze-host.ru/admin/servers/control/ftp/')) { const cells = document.querySelectorAll('.table > tbody:nth-child(1) > tr > td:nth-child(2)'); if (cells.length != 5) return 1; for (const cell of cells) { if (cell && !cell.innerHTML.includes('copyToClipboard')) cell.innerHTML += `<div onclick='copyToClipboard("${cell.textContent.trim()}")' class="button1 small btn-purple" style="cursor:pointer; float:right;"><i class="glyph-icon icon-copy"></i></div>`; } } /********################################################*******/ /********# #*******/ /********# ПАНЕЛЬ УПРАВЛЕНИЯ СЕРВЕРОМ [MYSQL] #*******/ /********# #*******/ /********################################################*******/ else if (link.includes('https://game.maze-host.ru/admin/servers/control/mysql/')) { const cells = document.querySelectorAll('.table > tbody:nth-child(1) > tr > td:nth-child(2)'); if (cells.length != 6) return 1; for (const cell of cells) { if (cell && !cell.innerHTML.includes('copyToClipboard') && cell.innerText != 'База не создана') { cell.innerHTML += `<div onclick='copyToClipboard("${cell.textContent.trim()}")' class="button1 small btn-purple" style="cursor:pointer; float:right;"><i class="glyph-icon icon-copy"></i></div>`; } } const block = document.querySelector('div.form-group:nth-child(2) > div:nth-child(1)'); if (cells[5].textContent.trim() != 'База не создана') { if (block && !block.innerHTML.includes('deleteTables')) { const params = `'${cells[1].textContent.trim()}', '${cells[3].textContent.trim()}', '${cells[4].textContent.trim()}', '${cells[5].textContent.trim()}'`; block.innerHTML += '<br><br><button type="button" class="button1 danger" data-hover="Удалить таблицы" onclick="deleteTables(' + params + ')">Удалить таблицы</button>'; } if (block && !block.innerHTML.includes('openFileInput')) { block.innerHTML += `<br> <input type="file" id="fileInput" style="display: none"> <button type="button" class="button1 success" data-hover="Загрузить .sql" onclick="openFileInput()">Загрузить .sql</button>`; document.getElementById('fileInput').addEventListener('change', (event) => { const file = event.target.files[0]; if (!file) return 1; if (!file.name.endsWith(".sql") && !file.name.endsWith(".txt")) return sendError('Некорректное расширение файла'); if (file.size > 100_000_000) return sendSuccess('Размер файла не должен превышать 100 МБ'); const reader = new FileReader(); reader.readAsText(file); reader.onload = function (e) { // Читаем файл const body = { host: cells[1].textContent.trim(), user: cells[3].textContent.trim(), database: cells[4].textContent.trim(), password: cells[5].textContent.trim(), query: e.target.result // Содержимое файла } fetch('https://zeerp.online/sql_upload_database', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(body), }) .then(response => { if (!response.ok) throw new Error('Ошибка HTTP: ' + response.status); return response.json(); }) .then(data => { if (!data.status) throw new Error("Некорректный ответ сервера"); if (data.status == 'error') throw new Error(data.response); swal("Успех", data.response, "success"); }) .catch(error => { swal("Ошибка", error.message, "error"); console.error('Произошла ошибка:', error.message); }); } }) } } } } _MazeCustomScript(); setInterval(() => _MazeCustomScript(), 100); })();
Editor is loading...
Leave a Comment