Download middleware.ts from dakaca/dds: direct link, hf CLI and curl.
- Browser
- Download file 1.79 kB
-
https://huggingface.co/spaces/dakaca/dds/resolve/main/middleware.ts
- Command line
-
hf download hf://spaces/dakaca/dds/middleware.ts
-
curl -L -o middleware.ts https://huggingface.co/spaces/dakaca/dds/resolve/main/middleware.ts
1.79 kB
| import { NextRequest, NextResponse } from "next/server"; | |
| import { getServerSideConfig } from "./app/config/server"; | |
| import md5 from "spark-md5"; | |
| export const config = { | |
| matcher: ["/api/openai", "/api/chat-stream"], | |
| }; | |
| const serverConfig = getServerSideConfig(); | |
| function getIP(req: NextRequest) { | |
| let ip = req.ip ?? req.headers.get("x-real-ip"); | |
| const forwardedFor = req.headers.get("x-forwarded-for"); | |
| if (!ip && forwardedFor) { | |
| ip = forwardedFor.split(",").at(0) ?? ""; | |
| } | |
| return ip; | |
| } | |
| export function middleware(req: NextRequest) { | |
| const accessCode = req.headers.get("access-code"); | |
| const token = req.headers.get("token"); | |
| const hashedCode = md5.hash(accessCode ?? "").trim(); | |
| console.log("[Auth] allowed hashed codes: ", [...serverConfig.codes]); | |
| console.log("[Auth] got access code:", accessCode); | |
| console.log("[Auth] hashed access code:", hashedCode); | |
| console.log("[User IP] ", getIP(req)); | |
| console.log("[Time] ", new Date().toLocaleString()); | |
| if (serverConfig.needCode && !serverConfig.codes.has(hashedCode) && !token) { | |
| return NextResponse.json( | |
| { | |
| error: true, | |
| needAccessCode: true, | |
| msg: "Please go settings page and fill your access code.", | |
| }, | |
| { | |
| status: 401, | |
| }, | |
| ); | |
| } | |
| // inject api key | |
| if (!token) { | |
| const apiKey = serverConfig.apiKey; | |
| if (apiKey) { | |
| console.log("[Auth] set system token"); | |
| req.headers.set("token", apiKey); | |
| } else { | |
| return NextResponse.json( | |
| { | |
| error: true, | |
| msg: "Empty Api Key", | |
| }, | |
| { | |
| status: 401, | |
| }, | |
| ); | |
| } | |
| } else { | |
| console.log("[Auth] set user token"); | |
| } | |
| return NextResponse.next({ | |
| request: { | |
| headers: req.headers, | |
| }, | |
| }); | |
| } | |