Files
Magic-Garden-Bot/data_collector.js
2025-12-09 23:21:09 +00:00

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}`);
});