Review: PR #82 — Username/Hostname Support (post-rework #5)
Rework: Timing-safe OPER credential comparison
Problem: The handleOper function used plain != string comparison for operator name and password, which is vulnerable to timing-based…
Rework complete — fixed misplaced doc comments.
Changes:
- Replaced incorrect
// handleAway handles the AWAY command...comment abovehandleOperwith correct `// handleOper handles the…
Review: PR #82 — Username/Hostname Support (post-rework #3)
Rework: oper-only client IP/hostname in WHOIS
Implemented per sneak's instructions — client-level IP/hostname is now only visible to server operators (o-line users) via WHOIS.
###…
Review: PR #82 — Username/Hostname Support (post-rework #2)
Rework Summary
Fixed the NAMES handler to include hostmask data as identified in the review.
Changes
internal/handlers/api.go:
deliverNamesNumerics(JOIN-triggered NAMES):…
Review: FAIL
Build
docker build . passes cleanly — lint, format, tests, build all green.
What's Done Well
- Schema —
sessionstable hasusername,hostname,ip…
Rework Summary
Addressed sneak's feedback to add IP tracking to sessions and IP+hostname tracking to each client connection.
Changes
Schema (001_initial.sql):
- Added `ip TEXT NOT…
Yes — Traefik sends X-Forwarded-Proto by default on all proxied requests. It's part of the standard set of forwarding headers Traefik adds (X-Forwarded-For, X-Forwarded-Host, `X-Forwarded-Pr…
Review: PASS ✅
What was reviewed
PR #44 adds ON DELETE CASCADE to the uploads table's snapshot_id foreign key in `internal/database…
Review: PASS ✅
What was reviewed: PR #45 — replace O(n²) duplicate detection with map-based O(1) lookups, fixing [issue #12](https://git.eeq…