import { ActionForm } from "@/components/action-form"; import { CopyButton } from "@/components/copy-button"; import { Input } from "@/components/ui/input"; import { SubmitButton } from "@/components/submit-button"; 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 (
订阅

订阅与模板

节点 {nodes.length} 分组 {settings.proxyGroups.length}

管理员订阅

{adminUser?.subscription_token ? (
{buildSubscriptionUrl(adminUser.subscription_token, origin)}
) : (

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

)}

代理分组

{settings.proxyGroups.map((group) => (
{group.name} {group.memberSlugs.length} 个节点 · 编辑分组
))}
新建分组
订阅模板 编辑 YAML 与默认组名