<?php
$ADMIN_PASSWORD = 'adm123';
$MAX_FAILED_ATTEMPTS = 5;
$BAN_DURATION = 1800;
$JSON_FILE = 'link.json';
$DEFAULT_LINK = 'url=ok';
$SESSION_EXPIRE = 3600;

session_set_cookie_params($SESSION_EXPIRE);
session_start();

function getClientIP() {
    $ip = $_SERVER['REMOTE_ADDR'];
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
    }
    return trim($ip);
}

$ip = getClientIP();
$banFile = 'banlist.json';
$banData = file_exists($banFile) ? json_decode(file_get_contents($banFile), true) : [];

if (isset($banData[$ip]) && (time() - $banData[$ip]['ban_time']) < $BAN_DURATION) {
    $banMinutes = $BAN_DURATION / 60;
    die("<div style='text-align:center;margin-top:50px;color:red;font-size:18px;'>IP已被封禁，{$banMinutes}分钟后重试</div>");
}

$isLoggedIn = isset($_SESSION['admin_logged_in']) && $_SESSION['admin_logged_in'] === true;
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['login_password'])) {
    $inputPwd = trim($_POST['login_password']);
    if ($inputPwd === $ADMIN_PASSWORD) {
        $_SESSION['admin_logged_in'] = true;
        $_SESSION['login_time'] = time();
        unset($banData[$ip]);
        file_put_contents($banFile, json_encode($banData));
        $isLoggedIn = true;
    } else {
        $banData[$ip]['failed_attempts'] = isset($banData[$ip]['failed_attempts']) ? $banData[$ip]['failed_attempts'] + 1 : 1;
        if ($banData[$ip]['failed_attempts'] >= $MAX_FAILED_ATTEMPTS) {
            $banData[$ip]['ban_time'] = time();
        }
        file_put_contents($banFile, json_encode($banData));
        $loginError = '密码错误！剩余尝试次数：'.($MAX_FAILED_ATTEMPTS - $banData[$ip]['failed_attempts']);
    }
}

$success = '';
$error = '';
if ($isLoggedIn) {
    if (!file_exists($JSON_FILE)) {
        $data = ['baseLink' => $DEFAULT_LINK];
        file_put_contents($JSON_FILE, json_encode($data, JSON_PRETTY_PRINT));
    }

    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['baseLink'])) {
        $newLink = trim($_POST['baseLink']);
        if (filter_var($newLink, FILTER_VALIDATE_URL)) {
            $data = ['baseLink' => $newLink];
            file_put_contents($JSON_FILE, json_encode($data, JSON_PRETTY_PRINT));
            $success = '链接修改成功！';
        } else {
            $error = '请输入有效的URL链接！';
        }
    }

    $currentData = json_decode(file_get_contents($JSON_FILE), true);
    $currentLink = $currentData['baseLink'] ?? $DEFAULT_LINK;
}

if (isset($_GET['logout']) && $isLoggedIn) {
    session_destroy();
    header('Location: '.$_SERVER['PHP_SELF']);
    exit;
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>下载链接修改后台</title>
    <style>
        body{font-family:Arial,sans-serif;margin:50px;padding:0;background:#f5f5f5}
        .container{max-width:600px;margin:0 auto;background:#fff;padding:30px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,0.1)}
        h1{color:#333;margin-bottom:20px}
        .form-group{margin-bottom:20px}
        label{display:block;margin-bottom:8px;font-weight:bold;color:#555}
        input{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:16px}
        button{background:#fe3355;color:#fff;border:none;padding:12px 20px;border-radius:4px;font-size:16px;cursor:pointer}
        button:hover{background:#ff8c53}
        .success{color:green;margin-bottom:20px;padding:10px;background:#e8f5e9;border-radius:4px}
        .error{color:red;margin-bottom:20px;padding:10px;background:#ffebee;border-radius:4px}
        .logout{text-align:right;margin-bottom:15px}
        .logout a{color:#fe3355;text-decoration:none}
        .logout a:hover{text-decoration:underline}
    </style>
</head>
<body>
    <div class="container">
        <?php if (!$isLoggedIn): ?>
            <h1>后台登录</h1>
            <?php if (isset($loginError)) echo '<div class="error">'.$loginError.'</div>'; ?>
            <form method="POST">
                <div class="form-group">
                    <label for="login_password">管理员密码：</label>
                    <input type="password" id="login_password" name="login_password" required>
                </div>
                <button type="submit">登录</button>
            </form>
        <?php else: ?>
            <div class="logout"><a href="?logout=1">退出登录</a></div>
            <h1>下载地址管理</h1>
            <?php if ($success) echo '<div class="success">'.$success.'</div>'; ?>
            <?php if ($error) echo '<div class="error">'.$error.'</div>'; ?>
            <form method="POST">
                <div class="form-group">
                    <label for="baseLink">当前下载链接：</label>
                    <input type="url" id="baseLink" name="baseLink" value="<?php echo htmlspecialchars($currentLink); ?>" required>
                </div>
                <button type="submit">保存修改</button>
            </form>
        <?php endif; ?>
    </div>
</body>
</html>