Fix TypeError in script.js and add static file serving to proxy

This commit is contained in:
DeNNii
2026-01-16 18:15:35 +11:00
parent e8398bdb54
commit 3f10aacf66
2 changed files with 41 additions and 9 deletions

View File

@@ -10,6 +10,9 @@ const url = require('url');
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
const fs = require('fs');
const path = require('path');
const PORT = process.env.PORT || 3000;
// Configuration
@@ -54,9 +57,9 @@ const getGitInfo = () => {
return;
}
const parts = stdout.trim().split('\n');
resolve({
commit: parts[0] || 'Unknown',
date: parts[1] || 'Unknown'
resolve({
commit: parts[0] || 'Unknown',
date: parts[1] || 'Unknown'
});
});
});
@@ -114,6 +117,36 @@ if (cluster.isMaster) {
return;
}
// Serve static files for the UI
if (req.method === 'GET' && (req.url === '/' || req.url === '/index.html' || req.url === '/script.js' || req.url.startsWith('/script.js?') || req.url === '/styles.css' || req.url === '/worker.js')) {
let requestPath = req.url.split('?')[0];
let filePath = '.' + requestPath;
if (requestPath === '/') filePath = './index.html';
const extname = path.extname(filePath);
let contentType = 'text/html';
switch (extname) {
case '.js': contentType = 'text/javascript'; break;
case '.css': contentType = 'text/css'; break;
}
fs.readFile(filePath, (error, content) => {
if (error) {
if (error.code == 'ENOENT') {
res.writeHead(404);
res.end('File not found');
} else {
res.writeHead(500);
res.end('Error loading file: ' + error.code);
}
} else {
res.writeHead(200, { 'Content-Type': contentType });
res.end(content, 'utf-8');
}
});
return;
}
// Only allow POST requests to the proxy
if (req.method !== 'POST') {
res.writeHead(405, { 'Content-Type': 'application/json' });

View File

@@ -69,6 +69,7 @@ class StressTestingTool {
userErrorData: [],
errorThreshold: null,
lastUiUpdate: 0,
visitedUrls: new Set(),
// Enhanced metrics
errorsByCategory: {
@@ -772,11 +773,8 @@ class StressTestingTool {
this.state.requestHistory = [];
this.state.percentiles = { p50: 0, p95: 0, p99: 0 };
// Reset crawler
this.crawler.reset();
if (this.config.crawlerEnabled) {
this.crawler.urlQueue.push(this.config.targetUrl);
}
// Reset state variables
this.state.visitedUrls.clear();
// Reset charts
this.charts.rps.data.labels = [];
@@ -842,6 +840,7 @@ class StressTestingTool {
this.state.workerStats.set(workerId, message.data);
this.aggregateStats();
} else if (message.type === 'LOG') {
this.state.visitedUrls.add(message.data.url);
this.addToRequestHistory(message.data);
}
}
@@ -1217,7 +1216,7 @@ class StressTestingTool {
};
if (this.config.crawlerEnabled) {
results["Unique URLs Visited"] = this.crawler.visitedUrls.size;
results["Unique URLs Visited"] = this.state.visitedUrls.size;
}
return results;