Skip to content

Commit

Permalink
Merge pull request ChatGPTNextWeb#1247 from Yidadaa/proxy-api
Browse files Browse the repository at this point in the history
fix: ChatGPTNextWeb#1237 ChatGPTNextWeb#1233 mask bug and proxy bug
  • Loading branch information
Yidadaa authored May 4, 2023
2 parents 6c1261d + de1e4b4 commit 92d2373
Show file tree
Hide file tree
Showing 8 changed files with 58 additions and 8 deletions.
5 changes: 3 additions & 2 deletions app/api/auth.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { NextRequest } from "next/server";
import { getServerSideConfig } from "../config/server";
import md5 from "spark-md5";
import { ACCESS_CODE_PREFIX } from "../constant";

const serverConfig = getServerSideConfig();

Expand All @@ -17,10 +18,10 @@ function getIP(req: NextRequest) {

function parseApiKey(bearToken: string) {
const token = bearToken.trim().replaceAll("Bearer ", "").trim();
const isOpenAiKey = token.startsWith("sk-");
const isOpenAiKey = !token.startsWith(ACCESS_CODE_PREFIX);

return {
accessCode: isOpenAiKey ? "" : token,
accessCode: isOpenAiKey ? "" : token.slice(ACCESS_CODE_PREFIX.length),
apiKey: isOpenAiKey ? token : "",
};
}
Expand Down
5 changes: 4 additions & 1 deletion app/api/config/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,11 @@ declare global {
type DangerConfig = typeof DANGER_CONFIG;
}

export async function POST() {
async function handle() {
return NextResponse.json(DANGER_CONFIG);
}

export const GET = handle;
export const POST = handle;

export const runtime = "edge";
24 changes: 21 additions & 3 deletions app/components/mask.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { useNavigate } from "react-router-dom";

import chatStyle from "./chat.module.scss";
import { useEffect, useState } from "react";
import { downloadAs } from "../utils";
import { downloadAs, readFromFile } from "../utils";
import { Updater } from "../api/openai/typing";
import { ModelConfigList } from "./model-config";
import { FileName, Path } from "../constant";
Expand Down Expand Up @@ -222,6 +222,21 @@ export function MaskPage() {
downloadAs(JSON.stringify(masks), FileName.Masks);
};

const importFromFile = () => {
readFromFile().then((content) => {
try {
const importMasks = JSON.parse(content);
if (Array.isArray(importMasks)) {
for (const mask of importMasks) {
if (mask.name) {
maskStore.create(mask);
}
}
}
} catch {}
});
};

return (
<ErrorBoundary>
<div className={styles["mask-page"]}>
Expand All @@ -247,7 +262,7 @@ export function MaskPage() {
<IconButton
icon={<UploadIcon />}
bordered
onClick={() => showToast(Locale.WIP)}
onClick={() => importFromFile()}
/>
</div>
<div className="window-action-button">
Expand Down Expand Up @@ -371,7 +386,10 @@ export function MaskPage() {
key="export"
bordered
onClick={() =>
downloadAs(JSON.stringify(editingMask), "mask.json")
downloadAs(
JSON.stringify(editingMask),
`${editingMask.name}.json`,
)
}
/>,
<IconButton
Expand Down
2 changes: 2 additions & 0 deletions app/constant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,5 @@ export enum StoreKey {
export const MAX_SIDEBAR_WIDTH = 500;
export const MIN_SIDEBAR_WIDTH = 230;
export const NARROW_SIDEBAR_WIDTH = 100;

export const ACCESS_CODE_PREFIX = "ak-";
5 changes: 4 additions & 1 deletion app/requests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
useChatStore,
} from "./store";
import { showToast } from "./components/ui-lib";
import { ACCESS_CODE_PREFIX } from "./constant";

const TIME_OUT_MS = 60000;

Expand Down Expand Up @@ -58,7 +59,9 @@ function getHeaders() {
accessStore.enabledAccessControl() &&
validString(accessStore.accessCode)
) {
headers.Authorization = makeBearer(accessStore.accessCode);
headers.Authorization = makeBearer(
ACCESS_CODE_PREFIX + accessStore.accessCode,
);
}

return headers;
Expand Down
1 change: 1 addition & 0 deletions app/store/mask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export const useMaskStore = create<MaskStore>()(
...createEmptyMask(),
...mask,
id,
builtin: false,
};

set(() => ({ masks }));
Expand Down
20 changes: 20 additions & 0 deletions app/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,26 @@ export function downloadAs(text: string, filename: string) {
document.body.removeChild(element);
}

export function readFromFile() {
return new Promise<string>((res, rej) => {
const fileInput = document.createElement("input");
fileInput.type = "file";
fileInput.accept = "application/json";

fileInput.onchange = (event: any) => {
const file = event.target.files[0];
const fileReader = new FileReader();
fileReader.onload = (e: any) => {
res(e.target.result);
};
fileReader.onerror = (e) => rej(e);
fileReader.readAsText(file);
};

fileInput.click();
});
}

export function isIOS() {
const userAgent = navigator.userAgent.toLowerCase();
return /iphone|ipad|ipod/.test(userAgent);
Expand Down
4 changes: 3 additions & 1 deletion next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ const nextConfig = {
});
}

return ret;
return {
afterFiles: ret,
};
},
webpack(config) {
config.module.rules.push({
Expand Down

0 comments on commit 92d2373

Please sign in to comment.