Spaces:
Running
Running
Commit
·
c1dc99b
1
Parent(s):
ee7ff2d
simplified proxy
Browse files- mini.js +128 -0
- myNodeServer.js +256 -213
- package.json +3 -0
- yarn.lock +384 -25
mini.js
ADDED
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const express = require('express');
|
2 |
+
const http = require('http');
|
3 |
+
const session = require('express-session');
|
4 |
+
const axios = require('axios');
|
5 |
+
|
6 |
+
const app = express();
|
7 |
+
const CHECK_OMNI_INTERVAL = 60000; // 1 minute
|
8 |
+
|
9 |
+
// Global variable
|
10 |
+
global.OMNITOOL_RUNNING = false;
|
11 |
+
|
12 |
+
// Function to check the status of the external service
|
13 |
+
async function checkExternalService()
|
14 |
+
{
|
15 |
+
console.log("Checking external service");
|
16 |
+
try
|
17 |
+
{
|
18 |
+
const response = await axios.get('http://127.0.0.1:1688/api/v1/mercenaries/ping');
|
19 |
+
if (response.data && response.data.ping === 'pong' && Object.keys(response.data.payload).length === 0)
|
20 |
+
{
|
21 |
+
global.OMNITOOL_RUNNING = true;
|
22 |
+
}
|
23 |
+
} catch (error)
|
24 |
+
{
|
25 |
+
console.error('Cannot access OMNITOOL. It is probably not running...', error.message);
|
26 |
+
// Set to false but do not prevent server from starting
|
27 |
+
global.OMNITOOL_RUNNING = false;
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
|
32 |
+
async function setup()
|
33 |
+
{
|
34 |
+
// Call the function when the server starts
|
35 |
+
checkExternalService();
|
36 |
+
|
37 |
+
|
38 |
+
// Other server code...
|
39 |
+
}
|
40 |
+
|
41 |
+
async function main(app)
|
42 |
+
{
|
43 |
+
// Configure session middleware
|
44 |
+
app.use(session({
|
45 |
+
secret: 'your-secret-key',
|
46 |
+
resave: false,
|
47 |
+
saveUninitialized: true
|
48 |
+
}));
|
49 |
+
await startServer();
|
50 |
+
|
51 |
+
// Route to serve the webpage
|
52 |
+
app.get('/', handleRoutes);
|
53 |
+
|
54 |
+
app.get("status", (req, res) =>
|
55 |
+
{
|
56 |
+
res.send(global.OMNITOOL_RUNNING ? 'OMNITOOL IS RUNNING' : 'OMNITOOL IS NOT RUNNING');
|
57 |
+
}
|
58 |
+
);
|
59 |
+
|
60 |
+
// Call the function when the server starts
|
61 |
+
await setup();
|
62 |
+
}
|
63 |
+
|
64 |
+
function replyOmnitoolIsRunning()
|
65 |
+
{
|
66 |
+
return '<p>OMNITOOL IS RUNNING </p>';
|
67 |
+
}
|
68 |
+
|
69 |
+
async function handleRoutes(req, res)
|
70 |
+
{
|
71 |
+
|
72 |
+
if (req.session.isVisited)
|
73 |
+
{
|
74 |
+
if (global.OMNITOOL_RUNNING)
|
75 |
+
{
|
76 |
+
const reply = replyOmnitoolIsRunning();
|
77 |
+
res.send(reply);
|
78 |
+
}
|
79 |
+
else
|
80 |
+
{
|
81 |
+
const status = global.OMNITOOL_RUNNING ? 'External service is running' : 'External service is not running';
|
82 |
+
const message = `<p>WELCOME BACK</p><p>${status}</p>`;
|
83 |
+
res.send(message);
|
84 |
+
}
|
85 |
+
} else
|
86 |
+
{
|
87 |
+
await checkExternalService();
|
88 |
+
if (global.OMNITOOL_RUNNING)
|
89 |
+
{
|
90 |
+
const reply = replyOmnitoolIsRunning();
|
91 |
+
res.send(reply);
|
92 |
+
}
|
93 |
+
else
|
94 |
+
{
|
95 |
+
// Serve the webpage with a button for first-time visitors
|
96 |
+
req.session.isVisited = true;
|
97 |
+
res.send(`
|
98 |
+
<html>
|
99 |
+
<body>
|
100 |
+
<h1>Welcome!</h1>
|
101 |
+
<button onclick="window.open(window.location.href, '_blank')">CLICK ME</button>
|
102 |
+
</body>
|
103 |
+
</html>
|
104 |
+
`);
|
105 |
+
}
|
106 |
+
}
|
107 |
+
|
108 |
+
|
109 |
+
}
|
110 |
+
|
111 |
+
|
112 |
+
async function startServer()
|
113 |
+
{
|
114 |
+
// Start server
|
115 |
+
const PORT = 3000;
|
116 |
+
http.createServer(app).listen(PORT, () =>
|
117 |
+
{
|
118 |
+
console.log(`Server running on port ${PORT}`);
|
119 |
+
});
|
120 |
+
|
121 |
+
|
122 |
+
setInterval(async () =>
|
123 |
+
{
|
124 |
+
await checkExternalService();
|
125 |
+
}, CHECK_OMNI_INTERVAL);
|
126 |
+
|
127 |
+
}
|
128 |
+
main(app);
|
myNodeServer.js
CHANGED
@@ -1,23 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
const http = require('http');
|
|
|
|
|
2 |
const { spawn } = require('child_process');
|
|
|
|
|
|
|
3 |
|
4 |
-
const PROXY_PORT_OMNITOOL = 4444;
|
5 |
const CONTAINER_HOST = '127.0.0.1';
|
|
|
|
|
6 |
const CONTAINER_PORT_OMNITOOL = 1688;
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
15 |
console.log(`************ Omnitool Proxy Server v${VERSION} ************`);
|
16 |
let omnitoolLogs = [];
|
17 |
|
18 |
// HTML templates and constants
|
19 |
-
const START_SERVER_BUTTON_HTML = `<button id="startServerButton" onclick="startServer()">Start Omnitool Server</button>`;
|
20 |
-
const GOTO_OMNITOOL_BUTTON_HTML = `<button id="exitIframeButton" onclick="exitIframe()">GOTO OMNITOOL</button>`;
|
21 |
const LOG_CONTAINER_HTML = `<div id="logContainer"></div>`;
|
22 |
const COMMON_STYLES = `
|
23 |
<style>
|
@@ -44,19 +60,149 @@ const COMMON_STYLES = `
|
|
44 |
}
|
45 |
</style>`;
|
46 |
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
|
|
52 |
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
55 |
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
{
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
|
61 |
return `
|
62 |
<html>
|
@@ -82,7 +228,9 @@ function generateHTMLContent(newUrl) {
|
|
82 |
}
|
83 |
|
84 |
function exitIframe() {
|
85 |
-
|
|
|
|
|
86 |
}
|
87 |
|
88 |
function startLogPolling() {
|
@@ -113,223 +261,118 @@ function generateHTMLContent(newUrl) {
|
|
113 |
</html>`;
|
114 |
}
|
115 |
|
116 |
-
|
117 |
-
async function startOmnitoolServer()
|
118 |
{
|
119 |
-
if (
|
120 |
-
|
|
|
121 |
|
122 |
-
|
123 |
-
return new Promise((resolve, reject) =>
|
124 |
{
|
125 |
-
|
|
|
126 |
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
|
|
|
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
console.error(`omnitool stderr: ${data}`);
|
136 |
-
omnitoolLogs.push(data.toString());
|
137 |
-
});
|
138 |
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
console.log(message);
|
143 |
-
omnitoolLogs.push(message);
|
144 |
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
{
|
151 |
-
reject(`Omnitool server did not start properly.`);
|
152 |
-
}
|
153 |
-
});
|
154 |
-
});
|
155 |
-
}
|
156 |
|
157 |
-
|
158 |
-
{
|
159 |
-
if (OMNITOOL_PRE_READY === false)
|
160 |
-
{
|
161 |
-
OMNITOOL_PRE_READY = true;
|
162 |
-
console.log('Omnitool server is (PRE) ready! ');
|
163 |
-
setTimeout(() =>
|
164 |
-
{
|
165 |
-
console.log('Omnitool server is (NOW) ready! ');
|
166 |
-
OMNITOOL_READY = true;
|
167 |
-
}, 2000); // Delay by 2 second
|
168 |
}
|
169 |
-
}
|
170 |
|
171 |
-
|
172 |
-
console.log("Starting async operation...");
|
173 |
-
try
|
174 |
-
{
|
175 |
-
await checkOmnitoolStatus();
|
176 |
-
}
|
177 |
-
catch (error)
|
178 |
-
{
|
179 |
-
console.log(`Omnitool not ready: ${error} (IFRAME = ${IFRAME}`);
|
180 |
-
OMNITOOL_READY = false;
|
181 |
-
OMNITOOL_PRE_READY = false;
|
182 |
-
}
|
183 |
-
// Schedule the next execution
|
184 |
-
setTimeout(periodicCheckOmnitoolStatus, OMNITOOL_STATUS_CHECK_INTERVAL);
|
185 |
}
|
|
|
|
|
|
|
|
|
|
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
|
188 |
-
async function
|
189 |
{
|
190 |
-
|
191 |
-
|
|
|
192 |
{
|
193 |
-
|
194 |
-
hostname: CONTAINER_HOST,
|
195 |
-
port: CONTAINER_PORT_OMNITOOL,
|
196 |
-
path: '/',
|
197 |
-
method: 'GET'
|
198 |
-
};
|
199 |
-
|
200 |
-
const req = http.request(options, (res) =>
|
201 |
-
{
|
202 |
-
if (res.statusCode === 200)
|
203 |
-
{
|
204 |
-
IFRAME = false;
|
205 |
-
setOmnitoolReady();
|
206 |
-
}
|
207 |
-
else
|
208 |
-
{
|
209 |
-
OMNITOOL_READY = false;
|
210 |
-
OMNITOOL_PRE_READY = false;
|
211 |
-
}
|
212 |
-
resolve();
|
213 |
-
});
|
214 |
-
|
215 |
-
req.on('error', (error) =>
|
216 |
-
{
|
217 |
-
if (error.code === 'ECONNREFUSED')
|
218 |
-
{
|
219 |
-
IFRAME = true;
|
220 |
-
}
|
221 |
-
});
|
222 |
-
|
223 |
-
req.end();
|
224 |
});
|
225 |
-
|
226 |
-
|
227 |
}
|
228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
|
230 |
|
231 |
-
async function
|
232 |
{
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
{
|
247 |
-
case '/start-omnitool-server':
|
248 |
-
{
|
249 |
-
|
250 |
-
console.log(`Omnitool Server:ALREADY_STARTING = ${ALREADY_STARTING}`);
|
251 |
-
if (ALREADY_STARTING)
|
252 |
-
{
|
253 |
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
254 |
-
res.end("Omnitool server already starting");
|
255 |
-
return;
|
256 |
-
}
|
257 |
-
try
|
258 |
-
{
|
259 |
-
await startOmnitoolServer();
|
260 |
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
261 |
-
res.end("Omnitool server started successfully");
|
262 |
-
}
|
263 |
-
catch (error)
|
264 |
-
{
|
265 |
-
console.error(error);
|
266 |
-
ALREADY_STARTING = false;
|
267 |
-
res.writeHead(500, { 'Content-Type': 'text/html' });
|
268 |
-
res.end(`Error starting Omnitool server: ${error}`);
|
269 |
-
}
|
270 |
-
|
271 |
-
return;
|
272 |
-
}
|
273 |
-
|
274 |
-
case '/omnitool-logs':
|
275 |
-
{
|
276 |
-
res.writeHead(200, { 'Content-Type': 'application/json' });
|
277 |
-
const reply = { logs: omnitoolLogs, ready: OMNITOOL_PRE_READY };
|
278 |
-
res.end(JSON.stringify(reply));
|
279 |
-
return;
|
280 |
-
}
|
281 |
-
|
282 |
-
case '/':
|
283 |
-
{
|
284 |
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
285 |
-
res.end(generateHTMLContent(newUrl));
|
286 |
-
return;
|
287 |
-
}
|
288 |
-
|
289 |
-
default:
|
290 |
-
res.writeHead(404, { 'Content-Type': 'text/html' });
|
291 |
-
res.end(`<html><body><h1>404 Not Found</h1><p>The requested URL ${req.url} was not found on this server.</p></body></html>`);
|
292 |
-
return;
|
293 |
-
}
|
294 |
-
}
|
295 |
-
else
|
296 |
-
{
|
297 |
-
// Handle non-GET requests here
|
298 |
-
res.writeHead(405, { 'Content-Type': 'text/html' });
|
299 |
-
res.end(`<html><body><h1>405 Method Not Allowed</h1><p>The request method ${req.method} is not allowed for the URL ${req.url}.</p></body></html>`);
|
300 |
-
}
|
301 |
-
}
|
302 |
-
else
|
303 |
-
{
|
304 |
-
// Proxy logic...
|
305 |
-
const options = { hostname: CONTAINER_HOST, port: CONTAINER_PORT_OMNITOOL, path: req.url, method: req.method, headers: req.headers };
|
306 |
-
const proxy = http.request(options, (proxyRes) =>
|
307 |
-
{
|
308 |
-
res.writeHead(proxyRes.statusCode, proxyRes.headers);
|
309 |
-
proxyRes.pipe(res, { end: true });
|
310 |
-
});
|
311 |
-
req.pipe(proxy, { end: true });
|
312 |
-
}
|
313 |
-
});
|
314 |
|
315 |
-
|
316 |
-
|
317 |
-
|
|
|
|
|
318 |
|
319 |
-
async
|
320 |
-
{
|
321 |
-
try
|
322 |
{
|
323 |
-
await
|
|
|
|
|
324 |
|
325 |
-
|
|
|
326 |
|
327 |
-
|
328 |
-
setInterval(checkOmnitoolStatus, OMNITOOL_STATUS_CHECK_INTERVAL);
|
329 |
-
} catch (error)
|
330 |
-
{
|
331 |
-
console.error('Failed to start servers:', error);
|
332 |
-
}
|
333 |
}
|
334 |
|
335 |
-
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright (c) 2023 MERCENARIES.AI PTE. LTD.
|
3 |
+
* All rights reserved.
|
4 |
+
*/
|
5 |
+
//@ts-check
|
6 |
+
|
7 |
+
const express = require('express');
|
8 |
const http = require('http');
|
9 |
+
const session = require('express-session');
|
10 |
+
const axios = require('axios');
|
11 |
const { spawn } = require('child_process');
|
12 |
+
const { createProxyMiddleware } = require('http-proxy-middleware');
|
13 |
+
|
14 |
+
const app = express();
|
15 |
|
|
|
16 |
const CONTAINER_HOST = '127.0.0.1';
|
17 |
+
|
18 |
+
const PROXY_PORT_OMNITOOL = 4444;
|
19 |
const CONTAINER_PORT_OMNITOOL = 1688;
|
20 |
+
|
21 |
+
const DELAY_OMNITOOL_SET_TO_RUNNING = 2000; // 2 seconds
|
22 |
+
const CHECK_OMNI_INTERVAL = 60000; // 1 minute
|
23 |
+
|
24 |
+
// Global variable
|
25 |
+
global.OMNITOOL_RUNNING = false;
|
26 |
+
global.OMNITOOL_READY = false;
|
27 |
+
global.ALREADY_STARTING = false;
|
28 |
+
global.LOCAL_URL = "";
|
29 |
+
global.PING_URL = "";
|
30 |
+
global.PROTOCOL = "";
|
31 |
+
|
32 |
+
const VERSION = '0.0.8a';
|
33 |
console.log(`************ Omnitool Proxy Server v${VERSION} ************`);
|
34 |
let omnitoolLogs = [];
|
35 |
|
36 |
// HTML templates and constants
|
|
|
|
|
37 |
const LOG_CONTAINER_HTML = `<div id="logContainer"></div>`;
|
38 |
const COMMON_STYLES = `
|
39 |
<style>
|
|
|
60 |
}
|
61 |
</style>`;
|
62 |
|
63 |
+
async function startOmnitoolServer()
|
64 |
+
{
|
65 |
+
if (global.ALREADY_STARTING) return;
|
66 |
+
global.ALREADY_STARTING = true;
|
67 |
+
|
68 |
+
console.log('Starting Omnitool Server...');
|
69 |
+
return new Promise((resolve, reject) =>
|
70 |
+
{
|
71 |
+
const omnitoolStartProcess = spawn('./omnitool_start.sh');
|
72 |
|
73 |
+
omnitoolStartProcess.stdout.on('data', (data) =>
|
74 |
+
{
|
75 |
+
omnitoolLogs.push(data.toString());
|
76 |
+
console.log(`omnitool stdout: ${data}`);
|
77 |
+
});
|
78 |
|
79 |
+
omnitoolStartProcess.stderr.on('data', (data) =>
|
80 |
+
{
|
81 |
+
console.error(`omnitool stderr: ${data}`);
|
82 |
+
omnitoolLogs.push(data.toString());
|
83 |
+
});
|
84 |
+
|
85 |
+
omnitoolStartProcess.on('close', (code) =>
|
86 |
+
{
|
87 |
+
const message = `Omnitool server process exited with code: ${code}`;
|
88 |
+
console.log(message);
|
89 |
+
omnitoolLogs.push(message);
|
90 |
+
|
91 |
+
global.ALREADY_STARTING = false;
|
92 |
+
if (code === 0)
|
93 |
+
{
|
94 |
+
//@ts-ignore
|
95 |
+
resolve();
|
96 |
+
} else
|
97 |
+
{
|
98 |
+
reject(`Omnitool server did not start properly.`);
|
99 |
+
}
|
100 |
+
});
|
101 |
+
});
|
102 |
+
}
|
103 |
+
|
104 |
+
function setOmnitoolRunning(set_running)
|
105 |
+
{
|
106 |
+
if (set_running === true)
|
107 |
{
|
108 |
+
if (global.OMNITOOL_READY === false)
|
109 |
+
{
|
110 |
+
global.OMNITOOL_READY = true;
|
111 |
+
console.log('Omnitool server is READY! ');
|
112 |
+
setTimeout(() =>
|
113 |
+
{
|
114 |
+
console.log('Omnitool server is RUNNING! ');
|
115 |
+
global.OMNITOOL_RUNNING = true;
|
116 |
+
}, DELAY_OMNITOOL_SET_TO_RUNNING); // Delay by 2 second
|
117 |
+
}
|
118 |
+
|
119 |
}
|
120 |
+
else
|
121 |
+
{
|
122 |
+
global.OMNITOOL_READY = false;
|
123 |
+
global.OMNITOOL_RUNNING = false;
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
// Function to check the status of the external service
|
128 |
+
async function checkOmnitoolStatus()
|
129 |
+
{
|
130 |
+
console.log("Checking external service");
|
131 |
+
try
|
132 |
+
{
|
133 |
+
//@ts-ignore
|
134 |
+
const response = await axios.get('http://127.0.0.1:1688/api/v1/mercenaries/ping');
|
135 |
+
if (response.data && response.data.ping === 'pong' && Object.keys(response.data.payload).length === 0)
|
136 |
+
{
|
137 |
+
setOmnitoolRunning(true);
|
138 |
+
}
|
139 |
+
else
|
140 |
+
{
|
141 |
+
setOmnitoolRunning(false);
|
142 |
+
}
|
143 |
+
} catch (error)
|
144 |
+
{
|
145 |
+
console.error('Cannot access OMNITOOL. It is probably not running...', error.message);
|
146 |
+
setOmnitoolRunning(false);
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
async function handleGetStartOmnitoolServer(req, res)
|
151 |
+
{
|
152 |
+
console.log(`Omnitool Server:ALREADY_STARTING = ${global.ALREADY_STARTING}`);
|
153 |
+
if (global.ALREADY_STARTING)
|
154 |
+
{
|
155 |
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
156 |
+
res.end("Omnitool server already starting");
|
157 |
+
return;
|
158 |
+
}
|
159 |
+
try
|
160 |
+
{
|
161 |
+
await startOmnitoolServer();
|
162 |
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
163 |
+
res.end("Omnitool server started successfully");
|
164 |
+
}
|
165 |
+
catch (error)
|
166 |
+
{
|
167 |
+
console.error(error);
|
168 |
+
global.ALREADY_STARTING = false;
|
169 |
+
res.writeHead(500, { 'Content-Type': 'text/html' });
|
170 |
+
res.end(`Error starting Omnitool server: ${error}`);
|
171 |
+
}
|
172 |
+
}
|
173 |
+
|
174 |
+
async function handleGetOmnitoolLogs(req, res)
|
175 |
+
{
|
176 |
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
177 |
+
const reply = { logs: omnitoolLogs, ready:global.OMNITOOL_READY };
|
178 |
+
res.end(JSON.stringify(reply));
|
179 |
+
return;
|
180 |
+
}
|
181 |
+
async function handleGetBurstIframe(req, res)
|
182 |
+
{
|
183 |
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
184 |
+
req.session.isVisited = true;
|
185 |
+
|
186 |
+
const reply = { burst_iframe: true };
|
187 |
+
res.end(JSON.stringify(reply));
|
188 |
+
return;
|
189 |
+
}
|
190 |
+
|
191 |
+
async function proxyRequest(req, res)
|
192 |
+
{
|
193 |
+
// Proxy logic...
|
194 |
+
const options = { hostname: CONTAINER_HOST, port: CONTAINER_PORT_OMNITOOL, path: req.url, method: req.method, headers: req.headers, };
|
195 |
+
const proxy = http.request(options, (proxyRes) =>
|
196 |
+
{
|
197 |
+
res.writeHead(proxyRes.statusCode, proxyRes.headers);
|
198 |
+
proxyRes.pipe(res, { end: true });
|
199 |
+
});
|
200 |
+
req.pipe(proxy, { end: true });
|
201 |
+
return;
|
202 |
+
}
|
203 |
+
|
204 |
+
function getButtonsString(buttonsHTML, gotoUrl)
|
205 |
+
{
|
206 |
|
207 |
return `
|
208 |
<html>
|
|
|
228 |
}
|
229 |
|
230 |
function exitIframe() {
|
231 |
+
fetch('/burst-iframe')
|
232 |
+
.then(response => response.json())
|
233 |
+
.then(data => window.open('/', '_blank'));
|
234 |
}
|
235 |
|
236 |
function startLogPolling() {
|
|
|
261 |
</html>`;
|
262 |
}
|
263 |
|
264 |
+
async function handleGetRoot(req, res)
|
|
|
265 |
{
|
266 |
+
if (global.LOCAL_URL === "") setGlobals(req);
|
267 |
+
console.log(`req.session.isVisited = ${req.session.isVisited}`);
|
268 |
+
console.log(`global.OMNITOOL_RUNNING = ${global.OMNITOOL_RUNNING}`);
|
269 |
|
270 |
+
if (!req.session.isVisited)
|
|
|
271 |
{
|
272 |
+
await checkOmnitoolStatus();
|
273 |
+
}
|
274 |
|
275 |
+
if (!global.OMNITOOL_RUNNING)
|
276 |
+
{
|
277 |
+
let startButtonClass = 'highlight-button';
|
278 |
+
let buttonsHTML = `<button id="startServerButton" class="${startButtonClass}" onclick="startServer()">Start Omnitool Server</button>`;
|
279 |
+
const html = getButtonsString(buttonsHTML, global.LOCAL_URL);
|
280 |
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
281 |
+
res.end(html);
|
282 |
|
283 |
+
return;
|
284 |
+
}
|
|
|
|
|
|
|
285 |
|
286 |
+
if (!req.session.isVisited)
|
287 |
+
{
|
288 |
+
console.log(`-----> global.LOCAL_URL = ${global.LOCAL_URL}`);
|
|
|
|
|
289 |
|
290 |
+
const gotoButtonClass = 'highlight-button';
|
291 |
+
const buttonsHTML = `<button id="exitIframeButton" class="${gotoButtonClass}" onclick="exitIframe()">GOTO OMNITOOL</button>`;
|
292 |
+
const html = getButtonsString(buttonsHTML, global.LOCAL_URL);
|
293 |
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
294 |
+
res.end(html);
|
|
|
|
|
|
|
|
|
|
|
|
|
295 |
|
296 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
297 |
}
|
|
|
298 |
|
299 |
+
proxyRequest(req, res);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
}
|
301 |
+
function setGlobals(req)
|
302 |
+
{
|
303 |
+
|
304 |
+
global.LOCAL_URL = req.headers['host'];
|
305 |
+
if (req.protocol === "https") global.PROTOCOL = 'https'; else global.PROTOCOL = 'http';
|
306 |
|
307 |
+
if (!global.LOCAL_URL) throw new Error('No host header found in request' + JSON.stringify(req.headers, null, 2));
|
308 |
+
|
309 |
+
const hostname = global.LOCAL_URL.split(':')[0];
|
310 |
+
const newUrl = `${global.PROTOCOL}://${hostname}`;//:${PROXY_PORT_OMNITOOL}`;
|
311 |
+
global.PING_URL = `${newUrl}/api/v1/mercenaries/ping`;
|
312 |
+
}
|
313 |
|
314 |
+
async function startServer()
|
315 |
{
|
316 |
+
// Start server
|
317 |
+
const PORT = 4444;
|
318 |
+
http.createServer(app).listen(PORT, () =>
|
319 |
{
|
320 |
+
console.log(`Server running on port ${PORT}`);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
});
|
322 |
+
|
|
|
323 |
}
|
324 |
|
325 |
+
const OMNI_URL = 'http://127.0.0.1:1688'; // URL of the OMNITOOL service
|
326 |
+
|
327 |
+
function omnitoolProxyMiddleware(req, res, next) {
|
328 |
+
if (global.OMNITOOL_RUNNING && req.session.isVisited) {
|
329 |
+
// Proxy all requests to OMNITOOL when conditions are met
|
330 |
+
return createProxyMiddleware({
|
331 |
+
target: OMNI_URL,
|
332 |
+
changeOrigin: true,
|
333 |
+
ws: true // if you need WebSocket support
|
334 |
+
})(req, res, next);
|
335 |
+
} else {
|
336 |
+
// Continue with normal processing for other cases
|
337 |
+
next();
|
338 |
+
}
|
339 |
+
}
|
340 |
|
341 |
|
342 |
+
async function main(app)
|
343 |
{
|
344 |
+
|
345 |
+
|
346 |
+
checkOmnitoolStatus();
|
347 |
+
|
348 |
+
// Configure session middleware
|
349 |
+
app.use(session({
|
350 |
+
secret: 'your-secret-key',
|
351 |
+
resave: false,
|
352 |
+
saveUninitialized: true
|
353 |
+
}));
|
354 |
+
await startServer();
|
355 |
+
|
356 |
+
app.use(omnitoolProxyMiddleware);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
357 |
|
358 |
+
app.get('/favicon.ico', (req, res) => res.status(204));
|
359 |
+
app.get('/start-omnitool-server', (req, res) => handleGetStartOmnitoolServer(req, res));
|
360 |
+
app.get('/omnitool-logs', (req, res) => handleGetOmnitoolLogs(req, res));
|
361 |
+
app.get('/burst-iframe', (req, res) => handleGetBurstIframe(req, res));
|
362 |
+
app.get('/', (req, res) => handleGetRoot(req, res));
|
363 |
|
364 |
+
setInterval(async () =>
|
|
|
|
|
365 |
{
|
366 |
+
await checkOmnitoolStatus();
|
367 |
+
}, CHECK_OMNI_INTERVAL);
|
368 |
+
|
369 |
|
370 |
+
//const server = http.createServer(async (req, res) => handleRoutes(req, res, app));
|
371 |
+
//server.listen(PROXY_PORT_OMNITOOL, '0.0.0.0');
|
372 |
|
373 |
+
console.log(`Server running on port ${PROXY_PORT_OMNITOOL}`);
|
|
|
|
|
|
|
|
|
|
|
374 |
}
|
375 |
|
376 |
+
main(app);
|
377 |
+
|
378 |
+
|
package.json
CHANGED
@@ -55,8 +55,11 @@
|
|
55 |
"adm-zip": "^0.5.10",
|
56 |
"compare-versions": "^6.1.0",
|
57 |
"cross-env": "^7.0.3",
|
|
|
|
|
58 |
"fs-extra": "^11.1.1",
|
59 |
"http-proxy-middleware": "^2.0.6",
|
|
|
60 |
"node-fetch": "^3.3.2"
|
61 |
},
|
62 |
"devDependencies": {
|
|
|
55 |
"adm-zip": "^0.5.10",
|
56 |
"compare-versions": "^6.1.0",
|
57 |
"cross-env": "^7.0.3",
|
58 |
+
"express": "^4.18.2",
|
59 |
+
"express-session": "^1.17.3",
|
60 |
"fs-extra": "^11.1.1",
|
61 |
"http-proxy-middleware": "^2.0.6",
|
62 |
+
"http-proxy-middleware\n": "^2.0.6",
|
63 |
"node-fetch": "^3.3.2"
|
64 |
},
|
65 |
"devDependencies": {
|
yarn.lock
CHANGED
@@ -3655,6 +3655,16 @@ __metadata:
|
|
3655 |
languageName: node
|
3656 |
linkType: hard
|
3657 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3658 |
"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2":
|
3659 |
version: 5.3.2
|
3660 |
resolution: "acorn-jsx@npm:5.3.2"
|
@@ -3951,6 +3961,13 @@ __metadata:
|
|
3951 |
languageName: node
|
3952 |
linkType: hard
|
3953 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3954 |
"array-includes@npm:^3.1.7":
|
3955 |
version: 3.1.7
|
3956 |
resolution: "array-includes@npm:3.1.7"
|
@@ -4303,6 +4320,26 @@ __metadata:
|
|
4303 |
languageName: node
|
4304 |
linkType: hard
|
4305 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4306 |
"boolbase@npm:^1.0.0":
|
4307 |
version: 1.0.0
|
4308 |
resolution: "boolbase@npm:1.0.0"
|
@@ -4420,6 +4457,13 @@ __metadata:
|
|
4420 |
languageName: node
|
4421 |
linkType: hard
|
4422 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4423 |
"cacache@npm:^17.0.0":
|
4424 |
version: 17.1.4
|
4425 |
resolution: "cacache@npm:17.1.4"
|
@@ -4862,7 +4906,7 @@ __metadata:
|
|
4862 |
languageName: node
|
4863 |
linkType: hard
|
4864 |
|
4865 |
-
"content-disposition@npm:^0.5.3":
|
4866 |
version: 0.5.4
|
4867 |
resolution: "content-disposition@npm:0.5.4"
|
4868 |
dependencies:
|
@@ -4871,6 +4915,13 @@ __metadata:
|
|
4871 |
languageName: node
|
4872 |
linkType: hard
|
4873 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4874 |
"convert-source-map@npm:^1.7.0":
|
4875 |
version: 1.9.0
|
4876 |
resolution: "convert-source-map@npm:1.9.0"
|
@@ -4885,7 +4936,21 @@ __metadata:
|
|
4885 |
languageName: node
|
4886 |
linkType: hard
|
4887 |
|
4888 |
-
"cookie@npm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4889 |
version: 0.5.0
|
4890 |
resolution: "cookie@npm:0.5.0"
|
4891 |
checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180
|
@@ -5402,6 +5467,15 @@ __metadata:
|
|
5402 |
languageName: node
|
5403 |
linkType: hard
|
5404 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5405 |
"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4":
|
5406 |
version: 4.3.4
|
5407 |
resolution: "debug@npm:4.3.4"
|
@@ -5414,15 +5488,6 @@ __metadata:
|
|
5414 |
languageName: node
|
5415 |
linkType: hard
|
5416 |
|
5417 |
-
"debug@npm:^2.2.0":
|
5418 |
-
version: 2.6.9
|
5419 |
-
resolution: "debug@npm:2.6.9"
|
5420 |
-
dependencies:
|
5421 |
-
ms: 2.0.0
|
5422 |
-
checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6
|
5423 |
-
languageName: node
|
5424 |
-
linkType: hard
|
5425 |
-
|
5426 |
"debug@npm:^3.1.0, debug@npm:^3.2.7":
|
5427 |
version: 3.2.7
|
5428 |
resolution: "debug@npm:3.2.7"
|
@@ -5550,13 +5615,20 @@ __metadata:
|
|
5550 |
languageName: node
|
5551 |
linkType: hard
|
5552 |
|
5553 |
-
"depd@npm:2.0.0":
|
5554 |
version: 2.0.0
|
5555 |
resolution: "depd@npm:2.0.0"
|
5556 |
checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a
|
5557 |
languageName: node
|
5558 |
linkType: hard
|
5559 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5560 |
"detect-content-type@npm:^1.2.0":
|
5561 |
version: 1.2.0
|
5562 |
resolution: "detect-content-type@npm:1.2.0"
|
@@ -5704,6 +5776,13 @@ __metadata:
|
|
5704 |
languageName: node
|
5705 |
linkType: hard
|
5706 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5707 |
"ejs@npm:^3.1.9":
|
5708 |
version: 3.1.9
|
5709 |
resolution: "ejs@npm:3.1.9"
|
@@ -5743,6 +5822,13 @@ __metadata:
|
|
5743 |
languageName: node
|
5744 |
linkType: hard
|
5745 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5746 |
"encoding@npm:^0.1.13":
|
5747 |
version: 0.1.13
|
5748 |
resolution: "encoding@npm:0.1.13"
|
@@ -6748,6 +6834,13 @@ __metadata:
|
|
6748 |
languageName: node
|
6749 |
linkType: hard
|
6750 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6751 |
"event-emitter@npm:~0.3.4":
|
6752 |
version: 0.3.5
|
6753 |
resolution: "event-emitter@npm:0.3.5"
|
@@ -6849,6 +6942,61 @@ __metadata:
|
|
6849 |
languageName: node
|
6850 |
linkType: hard
|
6851 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6852 |
"ext@npm:^1.1.2":
|
6853 |
version: 1.7.0
|
6854 |
resolution: "ext@npm:1.7.0"
|
@@ -7164,6 +7312,21 @@ __metadata:
|
|
7164 |
languageName: node
|
7165 |
linkType: hard
|
7166 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7167 |
"find-cache-dir@npm:^2.0.0":
|
7168 |
version: 2.1.0
|
7169 |
resolution: "find-cache-dir@npm:2.1.0"
|
@@ -7325,6 +7488,13 @@ __metadata:
|
|
7325 |
languageName: node
|
7326 |
linkType: hard
|
7327 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7328 |
"fs-constants@npm:^1.0.0":
|
7329 |
version: 1.0.0
|
7330 |
resolution: "fs-constants@npm:1.0.0"
|
@@ -7870,6 +8040,24 @@ __metadata:
|
|
7870 |
languageName: node
|
7871 |
linkType: hard
|
7872 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7873 |
"http-proxy-middleware@npm:^2.0.6":
|
7874 |
version: 2.0.6
|
7875 |
resolution: "http-proxy-middleware@npm:2.0.6"
|
@@ -7943,6 +8131,15 @@ __metadata:
|
|
7943 |
languageName: node
|
7944 |
linkType: hard
|
7945 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7946 |
"iconv-lite@npm:0.6, iconv-lite@npm:^0.6.2":
|
7947 |
version: 0.6.3
|
7948 |
resolution: "iconv-lite@npm:0.6.3"
|
@@ -7952,15 +8149,6 @@ __metadata:
|
|
7952 |
languageName: node
|
7953 |
linkType: hard
|
7954 |
|
7955 |
-
"iconv-lite@npm:^0.4.17":
|
7956 |
-
version: 0.4.24
|
7957 |
-
resolution: "iconv-lite@npm:0.4.24"
|
7958 |
-
dependencies:
|
7959 |
-
safer-buffer: ">= 2.1.2 < 3"
|
7960 |
-
checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6
|
7961 |
-
languageName: node
|
7962 |
-
linkType: hard
|
7963 |
-
|
7964 |
"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1":
|
7965 |
version: 1.2.1
|
7966 |
resolution: "ieee754@npm:1.2.1"
|
@@ -9172,6 +9360,13 @@ __metadata:
|
|
9172 |
languageName: node
|
9173 |
linkType: hard
|
9174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9175 |
"mem@npm:^4.0.0":
|
9176 |
version: 4.3.0
|
9177 |
resolution: "mem@npm:4.3.0"
|
@@ -9198,6 +9393,13 @@ __metadata:
|
|
9198 |
languageName: node
|
9199 |
linkType: hard
|
9200 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9201 |
"merge-stream@npm:^2.0.0":
|
9202 |
version: 2.0.0
|
9203 |
resolution: "merge-stream@npm:2.0.0"
|
@@ -9212,6 +9414,13 @@ __metadata:
|
|
9212 |
languageName: node
|
9213 |
linkType: hard
|
9214 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9215 |
"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5":
|
9216 |
version: 4.0.5
|
9217 |
resolution: "micromatch@npm:4.0.5"
|
@@ -9229,7 +9438,7 @@ __metadata:
|
|
9229 |
languageName: node
|
9230 |
linkType: hard
|
9231 |
|
9232 |
-
"mime-types@npm:^2.0.1, mime-types@npm:^2.1.12, mime-types@npm:^2.1.35, mime-types@npm:~2.1.19":
|
9233 |
version: 2.1.35
|
9234 |
resolution: "mime-types@npm:2.1.35"
|
9235 |
dependencies:
|
@@ -9238,6 +9447,15 @@ __metadata:
|
|
9238 |
languageName: node
|
9239 |
linkType: hard
|
9240 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9241 |
"mime@npm:^3.0.0":
|
9242 |
version: 3.0.0
|
9243 |
resolution: "mime@npm:3.0.0"
|
@@ -9498,7 +9716,7 @@ __metadata:
|
|
9498 |
languageName: node
|
9499 |
linkType: hard
|
9500 |
|
9501 |
-
"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3":
|
9502 |
version: 2.1.3
|
9503 |
resolution: "ms@npm:2.1.3"
|
9504 |
checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d
|
@@ -9628,7 +9846,7 @@ __metadata:
|
|
9628 |
languageName: node
|
9629 |
linkType: hard
|
9630 |
|
9631 |
-
"negotiator@npm:^0.6.3":
|
9632 |
version: 0.6.3
|
9633 |
resolution: "negotiator@npm:0.6.3"
|
9634 |
checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9
|
@@ -10216,8 +10434,11 @@ __metadata:
|
|
10216 |
eslint: ^8.53.0
|
10217 |
eslint-config-prettier: ^9.0.0
|
10218 |
eslint-plugin-prettier: ^5.0.1
|
|
|
|
|
10219 |
fs-extra: ^11.1.1
|
10220 |
http-proxy-middleware: ^2.0.6
|
|
|
10221 |
node-fetch: ^3.3.2
|
10222 |
prettier: ^3.0.3
|
10223 |
dependenciesMeta:
|
@@ -10233,6 +10454,22 @@ __metadata:
|
|
10233 |
languageName: node
|
10234 |
linkType: hard
|
10235 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10236 |
"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0":
|
10237 |
version: 1.4.0
|
10238 |
resolution: "once@npm:1.4.0"
|
@@ -10481,6 +10718,13 @@ __metadata:
|
|
10481 |
languageName: node
|
10482 |
linkType: hard
|
10483 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10484 |
"path-exists@npm:^3.0.0":
|
10485 |
version: 3.0.0
|
10486 |
resolution: "path-exists@npm:3.0.0"
|
@@ -10547,6 +10791,13 @@ __metadata:
|
|
10547 |
languageName: node
|
10548 |
linkType: hard
|
10549 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10550 |
"path-type@npm:^4.0.0":
|
10551 |
version: 4.0.0
|
10552 |
resolution: "path-type@npm:4.0.0"
|
@@ -10872,7 +11123,7 @@ __metadata:
|
|
10872 |
languageName: node
|
10873 |
linkType: hard
|
10874 |
|
10875 |
-
"proxy-addr@npm:^2.0.7":
|
10876 |
version: 2.0.7
|
10877 |
resolution: "proxy-addr@npm:2.0.7"
|
10878 |
dependencies:
|
@@ -10920,6 +11171,15 @@ __metadata:
|
|
10920 |
languageName: node
|
10921 |
linkType: hard
|
10922 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10923 |
"qs@npm:^6.10.2, qs@npm:^6.11.0":
|
10924 |
version: 6.11.2
|
10925 |
resolution: "qs@npm:6.11.2"
|
@@ -10989,6 +11249,13 @@ __metadata:
|
|
10989 |
languageName: node
|
10990 |
linkType: hard
|
10991 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10992 |
"randombytes@npm:^2.1.0":
|
10993 |
version: 2.1.0
|
10994 |
resolution: "randombytes@npm:2.1.0"
|
@@ -10998,6 +11265,25 @@ __metadata:
|
|
10998 |
languageName: node
|
10999 |
linkType: hard
|
11000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11001 |
"rc@npm:^1.2.7":
|
11002 |
version: 1.2.8
|
11003 |
resolution: "rc@npm:1.2.8"
|
@@ -11661,6 +11947,27 @@ __metadata:
|
|
11661 |
languageName: node
|
11662 |
linkType: hard
|
11663 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11664 |
"serialize-javascript@npm:^6.0.1":
|
11665 |
version: 6.0.1
|
11666 |
resolution: "serialize-javascript@npm:6.0.1"
|
@@ -11670,6 +11977,18 @@ __metadata:
|
|
11670 |
languageName: node
|
11671 |
linkType: hard
|
11672 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11673 |
"set-blocking@npm:^2.0.0":
|
11674 |
version: 2.0.0
|
11675 |
resolution: "set-blocking@npm:2.0.0"
|
@@ -12772,6 +13091,16 @@ __metadata:
|
|
12772 |
languageName: node
|
12773 |
linkType: hard
|
12774 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12775 |
"type@npm:^1.0.1":
|
12776 |
version: 1.2.0
|
12777 |
resolution: "type@npm:1.2.0"
|
@@ -12871,6 +13200,15 @@ __metadata:
|
|
12871 |
languageName: node
|
12872 |
linkType: hard
|
12873 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12874 |
"unbox-primitive@npm:^1.0.2":
|
12875 |
version: 1.0.2
|
12876 |
resolution: "unbox-primitive@npm:1.0.2"
|
@@ -12969,6 +13307,13 @@ __metadata:
|
|
12969 |
languageName: node
|
12970 |
linkType: hard
|
12971 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12972 |
"unplugin-preprocessor-directives@npm:^0.0.8":
|
12973 |
version: 0.0.8
|
12974 |
resolution: "unplugin-preprocessor-directives@npm:0.0.8"
|
@@ -13066,6 +13411,13 @@ __metadata:
|
|
13066 |
languageName: node
|
13067 |
linkType: hard
|
13068 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13069 |
"uuid@npm:^3.3.2":
|
13070 |
version: 3.4.0
|
13071 |
resolution: "uuid@npm:3.4.0"
|
@@ -13091,6 +13443,13 @@ __metadata:
|
|
13091 |
languageName: node
|
13092 |
linkType: hard
|
13093 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13094 |
"verror@npm:1.10.0":
|
13095 |
version: 1.10.0
|
13096 |
resolution: "verror@npm:1.10.0"
|
|
|
3655 |
languageName: node
|
3656 |
linkType: hard
|
3657 |
|
3658 |
+
"accepts@npm:~1.3.8":
|
3659 |
+
version: 1.3.8
|
3660 |
+
resolution: "accepts@npm:1.3.8"
|
3661 |
+
dependencies:
|
3662 |
+
mime-types: ~2.1.34
|
3663 |
+
negotiator: 0.6.3
|
3664 |
+
checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4
|
3665 |
+
languageName: node
|
3666 |
+
linkType: hard
|
3667 |
+
|
3668 |
"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2":
|
3669 |
version: 5.3.2
|
3670 |
resolution: "acorn-jsx@npm:5.3.2"
|
|
|
3961 |
languageName: node
|
3962 |
linkType: hard
|
3963 |
|
3964 |
+
"array-flatten@npm:1.1.1":
|
3965 |
+
version: 1.1.1
|
3966 |
+
resolution: "array-flatten@npm:1.1.1"
|
3967 |
+
checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b
|
3968 |
+
languageName: node
|
3969 |
+
linkType: hard
|
3970 |
+
|
3971 |
"array-includes@npm:^3.1.7":
|
3972 |
version: 3.1.7
|
3973 |
resolution: "array-includes@npm:3.1.7"
|
|
|
4320 |
languageName: node
|
4321 |
linkType: hard
|
4322 |
|
4323 |
+
"body-parser@npm:1.20.1":
|
4324 |
+
version: 1.20.1
|
4325 |
+
resolution: "body-parser@npm:1.20.1"
|
4326 |
+
dependencies:
|
4327 |
+
bytes: 3.1.2
|
4328 |
+
content-type: ~1.0.4
|
4329 |
+
debug: 2.6.9
|
4330 |
+
depd: 2.0.0
|
4331 |
+
destroy: 1.2.0
|
4332 |
+
http-errors: 2.0.0
|
4333 |
+
iconv-lite: 0.4.24
|
4334 |
+
on-finished: 2.4.1
|
4335 |
+
qs: 6.11.0
|
4336 |
+
raw-body: 2.5.1
|
4337 |
+
type-is: ~1.6.18
|
4338 |
+
unpipe: 1.0.0
|
4339 |
+
checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266
|
4340 |
+
languageName: node
|
4341 |
+
linkType: hard
|
4342 |
+
|
4343 |
"boolbase@npm:^1.0.0":
|
4344 |
version: 1.0.0
|
4345 |
resolution: "boolbase@npm:1.0.0"
|
|
|
4457 |
languageName: node
|
4458 |
linkType: hard
|
4459 |
|
4460 |
+
"bytes@npm:3.1.2":
|
4461 |
+
version: 3.1.2
|
4462 |
+
resolution: "bytes@npm:3.1.2"
|
4463 |
+
checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e
|
4464 |
+
languageName: node
|
4465 |
+
linkType: hard
|
4466 |
+
|
4467 |
"cacache@npm:^17.0.0":
|
4468 |
version: 17.1.4
|
4469 |
resolution: "cacache@npm:17.1.4"
|
|
|
4906 |
languageName: node
|
4907 |
linkType: hard
|
4908 |
|
4909 |
+
"content-disposition@npm:0.5.4, content-disposition@npm:^0.5.3":
|
4910 |
version: 0.5.4
|
4911 |
resolution: "content-disposition@npm:0.5.4"
|
4912 |
dependencies:
|
|
|
4915 |
languageName: node
|
4916 |
linkType: hard
|
4917 |
|
4918 |
+
"content-type@npm:~1.0.4":
|
4919 |
+
version: 1.0.5
|
4920 |
+
resolution: "content-type@npm:1.0.5"
|
4921 |
+
checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766
|
4922 |
+
languageName: node
|
4923 |
+
linkType: hard
|
4924 |
+
|
4925 |
"convert-source-map@npm:^1.7.0":
|
4926 |
version: 1.9.0
|
4927 |
resolution: "convert-source-map@npm:1.9.0"
|
|
|
4936 |
languageName: node
|
4937 |
linkType: hard
|
4938 |
|
4939 |
+
"cookie-signature@npm:1.0.6":
|
4940 |
+
version: 1.0.6
|
4941 |
+
resolution: "cookie-signature@npm:1.0.6"
|
4942 |
+
checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a
|
4943 |
+
languageName: node
|
4944 |
+
linkType: hard
|
4945 |
+
|
4946 |
+
"cookie@npm:0.4.2":
|
4947 |
+
version: 0.4.2
|
4948 |
+
resolution: "cookie@npm:0.4.2"
|
4949 |
+
checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b
|
4950 |
+
languageName: node
|
4951 |
+
linkType: hard
|
4952 |
+
|
4953 |
+
"cookie@npm:0.5.0, cookie@npm:^0.5.0, cookie@npm:~0.5.0":
|
4954 |
version: 0.5.0
|
4955 |
resolution: "cookie@npm:0.5.0"
|
4956 |
checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180
|
|
|
5467 |
languageName: node
|
5468 |
linkType: hard
|
5469 |
|
5470 |
+
"debug@npm:2.6.9, debug@npm:^2.2.0":
|
5471 |
+
version: 2.6.9
|
5472 |
+
resolution: "debug@npm:2.6.9"
|
5473 |
+
dependencies:
|
5474 |
+
ms: 2.0.0
|
5475 |
+
checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6
|
5476 |
+
languageName: node
|
5477 |
+
linkType: hard
|
5478 |
+
|
5479 |
"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4":
|
5480 |
version: 4.3.4
|
5481 |
resolution: "debug@npm:4.3.4"
|
|
|
5488 |
languageName: node
|
5489 |
linkType: hard
|
5490 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5491 |
"debug@npm:^3.1.0, debug@npm:^3.2.7":
|
5492 |
version: 3.2.7
|
5493 |
resolution: "debug@npm:3.2.7"
|
|
|
5615 |
languageName: node
|
5616 |
linkType: hard
|
5617 |
|
5618 |
+
"depd@npm:2.0.0, depd@npm:~2.0.0":
|
5619 |
version: 2.0.0
|
5620 |
resolution: "depd@npm:2.0.0"
|
5621 |
checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a
|
5622 |
languageName: node
|
5623 |
linkType: hard
|
5624 |
|
5625 |
+
"destroy@npm:1.2.0":
|
5626 |
+
version: 1.2.0
|
5627 |
+
resolution: "destroy@npm:1.2.0"
|
5628 |
+
checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38
|
5629 |
+
languageName: node
|
5630 |
+
linkType: hard
|
5631 |
+
|
5632 |
"detect-content-type@npm:^1.2.0":
|
5633 |
version: 1.2.0
|
5634 |
resolution: "detect-content-type@npm:1.2.0"
|
|
|
5776 |
languageName: node
|
5777 |
linkType: hard
|
5778 |
|
5779 |
+
"ee-first@npm:1.1.1":
|
5780 |
+
version: 1.1.1
|
5781 |
+
resolution: "ee-first@npm:1.1.1"
|
5782 |
+
checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f
|
5783 |
+
languageName: node
|
5784 |
+
linkType: hard
|
5785 |
+
|
5786 |
"ejs@npm:^3.1.9":
|
5787 |
version: 3.1.9
|
5788 |
resolution: "ejs@npm:3.1.9"
|
|
|
5822 |
languageName: node
|
5823 |
linkType: hard
|
5824 |
|
5825 |
+
"encodeurl@npm:~1.0.2":
|
5826 |
+
version: 1.0.2
|
5827 |
+
resolution: "encodeurl@npm:1.0.2"
|
5828 |
+
checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c
|
5829 |
+
languageName: node
|
5830 |
+
linkType: hard
|
5831 |
+
|
5832 |
"encoding@npm:^0.1.13":
|
5833 |
version: 0.1.13
|
5834 |
resolution: "encoding@npm:0.1.13"
|
|
|
6834 |
languageName: node
|
6835 |
linkType: hard
|
6836 |
|
6837 |
+
"etag@npm:~1.8.1":
|
6838 |
+
version: 1.8.1
|
6839 |
+
resolution: "etag@npm:1.8.1"
|
6840 |
+
checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff
|
6841 |
+
languageName: node
|
6842 |
+
linkType: hard
|
6843 |
+
|
6844 |
"event-emitter@npm:~0.3.4":
|
6845 |
version: 0.3.5
|
6846 |
resolution: "event-emitter@npm:0.3.5"
|
|
|
6942 |
languageName: node
|
6943 |
linkType: hard
|
6944 |
|
6945 |
+
"express-session@npm:^1.17.3":
|
6946 |
+
version: 1.17.3
|
6947 |
+
resolution: "express-session@npm:1.17.3"
|
6948 |
+
dependencies:
|
6949 |
+
cookie: 0.4.2
|
6950 |
+
cookie-signature: 1.0.6
|
6951 |
+
debug: 2.6.9
|
6952 |
+
depd: ~2.0.0
|
6953 |
+
on-headers: ~1.0.2
|
6954 |
+
parseurl: ~1.3.3
|
6955 |
+
safe-buffer: 5.2.1
|
6956 |
+
uid-safe: ~2.1.5
|
6957 |
+
checksum: 1021a793433cbc6a1b32c803fcb2daa1e03a8f50dd907e8745ae57994370315a5cfde5b6ef7b062d9a9a0754ff268844bda211c08240b3a0e01014dcf1073ec5
|
6958 |
+
languageName: node
|
6959 |
+
linkType: hard
|
6960 |
+
|
6961 |
+
"express@npm:^4.18.2":
|
6962 |
+
version: 4.18.2
|
6963 |
+
resolution: "express@npm:4.18.2"
|
6964 |
+
dependencies:
|
6965 |
+
accepts: ~1.3.8
|
6966 |
+
array-flatten: 1.1.1
|
6967 |
+
body-parser: 1.20.1
|
6968 |
+
content-disposition: 0.5.4
|
6969 |
+
content-type: ~1.0.4
|
6970 |
+
cookie: 0.5.0
|
6971 |
+
cookie-signature: 1.0.6
|
6972 |
+
debug: 2.6.9
|
6973 |
+
depd: 2.0.0
|
6974 |
+
encodeurl: ~1.0.2
|
6975 |
+
escape-html: ~1.0.3
|
6976 |
+
etag: ~1.8.1
|
6977 |
+
finalhandler: 1.2.0
|
6978 |
+
fresh: 0.5.2
|
6979 |
+
http-errors: 2.0.0
|
6980 |
+
merge-descriptors: 1.0.1
|
6981 |
+
methods: ~1.1.2
|
6982 |
+
on-finished: 2.4.1
|
6983 |
+
parseurl: ~1.3.3
|
6984 |
+
path-to-regexp: 0.1.7
|
6985 |
+
proxy-addr: ~2.0.7
|
6986 |
+
qs: 6.11.0
|
6987 |
+
range-parser: ~1.2.1
|
6988 |
+
safe-buffer: 5.2.1
|
6989 |
+
send: 0.18.0
|
6990 |
+
serve-static: 1.15.0
|
6991 |
+
setprototypeof: 1.2.0
|
6992 |
+
statuses: 2.0.1
|
6993 |
+
type-is: ~1.6.18
|
6994 |
+
utils-merge: 1.0.1
|
6995 |
+
vary: ~1.1.2
|
6996 |
+
checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037
|
6997 |
+
languageName: node
|
6998 |
+
linkType: hard
|
6999 |
+
|
7000 |
"ext@npm:^1.1.2":
|
7001 |
version: 1.7.0
|
7002 |
resolution: "ext@npm:1.7.0"
|
|
|
7312 |
languageName: node
|
7313 |
linkType: hard
|
7314 |
|
7315 |
+
"finalhandler@npm:1.2.0":
|
7316 |
+
version: 1.2.0
|
7317 |
+
resolution: "finalhandler@npm:1.2.0"
|
7318 |
+
dependencies:
|
7319 |
+
debug: 2.6.9
|
7320 |
+
encodeurl: ~1.0.2
|
7321 |
+
escape-html: ~1.0.3
|
7322 |
+
on-finished: 2.4.1
|
7323 |
+
parseurl: ~1.3.3
|
7324 |
+
statuses: 2.0.1
|
7325 |
+
unpipe: ~1.0.0
|
7326 |
+
checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716
|
7327 |
+
languageName: node
|
7328 |
+
linkType: hard
|
7329 |
+
|
7330 |
"find-cache-dir@npm:^2.0.0":
|
7331 |
version: 2.1.0
|
7332 |
resolution: "find-cache-dir@npm:2.1.0"
|
|
|
7488 |
languageName: node
|
7489 |
linkType: hard
|
7490 |
|
7491 |
+
"fresh@npm:0.5.2":
|
7492 |
+
version: 0.5.2
|
7493 |
+
resolution: "fresh@npm:0.5.2"
|
7494 |
+
checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346
|
7495 |
+
languageName: node
|
7496 |
+
linkType: hard
|
7497 |
+
|
7498 |
"fs-constants@npm:^1.0.0":
|
7499 |
version: 1.0.0
|
7500 |
resolution: "fs-constants@npm:1.0.0"
|
|
|
8040 |
languageName: node
|
8041 |
linkType: hard
|
8042 |
|
8043 |
+
"http-proxy-middleware\n@npm:^2.0.6":
|
8044 |
+
version: 2.0.6
|
8045 |
+
resolution: "http-proxy-middleware\n@npm:2.0.6::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fhttp-proxy-middleware%2F-%2Fhttp-proxy-middleware-2.0.6.tgz"
|
8046 |
+
dependencies:
|
8047 |
+
"@types/http-proxy": ^1.17.8
|
8048 |
+
http-proxy: ^1.18.1
|
8049 |
+
is-glob: ^4.0.1
|
8050 |
+
is-plain-obj: ^3.0.0
|
8051 |
+
micromatch: ^4.0.2
|
8052 |
+
peerDependencies:
|
8053 |
+
"@types/express": ^4.17.13
|
8054 |
+
peerDependenciesMeta:
|
8055 |
+
"@types/express":
|
8056 |
+
optional: true
|
8057 |
+
checksum: 5113c1b1b8a859551c8ca2f1e1bada9d1d1c18e20dc48875d7b6d3516a5e4b431c446d30d3f5a8734e2b4bf723ba6e87f3fa30a95ee87c6e9ec57699dbd68c17
|
8058 |
+
languageName: node
|
8059 |
+
linkType: hard
|
8060 |
+
|
8061 |
"http-proxy-middleware@npm:^2.0.6":
|
8062 |
version: 2.0.6
|
8063 |
resolution: "http-proxy-middleware@npm:2.0.6"
|
|
|
8131 |
languageName: node
|
8132 |
linkType: hard
|
8133 |
|
8134 |
+
"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.17":
|
8135 |
+
version: 0.4.24
|
8136 |
+
resolution: "iconv-lite@npm:0.4.24"
|
8137 |
+
dependencies:
|
8138 |
+
safer-buffer: ">= 2.1.2 < 3"
|
8139 |
+
checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6
|
8140 |
+
languageName: node
|
8141 |
+
linkType: hard
|
8142 |
+
|
8143 |
"iconv-lite@npm:0.6, iconv-lite@npm:^0.6.2":
|
8144 |
version: 0.6.3
|
8145 |
resolution: "iconv-lite@npm:0.6.3"
|
|
|
8149 |
languageName: node
|
8150 |
linkType: hard
|
8151 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8152 |
"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1":
|
8153 |
version: 1.2.1
|
8154 |
resolution: "ieee754@npm:1.2.1"
|
|
|
9360 |
languageName: node
|
9361 |
linkType: hard
|
9362 |
|
9363 |
+
"media-typer@npm:0.3.0":
|
9364 |
+
version: 0.3.0
|
9365 |
+
resolution: "media-typer@npm:0.3.0"
|
9366 |
+
checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1
|
9367 |
+
languageName: node
|
9368 |
+
linkType: hard
|
9369 |
+
|
9370 |
"mem@npm:^4.0.0":
|
9371 |
version: 4.3.0
|
9372 |
resolution: "mem@npm:4.3.0"
|
|
|
9393 |
languageName: node
|
9394 |
linkType: hard
|
9395 |
|
9396 |
+
"merge-descriptors@npm:1.0.1":
|
9397 |
+
version: 1.0.1
|
9398 |
+
resolution: "merge-descriptors@npm:1.0.1"
|
9399 |
+
checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26
|
9400 |
+
languageName: node
|
9401 |
+
linkType: hard
|
9402 |
+
|
9403 |
"merge-stream@npm:^2.0.0":
|
9404 |
version: 2.0.0
|
9405 |
resolution: "merge-stream@npm:2.0.0"
|
|
|
9414 |
languageName: node
|
9415 |
linkType: hard
|
9416 |
|
9417 |
+
"methods@npm:~1.1.2":
|
9418 |
+
version: 1.1.2
|
9419 |
+
resolution: "methods@npm:1.1.2"
|
9420 |
+
checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a
|
9421 |
+
languageName: node
|
9422 |
+
linkType: hard
|
9423 |
+
|
9424 |
"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5":
|
9425 |
version: 4.0.5
|
9426 |
resolution: "micromatch@npm:4.0.5"
|
|
|
9438 |
languageName: node
|
9439 |
linkType: hard
|
9440 |
|
9441 |
+
"mime-types@npm:^2.0.1, mime-types@npm:^2.1.12, mime-types@npm:^2.1.35, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
|
9442 |
version: 2.1.35
|
9443 |
resolution: "mime-types@npm:2.1.35"
|
9444 |
dependencies:
|
|
|
9447 |
languageName: node
|
9448 |
linkType: hard
|
9449 |
|
9450 |
+
"mime@npm:1.6.0":
|
9451 |
+
version: 1.6.0
|
9452 |
+
resolution: "mime@npm:1.6.0"
|
9453 |
+
bin:
|
9454 |
+
mime: cli.js
|
9455 |
+
checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557
|
9456 |
+
languageName: node
|
9457 |
+
linkType: hard
|
9458 |
+
|
9459 |
"mime@npm:^3.0.0":
|
9460 |
version: 3.0.0
|
9461 |
resolution: "mime@npm:3.0.0"
|
|
|
9716 |
languageName: node
|
9717 |
linkType: hard
|
9718 |
|
9719 |
+
"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3":
|
9720 |
version: 2.1.3
|
9721 |
resolution: "ms@npm:2.1.3"
|
9722 |
checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d
|
|
|
9846 |
languageName: node
|
9847 |
linkType: hard
|
9848 |
|
9849 |
+
"negotiator@npm:0.6.3, negotiator@npm:^0.6.3":
|
9850 |
version: 0.6.3
|
9851 |
resolution: "negotiator@npm:0.6.3"
|
9852 |
checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9
|
|
|
10434 |
eslint: ^8.53.0
|
10435 |
eslint-config-prettier: ^9.0.0
|
10436 |
eslint-plugin-prettier: ^5.0.1
|
10437 |
+
express: ^4.18.2
|
10438 |
+
express-session: ^1.17.3
|
10439 |
fs-extra: ^11.1.1
|
10440 |
http-proxy-middleware: ^2.0.6
|
10441 |
+
"http-proxy-middleware\n": ^2.0.6
|
10442 |
node-fetch: ^3.3.2
|
10443 |
prettier: ^3.0.3
|
10444 |
dependenciesMeta:
|
|
|
10454 |
languageName: node
|
10455 |
linkType: hard
|
10456 |
|
10457 |
+
"on-finished@npm:2.4.1":
|
10458 |
+
version: 2.4.1
|
10459 |
+
resolution: "on-finished@npm:2.4.1"
|
10460 |
+
dependencies:
|
10461 |
+
ee-first: 1.1.1
|
10462 |
+
checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0
|
10463 |
+
languageName: node
|
10464 |
+
linkType: hard
|
10465 |
+
|
10466 |
+
"on-headers@npm:~1.0.2":
|
10467 |
+
version: 1.0.2
|
10468 |
+
resolution: "on-headers@npm:1.0.2"
|
10469 |
+
checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5
|
10470 |
+
languageName: node
|
10471 |
+
linkType: hard
|
10472 |
+
|
10473 |
"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0":
|
10474 |
version: 1.4.0
|
10475 |
resolution: "once@npm:1.4.0"
|
|
|
10718 |
languageName: node
|
10719 |
linkType: hard
|
10720 |
|
10721 |
+
"parseurl@npm:~1.3.3":
|
10722 |
+
version: 1.3.3
|
10723 |
+
resolution: "parseurl@npm:1.3.3"
|
10724 |
+
checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2
|
10725 |
+
languageName: node
|
10726 |
+
linkType: hard
|
10727 |
+
|
10728 |
"path-exists@npm:^3.0.0":
|
10729 |
version: 3.0.0
|
10730 |
resolution: "path-exists@npm:3.0.0"
|
|
|
10791 |
languageName: node
|
10792 |
linkType: hard
|
10793 |
|
10794 |
+
"path-to-regexp@npm:0.1.7":
|
10795 |
+
version: 0.1.7
|
10796 |
+
resolution: "path-to-regexp@npm:0.1.7"
|
10797 |
+
checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce
|
10798 |
+
languageName: node
|
10799 |
+
linkType: hard
|
10800 |
+
|
10801 |
"path-type@npm:^4.0.0":
|
10802 |
version: 4.0.0
|
10803 |
resolution: "path-type@npm:4.0.0"
|
|
|
11123 |
languageName: node
|
11124 |
linkType: hard
|
11125 |
|
11126 |
+
"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7":
|
11127 |
version: 2.0.7
|
11128 |
resolution: "proxy-addr@npm:2.0.7"
|
11129 |
dependencies:
|
|
|
11171 |
languageName: node
|
11172 |
linkType: hard
|
11173 |
|
11174 |
+
"qs@npm:6.11.0":
|
11175 |
+
version: 6.11.0
|
11176 |
+
resolution: "qs@npm:6.11.0"
|
11177 |
+
dependencies:
|
11178 |
+
side-channel: ^1.0.4
|
11179 |
+
checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297
|
11180 |
+
languageName: node
|
11181 |
+
linkType: hard
|
11182 |
+
|
11183 |
"qs@npm:^6.10.2, qs@npm:^6.11.0":
|
11184 |
version: 6.11.2
|
11185 |
resolution: "qs@npm:6.11.2"
|
|
|
11249 |
languageName: node
|
11250 |
linkType: hard
|
11251 |
|
11252 |
+
"random-bytes@npm:~1.0.0":
|
11253 |
+
version: 1.0.0
|
11254 |
+
resolution: "random-bytes@npm:1.0.0"
|
11255 |
+
checksum: 09faa256394aa2ca9754aa57e92a27c452c3e97ffb266e98bebb517332e9df7168fea393159f88d884febce949ba8bec8ddb02f03342da6c6023ecc7b155e0ae
|
11256 |
+
languageName: node
|
11257 |
+
linkType: hard
|
11258 |
+
|
11259 |
"randombytes@npm:^2.1.0":
|
11260 |
version: 2.1.0
|
11261 |
resolution: "randombytes@npm:2.1.0"
|
|
|
11265 |
languageName: node
|
11266 |
linkType: hard
|
11267 |
|
11268 |
+
"range-parser@npm:~1.2.1":
|
11269 |
+
version: 1.2.1
|
11270 |
+
resolution: "range-parser@npm:1.2.1"
|
11271 |
+
checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9
|
11272 |
+
languageName: node
|
11273 |
+
linkType: hard
|
11274 |
+
|
11275 |
+
"raw-body@npm:2.5.1":
|
11276 |
+
version: 2.5.1
|
11277 |
+
resolution: "raw-body@npm:2.5.1"
|
11278 |
+
dependencies:
|
11279 |
+
bytes: 3.1.2
|
11280 |
+
http-errors: 2.0.0
|
11281 |
+
iconv-lite: 0.4.24
|
11282 |
+
unpipe: 1.0.0
|
11283 |
+
checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e
|
11284 |
+
languageName: node
|
11285 |
+
linkType: hard
|
11286 |
+
|
11287 |
"rc@npm:^1.2.7":
|
11288 |
version: 1.2.8
|
11289 |
resolution: "rc@npm:1.2.8"
|
|
|
11947 |
languageName: node
|
11948 |
linkType: hard
|
11949 |
|
11950 |
+
"send@npm:0.18.0":
|
11951 |
+
version: 0.18.0
|
11952 |
+
resolution: "send@npm:0.18.0"
|
11953 |
+
dependencies:
|
11954 |
+
debug: 2.6.9
|
11955 |
+
depd: 2.0.0
|
11956 |
+
destroy: 1.2.0
|
11957 |
+
encodeurl: ~1.0.2
|
11958 |
+
escape-html: ~1.0.3
|
11959 |
+
etag: ~1.8.1
|
11960 |
+
fresh: 0.5.2
|
11961 |
+
http-errors: 2.0.0
|
11962 |
+
mime: 1.6.0
|
11963 |
+
ms: 2.1.3
|
11964 |
+
on-finished: 2.4.1
|
11965 |
+
range-parser: ~1.2.1
|
11966 |
+
statuses: 2.0.1
|
11967 |
+
checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8
|
11968 |
+
languageName: node
|
11969 |
+
linkType: hard
|
11970 |
+
|
11971 |
"serialize-javascript@npm:^6.0.1":
|
11972 |
version: 6.0.1
|
11973 |
resolution: "serialize-javascript@npm:6.0.1"
|
|
|
11977 |
languageName: node
|
11978 |
linkType: hard
|
11979 |
|
11980 |
+
"serve-static@npm:1.15.0":
|
11981 |
+
version: 1.15.0
|
11982 |
+
resolution: "serve-static@npm:1.15.0"
|
11983 |
+
dependencies:
|
11984 |
+
encodeurl: ~1.0.2
|
11985 |
+
escape-html: ~1.0.3
|
11986 |
+
parseurl: ~1.3.3
|
11987 |
+
send: 0.18.0
|
11988 |
+
checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d
|
11989 |
+
languageName: node
|
11990 |
+
linkType: hard
|
11991 |
+
|
11992 |
"set-blocking@npm:^2.0.0":
|
11993 |
version: 2.0.0
|
11994 |
resolution: "set-blocking@npm:2.0.0"
|
|
|
13091 |
languageName: node
|
13092 |
linkType: hard
|
13093 |
|
13094 |
+
"type-is@npm:~1.6.18":
|
13095 |
+
version: 1.6.18
|
13096 |
+
resolution: "type-is@npm:1.6.18"
|
13097 |
+
dependencies:
|
13098 |
+
media-typer: 0.3.0
|
13099 |
+
mime-types: ~2.1.24
|
13100 |
+
checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657
|
13101 |
+
languageName: node
|
13102 |
+
linkType: hard
|
13103 |
+
|
13104 |
"type@npm:^1.0.1":
|
13105 |
version: 1.2.0
|
13106 |
resolution: "type@npm:1.2.0"
|
|
|
13200 |
languageName: node
|
13201 |
linkType: hard
|
13202 |
|
13203 |
+
"uid-safe@npm:~2.1.5":
|
13204 |
+
version: 2.1.5
|
13205 |
+
resolution: "uid-safe@npm:2.1.5"
|
13206 |
+
dependencies:
|
13207 |
+
random-bytes: ~1.0.0
|
13208 |
+
checksum: 07536043da9a026f4a2bc397543d0ace7587449afa1d9d2c4fd3ce76af8a5263a678788bcc429dff499ef29d45843cd5ee9d05434450fcfc19cc661229f703d1
|
13209 |
+
languageName: node
|
13210 |
+
linkType: hard
|
13211 |
+
|
13212 |
"unbox-primitive@npm:^1.0.2":
|
13213 |
version: 1.0.2
|
13214 |
resolution: "unbox-primitive@npm:1.0.2"
|
|
|
13307 |
languageName: node
|
13308 |
linkType: hard
|
13309 |
|
13310 |
+
"unpipe@npm:1.0.0, unpipe@npm:~1.0.0":
|
13311 |
+
version: 1.0.0
|
13312 |
+
resolution: "unpipe@npm:1.0.0"
|
13313 |
+
checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2
|
13314 |
+
languageName: node
|
13315 |
+
linkType: hard
|
13316 |
+
|
13317 |
"unplugin-preprocessor-directives@npm:^0.0.8":
|
13318 |
version: 0.0.8
|
13319 |
resolution: "unplugin-preprocessor-directives@npm:0.0.8"
|
|
|
13411 |
languageName: node
|
13412 |
linkType: hard
|
13413 |
|
13414 |
+
"utils-merge@npm:1.0.1":
|
13415 |
+
version: 1.0.1
|
13416 |
+
resolution: "utils-merge@npm:1.0.1"
|
13417 |
+
checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080
|
13418 |
+
languageName: node
|
13419 |
+
linkType: hard
|
13420 |
+
|
13421 |
"uuid@npm:^3.3.2":
|
13422 |
version: 3.4.0
|
13423 |
resolution: "uuid@npm:3.4.0"
|
|
|
13443 |
languageName: node
|
13444 |
linkType: hard
|
13445 |
|
13446 |
+
"vary@npm:~1.1.2":
|
13447 |
+
version: 1.1.2
|
13448 |
+
resolution: "vary@npm:1.1.2"
|
13449 |
+
checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b
|
13450 |
+
languageName: node
|
13451 |
+
linkType: hard
|
13452 |
+
|
13453 |
"verror@npm:1.10.0":
|
13454 |
version: 1.10.0
|
13455 |
resolution: "verror@npm:1.10.0"
|