Files
CLOAK/lib/Cloak/CloudflareConfig.php
T
2026-06-14 14:00:24 +08:00

77 lines
2.0 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Cloudflare 全局配置检测(cong.php 三项均为可选)
*/
class CloudflareConfig
{
/** @var array<string,mixed> CLI 回归用覆盖项(enabled / server_ip */
private static $testOverrides = [];
public static function setTestOverrides(array $overrides)
{
self::$testOverrides = $overrides;
}
public static function clearTestOverrides()
{
self::$testOverrides = [];
}
public static function apiToken()
{
return defined('CLOUDFLARE_API_TOKEN') ? trim((string) CLOUDFLARE_API_TOKEN) : '';
}
public static function accountId()
{
return defined('CLOUDFLARE_ACCOUNT_ID') ? trim((string) CLOUDFLARE_ACCOUNT_ID) : '';
}
public static function serverIp()
{
if (array_key_exists('server_ip', self::$testOverrides)) {
return trim((string) self::$testOverrides['server_ip']);
}
return defined('SERVER_IP') ? trim((string) SERVER_IP) : '';
}
/**
* Token + Account ID 均已配置时启用 Cloudflare 自动化
*/
public static function isEnabled()
{
if (array_key_exists('enabled', self::$testOverrides)) {
return (bool) self::$testOverrides['enabled'];
}
return self::apiToken() !== '' && self::accountId() !== '';
}
public static function statusLabel($status)
{
$map = [
'local' => '本地登记',
'pending_ns' => '待检测',
'provisioning' => '配置中',
'ready' => '已生效',
'error' => '失败',
];
return $map[$status] ?? (string) $status;
}
public static function parseNameservers($json)
{
if ($json === null || $json === '') {
return [];
}
$decoded = json_decode($json, true);
return is_array($decoded) ? $decoded : [];
}
}
if (!function_exists('cloak_cloudflare_enabled')) {
function cloak_cloudflare_enabled()
{
return CloudflareConfig::isEnabled();
}
}