Filterregeln aus Ordnerinhalten generieren #4
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
DasAoD/imapfilter-ui!4
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/rule-generator-from-folders"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #3
Was
Neuer Button „🪄 Regeln aus Ordnern generieren" auf der Filterregeln-Seite:
Wie
lib/rule_generator.php(neu): Scan-, Vorschlags- und Anwenden-Logik.public/api/rule_generator.php(neu):GET ?action=preview(nur lesen) undPOST ?action=apply(schreibt unter demselbenrules.json.lockwierules.php/lib/blacklist.php).public/index.php,public/assets/app.js: Button + Vorschau-Modal.Review
Zwei Runden
code-reviewer+security-checker. Der code-reviewer hat einen echten Bug gefunden und im zweiten Commit behoben: INBOX wäre als Regel-Ziel wählbar gewesen, hätte aber die Lua-Generierung für den ganzen Account zum Absturz gebracht (lib/generate.phpdeklariert dafür keine Ordner-Variable). Außerdem behoben: fehlender Fallback für Accounts ohne bisherigerules.json, fehlende Cross-Ordner-Konflikterkennung im selben Scan, ungewollte Groß-/Kleinschreibungs-Normalisierung bestehender Regel-Einträge beim Ergänzen, sowie eine Obergrenze/Zeitlimit für den Scan über alle Ordner. Security-Review ohne kritische/mittlere Funde (sauberes Cross-User-Scoping, durchgängigeslua_str()-Escaping, Auth/CSRF wie bei den übrigen Endpunkten).Getestet an einem zweiten Konto mit realem, bisher ungefiltertem Ordnerinhalt.
🤖 Generated with Claude Code
- lib/rule_generator.php (new): scans IMAP folders (excluding a configurable default set — INBOX, the Spam target, Sent/Trash/Drafts-like system folders in German+English), extracts sender domains per folder, and builds a preview of new/updated rules against the current rules.json (flagging domains already used elsewhere: another rule, the blacklist, or the whitelist) - One-time, manually triggered action — not a continuous auto-learn loop like the blacklist, since a wrong rule here silently misroutes real mail instead of just misclassifying spam - Rule name/target derive from the folder path ("INBOX/" prefix stripped); new subfolder rules are auto-inserted before their ancestor folder's rule to satisfy the existing "subfolder rules before root rules" ordering requirement, regardless of processing order - Domain extraction is validated against a plausible domain pattern before ever reaching the preview or generated Lua - public/api/rule_generator.php (new): GET ?action=preview (scan + build suggestions, no writes) and POST ?action=apply (user-confirmed selections only), sharing the same rules.json.lock as rules.php/blacklist.php - public/index.php, public/assets/app.js: "🪄 Regeln aus Ordnern generieren" button on the Filterregeln page opens a preview modal with a checkbox per suggestion (pre-selected per the exclusion heuristic, overridable) and a ⚠️ conflict marker per domain; nothing is written until the user confirms Co-authored-by: Claude <claude@anthropic.com>