adds info page

This commit is contained in:
nai-degen 2023-04-08 05:43:28 -05:00 committed by nai-degen
parent 6ba5670f29
commit e2509d087c
4 changed files with 41 additions and 11 deletions

View File

@ -2,7 +2,7 @@ import type { Request, Response, NextFunction } from "express";
const PROXY_KEY = process.env.PROXY_KEY;
export function auth(req: Request, res: Response, next: NextFunction) {
export const auth = (req: Request, res: Response, next: NextFunction) => {
if (!PROXY_KEY) {
next();
return;
@ -13,4 +13,4 @@ export function auth(req: Request, res: Response, next: NextFunction) {
} else {
res.status(401).json({ error: "Unauthorized" });
}
}
};

35
src/info-page.ts Normal file
View File

@ -0,0 +1,35 @@
import { Request, Response } from "express";
import { keys } from "./keys";
export const handleInfoPage = (req: Request, res: Response) => {
res.send(getInfoPageHtml(req.protocol + "://" + req.get("host")));
};
function getInfoPageHtml(host: string) {
const keylist = keys.list();
const info = {
message: "OpenAI Reverse Proxy",
uptime: process.uptime(),
timestamp: Date.now(),
kobold: host + "/kobold",
openai: host + "/openai",
keys: {
all: keylist.length,
active: keylist.filter((k) => !k.isDisabled).length,
trial: keylist.filter((k) => k.isTrial).length,
gpt4: keylist.filter((k) => k.isGpt4).length,
},
};
return `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>OpenAI Reverse Proxy</title>
</head>
<body>
<h1>OpenAI Reverse Proxy</h1>
<pre>${JSON.stringify(info, null, 2)}</pre>
</body>
</html>`;
}

View File

@ -61,6 +61,8 @@ function init() {
.digest("hex")
.slice(0, 6),
});
// TODO: check each key's usage upon startup.
}
}

View File

@ -6,20 +6,13 @@ translated into OpenAI requests. */
import * as express from "express";
import { auth } from "./auth";
import { handleInfoPage } from "./info-page";
import { kobold } from "./kobold";
import { openai } from "./openai";
const router = express.Router();
router.get("/", (req, res) => {
res.json({
message: "OpenAI Reverse Proxy",
uptime: process.uptime(),
timestamp: Date.now(),
kobold: req.protocol + "://" + req.get("host") + "/kobold",
openai: req.protocol + "://" + req.get("host") + "/openai",
});
});
router.get("/", handleInfoPage);
router.use(auth);
router.use("/kobold", kobold);
router.use("/openai", openai);