Skip to content

Fix Mumble auth lookup for ATAK Vx plugin usernames#338

Open
Reijnn wants to merge 1 commit into
brian7704:masterfrom
Reijnn:fix/mumble-atak-vx-username
Open

Fix Mumble auth lookup for ATAK Vx plugin usernames#338
Reijnn wants to merge 1 commit into
brian7704:masterfrom
Reijnn:fix/mumble-atak-vx-username

Conversation

@Reijnn

@Reijnn Reijnn commented Jul 1, 2026

Copy link
Copy Markdown

Summary

  • The ATAK Vx plugin connects to Mumble using a username of the form callsign---uid (e.g. ANVIL---47c4c853-4e52-4b97-9a0b-08a0f961b0fa).
  • MumbleAuthenticator.authenticate() looked up that full string in the OTS user database, which never matches an account (registered under just the callsign, e.g. ANVIL). Every Vx connection was rejected by Mumble with "Wrong certificate or password for existing user".
  • This strips the ---uid suffix before the find_user lookup, so authentication succeeds when the OTS username matches the ATAK callsign.

Tested against OTS 1.7.12, ATAK 5.6.0.12, and the Vx plugin.

Test plan

  • Added tests/test_mumble_authenticator.py covering the callsign---uid and plain-username cases (guarded with pytest.importorskip("Ice") since Ice is a platform-specific dependency)
  • Manually reproduced the failure and confirmed the fix on a live OTS/Mumble deployment with an ATAK Vx client

The ATAK Vx plugin sends the Mumble username as "callsign---uid", but
MumbleAuthenticator looked up the full string, which never matches an
OTS account. Strip the UID suffix before the lookup so authentication
succeeds when the OTS username matches the ATAK callsign.
@TX-RX

TX-RX commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

@Reijnn I have been testing a similar change and had posted here: #310 I have a branch I am happy to share on my fork if you want to include additional changes as well.

@Reijnn

Reijnn commented Jul 9, 2026

Copy link
Copy Markdown
Author

I like the promised changes, happy to test if you want.

@TX-RX

TX-RX commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

@Reijnn here is the open PR, it I have had it working on my instance for a while, but just saw some feedback from the copilot scans, so addressing that.

TX-RX#8

TX-RX added a commit to TX-RX/OpenTAKServer that referenced this pull request Jul 17, 2026
- resolve_identity: extract presented-name normalization into a pure
  _candidate_callsigns() helper (behavior-preserving) and add a .strip()
  on the ---<uid> suffix split, so a callsign portion carrying a stray
  leading/trailing space (e.g. "ANVIL ---<uid>") still matches TRIM()'d
  EUD rows. Mirrors upstream brian7704#338 while keeping our
  broader lookup chain (underscore->space, cert-CN fallback).
- tests/test_mumble_authenticator.py: cover _candidate_callsigns,
  mumble_identity, and resolve_identity's lookup chain. Uses
  pytest.importorskip("Ice") since the module loads Murmur's Ice slice at
  import time.

This is the only intentional divergence from the deployed authenticator
(otherwise byte-identical); it is additive and behavior-preserving apart
from the stray-space hardening.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDzrz7kU1P2yNcPqv9oBUS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants