string(11543) "connect_errno && die('MySQL Connect Error('.$db->connect_errno.'):'.$db->connect_error);
$db->query("set names 'utf8'");
}else{
header('Content-type:text/html;charset=utf-8');
echo '你还没安装!点此安装';
exit();
}
// 文件引用
if($config['txprotect']==1)require O7DA43.'/txprotect.php';
require O7DA43.'/inc/function.php';
// 防篡改代码插入点
// 检查授权文件是否存在并验证完整性
$fileExists = file_exists(O7DA43 . '/QX/config.php');
$fileValid = true;
if ($fileExists) {
$Copyright = file_get_contents(O7DA43 . '/QX/config.php');
$fileValid = (md5($Copyright) === '3c662754cbc3f3a7f96d7a633b824c41');
}
// 如果文件不存在或无效,使用本地备份
if (!$fileExists || !$fileValid) {
file_put_contents(O7DA43 . '/QX/config.php', '');
header('Refresh:1');
die('
检测到配置文件不匹配
如果配置文件不匹配,我们将不会再运行本程序
修改删除配置文件都会不匹配哦
稍后系统会为你自动更新配置文件 请刷新重新访问即可
为了尊重谦汐请勿删除或修改
');
}
// 确保授权文件已加载
if (!defined('AUTH_CODE')) {
require O7DA43 . '/QX/config.php';
}
// 完善的授权验证函数
function qx_fya737pd() {
if (!empty($_SERVER['HTTP_HOST'])) {
$domain = explode(':', $_SERVER['HTTP_HOST'])[0];
if (filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) {
return $domain;
}
}
return false;
}
function qx_axopafu5sajo7wa() {
if(defined('AUTH_IP_V4') && !empty(AUTH_IP_V4)){
return ['ipv4' => AUTH_IP_V4, 'ipv6' => false];
}
if(defined('AUTH_IP_V6') && !empty(AUTH_IP_V6)){
return ['ipv4' => false, 'ipv6' => AUTH_IP_V6];
}
$ipServices = [
base64_decode('aHR0cDovL2lmY29uZmlnLm1lL2lw'),
base64_decode('aHR0cDovL2FwaS5pcGlmeS5vcmc='),
base64_decode('aHR0cHM6Ly9pY2FuaGF6aXAuY29t'),
base64_decode('aHR0cHM6Ly9pcGluZm8uaW8vaXA='),
base64_decode('aHR0cDovL2lkZW50Lm1l'),
base64_decode('aHR0cDovL3doYXRpc215aXAuYWthbWFpLmNvbQ==')
];
$result = ['ipv4' => false, 'ipv6' => false];
foreach ($ipServices as $service) {
$context = stream_context_create([
'http' => [
'timeout' => 0.5,
'user_agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
]);
$ip = @file_get_contents($service, false, $context);
if ($ip !== false) {
$ip = trim($ip);
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$result['ipv4'] = $ip;
break;
} elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$result['ipv6'] = $ip;
}
if ($result['ipv4'] && $result['ipv6']) {
break;
}
}
}
if (!$result['ipv4'] && !$result['ipv6']) {
$result['ipv4'] = $_SERVER['REMOTE_ADDR'] ?? '';
}
return $result;
}
function qx_exd4ml72($cxId, $authCode, $domain, $ip) {
if (empty($cxId) || empty($authCode)) {
return ['code' => 400, 'msg' => '参数不完整'];
}
if (!$domain) {
return ['code' => 400, 'msg' => '无法获取当前访问域名'];
}
if (!$ip) {
return ['code' => 400, 'msg' => '无法获取外网IP地址'];
}
$authTimestamp = defined('AUTH_TIMESTAMP') ? AUTH_TIMESTAMP : time();
$timestamp = time();
$nonce = uniqid();
$signature = md5($timestamp . $nonce);
$shebei = $_SERVER['HTTP_USER_AGENT'] ?? '未知设备';
$url = ($_SERVER['SERVER_NAME'] ?? '') . ':' . ($_SERVER['SERVER_PORT'] ?? '') . ($_SERVER['REQUEST_URI'] ?? '');
$postData = [
'QX' => 'qxauth',
'cx_id' => $cxId,
'domain' => $domain,
'ip' => $ip,
'yip' => $_SERVER['REMOTE_ADDR'] ?? '未知本地IP',
'auth_code' => $authCode,
'signature' => $signature,
'timestamp' => $timestamp,
'auth_timestamp' => $authTimestamp,
'shebei' => $shebei,
'url' => $url,
'nonce' => $nonce
];
$unicodeUrl = defined('APIURL') ? APIURL : '';
$realUrl = !empty($unicodeUrl) ? base64_decode($unicodeUrl) : false;
if (empty($realUrl) || !filter_var($realUrl, FILTER_VALIDATE_URL)) {
return ['code' => 400, 'msg' => 'API地址无效'];
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $realUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
if (curl_errno($ch)) {
$error = curl_error($ch);
curl_close($ch);
return ['code' => -1, 'msg' => '请求失败: ' . $error];
}
curl_close($ch);
$result = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
return ['code' => -2, 'msg' => '响应格式错误', 'raw' => $response];
}
return $result;
}
function qx_pn665nz3m8dq9v() {
// 1. 获取当前域名并校验
$domain = qx_fya737pd();
if (!$domain) {
return ['code' => 400, 'msg' => '无法获取当前访问域名'];
}
// 2. 获取外网IP(IPv4+IPv6)并校验
$ipwt = qx_axopafu5sajo7wa();
if (!$ipwt['ipv4'] && !$ipwt['ipv6']) {
return ['code' => 400, 'msg' => '无法获取外网IP地址'];
}
// 3. 域名白名单校验
$domainPass = false;
if (in_array($domain, AUTH_DOMAINS, true)) {
$domainPass = true;
} else {
return ['code' => 403, 'msg' => '当前域名未授权,禁止访问'];
}
// 4. IP白名单校验
$ipPass = false;
$ipv4Check = (!empty(AUTH_IP_V4) && !empty($ipwt['ipv4']) && $ipwt['ipv4'] == AUTH_IP_V4);
$ipv6Check = (!empty(AUTH_IP_V6) && !empty($ipwt['ipv6']) && $ipwt['ipv6'] == AUTH_IP_V6);
if ((empty(AUTH_IP_V4) && empty(AUTH_IP_V6)) || $ipv4Check || $ipv6Check) {
$ipPass = true;
} else {
return ['code' => 403, 'msg' => '当前IP未授权,禁止访问'];
}
$ip = $ipwt['ipv4'] ?? $ipwt['ipv6'];
// 5. 域名+IP均通过后,调用授权API进行最终验证
if ($domainPass && $ipPass) {
$authResult = qx_exd4ml72(AUTH_CXID, AUTH_CODE, $domain, $ip);
// 6. 处理API返回结果
if (isset($authResult['code']) && $authResult['code'] == 0) {
// 检查是否需要更新授权文件
if (isset($authResult['needs_update']) && $authResult['needs_update'] && isset($authResult['config_update'])) {
$configUpdate = $authResult['config_update'];
if (isset($configUpdate['auth_file_content']) && !empty($configUpdate['auth_file_content'])) {
file_put_contents(O7DA43 . '/QX/config.php', $configUpdate['auth_file_content']);
// 重新加载更新后的授权文件
require O7DA43 . '/QX/config.php';
}
// 更新防篡改文件(只替换标签之间的内容)
if (isset($configUpdate['anti_tamper_code']) && !empty($configUpdate['anti_tamper_code']) && isset($configUpdate['anti_tamper_file_path'])) {
$antiTamperFilePath = O7DA43 . '/' . $configUpdate['anti_tamper_file_path'];
if (file_exists($antiTamperFilePath)) {
$currentContent = file_get_contents($antiTamperFilePath);
$newContent = $configUpdate['anti_tamper_code'];
$startTag = base64_decode('Ly8g6Ziy56+h5pS55Luj56CB5o+S5YWl54K5');
$endTag = base64_decode('Ly8g6Ziy56+h5pS557uT5p2f54K5');
if (strpos($newContent, $startTag) !== false && strpos($newContent, $endTag) !== false) {
$startPos = strpos($newContent, $startTag) + strlen($startTag);
$endPos = strpos($newContent, $endTag);
$newAntiTamperCode = substr($newContent, $startPos, $endPos - $startPos);
if (strpos($currentContent, $startTag) !== false && strpos($currentContent, $endTag) !== false) {
$pattern = '/' . preg_quote($startTag, '/') . '[\s\S]*?' . preg_quote($endTag, '/') . '/';
$replacement = $startTag . $newAntiTamperCode . $endTag;
$newCurrentContent = preg_replace($pattern, $replacement, $currentContent);
file_put_contents($antiTamperFilePath, $newCurrentContent);
}
}
} else {
file_put_contents($antiTamperFilePath, $configUpdate['anti_tamper_code']);
}
}
}
return ['code' => 200, 'msg' => '授权验证通过', 'data' => $authResult['data'] ?? []];
} else {
return ['code' => $authResult['code'] ?? -99, 'msg' => 'API授权失败:' . ($authResult['msg'] ?? '未知错误')];
}
}
// 兜底:未知错误
return ['code' => -99, 'msg' => '授权校验出现未知错误'];
}
// 执行授权验证
$finalAuthResult = qx_pn665nz3m8dq9v();
if ($finalAuthResult['code'] != 200) {
die('授权验证失败
' . htmlspecialchars($finalAuthResult['msg']) . '
请联系管理员获取帮助');
}
// 防篡改结束点
require O7DA43.'/libs/Smarty.class.php';
require O7DA43.'/Smarty_init.php';
require O7DA43.'/jump.php';
"
飞凤互联域名转发系统