module.exports = ({ action, clientAsn, clientASNDescription, clientRequestHTTPProtocol, clientRequestHTTPMethodName, clientRequestHTTPHost, clientRequestPath, clientRequestQuery, datetime, rayName, ruleId, userAgent = 'Empty string', source, clientCountryName }) => { const fields = [ { label: 'Action taken', value: action?.toUpperCase() }, { label: 'ASN', value: `${clientAsn} (${clientASNDescription})` }, { label: 'Protocol', value: `${clientRequestHTTPProtocol} (${clientRequestHTTPMethodName} method)` }, { label: 'Domain', value: clientRequestHTTPHost }, { label: 'Endpoint', value: clientRequestPath }, { label: 'Query', value: clientRequestQuery }, { label: 'Timestamp', value: datetime }, { label: 'Ray ID', value: rayName }, { label: 'Rule ID', value: ruleId }, { label: 'UA', value: userAgent }, ]; const reportLines = fields .filter(({ value }) => value) .map(({ label, value }) => `${label}: ${value}`); return `Triggered Cloudflare WAF (${source}) from ${clientCountryName}. ${reportLines.join('\n')} Report generated by Cloudflare-WAF-To-AbuseIPDB: https://github.com/sefinek/Cloudflare-WAF-To-AbuseIPDB`; };