fix: channel_keywords-Filter greift jetzt auch in execute_commands #8

Merged
ppfeiffer merged 1 commit from fix/channel-keywords-bypass-in-execute-commands into main 2026-03-13 10:43:24 +01:00
Owner

Problem

Die Konfigurationsoption [Channels] channel_keywords soll einschränken, welche Befehle in Kanälen erlaubt sind. check_keywords() prüfte dies korrekt via _is_channel_trigger_allowed(), aber execute_commands() enthielt diese Prüfung nicht.

Ergebnis: Plugin-Befehle ohne get_response_format() (also alle echten Commands wie wx, aqi, solar usw.) konnten den Filter vollständig umgehen.

Reproduzierbar mit

[Channels]
channel_keywords = help,ping

Nachricht wx in einem Kanal → Wetter-Antwort erschien trotzdem.

Fix

In execute_commands() direkt nach dem should_execute()-Check denselben _is_channel_trigger_allowed()-Aufruf eingefügt, der auch in check_keywords() steht:

# When channel_keywords is set, only allow listed triggers in channel
# (mirrors the same check in check_keywords())
if not self._is_channel_trigger_allowed(command_name, message):
    continue

Tests

Alle 32 bestehenden test_command_manager-Tests weiterhin grün.

Schließt #3

## Problem Die Konfigurationsoption `[Channels] channel_keywords` soll einschränken, welche Befehle in Kanälen erlaubt sind. `check_keywords()` prüfte dies korrekt via `_is_channel_trigger_allowed()`, aber `execute_commands()` enthielt diese Prüfung nicht. **Ergebnis:** Plugin-Befehle ohne `get_response_format()` (also alle echten Commands wie `wx`, `aqi`, `solar` usw.) konnten den Filter vollständig umgehen. ## Reproduzierbar mit ```ini [Channels] channel_keywords = help,ping ``` Nachricht `wx` in einem Kanal → Wetter-Antwort erschien trotzdem. ## Fix In `execute_commands()` direkt nach dem `should_execute()`-Check denselben `_is_channel_trigger_allowed()`-Aufruf eingefügt, der auch in `check_keywords()` steht: ```python # When channel_keywords is set, only allow listed triggers in channel # (mirrors the same check in check_keywords()) if not self._is_channel_trigger_allowed(command_name, message): continue ``` ## Tests Alle 32 bestehenden `test_command_manager`-Tests weiterhin grün. Schließt #3
fix: channel_keywords-Filter greift jetzt auch in execute_commands
Some checks failed
Build and Push Docker Image / build (pull_request) Failing after 42s
Tests / test (pull_request) Failing after 21s
ae2c776213
Plugin-Befehle (ohne get_response_format) haben den channel_keywords-
Filter in execute_commands bisher komplett umgangen. check_keywords()
prüfte _is_channel_trigger_allowed(), execute_commands() jedoch nicht.

Der fehlende Aufruf wird nun direkt nach should_execute() eingefügt,
sodass das Verhalten beider Methoden konsistent ist.

Schließt #3
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ppfeiffer/meshcore-bot!8
No description provided.