- Multi-stage Dockerfile: discover patterns from PMS binary (capstone), compile .so with zig (musl), layer onto lscr.io/linuxserver/plex - Uses LD_PRELOAD instead of patchelf (which corrupts Plex's musl loader) - Auto-discovery: broad structural patterns with string-anchored fallback (//feature) and relationship-based fallback (BITSET_REF within BS_INIT) - hook.cpp uses __has_include for generated patterns with hardcoded fallbacks - Custom wrapper.sh (no traffic_logger preload) - Vendored Freeloader source (github.com/authrequest/Freeloader, AGPL-3.0) - Removed stale plexmediaserver_crack.so binary - Supports Plex 1.43.3+ (verified against 1.43.2 and 1.43.3)
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
import pytest
|
|
|
|
from plex_relay.errors import RelayKeyError
|
|
from plex_relay.models import HostKey, RelayKey, known_hosts_endpoint, parse_relay_pub
|
|
|
|
PUB = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIabc relay@plex" # keytype keydata comment
|
|
KH = "* ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIabc" # host keytype keydata
|
|
EXPECT = RelayKey("ssh-ed25519", "AAAAC3NzaC1lZDI1NTE5AAAAIabc")
|
|
|
|
|
|
def test_parse_pubkey_form():
|
|
assert parse_relay_pub(PUB) == EXPECT
|
|
|
|
|
|
def test_parse_known_hosts_form():
|
|
assert parse_relay_pub(KH) == EXPECT
|
|
|
|
|
|
def test_parse_skips_comments_and_blanks():
|
|
assert parse_relay_pub(f"# header\n\n{PUB}\n") == EXPECT
|
|
|
|
|
|
@pytest.mark.parametrize("bad", ["ssh-ed25519 onlytwo", "aaa bbb ccc", "", "# only comment\n"])
|
|
def test_parse_rejects_bad_payloads(bad):
|
|
with pytest.raises(RelayKeyError):
|
|
parse_relay_pub(bad)
|
|
|
|
|
|
def test_endpoint_bracket_notation():
|
|
assert known_hosts_endpoint("1.2.3.4", 443) == "[1.2.3.4]:443"
|
|
assert known_hosts_endpoint("relay.example", 2222) == "[relay.example]:2222"
|
|
assert known_hosts_endpoint("relay.example", 22) == "relay.example"
|
|
|
|
|
|
def test_endpoint_rejects_empty_host():
|
|
with pytest.raises(RelayKeyError):
|
|
known_hosts_endpoint(" ", 443)
|
|
|
|
|
|
def test_hostkey_serialization():
|
|
hk = HostKey.for_endpoint("[1.2.3.4]:443", EXPECT)
|
|
assert hk.known_hosts_line() == "[1.2.3.4]:443 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIabc"
|
|
assert hk.cache_block() == f"# [1.2.3.4]:443\n{hk.known_hosts_line()}\n"
|
|
assert hk.key == EXPECT
|