<?php
session_start();
error_reporting(E_ALL);
ini_set('log_errors', 1);
ini_set('error_log', '/var/log/apache2/auth_error.log');

$db = new mysqli('localhost', 'radius_user', 'strong_password', 'hotspot_auth');
if ($db->connect_error) {
    error_log("MySQL connect error: " . $db->connect_error);
    http_response_code(500);
    die("Ошибка сервера. Обратитесь к администратору.");
}

// Обработка формы
$status_message = '';
$show_form = true;
$mac = $_GET['mac'] ?? $_SESSION['mac'] ?? '';

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['phone']) && !empty($_POST['phone'])) {
    $mac = $_GET['mac'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? 'unknown';
    $phone = preg_replace('/\D/', '', $_POST['phone']);

    $sql = "INSERT INTO sessions (mac, phone_number, expires_at) VALUES (?, ?, NOW() + INTERVAL 5 MINUTE) ON DUPLICATE KEY UPDATE phone_number = ?, status = 'pending', expires_at = NOW() + INTERVAL 5 MINUTE";
    $stmt = $db->prepare($sql);
    if (!$stmt) {
        error_log("Prepare INSERT failed: " . $db->error . " | SQL: $sql");
        http_response_code(500);
        die("Ошибка сервера. Попробуйте позже.");
    }
    $stmt->bind_param('sss', $mac, $phone, $phone);
    if (!$stmt->execute()) {
        error_log("Execute INSERT failed: " . $stmt->error);
        http_response_code(500);
        die("Ошибка сохранения. Попробуйте снова.");
    }

    $_SESSION['mac'] = $mac;
    error_log("Form submitted: MAC=$mac, Phone=$phone");
    header('Refresh: 10; url=auth.php?mac=' . urlencode($mac));
}

// Проверка статуса
if ($mac) {
    $stmt = $db->prepare("SELECT status FROM sessions WHERE mac = ? AND expires_at > NOW()");
    if (!$stmt) {
        error_log("Prepare SELECT failed: " . $db->error);
        http_response_code(500);
        die("Ошибка сервера. Попробуйте позже.");
    }
    $stmt->bind_param('s', $mac);
    if (!$stmt->execute()) {
        error_log("Execute SELECT failed: " . $stmt->error);
        http_response_code(500);
        die("Ошибка проверки статуса. Попробуйте снова.");
    }
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();

    if ($row) {
        if ($row['status'] == 'authorized') {
            $db->query("INSERT INTO logs (mac, event) VALUES ('$mac', 'authorized')");
            $status_message = "Авторизация успешна! Доступ к интернету открыт.";
            $show_form = false;
            echo "<script>setTimeout(() => { window.location='https://captive.apple.com/hotspot-detect.html'; }, 2000);</script>";
        } elseif ($row['status'] == 'expired') {
            $status_message = "Время ожидания истекло. Пожалуйста, попробуйте снова.";
        } else {
            $status_message = "Позвоните на номер +7XXXXXXXXXX с указанного телефона. Проверка через 10 секунд...";
        }
    } else {
        $status_message = "Введите номер телефона для авторизации.";
    }
} else {
    $status_message = "Подключитесь к гостевой сети и введите номер телефона.";
}

$db->close();
?>

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Гостевая сеть - Авторизация | ВиТелеком</title>
    <!-- Favicon -->
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <style>
        /* Фирменный стиль VI-Telecom */
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: #f5f5f5; /* Светло-серый фон */
            color: #333333; /* Тёмный текст */
            margin: 0;
            padding: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            min-height: 100vh;
        }
        .container {
            background-color: #ffffff; /* Белая карточка */
            padding: 2rem;
            border-radius: 12px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); /* Тень для современности */
            max-width: 400px;
            width: 100%;
            text-align: center;
        }
        .logo {
            max-width: 150px;
            height: auto;
            margin-bottom: 1rem;
        }
        h1 {
            color: #0066cc; /* Синий заголовок */
            font-size: 1.8rem;
            font-weight: bold;
            margin-bottom: 1rem;
        }
        .status-message {
            color: #666666; /* Серый текст статуса */
            margin-bottom: 1.5rem;
            font-size: 1rem;
            line-height: 1.4;
        }
        .success {
            color: #00cc00 !important; /* Зелёный для успеха */
        }
        form {
            display: flex;
            flex-direction: column;
            gap: 1rem;
        }
        label {
            text-align: left;
            font-weight: 500;
            color: #333333;
            font-size: 0.9rem;
        }
        input[type="tel"] {
            padding: 0.75rem;
            border: 2px solid #e0e0e0; /* Светлая граница */
            border-radius: 8px;
            font-size: 1rem;
            transition: border-color 0.3s ease;
        }
        input[type="tel"]:focus {
            outline: none;
            border-color: #0066cc; /* Синий фокус */
        }
        button {
            background-color: #0066cc; /* Синяя кнопка */
            color: #ffffff;
            padding: 0.75rem 1.5rem;
            border: none;
            border-radius: 8px;
            font-size: 1rem;
            font-weight: 500;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }
        button:hover {
            background-color: #0052a3; /* Тёмно-синий ховер */
        }
        .footer {
            margin-top: 1.5rem;
            font-size: 0.8rem;
            color: #999999;
        }
        /* Адаптивность */
        @media (max-width: 480px) {
            .container {
                margin: 1rem;
                padding: 1.5rem;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <!-- Логотип -->
        <img src="/logo.png" alt="VI-Telecom Logo" class="logo" onerror="this.style.display='none'; this.nextElementSibling.style.display='block';">
        <h1 style="display: none;">ВиТелеком</h1> <!-- Fallback текст логотипа -->
        
        <h2 style="color: #0066cc; margin-bottom: 0.5rem;">Гостевая сеть</h2>
        <p class="status-message <?php echo ($row && $row['status'] == 'authorized') ? 'success' : ''; ?>">
            <?php echo htmlspecialchars($status_message); ?>
        </p>

        <?php if ($show_form): ?>
        <form method="POST">
            <div>
                <label for="phone">Номер телефона</label>
                <input type="tel" name="phone" id="phone" placeholder="+7XXXXXXXXXX" required>
            </div>
            <button type="submit">Отправить</button>
        </form>
        <script>
            document.querySelector('form').addEventListener('submit', function(e) {
                const phone = document.getElementById('phone').value;
                if (!/^\+7[0-9]{10}$/.test(phone)) {
                    e.preventDefault();
                    alert('Введите номер в формате +7XXXXXXXXXX');
                }
            });
        </script>
        <?php endif; ?>
        
        <div class="footer">
            <p>ВиТелеком | Интернет и ТВ в Кольчугино</p>
        </div>
    </div>
</body>
</html>
