import type { Metadata } from "next"; import { redirect } from "next/navigation"; import { getRequestOrigin } from "@/lib/request-origin"; import { buildSubscriptionUrl, describeRemainingTraffic } from "@/lib/subscription"; import { requireUserSession } from "@/lib/session"; import { formatBytes, getUserById } from "@/lib/store"; export const metadata: Metadata = { title: "我的订阅", }; export default async function MePage() { const session = await requireUserSession(); const [user, origin] = await Promise.all([ getUserById(session.user_id), getRequestOrigin(), ]); if (!user) { redirect("/login"); } const usedBytes = user.used_tx_bytes + user.used_rx_bytes; const subscriptionUrl = user.subscription_token ? buildSubscriptionUrl(user.subscription_token, origin) : null; const clashImportUrl = subscriptionUrl ? `clash://install-config?url=${encodeURIComponent(subscriptionUrl)}` : null; return (
FEIEPROXY SELF SERVICE

{user.username}

鹅梯 FeieProxy 用户面板。这里可以查看配额状态、获取订阅链接,并通过 Clash URL Scheme 一键导入当前配置。

{user.enabled ? "账号已启用" : "账号已禁用"} {user.expires_at ?? "长期有效"} {describeRemainingTraffic(user)}
ACCOUNT SNAPSHOT {user.auth_id}

订阅名称:{user.subscription_label || user.username}

SUBSCRIPTION

一键导入配置

Clash / Mihomo

推荐直接通过按钮唤起支持 `clash://` 的客户端导入。若浏览器拦截了自定义协议,允许一次即可。

{clashImportUrl ? ( 一键导入 Clash ) : ( 订阅暂不可用 )} {subscriptionUrl ? ( 打开订阅链接 ) : null}
SUBSCRIPTION URL

{subscriptionUrl ?? "暂不可用"}

TIP 01 客户端未唤起时

确认已安装支持 `clash://` 的客户端,并允许浏览器打开外部应用。

TIP 02 手动导入也可用

复制上方订阅链接,在 Clash / Mihomo 客户端中粘贴导入即可。

流量概览

总用量 {formatBytes(usedBytes)}
剩余额度 {describeRemainingTraffic(user)}
上传 {formatBytes(user.used_tx_bytes)}
下载 {formatBytes(user.used_rx_bytes)}
ACCESS

使用说明

  • 域名入口适合网页登录与获取订阅。
  • 现有节点鉴权仍可继续使用原来的 `IP:3000` 直连地址。
  • 如果订阅内容更新,重新点击导入按钮即可刷新客户端配置。
); }