List ~/.ssh/config hosts in the panel source dropdown
Read-only group below saved connections; hosts resolve HostName/User/ Port/IdentityFile (Include, wildcards, %-tokens) and connect on click. New ssh-agent auth kind covers hosts without a usable identity file; ProxyJump/ProxyCommand hosts are shown disabled. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,7 @@ import {
|
||||
viewChild,
|
||||
} from '@angular/core';
|
||||
import { NgIcon } from '@ng-icons/core';
|
||||
import type { FileEntry, SavedConnection } from '@shared/types';
|
||||
import type { FileEntry, SavedConnection, SshConfigHost } from '@shared/types';
|
||||
import { ConnectionsService } from '../connections.service';
|
||||
import { DialogsService } from '../dialogs.service';
|
||||
import { FileActionsService } from '../file-actions.service';
|
||||
@@ -84,6 +84,35 @@ export class FilePanel {
|
||||
void this.panels.connectPanel(this.side(), connection, connection.name);
|
||||
}
|
||||
|
||||
toggleMenu(): void {
|
||||
this.menuOpen.set(!this.menuOpen());
|
||||
// re-read ~/.ssh/config on each open so external edits show up
|
||||
if (this.menuOpen()) void this.connections.reloadSshHosts();
|
||||
}
|
||||
|
||||
pickSshHost(host: SshConfigHost): void {
|
||||
this.menuOpen.set(false);
|
||||
this.activate();
|
||||
void this.panels.connectPanel(
|
||||
this.side(),
|
||||
{
|
||||
host: host.hostname,
|
||||
port: host.port,
|
||||
username: host.username,
|
||||
auth: host.identityFile
|
||||
? { kind: 'key', privateKeyPath: host.identityFile }
|
||||
: { kind: 'agent' },
|
||||
initialPath: null,
|
||||
},
|
||||
host.name,
|
||||
);
|
||||
}
|
||||
|
||||
sshHostTitle(host: SshConfigHost): string {
|
||||
if (host.unsupported === 'proxy') return 'Uses ProxyJump/ProxyCommand — not supported';
|
||||
return `${host.username}@${host.hostname}:${host.port}`;
|
||||
}
|
||||
|
||||
openManager(): void {
|
||||
this.menuOpen.set(false);
|
||||
this.activate();
|
||||
|
||||
Reference in New Issue
Block a user