WalleGriffkinder commited on
Commit
ce92389
·
verified ·
1 Parent(s): 5aae06e

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +2 -50
index.js CHANGED
@@ -8,7 +8,6 @@ app.use(express.raw({
8
  }));
9
 
10
  app.options('*', (req, res) => {
11
- console.log(`[OPTIONS] Handling preflight request from: ${req.headers.origin}`);
12
  const origin = req.headers.origin;
13
 
14
  if (origin) {
@@ -22,7 +21,6 @@ app.options('*', (req, res) => {
22
 
23
  const requestedHeaders = req.headers['access-control-request-headers'];
24
  if (requestedHeaders) {
25
- console.log(`[OPTIONS] Requested headers: ${requestedHeaders}`);
26
  res.setHeader('Access-Control-Allow-Headers', requestedHeaders);
27
  } else {
28
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, X-CSRF-Token, Accept, Origin');
@@ -34,13 +32,10 @@ app.options('*', (req, res) => {
34
  res.setHeader('Vary', 'Origin');
35
  }
36
 
37
- console.log('[OPTIONS] Sending 204 response');
38
  res.status(204).end();
39
  });
40
 
41
-
42
  app.get('/', (req, res) => {
43
- console.log(`[GET /] Request from: ${req.headers.origin}`);
44
  const origin = req.headers.origin;
45
  if (origin) {
46
  res.setHeader('Access-Control-Allow-Origin', origin);
@@ -58,32 +53,20 @@ app.get('/', (req, res) => {
58
  });
59
 
60
  app.all('*', async (req, res) => {
61
- console.log(`\n[${req.method}] New request received`);
62
- console.log(`Original URL: ${req.url}`);
63
- console.log(`Headers:`, req.headers);
64
- console.log(`Body length: ${req.body ? req.body.length : 0}`);
65
-
66
  if (req.url === '/') {
67
- console.log('[*] Root path detected, skipping');
68
  return;
69
  }
70
 
71
  const clientRequestOrigin = req.headers.origin;
72
- console.log(`Client origin: ${clientRequestOrigin}`);
73
 
74
  try {
75
  let targetUrlString = req.url.substring(1);
76
- console.log(`Raw target URL: ${targetUrlString}`);
77
 
78
  try {
79
  targetUrlString = decodeURIComponent(targetUrlString);
80
- console.log(`Decoded target URL: ${targetUrlString}`);
81
- } catch (e) {
82
- console.log(`URL decoding failed: ${e.message}`);
83
- }
84
 
85
  if (!targetUrlString) {
86
- console.log('[ERROR] No target URL provided');
87
  addCorsHeaders(res, clientRequestOrigin);
88
  res.status(400).send('Target URL is missing in the path.');
89
  return;
@@ -92,9 +75,7 @@ app.all('*', async (req, res) => {
92
  let targetUrl;
93
  try {
94
  targetUrl = new URL(targetUrlString);
95
- console.log(`Parsed target URL: ${targetUrl.toString()}`);
96
  } catch (e) {
97
- console.log(`[ERROR] URL parsing failed: ${e.message}`);
98
  addCorsHeaders(res, clientRequestOrigin);
99
  res.status(400).send(`Invalid target URL provided in path: ${targetUrlString}`);
100
  return;
@@ -103,12 +84,7 @@ app.all('*', async (req, res) => {
103
  const requestHeaders = {...req.headers};
104
  delete requestHeaders['host'];
105
  delete requestHeaders['content-length'];
106
-
107
- console.log(`Making request to: ${targetUrl.toString()}`);
108
- console.log(`Method: ${req.method}`);
109
- console.log(`Headers:`, requestHeaders);
110
 
111
- console.log('Starting fetch request...');
112
  const response = await fetch(targetUrl.toString(), {
113
  method: req.method,
114
  headers: requestHeaders,
@@ -116,9 +92,6 @@ app.all('*', async (req, res) => {
116
  redirect: 'manual',
117
  compress: false
118
  });
119
- console.log('Fetch request completed');
120
- console.log(`Response status: ${response.status}`);
121
- console.log(`Response headers:`, response.headers.raw());
122
 
123
  response.headers.forEach((value, key) => {
124
  const lowerKey = key.toLowerCase();
@@ -135,7 +108,6 @@ app.all('*', async (req, res) => {
135
  lowerKey !== 'trailers' &&
136
  lowerKey !== 'upgrade'
137
  ) {
138
- console.log(`Setting response header: ${key} = ${value}`);
139
  res.setHeader(key, value);
140
  }
141
  });
@@ -145,32 +117,19 @@ app.all('*', async (req, res) => {
145
  !key.toLowerCase().startsWith('access-control-')
146
  ).join(', ');
147
  if (exposedHeaders) {
148
- console.log(`Setting exposed headers: ${exposedHeaders}`);
149
  res.setHeader('Access-Control-Expose-Headers', exposedHeaders || '*');
150
  }
151
 
152
  res.status(response.status);
153
- console.log(`Set response status to: ${response.status}`);
154
 
155
  if (response.body) {
156
- console.log('Starting to pipe response body...');
157
- response.body.on('error', (error) => {
158
- console.error('Error in response body pipe:', error);
159
- });
160
- response.body.on('end', () => {
161
- console.log('Response body pipe completed');
162
- });
163
  response.body.pipe(res);
164
  } else {
165
- console.log('No response body, ending response');
166
  res.end();
167
  }
168
 
169
  } catch (error) {
170
- console.error(`[${new Date().toISOString()}] Detailed proxy error:`, error);
171
- console.error('Error stack:', error.stack);
172
  if (!res.headersSent) {
173
- console.log('Headers not sent yet, sending error response');
174
  addCorsHeaders(res, clientRequestOrigin);
175
  let statusCode = 500;
176
  let message = 'Proxy error occurred.';
@@ -188,17 +147,14 @@ app.all('*', async (req, res) => {
188
  statusCode = 400;
189
  message = `Invalid target URL format in path: ${req.url.substring(1)}`;
190
  }
191
- console.log(`Sending error response: ${statusCode} - ${message}`);
192
  res.status(statusCode).send(message);
193
  } else {
194
- console.error(`Headers already sent, cannot send error response`);
195
  res.end();
196
  }
197
  }
198
  });
199
 
200
  function addCorsHeaders(res, clientRequestOrigin) {
201
- console.log(`Adding CORS headers for origin: ${clientRequestOrigin}`);
202
  if (clientRequestOrigin) {
203
  res.setHeader('Access-Control-Allow-Origin', clientRequestOrigin);
204
  res.setHeader('Access-Control-Allow-Credentials', 'true');
@@ -211,8 +167,4 @@ function addCorsHeaders(res, clientRequestOrigin) {
211
  const PORT = process.env.PORT || 7860;
212
  const HOST = '0.0.0.0';
213
 
214
- app.listen(PORT, HOST, () => {
215
- console.log(`Server running on http://${HOST}:${PORT} and acting as a CORS proxy.`);
216
- console.log(`Handles OPTIONS preflight requests.`);
217
- console.log(`Example: http://${HOST === '0.0.0.0' ? 'localhost' : HOST}:${PORT}/https://www.google.com`);
218
- });
 
8
  }));
9
 
10
  app.options('*', (req, res) => {
 
11
  const origin = req.headers.origin;
12
 
13
  if (origin) {
 
21
 
22
  const requestedHeaders = req.headers['access-control-request-headers'];
23
  if (requestedHeaders) {
 
24
  res.setHeader('Access-Control-Allow-Headers', requestedHeaders);
25
  } else {
26
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, X-CSRF-Token, Accept, Origin');
 
32
  res.setHeader('Vary', 'Origin');
33
  }
34
 
 
35
  res.status(204).end();
36
  });
37
 
 
38
  app.get('/', (req, res) => {
 
39
  const origin = req.headers.origin;
40
  if (origin) {
41
  res.setHeader('Access-Control-Allow-Origin', origin);
 
53
  });
54
 
55
  app.all('*', async (req, res) => {
 
 
 
 
 
56
  if (req.url === '/') {
 
57
  return;
58
  }
59
 
60
  const clientRequestOrigin = req.headers.origin;
 
61
 
62
  try {
63
  let targetUrlString = req.url.substring(1);
 
64
 
65
  try {
66
  targetUrlString = decodeURIComponent(targetUrlString);
67
+ } catch (e) {}
 
 
 
68
 
69
  if (!targetUrlString) {
 
70
  addCorsHeaders(res, clientRequestOrigin);
71
  res.status(400).send('Target URL is missing in the path.');
72
  return;
 
75
  let targetUrl;
76
  try {
77
  targetUrl = new URL(targetUrlString);
 
78
  } catch (e) {
 
79
  addCorsHeaders(res, clientRequestOrigin);
80
  res.status(400).send(`Invalid target URL provided in path: ${targetUrlString}`);
81
  return;
 
84
  const requestHeaders = {...req.headers};
85
  delete requestHeaders['host'];
86
  delete requestHeaders['content-length'];
 
 
 
 
87
 
 
88
  const response = await fetch(targetUrl.toString(), {
89
  method: req.method,
90
  headers: requestHeaders,
 
92
  redirect: 'manual',
93
  compress: false
94
  });
 
 
 
95
 
96
  response.headers.forEach((value, key) => {
97
  const lowerKey = key.toLowerCase();
 
108
  lowerKey !== 'trailers' &&
109
  lowerKey !== 'upgrade'
110
  ) {
 
111
  res.setHeader(key, value);
112
  }
113
  });
 
117
  !key.toLowerCase().startsWith('access-control-')
118
  ).join(', ');
119
  if (exposedHeaders) {
 
120
  res.setHeader('Access-Control-Expose-Headers', exposedHeaders || '*');
121
  }
122
 
123
  res.status(response.status);
 
124
 
125
  if (response.body) {
 
 
 
 
 
 
 
126
  response.body.pipe(res);
127
  } else {
 
128
  res.end();
129
  }
130
 
131
  } catch (error) {
 
 
132
  if (!res.headersSent) {
 
133
  addCorsHeaders(res, clientRequestOrigin);
134
  let statusCode = 500;
135
  let message = 'Proxy error occurred.';
 
147
  statusCode = 400;
148
  message = `Invalid target URL format in path: ${req.url.substring(1)}`;
149
  }
 
150
  res.status(statusCode).send(message);
151
  } else {
 
152
  res.end();
153
  }
154
  }
155
  });
156
 
157
  function addCorsHeaders(res, clientRequestOrigin) {
 
158
  if (clientRequestOrigin) {
159
  res.setHeader('Access-Control-Allow-Origin', clientRequestOrigin);
160
  res.setHeader('Access-Control-Allow-Credentials', 'true');
 
167
  const PORT = process.env.PORT || 7860;
168
  const HOST = '0.0.0.0';
169
 
170
+ app.listen(PORT, HOST);