mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-12 23:33:43 +08:00
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import 'server-only';
|
|
|
|
import type { RuntimeFeatures } from '@/lib/config/runtime-features';
|
|
|
|
function isVercelDeployment(): boolean {
|
|
return process.env.VERCEL === '1' || Boolean(process.env.VERCEL_ENV);
|
|
}
|
|
|
|
function isCloudflareDeployment(): boolean {
|
|
return (
|
|
process.env.CF_PAGES === '1' ||
|
|
Boolean(process.env.CF_PAGES_URL) ||
|
|
Boolean(process.env.CLOUDFLARE_ACCOUNT_ID) ||
|
|
Boolean(process.env.CF_ACCOUNT_ID) ||
|
|
Boolean(process.env.WORKERS_CI)
|
|
);
|
|
}
|
|
|
|
function getRestrictedFeatures(
|
|
deploymentProvider: RuntimeFeatures['deploymentProvider'],
|
|
deploymentProviderLabel: string
|
|
): RuntimeFeatures {
|
|
return {
|
|
deploymentProvider,
|
|
deploymentProviderLabel,
|
|
restrictedManagedDeployment: true,
|
|
mediaProxyEnabled: false,
|
|
iptvEnabled: false,
|
|
restrictionSummary: `${deploymentProviderLabel} 托管部署会启用合规模式:关闭外部媒体代理、热链转发和 IPTV 流中继。需要这些能力时请改用 Docker 或传统 Node.js 自托管。`,
|
|
};
|
|
}
|
|
|
|
export function getRuntimeFeatures(): RuntimeFeatures {
|
|
if (isVercelDeployment()) {
|
|
return getRestrictedFeatures('vercel', 'Vercel');
|
|
}
|
|
|
|
if (isCloudflareDeployment()) {
|
|
return getRestrictedFeatures('cloudflare', 'Cloudflare');
|
|
}
|
|
|
|
return {
|
|
deploymentProvider: 'self-hosted',
|
|
deploymentProviderLabel: '自托管',
|
|
restrictedManagedDeployment: false,
|
|
mediaProxyEnabled: true,
|
|
iptvEnabled: true,
|
|
restrictionSummary: null,
|
|
};
|
|
}
|
|
|