This commit is contained in:
2026-09-28 22:12:38 +02:00
parent b96f188a59
commit 2cc768f1fd
24 changed files with 962 additions and 78 deletions
+6 -8
View File
@@ -4,17 +4,15 @@ import lib from './lib.mjs';
import cfg from './config.mjs';
import security from './security.mjs';
import { getHashUserIps } from './settings.mjs';
/**
* Get IP for audit/logging, hashed if hash_user_ips is enabled in config.
* IP of the request in its storable form (see security.storableIP): null when IP logging is off.
* @param {object} req
* @returns {string}
* @returns {string|null}
*/
export function resolveAuditIP(req) {
if (!req) return 'unknown';
const rawIp = security.getRealIP(req);
return getHashUserIps() ? security.hashIP(rawIp) : rawIp;
if (!req) return null;
return security.storableIP(security.getRealIP(req));
}
/**
@@ -25,7 +23,7 @@ export function resolveAuditIP(req) {
export async function logAnonActivity(req, { action, targetId = null, details = null, hwFingerprint = null } = {}) {
try {
const rawIp = security.getRealIP(req);
const ip = getHashUserIps() ? security.hashIP(rawIp) : rawIp;
const ip = security.storableIP(rawIp);
const userId = req?.session?.id || null;
if (!userId) return;
const fingerprint = req?.session?.fingerprint || req?.session?.anon_fingerprint || null;
@@ -157,7 +155,7 @@ export async function createAnonSession(userId, req, hwFingerprint = null) {
const sessionHash = lib.sha256(session);
const csrfToken = crypto.randomBytes(24).toString('hex');
const stamp = ~~(Date.now() / 1e3);
const ip = req?.ip || req?.socket?.remoteAddress || '127.0.0.1';
const ip = auditIp;
const ua = req?.headers ? (req.headers['user-agent'] || '') : '';
const sessRecord = {