From 40cb56761dfcf90deef6fb2e054e4b5a00fdc93b Mon Sep 17 00:00:00 2001 From: Zhang Minghan Date: Wed, 13 Mar 2024 14:25:02 +0800 Subject: [PATCH] feat: support close relay api (#111 #112) --- app/src/admin/api/system.ts | 4 ++- app/src/resources/i18n/cn.json | 2 ++ app/src/resources/i18n/en.json | 4 ++- app/src/resources/i18n/ja.json | 4 ++- app/src/resources/i18n/ru.json | 4 ++- app/src/routes/admin/System.tsx | 47 ++++++++++++++++++++++++++++----- auth/auth.go | 2 +- auth/controller.go | 3 ++- channel/system.go | 8 +++--- globals/variables.go | 2 ++ manager/chat_completions.go | 5 ++++ manager/images.go | 5 ++++ 12 files changed, 73 insertions(+), 17 deletions(-) diff --git a/app/src/admin/api/system.ts b/app/src/admin/api/system.ts index decf515..0a428f6 100644 --- a/app/src/admin/api/system.ts +++ b/app/src/admin/api/system.ts @@ -33,6 +33,7 @@ export type SearchState = { export type SiteState = { close_register: boolean; + close_relay: boolean; relay_plan: boolean; quota: number; buy_link: string; @@ -123,8 +124,9 @@ export const initialSystemState: SystemProps = { pwa_manifest: "", }, site: { - relay_plan: false, close_register: false, + close_relay: false, + relay_plan: false, quota: 0, buy_link: "", announcement: "", diff --git a/app/src/resources/i18n/cn.json b/app/src/resources/i18n/cn.json index 531fae5..6660f9d 100644 --- a/app/src/resources/i18n/cn.json +++ b/app/src/resources/i18n/cn.json @@ -706,6 +706,8 @@ "searchPlaceholder": "DuckDuckGo 接入点 (格式仅需填写 https://example.com)", "closeRegistration": "暂停注册", "closeRegistrationTip": "暂停注册,关闭后新用户将无法注册", + "closeRelay": "关闭中转 API", + "closeRelayTip": "关闭中转 API,关闭后中转 API 将无法使用", "relayPlan": "订阅配额支持中转 API", "relayPlanTip": "订阅配额支持中转 API,开启后中转 API 计费会优先考虑使用用户订阅配额\n(提示:订阅为次数配额,对 Token 计费的模型可能会影响成本)", "quota": "用户初始点数", diff --git a/app/src/resources/i18n/en.json b/app/src/resources/i18n/en.json index 1d3a4d0..28466c0 100644 --- a/app/src/resources/i18n/en.json +++ b/app/src/resources/i18n/en.json @@ -564,7 +564,9 @@ "searchPlaceholder": "DuckDuckGo Access Point (Format only https://example.com)", "image_store": "Picture storage", "image_storeTip": "Images generated by the OpenAI channel DALL-E will be stored on the server to prevent invalidation of the images", - "image_storeNoBackend": "No backend domain configured, cannot enable image storage" + "image_storeNoBackend": "No backend domain configured, cannot enable image storage", + "closeRelay": "Turn off Staging API", + "closeRelayTip": "Turn off the staging API, the staging API will not be available after turning off" }, "user": "Users", "invitation-code": "Invitation Code", diff --git a/app/src/resources/i18n/ja.json b/app/src/resources/i18n/ja.json index 1d63d57..b86f3ee 100644 --- a/app/src/resources/i18n/ja.json +++ b/app/src/resources/i18n/ja.json @@ -564,7 +564,9 @@ "searchPlaceholder": "DuckDuckGoアクセスポイント(フォーマットのみhttps://example.com )", "image_store": "画像ストレージ", "image_storeTip": "OpenAIチャンネルDALL - Eによって生成された画像は、画像の無効化を防ぐためにサーバーに保存されます", - "image_storeNoBackend": "バックエンドドメインが設定されていません。画像ストレージを有効にできません" + "image_storeNoBackend": "バックエンドドメインが設定されていません。画像ストレージを有効にできません", + "closeRelay": "ステージングAPIをオフにする", + "closeRelayTip": "ステージングAPIをオフにすると、オフにするとステージングAPIは使用できなくなります" }, "user": "ユーザー管理", "invitation-code": "招待コード", diff --git a/app/src/resources/i18n/ru.json b/app/src/resources/i18n/ru.json index b15206b..b1f754a 100644 --- a/app/src/resources/i18n/ru.json +++ b/app/src/resources/i18n/ru.json @@ -564,7 +564,9 @@ "searchPlaceholder": "Точка доступа DuckDuckGo (только в формате https://example.com)", "image_store": "Хранение изображений", "image_storeTip": "Изображения, сгенерированные каналом OpenAI DALL-E, будут храниться на сервере, чтобы предотвратить недействительность изображений", - "image_storeNoBackend": "Нет настроенного внутреннего домена, невозможно включить хранение изображений" + "image_storeNoBackend": "Нет настроенного внутреннего домена, невозможно включить хранение изображений", + "closeRelay": "Отключить Staging API", + "closeRelayTip": "Отключите промежуточный API, промежуточный API будет недоступен после отключения" }, "user": "Управление пользователями", "invitation-code": "Код приглашения", diff --git a/app/src/routes/admin/System.tsx b/app/src/routes/admin/System.tsx index bfde227..c16e58d 100644 --- a/app/src/routes/admin/System.tsx +++ b/app/src/routes/admin/System.tsx @@ -44,7 +44,7 @@ import { } from "@/components/ui/dialog.tsx"; import { DialogTitle } from "@radix-ui/react-dialog"; import Require from "@/components/Require.tsx"; -import { Loader2, PencilLine, Settings2 } from "lucide-react"; +import { PencilLine, RotateCw, Save, Settings2 } from "lucide-react"; import { FlexibleTextarea } from "@/components/ui/textarea.tsx"; import Tips from "@/components/Tips.tsx"; import { cn } from "@/components/ui/lib/utils.ts"; @@ -497,6 +497,21 @@ function Site({ data, dispatch, onChange }: CompProps) { }} /> + + + { + dispatch({ type: "update:site.close_relay", value }); + }} + /> +