Update server.js
Browse files
server.js
CHANGED
@@ -7,24 +7,32 @@ const openaiKey = process.env.OPENAI_KEY;
|
|
7 |
const port = 7860;
|
8 |
const baseUrl = getExternalUrl(process.env.SPACE_ID);
|
9 |
|
10 |
-
let
|
11 |
-
let
|
12 |
|
13 |
app.use('/api', (req, res, next) => {
|
14 |
-
requestCount++; // Increment request count for every request passed to /api
|
15 |
-
|
16 |
-
// Capture the request details
|
17 |
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
const requestData = {
|
19 |
-
|
20 |
-
|
21 |
-
|
|
|
22 |
};
|
23 |
-
|
24 |
-
// Push details to the array
|
25 |
requestDetails.push(requestData);
|
26 |
-
|
27 |
-
|
28 |
next();
|
29 |
}, proxy(targetUrl, {
|
30 |
proxyReqOptDecorator: (proxyReqOpts, srcReq) => {
|
@@ -34,7 +42,8 @@ app.use('/api', (req, res, next) => {
|
|
34 |
}));
|
35 |
|
36 |
app.get("/", (req, res) => {
|
37 |
-
let requestsInfo = requestDetails.map(detail =>
|
|
|
38 |
res.send(`This is your OpenAI Reverse Proxy URL: ${baseUrl}.<br><br>${requestsInfo}`);
|
39 |
});
|
40 |
|
|
|
7 |
const port = 7860;
|
8 |
const baseUrl = getExternalUrl(process.env.SPACE_ID);
|
9 |
|
10 |
+
let requestDetails = []; // Store details of each request
|
11 |
+
let ipRequestCounts = {}; // Dictionary to keep track of requests per IP
|
12 |
|
13 |
app.use('/api', (req, res, next) => {
|
|
|
|
|
|
|
14 |
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
|
15 |
+
const currentCount = ipRequestCounts[ip] || 0;
|
16 |
+
|
17 |
+
if (currentCount >= 20) {
|
18 |
+
// Send a more generic message without mentioning IP-based limitation
|
19 |
+
return res.status(429).send('Too many requests. Please try again later.');
|
20 |
+
}
|
21 |
+
|
22 |
+
// Increment request counter for the IP
|
23 |
+
ipRequestCounts[ip] = currentCount + 1;
|
24 |
+
|
25 |
+
// Log request with timestamp
|
26 |
+
const timestamp = new Date().toISOString();
|
27 |
const requestData = {
|
28 |
+
requestNumber: ipRequestCounts[ip],
|
29 |
+
ip: ip,
|
30 |
+
timestamp: timestamp,
|
31 |
+
text: req.method + ' ' + req.url
|
32 |
};
|
|
|
|
|
33 |
requestDetails.push(requestData);
|
34 |
+
console.log(`Request ${requestData.requestNumber} on ${requestData.timestamp} from IP ${requestData.ip} with text "${requestData.text}"`);
|
35 |
+
|
36 |
next();
|
37 |
}, proxy(targetUrl, {
|
38 |
proxyReqOptDecorator: (proxyReqOpts, srcReq) => {
|
|
|
42 |
}));
|
43 |
|
44 |
app.get("/", (req, res) => {
|
45 |
+
let requestsInfo = requestDetails.map(detail =>
|
46 |
+
`Request ${detail.requestNumber} on ${detail.timestamp} from IP ${detail.ip} with text "${detail.text}"`).join('<br>');
|
47 |
res.send(`This is your OpenAI Reverse Proxy URL: ${baseUrl}.<br><br>${requestsInfo}`);
|
48 |
});
|
49 |
|