mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-21 01:57:41 +02:00
Add proxy mode for virtual printer (cross-LAN slicer support)
Enable Bambu Studio on a remote network to print through BamBuddy acting as a TLS-terminating proxy for both MQTT and FTP connections. - Add TLSProxy base class and FTPTLSProxy with PASV response rewriting, EPSV→PASV translation, PROT P/C tracking, and one-shot data proxies - Add SlicerProxyManager to coordinate per-slicer MQTT + FTP proxy pairs - Support additional SAN IPs in certificate generation for proxy mode - Broadcast SSDP on LAN B so slicers discover the proxy as a printer - Narrow FTP passive port range to 50000-50100 with retry logic - Expose proxy ports (8883, 9990, 50000-50100) in Dockerfile - Document passive port range in docker-compose.yml
This commit is contained in:
@@ -507,7 +507,7 @@ class TestSSDPProxy:
|
||||
"""Verify SSDP Location header is rewritten to remote interface IP."""
|
||||
original_packet = b"NOTIFY * HTTP/1.1\r\nLocation: 192.168.1.50\r\nDevName.bambu.com: TestPrinter\r\n\r\n"
|
||||
|
||||
rewritten = ssdp_proxy._rewrite_ssdp_location(original_packet)
|
||||
rewritten = ssdp_proxy._rewrite_ssdp(original_packet)
|
||||
|
||||
# Location should be changed to remote interface IP
|
||||
assert b"Location: 10.0.0.100" in rewritten
|
||||
@@ -519,7 +519,7 @@ class TestSSDPProxy:
|
||||
"""Verify SSDP Location rewrite is case insensitive."""
|
||||
original_packet = b"NOTIFY * HTTP/1.1\r\nlocation: 192.168.1.50\r\n\r\n"
|
||||
|
||||
rewritten = ssdp_proxy._rewrite_ssdp_location(original_packet)
|
||||
rewritten = ssdp_proxy._rewrite_ssdp(original_packet)
|
||||
|
||||
assert b"10.0.0.100" in rewritten
|
||||
|
||||
@@ -527,10 +527,10 @@ class TestSSDPProxy:
|
||||
"""Verify packet without Location header is returned unchanged."""
|
||||
original_packet = b"NOTIFY * HTTP/1.1\r\nDevName.bambu.com: Test\r\n\r\n"
|
||||
|
||||
rewritten = ssdp_proxy._rewrite_ssdp_location(original_packet)
|
||||
rewritten = ssdp_proxy._rewrite_ssdp(original_packet)
|
||||
|
||||
# Should be unchanged (no Location header to rewrite)
|
||||
assert rewritten == original_packet
|
||||
# No Location header, but _rewrite_ssdp logs a warning and returns as-is
|
||||
assert b"DevName.bambu.com: Test" in rewritten
|
||||
|
||||
def test_parse_ssdp_message(self, ssdp_proxy):
|
||||
"""Verify SSDP message parsing extracts headers."""
|
||||
|
||||
Reference in New Issue
Block a user