Block coordinate traffic on configured event channels (#11045)
* Block coordinate traffic on configured event channels
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Suppress event coordinates in reliable relay paths
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Reject blocked phone coordinates before rate limiting
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Prevent event coordinates from reaching MQTT
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Add event coordinate policy preference
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Test event coordinate policy in native CI
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Make event policy test tolerate a full NodeDB
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Test Router event coordinate enforcement
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Test PhoneAPI event coordinate retry handling
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Test reliable event coordinate suppression
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Test MQTT event coordinate suppression
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* Run event policy behavioral suites in native CI
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* tests: address CodeRabbit review feedback
- test_event_channel_phone_api: complete the setUp/tearDown save-restore
pair. GlobalState now carries cryptLock and myNodeInfo; setUp() nulls
cryptLock before constructing MockRouter (Router's ctor asserts it is
unset), and tearDown() restores both so the suite leaves no global
mutated. Not reachable today - the globals start null in this binary -
but the pair was asymmetric.
- Replace the strcpy calls this branch added on Channel.settings.name
(char[12]) with the bounded form the rest of the test tree already uses,
strncpy(dst, src, sizeof(dst) - 1). Covers the flagged site in
test_nexthop_routing plus the six equivalents in
test_event_channel_phone_api, test_mqtt and test_position_precision,
which trip the same ast-grep dangerous-buffer-functions-cpp rule.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---------
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>