e2ee-tag: relay the +obby.world/e2ee client tag for Obby-native E2EE#16
e2ee-tag: relay the +obby.world/e2ee client tag for Obby-native E2EE#16matheusfillipe wants to merge 2 commits into
Conversation
Registers a MessageTagHandler for +obby.world/e2ee so the server relays the opaque (base64) client-only tag that carries Obby's end-to-end encrypted private messages, exactly as it does for +draft/reply and +obby.world/invoked-by. The value is never inspected beyond a base64 shape/length check (<=4094 bytes); the contents are end-to-end encrypted, so the server cannot and must not interpret them. Wired into the module build list and modules.default.conf.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughA new UnrealIRCd module Changese2ee-tag IRCv3 message tag module
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/modules/e2ee-tag.c`:
- Around line 1-14: The copyright header in the module file uses "ObbyIRCd Team"
instead of the repository-required "The obbyworld Team" and does not match the
required GPL notice format for C module headers. Update the copyright line in
the header comment block at the top of the file to replace "ObbyIRCd Team" with
"The obbyworld Team" and ensure the entire header block follows the
repository-required module-header wording including the GPLv2 notice as
specified in the coding guidelines.
- Around line 83-84: The isalnum() function requires either an unsigned char or
EOF value according to the C standard, but *p is being passed directly without
proper casting. This can cause undefined behavior on platforms where char is
signed and *p contains a negative value. Cast *p to (unsigned char) before
passing it to isalnum() in the conditional check to ensure safe and
standards-compliant behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 4d612e0d-f847-44fc-b0bc-2acf7b0b9f92
📒 Files selected for processing (3)
doc/conf/modules.default.confsrc/modules/Makefile.insrc/modules/e2ee-tag.c
| /* | ||
| * IRC - Internet Relay Chat, src/modules/e2ee-tag.c | ||
| * (C) 2026 ObbyIRCd Team | ||
| * | ||
| * This program is free software; you can redistribute it and/or modify | ||
| * it under the terms of the GNU General Public License as published by | ||
| * the Free Software Foundation; either version 1, or (at your option) | ||
| * any later version. | ||
| * | ||
| * This program is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| * GNU General Public License for more details. | ||
| */ |
There was a problem hiding this comment.
Align module header comment block with repository-required copyright/GPL text.
This header does not match the required module-header wording (The obbyworld Team and GPLv2 notice) for src/modules/*.c.
Proposed adjustment
- * (C) 2026 ObbyIRCd Team
+ * Copyright (C) 2026 The obbyworld Team
@@
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 1, or (at your option)
- * any later version.
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.As per coding guidelines: "In C module headers, include the copyright comment block with 'The obbyworld Team' and GPLv2 notice."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/modules/e2ee-tag.c` around lines 1 - 14, The copyright header in the
module file uses "ObbyIRCd Team" instead of the repository-required "The
obbyworld Team" and does not match the required GPL notice format for C module
headers. Update the copyright line in the header comment block at the top of the
file to replace "ObbyIRCd Team" with "The obbyworld Team" and ensure the entire
header block follows the repository-required module-header wording including the
GPLv2 notice as specified in the coding guidelines.
Source: Coding guidelines
What
Adds the
e2ee-tagmodule, registering aMessageTagHandlerfor the+obby.world/e2eeclient-only tag so the server relays it to recipients —exactly as it already does for
+draft/reply(reply-tag) and+obby.world/invoked-by(bot-tag).This is the server-side transport for Obby-native private-message E2EE.
The tag value is opaque (base64 of an encrypted blob); the server never
inspects it and only validates the shape:
<= 4094bytes (IRCv3 message-tags client-data cap)A-Za-z0-9+/=)The contents are end-to-end encrypted, so the server cannot and must not
interpret them beyond that sanity check.
Why a server module is needed
UnrealIRCd/ObbyIRCd only relays client-only tags that have a registered
MessageTagHandler; unknown vendor tags are stripped. Without this module,TAGMSG-carried+obby.world/e2eepayloads never reach the peer. (Verifiedempirically against
irc.h4ks.com: only registered tags pass through.)Changes
src/modules/e2ee-tag.c— new module (mirrorsreply-tag.c):MessageTagHandlerAddwithMTAG_HANDLER_FLAGS_NO_CAP_NEEDED+HOOKTYPE_NEW_MESSAGEto propagate the tag.src/modules/Makefile.in— adde2ee-tag.soto the module list.doc/conf/modules.default.conf—loadmodule "e2ee-tag";.Companion
Client side lives in the ObsidianIRC app (Double Ratchet over this tag).
Cross-client interop (OTR) rides in the PRIVMSG body and needs no server
changes.
Notes
Not yet compiled in CI here — needs the full build toolchain. The handler
is a near-verbatim copy of the existing
reply-tagpattern.Summary by CodeRabbit
+obby.world/e2ee), enabling compatible clients to securely exchange encrypted payloads through the server.