78 lines
2.1 KiB
PHP
Executable File
78 lines
2.1 KiB
PHP
Executable File
<?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' => '本地登记',
|
||
'manual' => '手动解析',
|
||
'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();
|
||
}
|
||
}
|