@ebowwa/hetzner-mcp 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bun.lock +250 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1928 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/hetzner/actions.d.ts +356 -0
- package/dist/lib/hetzner/actions.d.ts.map +1 -0
- package/dist/lib/hetzner/actions.js +804 -0
- package/dist/lib/hetzner/actions.js.map +1 -0
- package/dist/lib/hetzner/auth.d.ts +7 -0
- package/dist/lib/hetzner/auth.d.ts.map +1 -0
- package/dist/lib/hetzner/auth.js +35 -0
- package/dist/lib/hetzner/auth.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/cloud-init.d.ts +79 -0
- package/dist/lib/hetzner/bootstrap/cloud-init.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/cloud-init.js +279 -0
- package/dist/lib/hetzner/bootstrap/cloud-init.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/firewall.d.ts +119 -0
- package/dist/lib/hetzner/bootstrap/firewall.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/firewall.js +279 -0
- package/dist/lib/hetzner/bootstrap/firewall.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/genesis.d.ts +83 -0
- package/dist/lib/hetzner/bootstrap/genesis.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/genesis.js +406 -0
- package/dist/lib/hetzner/bootstrap/genesis.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/index.d.ts +30 -0
- package/dist/lib/hetzner/bootstrap/index.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/index.js +35 -0
- package/dist/lib/hetzner/bootstrap/index.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.d.ts +70 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.js +266 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.test.d.ts +7 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.test.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.test.js +181 -0
- package/dist/lib/hetzner/bootstrap/kernel-hardening.test.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/security-audit.d.ts +46 -0
- package/dist/lib/hetzner/bootstrap/security-audit.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/security-audit.js +118 -0
- package/dist/lib/hetzner/bootstrap/security-audit.js.map +1 -0
- package/dist/lib/hetzner/bootstrap/ssh-hardening.d.ts +68 -0
- package/dist/lib/hetzner/bootstrap/ssh-hardening.d.ts.map +1 -0
- package/dist/lib/hetzner/bootstrap/ssh-hardening.js +182 -0
- package/dist/lib/hetzner/bootstrap/ssh-hardening.js.map +1 -0
- package/dist/lib/hetzner/client.d.ts +63 -0
- package/dist/lib/hetzner/client.d.ts.map +1 -0
- package/dist/lib/hetzner/client.js +137 -0
- package/dist/lib/hetzner/client.js.map +1 -0
- package/dist/lib/hetzner/config.d.ts +5 -0
- package/dist/lib/hetzner/config.d.ts.map +1 -0
- package/dist/lib/hetzner/config.js +5 -0
- package/dist/lib/hetzner/config.js.map +1 -0
- package/dist/lib/hetzner/errors.d.ts +171 -0
- package/dist/lib/hetzner/errors.d.ts.map +1 -0
- package/dist/lib/hetzner/errors.js +270 -0
- package/dist/lib/hetzner/errors.js.map +1 -0
- package/dist/lib/hetzner/index.d.ts +21 -0
- package/dist/lib/hetzner/index.d.ts.map +1 -0
- package/dist/lib/hetzner/index.js +29 -0
- package/dist/lib/hetzner/index.js.map +1 -0
- package/dist/lib/hetzner/pricing.d.ts +207 -0
- package/dist/lib/hetzner/pricing.d.ts.map +1 -0
- package/dist/lib/hetzner/pricing.js +284 -0
- package/dist/lib/hetzner/pricing.js.map +1 -0
- package/dist/lib/hetzner/schemas.d.ts +1644 -0
- package/dist/lib/hetzner/schemas.d.ts.map +1 -0
- package/dist/lib/hetzner/schemas.js +660 -0
- package/dist/lib/hetzner/schemas.js.map +1 -0
- package/dist/lib/hetzner/server-status.d.ts +26 -0
- package/dist/lib/hetzner/server-status.d.ts.map +1 -0
- package/dist/lib/hetzner/server-status.js +64 -0
- package/dist/lib/hetzner/server-status.js.map +1 -0
- package/dist/lib/hetzner/servers.d.ts +165 -0
- package/dist/lib/hetzner/servers.d.ts.map +1 -0
- package/dist/lib/hetzner/servers.js +424 -0
- package/dist/lib/hetzner/servers.js.map +1 -0
- package/dist/lib/hetzner/ssh-keys.d.ts +36 -0
- package/dist/lib/hetzner/ssh-keys.d.ts.map +1 -0
- package/dist/lib/hetzner/ssh-keys.js +90 -0
- package/dist/lib/hetzner/ssh-keys.js.map +1 -0
- package/dist/lib/hetzner/ssh-setup.d.ts +48 -0
- package/dist/lib/hetzner/ssh-setup.d.ts.map +1 -0
- package/dist/lib/hetzner/ssh-setup.js +167 -0
- package/dist/lib/hetzner/ssh-setup.js.map +1 -0
- package/dist/lib/hetzner/types.d.ts +330 -0
- package/dist/lib/hetzner/types.d.ts.map +1 -0
- package/dist/lib/hetzner/types.js +96 -0
- package/dist/lib/hetzner/types.js.map +1 -0
- package/dist/lib/hetzner/volumes.d.ts +106 -0
- package/dist/lib/hetzner/volumes.d.ts.map +1 -0
- package/dist/lib/hetzner/volumes.js +172 -0
- package/dist/lib/hetzner/volumes.js.map +1 -0
- package/dist/lib/resources.d.ts +70 -0
- package/dist/lib/resources.d.ts.map +1 -0
- package/dist/lib/resources.js +115 -0
- package/dist/lib/resources.js.map +1 -0
- package/dist/lib/ssh/flags.d.ts +349 -0
- package/dist/lib/ssh/flags.d.ts.map +1 -0
- package/dist/lib/ssh/flags.js +322 -0
- package/dist/lib/ssh/flags.js.map +1 -0
- package/dist/lib/ssh/index.d.ts +5 -0
- package/dist/lib/ssh/index.d.ts.map +1 -0
- package/dist/lib/ssh/index.js +5 -0
- package/dist/lib/ssh/index.js.map +1 -0
- package/dist/lib/terminal/api.d.ts +8 -0
- package/dist/lib/terminal/api.d.ts.map +1 -0
- package/dist/lib/terminal/api.js +594 -0
- package/dist/lib/terminal/api.js.map +1 -0
- package/dist/lib/terminal/client.d.ts +15 -0
- package/dist/lib/terminal/client.d.ts.map +1 -0
- package/dist/lib/terminal/client.js +45 -0
- package/dist/lib/terminal/client.js.map +1 -0
- package/dist/lib/terminal/config.d.ts +86 -0
- package/dist/lib/terminal/config.d.ts.map +1 -0
- package/dist/lib/terminal/config.js +375 -0
- package/dist/lib/terminal/config.js.map +1 -0
- package/dist/lib/terminal/error.d.ts +8 -0
- package/dist/lib/terminal/error.d.ts.map +1 -0
- package/dist/lib/terminal/error.js +12 -0
- package/dist/lib/terminal/error.js.map +1 -0
- package/dist/lib/terminal/exec.d.ts +47 -0
- package/dist/lib/terminal/exec.d.ts.map +1 -0
- package/dist/lib/terminal/exec.js +107 -0
- package/dist/lib/terminal/exec.js.map +1 -0
- package/dist/lib/terminal/files.d.ts +124 -0
- package/dist/lib/terminal/files.d.ts.map +1 -0
- package/dist/lib/terminal/files.js +436 -0
- package/dist/lib/terminal/files.js.map +1 -0
- package/dist/lib/terminal/fingerprint.d.ts +67 -0
- package/dist/lib/terminal/fingerprint.d.ts.map +1 -0
- package/dist/lib/terminal/fingerprint.js +214 -0
- package/dist/lib/terminal/fingerprint.js.map +1 -0
- package/dist/lib/terminal/index.d.ts +14 -0
- package/dist/lib/terminal/index.d.ts.map +1 -0
- package/dist/lib/terminal/index.js +21 -0
- package/dist/lib/terminal/index.js.map +1 -0
- package/dist/lib/terminal/manager.d.ts +103 -0
- package/dist/lib/terminal/manager.d.ts.map +1 -0
- package/dist/lib/terminal/manager.js +237 -0
- package/dist/lib/terminal/manager.js.map +1 -0
- package/dist/lib/terminal/network-error-detector.d.ts +19 -0
- package/dist/lib/terminal/network-error-detector.d.ts.map +1 -0
- package/dist/lib/terminal/network-error-detector.js +98 -0
- package/dist/lib/terminal/network-error-detector.js.map +1 -0
- package/dist/lib/terminal/pool.d.ts +143 -0
- package/dist/lib/terminal/pool.d.ts.map +1 -0
- package/dist/lib/terminal/pool.js +554 -0
- package/dist/lib/terminal/pool.js.map +1 -0
- package/dist/lib/terminal/pty.d.ts +59 -0
- package/dist/lib/terminal/pty.d.ts.map +1 -0
- package/dist/lib/terminal/pty.js +224 -0
- package/dist/lib/terminal/pty.js.map +1 -0
- package/dist/lib/terminal/resources.d.ts +63 -0
- package/dist/lib/terminal/resources.d.ts.map +1 -0
- package/dist/lib/terminal/resources.js +62 -0
- package/dist/lib/terminal/resources.js.map +1 -0
- package/dist/lib/terminal/scp.d.ts +30 -0
- package/dist/lib/terminal/scp.d.ts.map +1 -0
- package/dist/lib/terminal/scp.js +74 -0
- package/dist/lib/terminal/scp.js.map +1 -0
- package/dist/lib/terminal/sessions.d.ts +101 -0
- package/dist/lib/terminal/sessions.d.ts.map +1 -0
- package/dist/lib/terminal/sessions.js +718 -0
- package/dist/lib/terminal/sessions.js.map +1 -0
- package/dist/lib/terminal/tmux-exec.d.ts +50 -0
- package/dist/lib/terminal/tmux-exec.d.ts.map +1 -0
- package/dist/lib/terminal/tmux-exec.js +79 -0
- package/dist/lib/terminal/tmux-exec.js.map +1 -0
- package/dist/lib/terminal/tmux-local.d.ts +273 -0
- package/dist/lib/terminal/tmux-local.d.ts.map +1 -0
- package/dist/lib/terminal/tmux-local.js +629 -0
- package/dist/lib/terminal/tmux-local.js.map +1 -0
- package/dist/lib/terminal/tmux-manager.d.ts +328 -0
- package/dist/lib/terminal/tmux-manager.d.ts.map +1 -0
- package/dist/lib/terminal/tmux-manager.js +667 -0
- package/dist/lib/terminal/tmux-manager.js.map +1 -0
- package/dist/lib/terminal/tmux.d.ts +213 -0
- package/dist/lib/terminal/tmux.d.ts.map +1 -0
- package/dist/lib/terminal/tmux.js +528 -0
- package/dist/lib/terminal/tmux.js.map +1 -0
- package/dist/lib/terminal/types.d.ts +18 -0
- package/dist/lib/terminal/types.d.ts.map +1 -0
- package/dist/lib/terminal/types.js +5 -0
- package/dist/lib/terminal/types.js.map +1 -0
- package/lmdb.db +0 -0
- package/lmdb.db-lock +0 -0
- package/package.json +48 -0
- package/src/index.js +2034 -0
- package/src/index.ts +2295 -0
- package/src/lib/hetzner/actions.ts +1056 -0
- package/src/lib/hetzner/auth.ts +37 -0
- package/src/lib/hetzner/bootstrap/cloud-init.ts +394 -0
- package/src/lib/hetzner/bootstrap/firewall.ts +342 -0
- package/src/lib/hetzner/bootstrap/genesis.ts +518 -0
- package/src/lib/hetzner/bootstrap/index.ts +71 -0
- package/src/lib/hetzner/bootstrap/kernel-hardening.test.ts +230 -0
- package/src/lib/hetzner/bootstrap/kernel-hardening.ts +272 -0
- package/src/lib/hetzner/bootstrap/security-audit.ts +124 -0
- package/src/lib/hetzner/bootstrap/ssh-hardening.ts +192 -0
- package/src/lib/hetzner/client.ts +177 -0
- package/src/lib/hetzner/config.ts +5 -0
- package/src/lib/hetzner/errors.ts +371 -0
- package/src/lib/hetzner/index.ts +56 -0
- package/src/lib/hetzner/pricing.ts +422 -0
- package/src/lib/hetzner/schemas.ts +765 -0
- package/src/lib/hetzner/server-status.ts +81 -0
- package/src/lib/hetzner/servers.ts +568 -0
- package/src/lib/hetzner/ssh-keys.ts +122 -0
- package/src/lib/hetzner/ssh-setup.ts +218 -0
- package/src/lib/hetzner/types.ts +419 -0
- package/src/lib/hetzner/volumes.ts +229 -0
- package/src/lib/resources.ts +156 -0
- package/src/lib/ssh/flags.ts +578 -0
- package/src/lib/ssh/index.ts +5 -0
- package/src/lib/terminal/client.ts +55 -0
- package/src/lib/terminal/config.ts +489 -0
- package/src/lib/terminal/error.ts +13 -0
- package/src/lib/terminal/exec.ts +128 -0
- package/src/lib/terminal/files.ts +636 -0
- package/src/lib/terminal/index.ts +71 -0
- package/src/lib/terminal/pool.ts +662 -0
- package/src/lib/terminal/scp.ts +109 -0
- package/src/lib/terminal/tmux-exec.ts +96 -0
- package/src/lib/terminal/tmux.ts +711 -0
- package/src/lib/terminal/types.ts +19 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/lib/terminal/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core SSH client for executing commands on remote servers
|
|
3
|
+
* Uses persistent connection pool for efficient reuse
|
|
4
|
+
* Uses base64 encoding to avoid shell escaping issues
|
|
5
|
+
*/
|
|
6
|
+
import type { SSHOptions } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Execute a command on a remote server via SSH
|
|
9
|
+
* Uses persistent connection pool for better performance
|
|
10
|
+
* @param command - Shell command to execute
|
|
11
|
+
* @param options - SSH connection options
|
|
12
|
+
* @returns Command output as string
|
|
13
|
+
*/
|
|
14
|
+
export declare function execSSH(command: string, options: SSHOptions): Promise<string>;
|
|
15
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/terminal/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,MAAM,CAAC,CAgCjB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core SSH client for executing commands on remote servers
|
|
3
|
+
* Uses persistent connection pool for efficient reuse
|
|
4
|
+
* Uses base64 encoding to avoid shell escaping issues
|
|
5
|
+
*/
|
|
6
|
+
import { SSHError } from "./error.js";
|
|
7
|
+
import { SSHOptionsSchema, SSHCommandSchema } from '@ebowwa/codespaces-types/runtime/ssh';
|
|
8
|
+
import { getSSHPool } from './pool.js';
|
|
9
|
+
/**
|
|
10
|
+
* Execute a command on a remote server via SSH
|
|
11
|
+
* Uses persistent connection pool for better performance
|
|
12
|
+
* @param command - Shell command to execute
|
|
13
|
+
* @param options - SSH connection options
|
|
14
|
+
* @returns Command output as string
|
|
15
|
+
*/
|
|
16
|
+
export async function execSSH(command, options) {
|
|
17
|
+
// Validate inputs with Zod
|
|
18
|
+
const validatedCommand = SSHCommandSchema.safeParse(command);
|
|
19
|
+
if (!validatedCommand.success) {
|
|
20
|
+
throw new Error(`Invalid SSH command: ${validatedCommand.error.issues.map(i => i.message).join(', ')}`);
|
|
21
|
+
}
|
|
22
|
+
const validatedOptions = SSHOptionsSchema.safeParse(options);
|
|
23
|
+
if (!validatedOptions.success) {
|
|
24
|
+
throw new Error(`Invalid SSH options: ${validatedOptions.error.issues.map(i => i.message).join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
const { host, user = "root", timeout = 5, port = 22, keyPath, password } = validatedOptions.data;
|
|
27
|
+
try {
|
|
28
|
+
// Get connection pool
|
|
29
|
+
const pool = getSSHPool();
|
|
30
|
+
// Execute command directly via SSH - the pool handles proper escaping
|
|
31
|
+
const output = await pool.exec(validatedCommand.data, {
|
|
32
|
+
host,
|
|
33
|
+
user,
|
|
34
|
+
timeout,
|
|
35
|
+
port,
|
|
36
|
+
keyPath,
|
|
37
|
+
password,
|
|
38
|
+
});
|
|
39
|
+
return output || "0";
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw new SSHError(`SSH command failed: ${validatedCommand.data}`, error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/terminal/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,OAAmB;IAEnB,2BAA2B;IAC3B,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC5D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACzG,CAAC;IAED,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC5D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACzG,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC;IAEjG,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAA;QAEzB,sEAAsE;QACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACpD,IAAI;YACJ,IAAI;YACJ,OAAO;YACP,IAAI;YACJ,OAAO;YACP,QAAQ;SACT,CAAC,CAAA;QAEF,OAAO,MAAM,IAAI,GAAG,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,uBAAuB,gBAAgB,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSH Config Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages ~/.ssh/config entries for easy node access.
|
|
5
|
+
* When a node is created, adds an alias so you can:
|
|
6
|
+
* ssh node-<id> or ssh <name>
|
|
7
|
+
* Instead of:
|
|
8
|
+
* ssh -i ~/.../key -o StrictHostKeyChecking=no root@167.235.236.8
|
|
9
|
+
*/
|
|
10
|
+
export interface SSHConfigEntry {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
host: string;
|
|
14
|
+
user?: string;
|
|
15
|
+
keyPath: string;
|
|
16
|
+
port?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Add or update an SSH config entry for a node
|
|
20
|
+
*/
|
|
21
|
+
export declare function addSSHConfigEntry(entry: SSHConfigEntry): void;
|
|
22
|
+
/**
|
|
23
|
+
* Remove an SSH config entry for a node
|
|
24
|
+
*/
|
|
25
|
+
export declare function removeSSHConfigEntry(id: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Update IP address for an existing node (e.g., after rebuild)
|
|
28
|
+
*/
|
|
29
|
+
export declare function updateSSHConfigHost(id: string, newHost: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* List all managed SSH config entries
|
|
32
|
+
*/
|
|
33
|
+
export declare function listSSHConfigEntries(): SSHConfigEntry[];
|
|
34
|
+
/**
|
|
35
|
+
* Validate SSH connection works with the configured key
|
|
36
|
+
* Returns true if connection succeeds, throws on failure with diagnostic info
|
|
37
|
+
*/
|
|
38
|
+
export declare function validateSSHConnection(host: string, keyPath: string, user?: string, timeoutSeconds?: number): Promise<{
|
|
39
|
+
success: boolean;
|
|
40
|
+
error?: string;
|
|
41
|
+
diagnostics?: string;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Ensure SSH key is loaded correctly and agent doesn't interfere
|
|
45
|
+
* Clears wrong keys from agent and adds the correct one
|
|
46
|
+
*/
|
|
47
|
+
export declare function ensureCorrectSSHKey(keyPath: string): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Wait for SSH to become ready on a new server
|
|
50
|
+
* Polls until connection succeeds or timeout
|
|
51
|
+
*/
|
|
52
|
+
export declare function waitForSSHReady(host: string, keyPath: string, options?: {
|
|
53
|
+
user?: string;
|
|
54
|
+
maxAttempts?: number;
|
|
55
|
+
intervalMs?: number;
|
|
56
|
+
onAttempt?: (attempt: number, maxAttempts: number) => void;
|
|
57
|
+
}): Promise<{
|
|
58
|
+
success: boolean;
|
|
59
|
+
attempts: number;
|
|
60
|
+
error?: string;
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* Sync result for a single node
|
|
64
|
+
*/
|
|
65
|
+
export interface SyncResult {
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
ip: string;
|
|
69
|
+
status: "added" | "updated" | "skipped" | "error";
|
|
70
|
+
error?: string;
|
|
71
|
+
sshReady?: boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Sync all existing Hetzner nodes to SSH config
|
|
75
|
+
* Call this to add aliases for nodes created before this feature
|
|
76
|
+
*/
|
|
77
|
+
export declare function syncNodesToSSHConfig(nodes: Array<{
|
|
78
|
+
id: string;
|
|
79
|
+
name: string;
|
|
80
|
+
ip: string;
|
|
81
|
+
keyPath: string;
|
|
82
|
+
}>, options?: {
|
|
83
|
+
validateSSH?: boolean;
|
|
84
|
+
onProgress?: (result: SyncResult) => void;
|
|
85
|
+
}): Promise<SyncResult[]>;
|
|
86
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/terminal/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuCH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA6HD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAiB7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAqBrD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAwBrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,EAAE,CAKvD;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAe,EACrB,cAAc,GAAE,MAAW,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiDrE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBxE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD,GACL,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCjE;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,EACF,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC,GACL,OAAO,CAAC,UAAU,EAAE,CAAC,CAyDvB"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSH Config Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages ~/.ssh/config entries for easy node access.
|
|
5
|
+
* When a node is created, adds an alias so you can:
|
|
6
|
+
* ssh node-<id> or ssh <name>
|
|
7
|
+
* Instead of:
|
|
8
|
+
* ssh -i ~/.../key -o StrictHostKeyChecking=no root@167.235.236.8
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, realpathSync } from "fs";
|
|
11
|
+
import { join, dirname, isAbsolute, resolve } from "path";
|
|
12
|
+
import { exec } from "child_process";
|
|
13
|
+
import { promisify } from "util";
|
|
14
|
+
const execAsync = promisify(exec);
|
|
15
|
+
const SSH_CONFIG_PATH = join(process.env.HOME || "~", ".ssh", "config");
|
|
16
|
+
// Marker comments to identify our managed entries
|
|
17
|
+
const BLOCK_START = "# >>> hetzner-codespaces managed";
|
|
18
|
+
const BLOCK_END = "# <<< hetzner-codespaces managed";
|
|
19
|
+
/**
|
|
20
|
+
* Resolve a path to absolute, handling relative paths
|
|
21
|
+
*/
|
|
22
|
+
function resolveKeyPath(keyPath) {
|
|
23
|
+
if (isAbsolute(keyPath)) {
|
|
24
|
+
return keyPath;
|
|
25
|
+
}
|
|
26
|
+
// Try to resolve relative to current working directory
|
|
27
|
+
const resolved = resolve(process.cwd(), keyPath);
|
|
28
|
+
// If file exists at resolved path, use it
|
|
29
|
+
if (existsSync(resolved)) {
|
|
30
|
+
try {
|
|
31
|
+
return realpathSync(resolved);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return resolved;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Return as-is if we can't resolve it
|
|
38
|
+
return keyPath;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Read the current SSH config file
|
|
42
|
+
*/
|
|
43
|
+
function readSSHConfig() {
|
|
44
|
+
if (!existsSync(SSH_CONFIG_PATH)) {
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
return readFileSync(SSH_CONFIG_PATH, "utf-8");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Write to SSH config file, ensuring proper permissions
|
|
51
|
+
*/
|
|
52
|
+
function writeSSHConfig(content) {
|
|
53
|
+
const sshDir = dirname(SSH_CONFIG_PATH);
|
|
54
|
+
// Ensure ~/.ssh exists with correct permissions
|
|
55
|
+
if (!existsSync(sshDir)) {
|
|
56
|
+
mkdirSync(sshDir, { mode: 0o700, recursive: true });
|
|
57
|
+
}
|
|
58
|
+
writeFileSync(SSH_CONFIG_PATH, content, { mode: 0o600 });
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract our managed block from SSH config
|
|
62
|
+
*/
|
|
63
|
+
function extractManagedBlock(config) {
|
|
64
|
+
const startIdx = config.indexOf(BLOCK_START);
|
|
65
|
+
const endIdx = config.indexOf(BLOCK_END);
|
|
66
|
+
if (startIdx === -1 || endIdx === -1) {
|
|
67
|
+
return { before: config, managed: "", after: "" };
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
before: config.substring(0, startIdx),
|
|
71
|
+
managed: config.substring(startIdx, endIdx + BLOCK_END.length + 1),
|
|
72
|
+
after: config.substring(endIdx + BLOCK_END.length + 1),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Parse managed block into entries
|
|
77
|
+
*/
|
|
78
|
+
function parseManagedEntries(managed) {
|
|
79
|
+
const entries = new Map();
|
|
80
|
+
// Match Host blocks within managed section
|
|
81
|
+
const hostRegex = /# node-id: (\S+)\nHost ([^\n]+)\n([\s\S]*?)(?=# node-id:|$)/g;
|
|
82
|
+
let match;
|
|
83
|
+
while ((match = hostRegex.exec(managed)) !== null) {
|
|
84
|
+
const id = match[1];
|
|
85
|
+
const hosts = match[2].trim();
|
|
86
|
+
const body = match[3];
|
|
87
|
+
// Parse body for HostName, User, IdentityFile, Port
|
|
88
|
+
const hostMatch = body.match(/HostName\s+(\S+)/);
|
|
89
|
+
const userMatch = body.match(/User\s+(\S+)/);
|
|
90
|
+
const keyMatch = body.match(/IdentityFile\s+(\S+)/);
|
|
91
|
+
const portMatch = body.match(/Port\s+(\d+)/);
|
|
92
|
+
if (hostMatch && keyMatch) {
|
|
93
|
+
entries.set(id, {
|
|
94
|
+
id,
|
|
95
|
+
name: hosts.split(/\s+/)[1] || hosts, // Second alias is usually the name
|
|
96
|
+
host: hostMatch[1],
|
|
97
|
+
user: userMatch?.[1] || "root",
|
|
98
|
+
keyPath: keyMatch[1],
|
|
99
|
+
port: portMatch ? parseInt(portMatch[1]) : 22,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return entries;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Generate SSH config block for an entry
|
|
107
|
+
*/
|
|
108
|
+
function generateEntryBlock(entry) {
|
|
109
|
+
// Create aliases: node-<id> and <name> (sanitized)
|
|
110
|
+
const sanitizedName = entry.name.replace(/[^a-zA-Z0-9_-]/g, "-");
|
|
111
|
+
const aliases = `node-${entry.id} ${sanitizedName}`;
|
|
112
|
+
// Resolve key path to absolute
|
|
113
|
+
const absoluteKeyPath = resolveKeyPath(entry.keyPath);
|
|
114
|
+
return `# node-id: ${entry.id}
|
|
115
|
+
Host ${aliases}
|
|
116
|
+
HostName ${entry.host}
|
|
117
|
+
User ${entry.user || "root"}
|
|
118
|
+
IdentityFile "${absoluteKeyPath}"
|
|
119
|
+
Port ${entry.port || 22}
|
|
120
|
+
StrictHostKeyChecking no
|
|
121
|
+
UserKnownHostsFile /dev/null
|
|
122
|
+
LogLevel ERROR
|
|
123
|
+
IdentitiesOnly yes
|
|
124
|
+
|
|
125
|
+
`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Rebuild the managed block from entries
|
|
129
|
+
*/
|
|
130
|
+
function buildManagedBlock(entries) {
|
|
131
|
+
if (entries.size === 0) {
|
|
132
|
+
return "";
|
|
133
|
+
}
|
|
134
|
+
let block = `${BLOCK_START}\n`;
|
|
135
|
+
block += "# Auto-generated SSH aliases for Hetzner nodes\n";
|
|
136
|
+
block += "# Do not edit manually - changes will be overwritten\n\n";
|
|
137
|
+
for (const entry of entries.values()) {
|
|
138
|
+
block += generateEntryBlock(entry);
|
|
139
|
+
}
|
|
140
|
+
block += `${BLOCK_END}\n`;
|
|
141
|
+
return block;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Add or update an SSH config entry for a node
|
|
145
|
+
*/
|
|
146
|
+
export function addSSHConfigEntry(entry) {
|
|
147
|
+
const config = readSSHConfig();
|
|
148
|
+
const { before, managed, after } = extractManagedBlock(config);
|
|
149
|
+
// Parse existing entries
|
|
150
|
+
const entries = parseManagedEntries(managed);
|
|
151
|
+
// Add/update entry
|
|
152
|
+
entries.set(entry.id, entry);
|
|
153
|
+
// Rebuild config
|
|
154
|
+
const newManaged = buildManagedBlock(entries);
|
|
155
|
+
const newConfig = before.trimEnd() + "\n\n" + newManaged + after.trimStart();
|
|
156
|
+
writeSSHConfig(newConfig);
|
|
157
|
+
console.log(`[SSH Config] Added alias: ssh node-${entry.id} / ssh ${entry.name.replace(/[^a-zA-Z0-9_-]/g, "-")}`);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Remove an SSH config entry for a node
|
|
161
|
+
*/
|
|
162
|
+
export function removeSSHConfigEntry(id) {
|
|
163
|
+
const config = readSSHConfig();
|
|
164
|
+
const { before, managed, after } = extractManagedBlock(config);
|
|
165
|
+
// Parse existing entries
|
|
166
|
+
const entries = parseManagedEntries(managed);
|
|
167
|
+
// Remove entry
|
|
168
|
+
if (!entries.has(id)) {
|
|
169
|
+
return; // Nothing to remove
|
|
170
|
+
}
|
|
171
|
+
entries.delete(id);
|
|
172
|
+
// Rebuild config
|
|
173
|
+
const newManaged = buildManagedBlock(entries);
|
|
174
|
+
const newConfig = before.trimEnd() + (newManaged ? "\n\n" + newManaged : "") + after.trimStart();
|
|
175
|
+
writeSSHConfig(newConfig);
|
|
176
|
+
console.log(`[SSH Config] Removed alias for node-${id}`);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Update IP address for an existing node (e.g., after rebuild)
|
|
180
|
+
*/
|
|
181
|
+
export function updateSSHConfigHost(id, newHost) {
|
|
182
|
+
const config = readSSHConfig();
|
|
183
|
+
const { before, managed, after } = extractManagedBlock(config);
|
|
184
|
+
// Parse existing entries
|
|
185
|
+
const entries = parseManagedEntries(managed);
|
|
186
|
+
// Update entry
|
|
187
|
+
const entry = entries.get(id);
|
|
188
|
+
if (!entry) {
|
|
189
|
+
console.warn(`[SSH Config] No entry found for node-${id}`);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
entry.host = newHost;
|
|
193
|
+
entries.set(id, entry);
|
|
194
|
+
// Rebuild config
|
|
195
|
+
const newManaged = buildManagedBlock(entries);
|
|
196
|
+
const newConfig = before.trimEnd() + "\n\n" + newManaged + after.trimStart();
|
|
197
|
+
writeSSHConfig(newConfig);
|
|
198
|
+
console.log(`[SSH Config] Updated node-${id} host to ${newHost}`);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* List all managed SSH config entries
|
|
202
|
+
*/
|
|
203
|
+
export function listSSHConfigEntries() {
|
|
204
|
+
const config = readSSHConfig();
|
|
205
|
+
const { managed } = extractManagedBlock(config);
|
|
206
|
+
const entries = parseManagedEntries(managed);
|
|
207
|
+
return Array.from(entries.values());
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Validate SSH connection works with the configured key
|
|
211
|
+
* Returns true if connection succeeds, throws on failure with diagnostic info
|
|
212
|
+
*/
|
|
213
|
+
export async function validateSSHConnection(host, keyPath, user = "root", timeoutSeconds = 10) {
|
|
214
|
+
try {
|
|
215
|
+
// Test connection with explicit key and bypass agent
|
|
216
|
+
const cmd = [
|
|
217
|
+
"ssh",
|
|
218
|
+
"-o", "StrictHostKeyChecking=no",
|
|
219
|
+
"-o", "UserKnownHostsFile=/dev/null",
|
|
220
|
+
"-o", `ConnectTimeout=${timeoutSeconds}`,
|
|
221
|
+
"-o", "IdentitiesOnly=yes", // Only use specified key, not ssh-agent
|
|
222
|
+
"-o", "BatchMode=yes", // Fail instead of prompting for password
|
|
223
|
+
"-i", keyPath,
|
|
224
|
+
`${user}@${host}`,
|
|
225
|
+
"echo CONNECTION_OK"
|
|
226
|
+
].join(" ");
|
|
227
|
+
const { stdout } = await execAsync(cmd, { timeout: (timeoutSeconds + 5) * 1000 });
|
|
228
|
+
if (stdout.includes("CONNECTION_OK")) {
|
|
229
|
+
return { success: true };
|
|
230
|
+
}
|
|
231
|
+
return {
|
|
232
|
+
success: false,
|
|
233
|
+
error: "Connection established but test command failed",
|
|
234
|
+
diagnostics: stdout
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
// Gather diagnostic info
|
|
239
|
+
let diagnostics = "";
|
|
240
|
+
// Check if key file exists
|
|
241
|
+
if (!existsSync(keyPath)) {
|
|
242
|
+
diagnostics += `Key file missing: ${keyPath}\n`;
|
|
243
|
+
}
|
|
244
|
+
// Check ssh-agent keys
|
|
245
|
+
try {
|
|
246
|
+
const { stdout: agentKeys } = await execAsync("ssh-add -l 2>&1");
|
|
247
|
+
diagnostics += `ssh-agent keys:\n${agentKeys}\n`;
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
diagnostics += "ssh-agent: no keys loaded\n";
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
success: false,
|
|
254
|
+
error: error.message || String(error),
|
|
255
|
+
diagnostics,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Ensure SSH key is loaded correctly and agent doesn't interfere
|
|
261
|
+
* Clears wrong keys from agent and adds the correct one
|
|
262
|
+
*/
|
|
263
|
+
export async function ensureCorrectSSHKey(keyPath) {
|
|
264
|
+
try {
|
|
265
|
+
// Get fingerprint of our key
|
|
266
|
+
const { stdout: ourFingerprint } = await execAsync(`ssh-keygen -lf "${keyPath}.pub"`);
|
|
267
|
+
const ourFp = ourFingerprint.split(/\s+/)[1];
|
|
268
|
+
// Check what's in the agent
|
|
269
|
+
const { stdout: agentList } = await execAsync("ssh-add -l 2>&1").catch(() => ({ stdout: "" }));
|
|
270
|
+
// If our key isn't in the agent, add it
|
|
271
|
+
if (!agentList.includes(ourFp)) {
|
|
272
|
+
// Clear agent and add our key
|
|
273
|
+
await execAsync("ssh-add -D 2>/dev/null").catch(() => { });
|
|
274
|
+
await execAsync(`ssh-add "${keyPath}"`);
|
|
275
|
+
console.log(`[SSH] Added key to ssh-agent: ${keyPath}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
// Non-fatal - we can still use the key file directly
|
|
280
|
+
console.warn(`[SSH] Could not configure ssh-agent: ${error}`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Wait for SSH to become ready on a new server
|
|
285
|
+
* Polls until connection succeeds or timeout
|
|
286
|
+
*/
|
|
287
|
+
export async function waitForSSHReady(host, keyPath, options = {}) {
|
|
288
|
+
const { user = "root", maxAttempts = 30, // 30 attempts
|
|
289
|
+
intervalMs = 5000, // 5 seconds between attempts = 2.5 min max wait
|
|
290
|
+
onAttempt, } = options;
|
|
291
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
292
|
+
onAttempt?.(attempt, maxAttempts);
|
|
293
|
+
const result = await validateSSHConnection(host, keyPath, user, 5);
|
|
294
|
+
if (result.success) {
|
|
295
|
+
return { success: true, attempts: attempt };
|
|
296
|
+
}
|
|
297
|
+
// Check for fatal errors (not just "connection refused")
|
|
298
|
+
if (result.error?.includes("Permission denied")) {
|
|
299
|
+
// Key mismatch - won't resolve by waiting
|
|
300
|
+
return {
|
|
301
|
+
success: false,
|
|
302
|
+
attempts: attempt,
|
|
303
|
+
error: `SSH key rejected: ${result.error}\n${result.diagnostics || ""}`,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
if (attempt < maxAttempts) {
|
|
307
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
311
|
+
success: false,
|
|
312
|
+
attempts: maxAttempts,
|
|
313
|
+
error: `SSH not ready after ${maxAttempts} attempts (${(maxAttempts * intervalMs) / 1000}s)`,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Sync all existing Hetzner nodes to SSH config
|
|
318
|
+
* Call this to add aliases for nodes created before this feature
|
|
319
|
+
*/
|
|
320
|
+
export async function syncNodesToSSHConfig(nodes, options = {}) {
|
|
321
|
+
const { validateSSH = false, onProgress } = options;
|
|
322
|
+
const results = [];
|
|
323
|
+
// Get current entries
|
|
324
|
+
const existingEntries = listSSHConfigEntries();
|
|
325
|
+
const existingIds = new Set(existingEntries.map((e) => e.id));
|
|
326
|
+
for (const node of nodes) {
|
|
327
|
+
const result = {
|
|
328
|
+
id: node.id,
|
|
329
|
+
name: node.name,
|
|
330
|
+
ip: node.ip,
|
|
331
|
+
status: "added",
|
|
332
|
+
};
|
|
333
|
+
try {
|
|
334
|
+
// Check if already exists
|
|
335
|
+
if (existingIds.has(node.id)) {
|
|
336
|
+
const existing = existingEntries.find((e) => e.id === node.id);
|
|
337
|
+
if (existing?.host === node.ip) {
|
|
338
|
+
result.status = "skipped";
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
// IP changed, update it
|
|
342
|
+
updateSSHConfigHost(node.id, node.ip);
|
|
343
|
+
result.status = "updated";
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
// Add new entry
|
|
348
|
+
addSSHConfigEntry({
|
|
349
|
+
id: node.id,
|
|
350
|
+
name: node.name,
|
|
351
|
+
host: node.ip,
|
|
352
|
+
user: "root",
|
|
353
|
+
keyPath: node.keyPath,
|
|
354
|
+
});
|
|
355
|
+
result.status = "added";
|
|
356
|
+
}
|
|
357
|
+
// Optionally validate SSH works
|
|
358
|
+
if (validateSSH && result.status !== "skipped") {
|
|
359
|
+
const sshResult = await validateSSHConnection(node.ip, node.keyPath);
|
|
360
|
+
result.sshReady = sshResult.success;
|
|
361
|
+
if (!sshResult.success) {
|
|
362
|
+
result.error = sshResult.error;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
result.status = "error";
|
|
368
|
+
result.error = String(error);
|
|
369
|
+
}
|
|
370
|
+
results.push(result);
|
|
371
|
+
onProgress?.(result);
|
|
372
|
+
}
|
|
373
|
+
return results;
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/terminal/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/lib/terminal/error.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,QAAS,SAAQ,KAAK;aAGf,KAAK,CAAC,EAAE,OAAO;gBAD/B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/lib/terminal/error.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IAFlB,YACE,OAAe,EACC,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
|