Ayeantics commited on
Commit
cb34952
·
verified ·
1 Parent(s): c619948

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +22 -13
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 requestCount = 0; // Counter to keep track of the number of proxied requests
11
- let requestDetails = []; // Array to store details of each request
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
- requestNumber: requestCount,
20
- ip: ip,
21
- text: req.method + ' ' + req.url // Example: captures request method and path
 
22
  };
23
-
24
- // Push details to the array
25
  requestDetails.push(requestData);
26
-
27
- console.log(`Request ${requestData.requestNumber} from IP ${requestData.ip} with text "${requestData.text}"`);
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 => `Request ${detail.requestNumber} from IP ${detail.ip} with text "${detail.text}"`).join('<br>');
 
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