update user host

This commit is contained in:
Junlai 2023-04-04 03:34:33 +00:00
parent 7d7f3716be
commit 22ec525618
9 changed files with 52 additions and 4 deletions

View File

@ -3,12 +3,13 @@ import { NextRequest } from "next/server";
const OPENAI_URL = "api.openai.com";
const DEFAULT_PROTOCOL = "https";
const PROTOCOL = process.env.PROTOCOL ?? DEFAULT_PROTOCOL;
const BASE_URL = process.env.BASE_URL ?? OPENAI_URL;
export async function requestOpenai(req: NextRequest) {
const apiKey = req.headers.get("token");
const openaiPath = req.headers.get("path");
const userHost = req.headers.get("userhost");
const BASE_URL = userHost ?? process.env.BASE_URL ?? OPENAI_URL;
console.log("[BASE_URL] ", openaiPath);
console.log("[Proxy] ", openaiPath);
return fetch(`${PROTOCOL}://${BASE_URL}/${openaiPath}`, {

View File

@ -372,6 +372,20 @@ export function Settings(props: { closeSettings: () => void }) {
<></>
)}
<SettingItem
title={Locale.Settings.Host.Title}
subTitle={Locale.Settings.Host.SubTitle}
>
<input
value={accessStore.host}
type="text"
placeholder={Locale.Settings.Host.Placeholder}
onChange={(e) => {
accessStore.updateHost(e.currentTarget.value);
}}
></input>
</SettingItem>
<SettingItem
title={Locale.Settings.Token.Title}
subTitle={Locale.Settings.Token.SubTitle}

View File

@ -97,6 +97,11 @@ const cn = {
Title: "历史消息长度压缩阈值",
SubTitle: "当未压缩的历史消息超过该值时,将进行压缩",
},
Host: {
Title: "Personal Host",
SubTitle: "使用自己的 Host 可绕过受控访问限制",
Placeholder: "api.openai.com",
},
Token: {
Title: "API Key",
SubTitle: "使用自己的 Key 可绕过受控访问限制",

View File

@ -99,6 +99,11 @@ const en: LocaleType = {
SubTitle:
"Will compress if uncompressed messages length exceeds the value",
},
Host: {
Title: "Personal Host",
SubTitle: "Use your host to ignore access code limit",
Placeholder: "api.openai.com",
},
Token: {
Title: "API Key",
SubTitle: "Use your key to ignore access code limit",

View File

@ -99,6 +99,11 @@ const es: LocaleType = {
SubTitle:
"Se comprimirán los mensajes si la longitud de los mensajes no comprimidos supera el valor",
},
Host: {
Title: "Clave de Host",
SubTitle: "Utiliza tu clave para ignorar el límite de código de acceso",
Placeholder: "api.openai.com",
},
Token: {
Title: "Clave de API",
SubTitle: "Utiliza tu clave para ignorar el límite de código de acceso",

View File

@ -99,6 +99,12 @@ const it: LocaleType = {
SubTitle:
"Comprimerà se la lunghezza dei messaggi non compressi supera il valore",
},
Host: {
Title: "Chiave Host",
SubTitle:
"Utilizzare la chiave per ignorare il limite del codice di accesso",
Placeholder: "api.openai.com",
},
Token: {
Title: "Chiave API",
SubTitle:

View File

@ -97,6 +97,11 @@ const tw: LocaleType = {
Title: "歷史訊息長度壓縮閾值",
SubTitle: "當未壓縮的歷史訊息超過該值時,將進行壓縮",
},
Host: {
Title: "Personal Host",
SubTitle: "使用自己的 Host 可規避受控訪問限制",
Placeholder: "api.openai.com",
},
Token: {
Title: "API Key",
SubTitle: "使用自己的 Key 可規避受控訪問限制",

View File

@ -38,6 +38,7 @@ function getHeaders() {
if (accessStore.token && accessStore.token.length > 0) {
headers["token"] = accessStore.token;
headers["userhost"] = accessStore.host;
}
return headers;

View File

@ -5,7 +5,9 @@ import { queryMeta } from "../utils";
export interface AccessControlStore {
accessCode: string;
token: string;
host: string;
updateHost: (_: string) => void;
updateToken: (_: string) => void;
updateCode: (_: string) => void;
enabledAccessControl: () => boolean;
@ -18,6 +20,7 @@ export const useAccessStore = create<AccessControlStore>()(
(set, get) => ({
token: "",
accessCode: "",
host: "",
enabledAccessControl() {
return queryMeta("access") === "enabled";
},
@ -27,10 +30,13 @@ export const useAccessStore = create<AccessControlStore>()(
updateToken(token: string) {
set((state) => ({ token }));
},
updateHost(host: string) {
set((state) => ({ host }));
},
}),
{
name: ACCESS_KEY,
version: 1,
}
)
},
),
);