TupTest

Menu for SmarTest

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         TupTest
// @namespace    http://tampermonkey.net/
// @version      2026-02-13
// @description  Menu for SmarTest
// @author       mirkri
// @match        https://www.smartest.bg/session/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=smartest.bg
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';
    function connectToServer(username, password) {
        const socket = new WebSocket("ws://127.0.0.1:5000");

        socket.onopen = function() {
            console.log("Connected to server");

            // Example: send message every 5 seconds
            setInterval(() => {
                const msg = `${username} ${password}`;
                socket.send(msg);
                console.log("Sent:", msg);
            }, 5000);
        };

        socket.onmessage = function(event) {
            console.log("Received from server:", event.data);
        };

        socket.onclose = function() {
            console.log("Connection closed");
        };

        socket.onerror = function(error) {
            console.error("WebSocket error:", error);
        };
    }
    function main() {
        // ---------- Create toggle icon ----------
        const icon = document.createElement("div");
        icon.style.position = "fixed";
        icon.style.top = "20px";
        icon.style.right = "50%";
        icon.style.transform = "translateX(50%)";
        icon.style.width = "120px";
        icon.style.height = "49px";
        icon.style.cursor = "pointer";
        icon.style.zIndex = "999999";
        document.body.appendChild(icon);

        // ---------- Create popup ----------
        const popup = document.createElement("div");
        popup.style.position = "fixed";
        popup.style.bottom = "0px";
        popup.style.right = "0px";
        popup.style.width = "220px";
        popup.style.padding = "12px";
        popup.style.color = "#1e1e1e";
        popup.style.borderRadius = "8px";
        popup.style.boxShadow = "0 0 10px rgba(0,0,0,0.5)";
        popup.style.zIndex = "999999";
        popup.style.fontFamily = "Arial, sans-serif";
        popup.style.display = "none";
        popup.innerHTML = `
        <div id="popupHeader" style="cursor:move; margin-bottom:8px;">
            Ai logvai sa mishok inache nqma hack 💀
        </div>

        <input id="tm_username" type="text" placeholder="Username"
            style="width:100%; margin-bottom:6px; padding:4px; border-radius:4px; border: none;" />

        <input id="tm_password" type="password" placeholder="Password"
            style="width:100%; margin-bottom:8px; padding:4px; border-radius:4px; border: none;" />

        <button id="tm_submit"
            style="width:100%; padding:6px; cursor:pointer; border-radius:4px; border: none;">
            Submit
        </button>
    `;

        document.body.appendChild(popup);

        // ---------- Toggle popup ----------
        icon.onclick = function() {
            popup.style.display = popup.style.display === "none" ? "block" : "none";
        };

        // Submit handler
        document.getElementById("tm_submit").onclick = function() {
            const username = document.getElementById("tm_username");
            const password = document.getElementById("tm_password");
            const submit = document.getElementById("tm_submit");
            username.style.display = "none";
            password.style.display = "none";
            submit.style.display = "none";
            document.addEventListener("fullscreenchange", function(e) { e.stopImmediatePropagation(); }, true);
            connectToServer(username.value, password.value);

        };
    }

    function changeColor() {
        const body = document.body;
        if (!body) return;
        //body.children[1].style.setProperty('--background', '#22ff00');
        const firstDiv = body.querySelector(':scope > body:nth-child(1)');
        if (!firstDiv) return;
        firstDiv.style.setProperty('--background', '#22ff00');
        const secondDiv = firstDiv.querySelector(':scope > div:nth-child(2)');
        if (!secondDiv) return;

        secondDiv.style.backgroundColor = '#22ff00';
        console.log(secondDiv.style);
    }

    // Run after DOM is ready
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', main);
    } else {
        main();
    }
})();