65 lines
2.1 KiB
JavaScript
65 lines
2.1 KiB
JavaScript
const http = require('http');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const PORT = 5454;
|
|
const OUTPUT_FILE = path.join(__dirname, 'collected_data.json');
|
|
|
|
// Initialize file if not exists
|
|
if (!fs.existsSync(OUTPUT_FILE)) {
|
|
fs.writeFileSync(OUTPUT_FILE, '[\n');
|
|
}
|
|
|
|
const server = http.createServer((req, res) => {
|
|
// Enable CORS
|
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS');
|
|
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
|
|
|
|
if (req.method === 'OPTIONS') {
|
|
res.writeHead(200);
|
|
res.end();
|
|
return;
|
|
}
|
|
|
|
if (req.method === 'POST') {
|
|
let body = '';
|
|
req.on('data', chunk => {
|
|
body += chunk.toString();
|
|
});
|
|
req.on('end', () => {
|
|
try {
|
|
const data = JSON.parse(body);
|
|
const entry = {
|
|
timestamp: new Date().toISOString(),
|
|
data: data
|
|
};
|
|
|
|
// Append to file (pseudo-JSON array)
|
|
// We'll just append object,\n for simplicity and manual reading,
|
|
// or strict JSON if we seek back.
|
|
// Let's do line-delimited JSON for robustness, or just append to the array structure?
|
|
// Appending to array structure is hard with naive append.
|
|
// Let's do NDJSON (Newline Delimited JSON).
|
|
fs.appendFileSync(OUTPUT_FILE, JSON.stringify(entry) + '\n');
|
|
|
|
console.log(`[DataCollector] Saved packet at ${entry.timestamp}`);
|
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify({ success: true }));
|
|
} catch (e) {
|
|
console.error('Error parsing JSON', e);
|
|
res.writeHead(400);
|
|
res.end('Invalid JSON');
|
|
}
|
|
});
|
|
} else {
|
|
res.writeHead(404);
|
|
res.end();
|
|
}
|
|
});
|
|
|
|
server.listen(PORT, () => {
|
|
console.log(`Data Collector running on port ${PORT}`);
|
|
console.log(`Output file: ${OUTPUT_FILE}`);
|
|
});
|