diff --git a/mitm_redirect.py b/mitm_redirect.py index 9e390b3..cb49cbb 100644 --- a/mitm_redirect.py +++ b/mitm_redirect.py @@ -694,7 +694,7 @@ def _rewrite_value(text: str) -> str: args.local_api, fallback_port=DEFAULT_LOCAL_API_PORT, ) - local_api = _format_authority(local_api_host, local_api_port, default_port=443) + local_api = _format_authority(local_api_host, local_api_port, default_port=None) local_mqtt_host, local_mqtt_port = _parse_endpoint( args.local_mqtt or "", fallback_host=local_api_host, diff --git a/onboarding_shared.py b/onboarding_shared.py index 98fb236..a9c2889 100644 --- a/onboarding_shared.py +++ b/onboarding_shared.py @@ -63,14 +63,18 @@ def perform_onboarding_preflight( ) output.write(_tls_success_message(f"https://{api_host}:{api_port}", allow_insecure_tls)) - output.write(f"Checking MQTT TLS listener at ssl://{api_host}:{mqtt_port}...\n") + # Prefer advertised port (external_tls mode) over internal listener port + advertised_mqtt_port = status.get("advertised_mqtt_tls_port") + mqtt_preflight_port = advertised_mqtt_port if advertised_mqtt_port else mqtt_port + + output.write(f"Checking MQTT TLS listener at ssl://{api_host}:{mqtt_preflight_port}...\n") _probe_tls_endpoint( host=api_host, - port=mqtt_port, + port=mqtt_preflight_port, allow_insecure_tls=allow_insecure_tls, - label=f"ssl://{api_host}:{mqtt_port}", + label=f"ssl://{api_host}:{mqtt_preflight_port}", ) - output.write(_tls_success_message(f"ssl://{api_host}:{mqtt_port}", allow_insecure_tls)) + output.write(_tls_success_message(f"ssl://{api_host}:{mqtt_preflight_port}", allow_insecure_tls)) return status diff --git a/src/roborock_local_server/server.py b/src/roborock_local_server/server.py index 9f1e450..d593be4 100644 --- a/src/roborock_local_server/server.py +++ b/src/roborock_local_server/server.py @@ -1334,6 +1334,8 @@ def _status_payload(self) -> dict[str, Any]: "support": PROJECT_SUPPORT, "inventory_path": str(self.paths.inventory_path), "cloud_snapshot_path": str(self.paths.cloud_snapshot_path), + "advertised_https_port": self.config.network.advertised_https_port, + "advertised_mqtt_tls_port": self.config.network.advertised_mqtt_tls_port, } def _vacuums_payload(self) -> dict[str, Any]: