<!DOCTYPE html>
<html>
<head>
    <title>REQUIEM Control Panel</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
    <style>
        body {
            overflow-x: hidden;
            overflow-y: auto;
        }
        input {
            -webkit-user-select: text !important;
            -moz-user-select: text !important;
            -ms-user-select: text !important;
            user-select: text !important;
            background-color: #252525 !important;
            color: white !important;
        }
        select {
            background-color: #252525 !important;
            color: white !important;
            padding: 5px;
            border: 1px solid #444;
            border-radius: 4px;
            width: 90%;
        }
        input:-webkit-autofill,
        input:-webkit-autofill:hover,
        input:-webkit-autofill:focus,
        input:-webkit-autofill:active {
            -webkit-box-shadow: 0 0 0 30px #252525 inset !important;
            -webkit-text-fill-color: white !important;
        }
        .container {
            max-width: 600px !important;
            margin: 0 auto !important;
            padding: 17px !important;
            width: 100% !important;
        }
        @media (max-width: 768px) {
            .container {
                padding: 5px !important;
                max-width: 90% !important;
            }
            .attack-containers {
                flex-direction: column !important;
                gap: 20px !important;
                width: 90% !important;
                margin: 0 auto !important;
            }
            input[type="text"],
            input[type="number"],
            select {
                width: 90%;
                max-width: 90%;
                box-sizing: border-box;
                margin: 5px auto;
            }
            .button-container {
                flex-direction: column !important;
                gap: 10px !important;
                width: 80% !important;
                margin: 0 auto !important;
            }
            .button {
                width: 70% !important;
                margin-bottom: 15px !important;
            }
            .attack-container {
                width: 90% !important;
                margin: 0 auto 55px auto !important;
            }
        }
        .cooldown-overlay {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.8);
            display: flex;
            justify-content: center;
            align-items: center;
            border-radius: 8px;
            z-index: 100;
        }
        .attack-container {
            position: relative;
        }
    </style>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <div class="container">
        {% if session.username in ['unkweal', 'Harami'] %}
        <h1>REQUIEM Admin Control Panel</h1>
        {% else %}
        <h1>REQUIEM Control Panel</h1>
        {% endif %}
        
        {% if has_subscription %}
        <div class="attack-containers" style="display: flex; justify-content: center; gap: 40px;">
            {% if session.username in ['unkweal', 'Harami'] %}
            <div class="attack-container" style="flex: 0.8; background: #252525; padding: 30px; border-radius: 8px; margin-bottom: 30px; max-width: 250px;">
                <h2>Layer 4 Attack</h2>
                <form method="POST" action="{{ url_for('start_attack') }}" onsubmit="return validateDuration(this)">
                    <p>Цель: <input type="text" name="target" required></p>
                    <p>Порт: <input type="number" name="port" required></p>
                    <p>Длительность (сек): <input type="number" name="duration" required max="500"></p>
                    <p>Метод: 
                        <select name="method" id="l4method" required style="width: 100%; padding: 5px; margin-top: 5px;" onchange="saveL4Method(this.value)">
                            <option value="DNS">DNS</option>
                            <option value="SYN">SYN</option>
                            <option value="ACK">ACK</option>
                            <option value="TCPTLS">TCPTLS</option>
                            <option value="UDPPPS">UDPPPS</option>
                            <option value="SOCKET">SOCKET</option>
                            <option value="SSH">SSH</option>
                            <option value="FIVEM">FIVEM</option>
                            <option value="WARZONE">WARZONE</option>
                            <option value="OVHTCP">OVHTCP</option>
                            <option value="FORTNITE">FORTNITE</option>
                            <option value="UDPCHINA">UDPCHINA</option>
                            <option value="TCPTFO">TCPTFO</option>
                            <option value="TCPWRA">TCPWRA</option>
                        </select>
                    </p>
                    <p><input type="submit" value="Запустить атаку" style="font-size: 0.9em;"></p>
                </form>
            </div>
            {% else %}
            <div class="attack-container" style="flex: 0.8; background: #252525; padding: 30px; border-radius: 8px; margin-bottom: 30px; max-width: 250px;">
                <div id="l4-cooldown" class="cooldown-overlay" style="display: none;">
                    <span style="color: white; font-size: 1.2em;">Подождите <span id="l4-timer">60</span> секунд</span>
                </div>
                <h2>Layer 4 Attack</h2>
                <form method="POST" action="{{ url_for('start_attack') }}" onsubmit="return !isOnCooldown() && validateDuration(this) && startCooldown()">
                    <p>
                        <input type="text" name="target" required placeholder="Цель" style="width: 100%; padding: 8px; background: #333; border: 1px solid #444; border-radius: 4px; color: #fff; margin-bottom: 10px;">
                    </p>
                    <p>
                        <input type="number" name="port" required placeholder="Порт" style="width: 100%; padding: 8px; background: #333; border: 1px solid #444; border-radius: 4px; color: #fff; margin-bottom: 10px;">
                    </p>
                    <p>
                        <input type="number" name="duration" required max="100" placeholder="Длительность (сек)" style="width: 100%; padding: 8px; background: #333; border: 1px solid #444; border-radius: 4px; color: #fff; margin-bottom: 10px;">
                    </p>
                    <p>
                        <select name="method" id="l4method" required style="width: 100%; padding: 8px; background: #333; border: 1px solid #444; border-radius: 4px; color: #fff; margin-bottom: 10px; cursor: pointer;" onchange="saveL4Method(this.value)">
                            <option value="" disabled selected>Выберите метод</option>
                            <option value="DNS">DNS</option>
                            <option value="SYN">SYN</option>
                            <option value="ACK">ACK</option>
                            <option value="TCPTLS">TCPTLS</option>
                            <option value="UDPPPS">UDPPPS</option>
                            <option value="SOCKET">SOCKET</option>
                            <option value="SSH">SSH</option>
                            <option value="FIVEM">FIVEM</option>
                            <option value="WARZONE">WARZONE</option>
                            <option value="OVHTCP">OVHTCP</option>
                            <option value="FORTNITE">FORTNITE</option>
                            <option value="UDPCHINA">UDPCHINA</option>
                            <option value="TCPTFO">TCPTFO</option>
                            <option value="TCPWRA">TCPWRA</option>
                        </select>
                    </p>
                    <p style="text-align: center;"><input type="submit" value="Запустить L4 атаку" style="font-size: 0.9em;"></p>
                </form>
            </div>
            {% endif %}

            <div class="attack-container" style="flex: 0.8; background: #252525; padding: 30px; border-radius: 8px; margin-bottom: 30px; max-width: 250px;">
                {% if session.username not in ['unkweal', 'Harami'] %}
                <div id="l7-cooldown" class="cooldown-overlay" style="display: none;">
                    <span style="color: white; font-size: 1.2em;">Подождите <span id="l7-timer">60</span> секунд</span>
                </div>
                {% endif %}
                <h2>Layer 7 Attack</h2>
                <form method="POST" action="{{ url_for('start_l7_attack') }}" onsubmit="return !isOnCooldown() && validateTarget() && validateDuration(this) && startCooldown()">
                    <p>
                        <input type="text" name="target" id="l7target" required placeholder="Цель" style="width: 100%; padding: 8px; background: #333; border: 1px solid #444; border-radius: 4px; color: #fff; margin-bottom: 10px;">
                    </p>
                    <p>
                        <input type="number" name="duration" required max="{% if session.username in ['unkweal', 'Harami'] %}500{% else %}100{% endif %}" placeholder="Длительность (сек)" style="width: 100%; padding: 8px; background: #333; border: 1px solid #444; border-radius: 4px; color: #fff; margin-bottom: 10px;">
                    </p>
                    <p>
                        <select name="method" id="l7method" required style="width: 100%; padding: 8px; background: #333; border: 1px solid #444; border-radius: 4px; color: #fff; margin-bottom: 10px; cursor: pointer;" onchange="saveL7Method(this.value)">
                            <option value="" disabled selected>Выберите метод</option>
                            <option value="HTTP-MAO">HTTP-MAO</option>
                            <option value="MISC">MISC</option>
                            <option value="HTTP-TOR">HTTP-TOR</option>
                        </select>
                    </p>
                    <p>
                        <select name="rqmethod" id="rqmethod" required style="width: 100%; padding: 8px; background: #333; border: 1px solid #444; border-radius: 4px; color: #fff; margin-bottom: 10px; cursor: pointer;" onchange="saveRQMethod(this.value)">
                            <option value="" disabled selected>Выберите HTTP Метод</option>
                            <option value="GET">GET</option>
                            <option value="POST">POST</option>
                        </select>
                    </p>
                    <input type="hidden" name="rate" value="100">
                    <p style="text-align: center;"><input type="submit" value="Запустить L7 атаку" style="font-size: 0.9em;"></p>
                </form>
            </div>
        </div>
        {% else %}
        <div style="background: rgba(255, 0, 0, 0.1); border: 1px solid rgba(255, 0, 0, 0.3); padding: 15px; border-radius: 8px; text-align: center; margin: 20px 0;">
            <p style="color: #ffffff; margin: 0; font-size: 1.1em; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);">
                У вас нет активной подписки. Обратитесь к <a href="https://t.me/flizmatick" target="_blank" style="color: #ff4444; text-decoration: none;">@flizmatick</a> в Telegram для получения доступа.
            </p>
        </div>
        {% endif %}

        {% if result %}
        <div style="text-align: center;">
            <h3>Результат:</h3>
            <p>{{ result }}</p>
        </div>
        {% endif %}

        {% if response %}
        <div style="text-align: center;">
            <h3>Ответ API:</h3>
            <div style="background: #1a1a1a; padding: 20px; border-radius: 8px; border: 1px solid #333; margin: 15px auto; max-width: 800px;">
                <pre style="white-space: pre-wrap; word-wrap: break-word; color: #00ff00; font-family: 'Courier New', monospace; margin: 0; font-size: 14px;">{{ response|fromjson }}</pre>
            </div>
        </div>
        {% endif %}
        <div style="margin-bottom: 20px;"></div>

        <div style="text-align: center;">
            <div class="button-container" style="display: flex; justify-content: center; gap: 20px;">
                <a href="{{ url_for('home') }}" class="button" style="width: 150px; padding: 8px 20px; font-size: 0.9em; text-decoration: none;">На главную</a>
                <a href="{{ url_for('logout') }}" class="button" style="width: 150px; padding: 8px 20px; font-size: 0.9em; text-decoration: none;">Выйти</a>
            </div>
        </div>
    </div>

    <script>
        let cooldownActive = false;
        let cooldownTimer;
        let lastAttackTime = localStorage.getItem('lastAttackTime') || 0;
        
        function startCooldown() {
            if ('{{ session.username }}' === 'unkweal' || '{{ session.username }}' === 'Harami') return true;
            
            const now = Date.now();
            localStorage.setItem('lastAttackTime', now);
            showCooldown(60);
            return true;
        }
        
        function showCooldown(seconds) {
            if ('{{ session.username }}' === 'unkweal' || '{{ session.username }}' === 'Harami') return;
            
            cooldownActive = true;
            document.getElementById('l4-cooldown').style.display = 'flex';
            document.getElementById('l7-cooldown').style.display = 'flex';
            
            let timeLeft = seconds;
            updateTimers(timeLeft);
            
            if (cooldownTimer) clearInterval(cooldownTimer);
            
            cooldownTimer = setInterval(() => {
                timeLeft--;
                updateTimers(timeLeft);
                
                if (timeLeft <= 0) {
                    clearInterval(cooldownTimer);
                    cooldownActive = false;
                    document.getElementById('l4-cooldown').style.display = 'none';
                    document.getElementById('l7-cooldown').style.display = 'none';
                }
            }, 1000);
        }
        
        function updateTimers(time) {
            document.getElementById('l4-timer').textContent = time;
            document.getElementById('l7-timer').textContent = time;
        }
        
        function isOnCooldown() {
            return cooldownActive && !(['unkweal', 'Harami'].includes('{{ session.username }}'));
        }

        function validateTarget() {
            var target = document.getElementById('l7target').value;
            if (target.toLowerCase().includes('requiem.website')) {
                alert('Ты серьёзно?');
                return false;
            }
            return true;
        }

        function validateDuration(form) {
            var duration = form.duration.value;
            var maxDuration = {% if session.username in ['unkweal', 'Harami'] %}500{% else %}100{% endif %};
            if (duration > maxDuration) {
                alert('Максимальная длительность атаки: ' + maxDuration + ' секунд');
                return false;
            }
            return true;
        }
        
        // Check cooldown on page load
        window.onload = function() {
            if (!['unkweal', 'Harami'].includes('{{ session.username }}')) {
                const now = Date.now();
                const timeSinceLastAttack = now - lastAttackTime;
                const cooldownDuration = 60000;
                
                if (timeSinceLastAttack < cooldownDuration) {
                    const remainingTime = Math.ceil((cooldownDuration - timeSinceLastAttack) / 1000);
                    showCooldown(remainingTime);
                }
            }
        };
    </script>
</body>
</html>
