import { getRequestOrigin } from "@/lib/request-origin"; import { buildSubscriptionUrl, getDefaultClashTemplate } from "@/lib/subscription"; import { getAdminMirrorUser, getSubscriptionSettings, listSubscriptionNodes, } from "@/lib/store"; import { saveSubscriptionSettingsAction } from "./actions"; import { ProxyGroupEditor } from "./proxy-group-editor"; export default async function AdminSubscriptionsPage() { const [settings, adminUser, nodes, origin] = await Promise.all([ getSubscriptionSettings(), getAdminMirrorUser(), listSubscriptionNodes(), getRequestOrigin(), ]); const proxyGroupNodes = nodes.map((node) => ({ slug: node.slug, label: node.client_name || node.name, meta: node.client_name && node.client_name !== node.name ? `${node.name} / ${node.slug}` : node.slug, })); return (
SUBSCRIPTIONS

订阅与模板

管理 Clash 基础模板、订阅文件名、代理分组以及管理员默认不限量订阅链接。

动态 proxies 分组 {settings.proxyGroups.length}
可用节点 {nodes.length}
默认主组 {settings.profileName}

管理员订阅

{adminUser?.subscription_token ? (

{buildSubscriptionUrl(adminUser.subscription_token, origin)}

) : (

管理员订阅链接暂不可用。

)}

Proxy Groups

已选列表从上到下的顺序,就是写入 Clash 配置时的节点顺序。

{settings.proxyGroups.map((group) => ( ))}

Clash 模板