Some fixes
This commit is contained in:
parent
e57c1a33c9
commit
44e3d34677
2 changed files with 9 additions and 11 deletions
6
index.js
6
index.js
|
|
@ -46,7 +46,7 @@ const reportIP = async (event, hostname, endpoint, userAgent, country, cycleErro
|
||||||
|
|
||||||
if (!uri) {
|
if (!uri) {
|
||||||
logToCSV(event.rayName, event.clientIP, hostname, endpoint, event.userAgent, 'Failed - Missing URL', country);
|
logToCSV(event.rayName, event.clientIP, hostname, endpoint, event.userAgent, 'Failed - Missing URL', country);
|
||||||
log('warn', `Missing URL ${event.clientIP}; URI: ${uri};`);
|
log('warn', `Missing URL ${event.clientIP}; URI: ${uri}`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@ const reportIP = async (event, hostname, endpoint, userAgent, country, cycleErro
|
||||||
|
|
||||||
if (uri.length > MAX_URL_LENGTH) {
|
if (uri.length > MAX_URL_LENGTH) {
|
||||||
logToCSV(event.rayName, event.clientIP, hostname, endpoint, event.userAgent, 'Failed - URL too long', country);
|
logToCSV(event.rayName, event.clientIP, hostname, endpoint, event.userAgent, 'Failed - URL too long', country);
|
||||||
log('log', `URL too long ${event.clientIP}; URI: ${uri};`);
|
log('log', `URL too long ${event.clientIP}; URI: ${uri}`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -76,7 +76,7 @@ const reportIP = async (event, hostname, endpoint, userAgent, country, cycleErro
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err.response?.status === 429) {
|
if (err.response?.status === 429) {
|
||||||
logToCSV(event.rayName, event.clientIP, hostname, endpoint, event.userAgent, 'Failed - 429 Too Many Requests', country);
|
logToCSV(event.rayName, event.clientIP, hostname, endpoint, event.userAgent, 'Failed - 429 Too Many Requests', country);
|
||||||
log('info', `Rate limited (429) while reporting ${event.clientIP}; URI: ${uri};`);
|
log('info', `Rate limited (429) while reporting ${event.clientIP}; URI: ${uri}`);
|
||||||
cycleErrorCounts.blocked++;
|
cycleErrorCounts.blocked++;
|
||||||
} else {
|
} else {
|
||||||
log('error', `Error ${err.response?.status} while reporting ${event.clientIP}; URI: ${uri}; (${err.response?.data})`);
|
log('error', `Error ${err.response?.status} while reporting ${event.clientIP}; URI: ${uri}; (${err.response?.data})`);
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,11 @@ const { axios } = require('../services/axios.js');
|
||||||
const { readReportedIPs, updateSefinekAPIInCSV } = require('./csv.js');
|
const { readReportedIPs, updateSefinekAPIInCSV } = require('./csv.js');
|
||||||
const log = require('./log.js');
|
const log = require('./log.js');
|
||||||
|
|
||||||
const SEFINEK_API_URL = `${process.env.NODE_ENV === 'production' ? 'https://api.sefinek.net' : 'http://127.0.0.1:4010'}/api/v2/cloudflare-waf-abuseipdb/post`;
|
const SEFINEK_API_URL = process.env.SEFINEK_API_URL || `${process.env.NODE_ENV === 'production' ? 'https://api.sefinek.net' : 'http://127.0.0.1:4010'}/api/v2/cloudflare-waf-abuseipdb/post`;
|
||||||
|
|
||||||
module.exports = async () => {
|
module.exports = async () => {
|
||||||
const reportedIPs = readReportedIPs().filter(ip => ip.action === 'Reported' && ip.sefinekAPI === 'false');
|
const reportedIPs = readReportedIPs().filter(ip => ip.action === 'Reported' && ip.sefinekAPI === 'false');
|
||||||
if (reportedIPs.length === 0) {
|
if (reportedIPs.length === 0) return log('info', 'No IPs with action "Reported" and SefinekAPI false to send to Sefinek API');
|
||||||
return log('info', 'No reported IPs with action "Reported" and SefinekAPI false to send to Sefinek API');
|
|
||||||
}
|
|
||||||
|
|
||||||
const uniqueLogs = reportedIPs.reduce((acc, ip) => {
|
const uniqueLogs = reportedIPs.reduce((acc, ip) => {
|
||||||
if (!acc.seen.has(ip.ip)) {
|
if (!acc.seen.has(ip.ip)) {
|
||||||
|
|
@ -18,7 +16,7 @@ module.exports = async () => {
|
||||||
return acc;
|
return acc;
|
||||||
}, { seen: new Set(), logs: [] }).logs;
|
}, { seen: new Set(), logs: [] }).logs;
|
||||||
|
|
||||||
if (uniqueLogs.length === 0) return log('info', 'No unique IPs to send');
|
if (uniqueLogs.length === 0) return log('info', 'No unique IPs to send to Sefinek API');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await axios.post(SEFINEK_API_URL, {
|
const res = await axios.post(SEFINEK_API_URL, {
|
||||||
|
|
@ -32,10 +30,10 @@ module.exports = async () => {
|
||||||
}))
|
}))
|
||||||
});
|
});
|
||||||
|
|
||||||
log('info', `Logs (${res.data.count}) sent to Sefinek API. Status: ${res.status}`);
|
log('info', `Successfully sent ${res.data.count} logs to Sefinek API. Status: ${res.status}`);
|
||||||
|
|
||||||
uniqueLogs.forEach(ip => updateSefinekAPIInCSV(ip.rayId, true));
|
uniqueLogs.forEach(ip => updateSefinekAPIInCSV(ip.rayId, true));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log('error', `Failed to send logs to Sefinek API. Error: ${err.message}`);
|
log('error', `Failed to send logs to Sefinek API. Status: ${err.response?.status || err.status}. Message: ${err.response?.data?.message || 'Unknown error.'}`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Loading…
Add table
Reference in a new issue