UNPKG

guox-express

Version:

GuOx: Ultimate enterprise‑grade, AI & WASM‑powered Express security framework

16 lines (14 loc) 618 B
import { RequestHandler } from 'express'; import promClient from 'prom-client'; import { MLIntrusionDetector } from './MLIntrusionDetector'; export default function AnomalyDetector(cfg: any, ml: MLIntrusionDetector): RequestHandler { const counter = new promClient.Counter({ name:'guox_request_size_bytes', help:'' }); const mw: RequestHandler = (req,res,next)=>{ const size=+req.get('content-length')||0; counter.inc(size); if(size>(cfg?.thresholdBytes||1e6) || ml.detect(req)) return res.sendStatus(413); next(); }; Object.defineProperty(mw,'name',{value:'AnomalyDetector'}); return mw; }