26 lines
879 B
JavaScript
26 lines
879 B
JavaScript
const fs = require('node:fs/promises');
|
|
const path = require('node:path');
|
|
const ipSanitizer = require('./ipSanitizer.js');
|
|
const logger = require('../scripts/logger.js');
|
|
const resolvePath = require('./pathResolver.js');
|
|
const { LOG_IP_HISTORY_ENABLED, LOG_IP_HISTORY_DIR } = require('../config.js').MAIN;
|
|
|
|
const BASE_DIR = resolvePath(LOG_IP_HISTORY_DIR);
|
|
|
|
module.exports = async (ip, metadata = {}) => {
|
|
if (!LOG_IP_HISTORY_ENABLED || !ip) return;
|
|
|
|
const { honeypot = 'unknown', comment } = metadata;
|
|
const logEntry = `[${new Date().toISOString()}] ${ipSanitizer(comment)}\n`;
|
|
|
|
const ipDir = path.join(BASE_DIR, ip);
|
|
const logFile = path.join(ipDir, `${honeypot.toUpperCase()}.txt`);
|
|
|
|
try {
|
|
await fs.mkdir(ipDir, { recursive: true });
|
|
await fs.appendFile(logFile, logEntry);
|
|
} catch (err) {
|
|
logger.error(`Failed to write IP log for ${ip}: ${err.message}`);
|
|
}
|
|
};
|