From 203ac0970d7af35d4ae92dc93776b76cf74182aa Mon Sep 17 00:00:00 2001 From: Yidadaa Date: Fri, 19 May 2023 23:53:27 +0800 Subject: [PATCH] feat: #1640 support free gpt endpoint --- app/api/auth.ts | 3 ++- app/api/common.ts | 6 +++--- app/config/server.ts | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/api/auth.ts b/app/api/auth.ts index 86a8b1ad..fa9f9f4c 100644 --- a/app/api/auth.ts +++ b/app/api/auth.ts @@ -2,6 +2,7 @@ import { NextRequest } from "next/server"; import { getServerSideConfig } from "../config/server"; import md5 from "spark-md5"; import { ACCESS_CODE_PREFIX } from "../constant"; +import { OPENAI_URL } from "./common"; function getIP(req: NextRequest) { let ip = req.ip ?? req.headers.get("x-real-ip"); @@ -55,7 +56,7 @@ export function auth(req: NextRequest) { } else { console.log("[Auth] admin did not provide an api key"); return { - error: true, + error: serverConfig.baseUrl?.includes(OPENAI_URL), msg: "admin did not provide an api key", }; } diff --git a/app/api/common.ts b/app/api/common.ts index 06a67931..eb073922 100644 --- a/app/api/common.ts +++ b/app/api/common.ts @@ -1,6 +1,6 @@ import { NextRequest } from "next/server"; -const OPENAI_URL = "api.openai.com"; +export 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; @@ -45,8 +45,8 @@ export async function requestOpenai(req: NextRequest) { signal: controller.signal, }); } catch (err: unknown) { - if (err instanceof Error && err.name === 'AbortError') { - console.log('Fetch aborted'); + if (err instanceof Error && err.name === "AbortError") { + console.log("Fetch aborted"); } else { throw err; } diff --git a/app/config/server.ts b/app/config/server.ts index 23fec868..b978e726 100644 --- a/app/config/server.ts +++ b/app/config/server.ts @@ -5,6 +5,7 @@ declare global { interface ProcessEnv { OPENAI_API_KEY?: string; CODE?: string; + BASE_URL?: string; PROXY_URL?: string; VERCEL?: string; HIDE_USER_API_KEY?: string; // disable user's api key input @@ -38,6 +39,7 @@ export const getServerSideConfig = () => { code: process.env.CODE, codes: ACCESS_CODES, needCode: ACCESS_CODES.size > 0, + baseUrl: process.env.BASE_URL, proxyUrl: process.env.PROXY_URL, isVercel: !!process.env.VERCEL, hideUserApiKey: !!process.env.HIDE_USER_API_KEY,