feat: add IRCv3 cap negotiation, channel management, state persistence

Implement CAP LS 302 flow with configurable ircv3_caps list, replacing
the minimal SASL-only registration. Parse IRCv3 message tags (@key=value)
with proper value unescaping. Add channel management plugin (kick, ban,
unban, topic, mode) and bot API methods. Add SQLite key-value StateStore
for plugin state persistence with !state inspection command.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
user
2026-02-15 03:07:06 +01:00
parent 4a2960b288
commit f86cd1ad49
14 changed files with 614 additions and 49 deletions

View File

@@ -1,21 +1,23 @@
# derp - Tasks
## Current Sprint -- v0.5.0 Wave 4 (2026-02-15)
## Current Sprint -- v1.0.0 Stable (2026-02-15)
| Pri | Status | Task |
|-----|--------|------|
| P0 | [x] | Opslog plugin (SQLite per-channel notes) |
| P0 | [x] | Note plugin (per-channel key-value store) |
| P0 | [x] | Subdomain plugin (crt.sh + DNS brute force) |
| P0 | [x] | Headers plugin (HTTP header fingerprinting) |
| P0 | [x] | ExploitDB search plugin (local CSV clone) |
| P0 | [x] | Payload template plugin (SQLi, XSS, SSTI, LFI, CMDi, XXE) |
| P0 | [x] | IRCv3 CAP LS 302 negotiation |
| P0 | [x] | IRCv3 message tag parsing |
| P0 | [x] | Channel management plugin (kick, ban, unban, topic, mode) |
| P0 | [x] | Plugin state persistence (SQLite key-value store) |
| P0 | [x] | Bot API: kick, mode, set_topic methods |
| P0 | [x] | Core !state command for inspection |
| P1 | [x] | Tests: tag parsing, state store CRUD |
| P1 | [x] | Documentation update |
## Completed
| Date | Task |
|------|------|
| 2026-02-15 | v1.0.0 (IRCv3, chanmgmt, state persistence) |
| 2026-02-15 | Wave 4 (opslog, note, subdomain, headers, exploitdb, payload) |
| 2026-02-15 | Wave 3 plugins (geoip, asn, torcheck, iprep, cve) + update script |
| 2026-02-15 | Admin/owner permission system (hostmask + IRCOP) |