From 1538d4235c226f68da220608ce780fa6c7cb9ec6 Mon Sep 17 00:00:00 2001 From: lthievenaz-keeper Date: Fri, 24 Apr 2026 10:24:18 +0100 Subject: [PATCH 1/4] Fix server and region_label vars for Tunnel Diagnose For GOVCLOUD envs, the `server` variable caused the tested URLs to be: `govcloud.keepersecurity.us` `connect.govcloud.keepersecurity.us` `krelay.govcloud.keepersecurity.us` For servers other than US and GOVCLOUD, the `region_label` variable resolved as `KEEPERSECURITY`, instead of `EU`, `CA`, `AU` and `JP` --- keepercommander/commands/tunnel_and_connections.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keepercommander/commands/tunnel_and_connections.py b/keepercommander/commands/tunnel_and_connections.py index e664ba7ee..09ead2b78 100644 --- a/keepercommander/commands/tunnel_and_connections.py +++ b/keepercommander/commands/tunnel_and_connections.py @@ -936,7 +936,7 @@ def execute(self, params, **kwargs): output_format = kwargs.get('format', 'table') test_filter = kwargs.get('test_filter') - server = params.server # e.g. "keepersecurity.com" + server = 'keepersecurity.us' if server == 'govcloud.keepersecurity.us' else params.server # e.g. "keepersecurity.com" krelay_server = os.environ.get('KRELAY_URL') or f'krelay.{server}' connect_host = f'connect.{server}' @@ -944,7 +944,7 @@ def execute(self, params, **kwargs): self._print_header() print() now = datetime.datetime.utcnow() - region_label = 'US' if server == 'keepersecurity.com' else server.split('.')[0].upper() + region_label = 'US' if server == 'keepersecurity.com' else 'GOVCLOUD' if server == 'keepersecurity.us' else server.split('.')[-1].upper() print(self._green(f' Region {region_label} \u00b7 {server}')) print(self._green(f' Date {now.strftime("%Y-%m-%d %H:%M")} UTC')) if record_name: From 4d5ebe718a99d434bf38420bfa1d8427c38d753b Mon Sep 17 00:00:00 2001 From: lthievenaz-keeper Date: Fri, 24 Apr 2026 10:30:14 +0100 Subject: [PATCH 2/4] Update tunnel_and_connections.py --- keepercommander/commands/tunnel_and_connections.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keepercommander/commands/tunnel_and_connections.py b/keepercommander/commands/tunnel_and_connections.py index 09ead2b78..7b17868f7 100644 --- a/keepercommander/commands/tunnel_and_connections.py +++ b/keepercommander/commands/tunnel_and_connections.py @@ -936,7 +936,7 @@ def execute(self, params, **kwargs): output_format = kwargs.get('format', 'table') test_filter = kwargs.get('test_filter') - server = 'keepersecurity.us' if server == 'govcloud.keepersecurity.us' else params.server # e.g. "keepersecurity.com" + server = 'keepersecurity.us' if params.server == 'govcloud.keepersecurity.us' else params.server # e.g. "keepersecurity.com" krelay_server = os.environ.get('KRELAY_URL') or f'krelay.{server}' connect_host = f'connect.{server}' From b48acc5cd623096642e7575cd5d668c8a38c1f0b Mon Sep 17 00:00:00 2001 From: lthievenaz-keeper Date: Fri, 24 Apr 2026 13:50:32 +0100 Subject: [PATCH 3/4] Fixed sample ports color MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Partial color loss for this string: `✓ 8/8 sampled ports reachable` This is because the `_check` function (✓) sets the color back to bright --- keepercommander/commands/tunnel_and_connections.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keepercommander/commands/tunnel_and_connections.py b/keepercommander/commands/tunnel_and_connections.py index 7b17868f7..87b00d95f 100644 --- a/keepercommander/commands/tunnel_and_connections.py +++ b/keepercommander/commands/tunnel_and_connections.py @@ -1029,7 +1029,7 @@ def _record(name: str, passed: bool, detail: str, ms: int): print(row.rstrip()) passed_ports = sum(1 for _, ok, _ in port_results if ok) - print(f' {self._check()} {self._green(str(passed_ports))}/{len(port_results)} sampled ports reachable') + print(f' {self._check()}'+self._green(f' {str(passed_ports)}/{len(port_results)} sampled ports reachable')) print() # ── section 4: WebRTC connectivity (Rust library) ───────────────────── From 8e91ea94426f3a25a020314b05254967e14b6637 Mon Sep 17 00:00:00 2001 From: lthievenaz-keeper Date: Tue, 5 May 2026 11:41:50 +0100 Subject: [PATCH 4/4] remove int return from TunnelDiagnoseCommand When format=table, the TunnelDiagnoseCommand returns 0 or 1 in the CLI, which is not the behavior or any other CLI Command --- keepercommander/commands/tunnel_and_connections.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/keepercommander/commands/tunnel_and_connections.py b/keepercommander/commands/tunnel_and_connections.py index 87b00d95f..2f6a5b023 100644 --- a/keepercommander/commands/tunnel_and_connections.py +++ b/keepercommander/commands/tunnel_and_connections.py @@ -1325,9 +1325,6 @@ def _val(v): print(f' {self._dsep()}') print() - return 0 if passed_total == total_checks else 1 - - class PAMConnectionEditCommand(Command): choices = ['on', 'off', 'default'] protocols = ['', 'http', 'kubernetes', 'mysql', 'postgresql', 'rdp', 'sql-server', 'ssh', 'telnet', 'vnc']