diff --git a/.gitignore b/.gitignore index 03eb3fc..4bfcdd1 100755 --- a/.gitignore +++ b/.gitignore @@ -72,6 +72,7 @@ *.sqlite3 *.sqlite /logs/*/*.json +/logs/*/*/*.json *.gz data/* !data/.gitkeep diff --git a/content b/content index faecef4..0e20b80 160000 --- a/content +++ b/content @@ -1 +1 @@ -Subproject commit faecef48e3db07f7e09f8e945ddbb9c24f04a842 +Subproject commit 0e20b801a651c86a62341188342f4e42e2b104e1 diff --git a/logs/error/error-2025-07-04.log.gz b/logs/error/error-2025-07-04.log.gz deleted file mode 100644 index 38baf19..0000000 --- a/logs/error/error-2025-07-04.log.gz +++ /dev/null Binary files differ diff --git a/logs/info/info-2025-07-04.log.gz b/logs/info/info-2025-07-04.log.gz deleted file mode 100644 index edd396b..0000000 --- a/logs/info/info-2025-07-04.log.gz +++ /dev/null Binary files differ diff --git a/logs/sessions/2025-07-15T02-56-56-617Z/.4124dcd56ceea5c9f7cd347e6b5c95260ffd2de7-audit.json b/logs/sessions/2025-07-15T02-56-56-617Z/.4124dcd56ceea5c9f7cd347e6b5c95260ffd2de7-audit.json deleted file mode 100644 index 19dd87d..0000000 --- a/logs/sessions/2025-07-15T02-56-56-617Z/.4124dcd56ceea5c9f7cd347e6b5c95260ffd2de7-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 30 - }, - "auditLog": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T02-56-56-617Z/.4124dcd56ceea5c9f7cd347e6b5c95260ffd2de7-audit.json", - "files": [ - { - "date": 1752548216657, - "name": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T02-56-56-617Z/session-2025-07-14.log", - "hash": "e9bf52fdaab6da908abb599fb21a6be696386189c1e172b9bb5246aeeca3b2de" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/logs/sessions/2025-07-15T03-05-11-391Z/.e3983f43b81e64287da532331f367fc4071c9981-audit.json b/logs/sessions/2025-07-15T03-05-11-391Z/.e3983f43b81e64287da532331f367fc4071c9981-audit.json deleted file mode 100644 index dbc2054..0000000 --- a/logs/sessions/2025-07-15T03-05-11-391Z/.e3983f43b81e64287da532331f367fc4071c9981-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 30 - }, - "auditLog": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-05-11-391Z/.e3983f43b81e64287da532331f367fc4071c9981-audit.json", - "files": [ - { - "date": 1752548711433, - "name": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-05-11-391Z/session-2025-07-14.log", - "hash": "0564270eb11d320611b60a8b0aaaa707df77a491a55fb4c4f4473b74397da6ba" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/logs/sessions/2025-07-15T03-05-13-725Z/.99292ee5a0171483673b5876e8433ea9af39888f-audit.json b/logs/sessions/2025-07-15T03-05-13-725Z/.99292ee5a0171483673b5876e8433ea9af39888f-audit.json deleted file mode 100644 index d32d556..0000000 --- a/logs/sessions/2025-07-15T03-05-13-725Z/.99292ee5a0171483673b5876e8433ea9af39888f-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 30 - }, - "auditLog": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-05-13-725Z/.99292ee5a0171483673b5876e8433ea9af39888f-audit.json", - "files": [ - { - "date": 1752548713761, - "name": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-05-13-725Z/session-2025-07-14.log", - "hash": "c97fe6758199443ea238bf1775ea67e9a6fd302358510ead38830b3bfba6b166" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/logs/sessions/2025-07-15T03-25-57-454Z/.c2d341cd4b53c5d7ea0f1f43960bbbaf0fbfa6e8-audit.json b/logs/sessions/2025-07-15T03-25-57-454Z/.c2d341cd4b53c5d7ea0f1f43960bbbaf0fbfa6e8-audit.json deleted file mode 100644 index de20f74..0000000 --- a/logs/sessions/2025-07-15T03-25-57-454Z/.c2d341cd4b53c5d7ea0f1f43960bbbaf0fbfa6e8-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 30 - }, - "auditLog": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-25-57-454Z/.c2d341cd4b53c5d7ea0f1f43960bbbaf0fbfa6e8-audit.json", - "files": [ - { - "date": 1752549957485, - "name": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-25-57-454Z/session-2025-07-14.log", - "hash": "19219eb3b29e5205d57440a2d1e6377650565e66fb9babe9131f3f0e398c7136" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/logs/sessions/2025-07-15T03-27-59-466Z/.4d1837ccb55df117edaf40a8ea52e7d805053895-audit.json b/logs/sessions/2025-07-15T03-27-59-466Z/.4d1837ccb55df117edaf40a8ea52e7d805053895-audit.json deleted file mode 100644 index 4f78681..0000000 --- a/logs/sessions/2025-07-15T03-27-59-466Z/.4d1837ccb55df117edaf40a8ea52e7d805053895-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 30 - }, - "auditLog": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-27-59-466Z/.4d1837ccb55df117edaf40a8ea52e7d805053895-audit.json", - "files": [ - { - "date": 1752550079507, - "name": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-27-59-466Z/session-2025-07-14.log", - "hash": "7f794a6fad9d608287397b1f5f2f0793cb9c8be536c88904eee614eb0560bd63" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/logs/sessions/2025-07-15T03-28-59-461Z/.dd471705688f18d97d1b8da76bb9d23e6bdef615-audit.json b/logs/sessions/2025-07-15T03-28-59-461Z/.dd471705688f18d97d1b8da76bb9d23e6bdef615-audit.json deleted file mode 100644 index 2ada9ed..0000000 --- a/logs/sessions/2025-07-15T03-28-59-461Z/.dd471705688f18d97d1b8da76bb9d23e6bdef615-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 30 - }, - "auditLog": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-28-59-461Z/.dd471705688f18d97d1b8da76bb9d23e6bdef615-audit.json", - "files": [ - { - "date": 1752550139500, - "name": "/srv/projects/jasonpoage.com/expressjs-blog/logs/sessions/2025-07-15T03-28-59-461Z/session-2025-07-14.log", - "hash": "ccfb43a01c5cacce778cc7874996adfd8265e914c12d3531acf94a305cc0d0e8" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/logs/warn/warn-2025-07-04.log.gz b/logs/warn/warn-2025-07-04.log.gz deleted file mode 100644 index ed73b74..0000000 --- a/logs/warn/warn-2025-07-04.log.gz +++ /dev/null Binary files differ diff --git a/src/middleware/applyProductionSecurity.js b/src/middleware/applyProductionSecurity.js index e813ec9..3863925 100644 --- a/src/middleware/applyProductionSecurity.js +++ b/src/middleware/applyProductionSecurity.js @@ -18,14 +18,6 @@ next(); }; -const logIps = (req, res, next) => { - const forwardedIp = req.ip; - const directIp = req.connection.remoteAddress; - req.log?.info?.(`Forwarded IP: ${forwardedIp}`); - req.log?.info?.(`Direct IP: ${directIp}`); - next(); -}; - const blockLocalhostAccess = (req, res, next) => { if (req.method === HEALTHCHECK_METHOD && req.path === HEALTHCHECK_PATH) { return next(); @@ -39,7 +31,6 @@ const applyProductionSecurity = [ disablePoweredBy, - logIps, hpp(), xssSanitizer, // rateLimit middleware can be added here diff --git a/src/routes/index.js b/src/routes/index.js index 56ed618..595f91a 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -15,7 +15,6 @@ const post = require("./post"); const pages = require("./pages"); const rssFeed = require("./rssFeed"); -// const logs = require("./logs"); const { qualifyLink } = require("../utils/qualifyLinks"); const HttpError = require("../utils/HttpError"); diff --git a/src/utils/structuredLogger.js b/src/utils/structuredLogger.js index b0d4a6e..eff3ea4 100644 --- a/src/utils/structuredLogger.js +++ b/src/utils/structuredLogger.js @@ -6,7 +6,7 @@ res.on("finish", () => { const [s, ns] = process.hrtime(start); const ms = (s * 1e3 + ns / 1e6).toFixed(3); - const { method, url, headers, query, body, ip } = req; + const { method, url, headers, query, body, ip, connection } = req; const { statusCode } = res; if ( @@ -31,7 +31,8 @@ const meta = { statusCode: String(statusCode), - ip: String(ip), + directIp: String(connection.remoteAddress), + forwardedIp: String(ip), responseTime: `${ms}ms`, contentLength: String(res.getHeader("content-length") || "0"), ...flatten(headers, "headers"),