
Guiusepe pushed to branch main at Root / DMARC Report Commits: ff9bcdfa by godp21 at 2025-08-11T15:25:25-03:00 [ci skip] Generalizando dmarc_result_{max,min}, mandando páginas de erro e generalizando funções - - - - - 2 changed files: - README.md - backend.js Changes: ===================================== README.md ===================================== @@ -17,11 +17,13 @@ [x] Adicionar um /reports/extended/ que vem com cada linha "expandida", ou seja, já vem tipo um details em cada linha. -[ ] Mudar respostas de erros para http500 +[x]O dmarc_result_max é igual ao dmarc_result_min no details, dá pra só mudar pra dmarc_result, esse é tipo um "score" do que passou. + +[x] Remover duplicação de código + +[x] Mudar respostas de erros para http500 -[ ] Remover duplicação de código -[ ]O dmarc_result_max é igual ao dmarc_result_min no details, dá pra só mudar pra dmarc_result, esse é tipo um "score" do que passou. ### Filtros [ ] ?maxdate__gte=2025-07-24T03:00:00Z (depois ou igual a data) ===================================== backend.js ===================================== @@ -17,6 +17,25 @@ function convertDate(date) { .setZone('America/Sao_Paulo') .toFormat('dd/MM/yyyy HH:mm:ss') ; } + +function reportsConversion(reports) { + reports.forEach((row, index) => { + row["maxdate"] = convertDate(row["maxdate"]) ; + row["mindate"] = convertDate(row["mindate"]) ; + }) ; +} + +function detailsConversion(details) { + details.forEach((row, index) => { + row["ip"] = ip.fromLong(row["ip"]) ; + if (row["ip6"] != null) { + row["ip6"] = ip.fromLong(row["ip6"]) ; + } + row.dmarc_result = row.dmarc_result_max ; + delete row.dmarc_result_max ; + delete row.dmarc_result_min ; + }) ; +} //############################################################################## @@ -189,14 +208,11 @@ app.get('/reports', (req, res) => { // replaces the sorting column, adds arguments pgClient.query(reports_query.replace("@@@@", sortStr), [perPage, ((page-1) * perPage)], (err, result) => { if (err) { - console.log("ERROR: Unable to run query") ; + res.status(500).send('Error fetching data'); } else { // Converting results - result["rows"].forEach((row, index) => { - row["maxdate"] = convertDate(row["maxdate"]) ; - row["mindate"] = convertDate(row["mindate"]) ; - }) ; - res.send(result["rows"]) ; + reportsConversion(result.rows) ; + res.send(result.rows) ; } }) ; }); @@ -207,24 +223,18 @@ app.get('/reports/details', (req, res) => { // Serial required in URL const { serial } = req.query ; if (! serial) { - res.send("No serial specified...") ; - return + res.status(500).send("No serial specified...") ; + return ; } pgClient.query(details_query, [serial], (err, result) => { if (err) { - console.log("ERROR: Unable to run query") ; - console.log(err) ; + res.status(500).send("No serial specified...") ; } else if (result.rowCount < 1) { res.send(`No report matching serial ${req.params.serial}`) ; } else { // Converting results - result["rows"].forEach((row, index) => { - row["ip"] = ip.fromLong(row["ip"]) ; - if (row["ip6"] != null) { - row["ip6"] = ip.fromLong(row["ip6"]) ; - } - }) ; + detailsConversion(result.rows) ; res.send(result["rows"]) ; } }) ; @@ -267,17 +277,12 @@ app.get('/reports/extended', async (req, res) => { const detailResult = await pgClient.query(details_query, [row.serial]); detailResult.rows.forEach((row, index) => { // Conversion for /details data - row["ip"] = ip.fromLong(row["ip"]) ; - if (row["ip6"] != null) { - row["ip6"] = ip.fromLong(row["ip6"]) ; - } + detailsConversion([ row ]) ; }) ; - // Conversion for /reports data - row.details = detailResult.rows; - row.maxdate = convertDate(row.maxdate) ; - row.mindate = convertDate(row.mindate) ; + row.details = detailResult.rows ; }) ); + await reportsConversion(rows) ; res.send(rows); } catch (err) { @@ -293,7 +298,7 @@ app.get('/reports/extended', async (req, res) => { app.get('/reports/:serial.xml', (req, res) => { pgClient.query(xml_query, [req.params.serial], (err, result) => { if (err) { - console.log(err) ; + res.status(500).send("Error fetching data...") ; } else if (result.rowCount == 0 ) { // No report with that serial res.send(`No xml related to serial ${req.params.serial}`) ; View it on GitLab: https://gitlab.c3sl.ufpr.br/root/dmarc-report/-/commit/ff9bcdfa155af12673bfb... -- View it on GitLab: https://gitlab.c3sl.ufpr.br/root/dmarc-report/-/commit/ff9bcdfa155af12673bfb... You're receiving this email because of your account on gitlab.c3sl.ufpr.br.