synapse-mcp 1.0.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/README.md +607 -0
- package/dist/constants.d.ts +23 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +58 -0
- package/dist/constants.js.map +1 -0
- package/dist/formatters/index.d.ts +275 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +461 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +178 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/common.d.ts +48 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +69 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/discriminator.d.ts +20 -0
- package/dist/schemas/discriminator.d.ts.map +1 -0
- package/dist/schemas/discriminator.js +25 -0
- package/dist/schemas/discriminator.js.map +1 -0
- package/dist/schemas/flux/compose.d.ts +93 -0
- package/dist/schemas/flux/compose.d.ts.map +1 -0
- package/dist/schemas/flux/compose.js +112 -0
- package/dist/schemas/flux/compose.js.map +1 -0
- package/dist/schemas/flux/container.d.ts +144 -0
- package/dist/schemas/flux/container.d.ts.map +1 -0
- package/dist/schemas/flux/container.js +163 -0
- package/dist/schemas/flux/container.js.map +1 -0
- package/dist/schemas/flux/docker.d.ts +91 -0
- package/dist/schemas/flux/docker.d.ts.map +1 -0
- package/dist/schemas/flux/docker.js +101 -0
- package/dist/schemas/flux/docker.js.map +1 -0
- package/dist/schemas/flux/host.d.ts +61 -0
- package/dist/schemas/flux/host.d.ts.map +1 -0
- package/dist/schemas/flux/host.js +72 -0
- package/dist/schemas/flux/host.js.map +1 -0
- package/dist/schemas/flux/index.d.ts +20 -0
- package/dist/schemas/flux/index.d.ts.map +1 -0
- package/dist/schemas/flux/index.js +88 -0
- package/dist/schemas/flux/index.js.map +1 -0
- package/dist/schemas/index.d.ts +11 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +11 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/scout/index.d.ts +151 -0
- package/dist/schemas/scout/index.d.ts.map +1 -0
- package/dist/schemas/scout/index.js +41 -0
- package/dist/schemas/scout/index.js.map +1 -0
- package/dist/schemas/scout/logs.d.ts +48 -0
- package/dist/schemas/scout/logs.d.ts.map +1 -0
- package/dist/schemas/scout/logs.js +47 -0
- package/dist/schemas/scout/logs.js.map +1 -0
- package/dist/schemas/scout/simple.d.ts +68 -0
- package/dist/schemas/scout/simple.d.ts.map +1 -0
- package/dist/schemas/scout/simple.js +75 -0
- package/dist/schemas/scout/simple.js.map +1 -0
- package/dist/schemas/scout/zfs.d.ts +37 -0
- package/dist/schemas/scout/zfs.d.ts.map +1 -0
- package/dist/schemas/scout/zfs.js +36 -0
- package/dist/schemas/scout/zfs.js.map +1 -0
- package/dist/schemas/unified.d.ts +674 -0
- package/dist/schemas/unified.d.ts.map +1 -0
- package/dist/schemas/unified.js +453 -0
- package/dist/schemas/unified.js.map +1 -0
- package/dist/services/compose.d.ts +107 -0
- package/dist/services/compose.d.ts.map +1 -0
- package/dist/services/compose.js +308 -0
- package/dist/services/compose.js.map +1 -0
- package/dist/services/container.d.ts +69 -0
- package/dist/services/container.d.ts.map +1 -0
- package/dist/services/container.js +111 -0
- package/dist/services/container.js.map +1 -0
- package/dist/services/docker.d.ts +243 -0
- package/dist/services/docker.d.ts.map +1 -0
- package/dist/services/docker.js +812 -0
- package/dist/services/docker.js.map +1 -0
- package/dist/services/file-service.d.ts +79 -0
- package/dist/services/file-service.d.ts.map +1 -0
- package/dist/services/file-service.js +226 -0
- package/dist/services/file-service.js.map +1 -0
- package/dist/services/interfaces.d.ts +537 -0
- package/dist/services/interfaces.d.ts.map +1 -0
- package/dist/services/interfaces.js +2 -0
- package/dist/services/interfaces.js.map +1 -0
- package/dist/services/ssh-pool-exec.d.ts +10 -0
- package/dist/services/ssh-pool-exec.d.ts.map +1 -0
- package/dist/services/ssh-pool-exec.js +10 -0
- package/dist/services/ssh-pool-exec.js.map +1 -0
- package/dist/services/ssh-pool.d.ts +66 -0
- package/dist/services/ssh-pool.d.ts.map +1 -0
- package/dist/services/ssh-pool.js +253 -0
- package/dist/services/ssh-pool.js.map +1 -0
- package/dist/services/ssh-service.d.ts +39 -0
- package/dist/services/ssh-service.d.ts.map +1 -0
- package/dist/services/ssh-service.js +143 -0
- package/dist/services/ssh-service.js.map +1 -0
- package/dist/services/ssh.d.ts +37 -0
- package/dist/services/ssh.d.ts.map +1 -0
- package/dist/services/ssh.js +50 -0
- package/dist/services/ssh.js.map +1 -0
- package/dist/tools/flux.d.ts +14 -0
- package/dist/tools/flux.d.ts.map +1 -0
- package/dist/tools/flux.js +86 -0
- package/dist/tools/flux.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +43 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/scout.d.ts +14 -0
- package/dist/tools/scout.d.ts.map +1 -0
- package/dist/tools/scout.js +96 -0
- package/dist/tools/scout.js.map +1 -0
- package/dist/tools/unified.d.ts +7 -0
- package/dist/tools/unified.d.ts.map +1 -0
- package/dist/tools/unified.js +827 -0
- package/dist/tools/unified.js.map +1 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/errors.d.ts +60 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +131 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/help.d.ts +69 -0
- package/dist/utils/help.d.ts.map +1 -0
- package/dist/utils/help.js +259 -0
- package/dist/utils/help.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/path-security.d.ts +64 -0
- package/dist/utils/path-security.d.ts.map +1 -0
- package/dist/utils/path-security.js +138 -0
- package/dist/utils/path-security.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/services/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { HostConfig } from "../types.js";
|
|
2
|
+
import type { ISSHService, IFileService } from "./interfaces.js";
|
|
3
|
+
/**
|
|
4
|
+
* File service implementation for remote file operations via SSH.
|
|
5
|
+
* Provides secure file reading, directory listing, command execution,
|
|
6
|
+
* and file transfer capabilities across hosts.
|
|
7
|
+
*
|
|
8
|
+
* SECURITY: All paths are validated to prevent directory traversal attacks.
|
|
9
|
+
* Commands are validated against an allowlist unless explicitly overridden.
|
|
10
|
+
*/
|
|
11
|
+
export declare class FileService implements IFileService {
|
|
12
|
+
private readonly sshService;
|
|
13
|
+
constructor(sshService: ISSHService);
|
|
14
|
+
/**
|
|
15
|
+
* Validates a path for security issues (directory traversal, etc.)
|
|
16
|
+
*/
|
|
17
|
+
private validatePath;
|
|
18
|
+
/**
|
|
19
|
+
* Parses and validates a command, returning the safe escaped version.
|
|
20
|
+
* Validates base command against allowlist and escapes all arguments.
|
|
21
|
+
* Can be bypassed with HOMELAB_ALLOW_ANY_COMMAND=true env var.
|
|
22
|
+
*
|
|
23
|
+
* SECURITY: This prevents command injection via arguments like:
|
|
24
|
+
* "ls -la; rm -rf /" -> base="ls" passes, but "; rm -rf /" would execute
|
|
25
|
+
* Fix: Split into ["ls", "-la;", "rm", "-rf", "/"], escape each part
|
|
26
|
+
*/
|
|
27
|
+
private validateAndEscapeCommand;
|
|
28
|
+
/**
|
|
29
|
+
* Read content from a file on a remote host.
|
|
30
|
+
*/
|
|
31
|
+
readFile(host: HostConfig, path: string, maxSize: number): Promise<{
|
|
32
|
+
content: string;
|
|
33
|
+
size: number;
|
|
34
|
+
truncated: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* List contents of a directory on a remote host.
|
|
38
|
+
*/
|
|
39
|
+
listDirectory(host: HostConfig, path: string, showHidden: boolean): Promise<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Get tree representation of a directory structure.
|
|
42
|
+
*/
|
|
43
|
+
treeDirectory(host: HostConfig, path: string, depth: number): Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Execute a command in a working directory on a remote host.
|
|
46
|
+
*
|
|
47
|
+
* SECURITY: Command is validated against allowlist and all arguments
|
|
48
|
+
* are individually escaped to prevent injection attacks.
|
|
49
|
+
*/
|
|
50
|
+
executeCommand(host: HostConfig, path: string, command: string, timeout: number): Promise<{
|
|
51
|
+
stdout: string;
|
|
52
|
+
exitCode: number;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Find files matching a pattern on a remote host.
|
|
56
|
+
*/
|
|
57
|
+
findFiles(host: HostConfig, path: string, pattern: string, options: {
|
|
58
|
+
type?: "f" | "d" | "l";
|
|
59
|
+
maxDepth?: number;
|
|
60
|
+
limit?: number;
|
|
61
|
+
}): Promise<string>;
|
|
62
|
+
/**
|
|
63
|
+
* Transfer a file between hosts via SSH cat piping.
|
|
64
|
+
*
|
|
65
|
+
* SECURITY: Uses SSH cat piping instead of SCP to avoid path escaping
|
|
66
|
+
* issues with the user@host:path format. The source path is escaped
|
|
67
|
+
* for the source shell, and the target path is separately escaped
|
|
68
|
+
* inside the SSH command for the target shell.
|
|
69
|
+
*/
|
|
70
|
+
transferFile(sourceHost: HostConfig, sourcePath: string, targetHost: HostConfig, targetPath: string): Promise<{
|
|
71
|
+
bytesTransferred: number;
|
|
72
|
+
warning?: string;
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* Compare two files and return diff output.
|
|
76
|
+
*/
|
|
77
|
+
diffFiles(host1: HostConfig, path1: string, host2: HostConfig, path2: string, contextLines: number): Promise<string>;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=file-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-service.d.ts","sourceRoot":"","sources":["../../src/services/file-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAuBjE;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,YAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,WAAW;IAEpD;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;IAgChC;;OAEG;IACG,QAAQ,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAqBjE;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzF;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcnF;;;;;OAKG;IACG,cAAc,CAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBhD;;OAEG;IACG,SAAS,CACb,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACrE,OAAO,CAAC,MAAM,CAAC;IAgClB;;;;;;;OAOG;IACG,YAAY,CAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA+D1D;;OAEG;IACG,SAAS,CACb,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;CAiCnB"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { validateSecurePath, escapeShellArg, isSystemPath } from "../utils/path-security.js";
|
|
2
|
+
import { ALLOWED_COMMANDS, ENV_ALLOW_ANY_COMMAND, DEFAULT_COMMAND_TIMEOUT, MAX_COMMAND_TIMEOUT, MAX_TREE_DEPTH, MAX_FIND_LIMIT, MAX_DIFF_CONTEXT_LINES } from "../constants.js";
|
|
3
|
+
/**
|
|
4
|
+
* Validates that a number is a safe positive integer for shell interpolation.
|
|
5
|
+
* Prevents injection via malformed numbers like "5; rm -rf /".
|
|
6
|
+
*/
|
|
7
|
+
function validatePositiveInt(value, name, max) {
|
|
8
|
+
if (!Number.isInteger(value) || value < 1 || value > max) {
|
|
9
|
+
throw new Error(`${name} must be an integer between 1 and ${max}, got: ${value}`);
|
|
10
|
+
}
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* File service implementation for remote file operations via SSH.
|
|
15
|
+
* Provides secure file reading, directory listing, command execution,
|
|
16
|
+
* and file transfer capabilities across hosts.
|
|
17
|
+
*
|
|
18
|
+
* SECURITY: All paths are validated to prevent directory traversal attacks.
|
|
19
|
+
* Commands are validated against an allowlist unless explicitly overridden.
|
|
20
|
+
*/
|
|
21
|
+
export class FileService {
|
|
22
|
+
sshService;
|
|
23
|
+
constructor(sshService) {
|
|
24
|
+
this.sshService = sshService;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validates a path for security issues (directory traversal, etc.)
|
|
28
|
+
*/
|
|
29
|
+
validatePath(path) {
|
|
30
|
+
validateSecurePath(path, "path");
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parses and validates a command, returning the safe escaped version.
|
|
34
|
+
* Validates base command against allowlist and escapes all arguments.
|
|
35
|
+
* Can be bypassed with HOMELAB_ALLOW_ANY_COMMAND=true env var.
|
|
36
|
+
*
|
|
37
|
+
* SECURITY: This prevents command injection via arguments like:
|
|
38
|
+
* "ls -la; rm -rf /" -> base="ls" passes, but "; rm -rf /" would execute
|
|
39
|
+
* Fix: Split into ["ls", "-la;", "rm", "-rf", "/"], escape each part
|
|
40
|
+
*/
|
|
41
|
+
validateAndEscapeCommand(command) {
|
|
42
|
+
const allowAny = process.env[ENV_ALLOW_ANY_COMMAND] === "true";
|
|
43
|
+
// Split command into parts (handles multiple spaces)
|
|
44
|
+
const parts = command.trim().split(/\s+/).filter((p) => p.length > 0);
|
|
45
|
+
if (parts.length === 0) {
|
|
46
|
+
throw new Error("Command cannot be empty");
|
|
47
|
+
}
|
|
48
|
+
const baseCommand = parts[0];
|
|
49
|
+
// Validate base command against allowlist (unless bypassed)
|
|
50
|
+
if (!allowAny && !ALLOWED_COMMANDS.has(baseCommand)) {
|
|
51
|
+
throw new Error(`Command '${baseCommand}' not in allowed list. ` +
|
|
52
|
+
`Allowed: ${[...ALLOWED_COMMANDS].join(", ")}. ` +
|
|
53
|
+
`Set ${ENV_ALLOW_ANY_COMMAND}=true to allow any command.`);
|
|
54
|
+
}
|
|
55
|
+
// Escape all arguments individually to prevent injection
|
|
56
|
+
// Base command is NOT escaped (it's validated against allowlist)
|
|
57
|
+
// Arguments ARE escaped to prevent shell metacharacter injection
|
|
58
|
+
if (parts.length === 1) {
|
|
59
|
+
return baseCommand;
|
|
60
|
+
}
|
|
61
|
+
const escapedArgs = parts.slice(1).map((arg) => escapeShellArg(arg));
|
|
62
|
+
return `${baseCommand} ${escapedArgs.join(" ")}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Read content from a file on a remote host.
|
|
66
|
+
*/
|
|
67
|
+
async readFile(host, path, maxSize) {
|
|
68
|
+
this.validatePath(path);
|
|
69
|
+
const escapedPath = escapeShellArg(path);
|
|
70
|
+
// Read maxSize + 1 bytes to detect if truncation is needed
|
|
71
|
+
const command = `cat ${escapedPath} | head -c ${maxSize + 1}`;
|
|
72
|
+
const output = await this.sshService.executeSSHCommand(host, command, [], {
|
|
73
|
+
timeoutMs: DEFAULT_COMMAND_TIMEOUT
|
|
74
|
+
});
|
|
75
|
+
const truncated = output.length > maxSize;
|
|
76
|
+
const content = truncated ? output.slice(0, maxSize) : output;
|
|
77
|
+
return {
|
|
78
|
+
content,
|
|
79
|
+
size: output.length,
|
|
80
|
+
truncated
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* List contents of a directory on a remote host.
|
|
85
|
+
*/
|
|
86
|
+
async listDirectory(host, path, showHidden) {
|
|
87
|
+
this.validatePath(path);
|
|
88
|
+
const escapedPath = escapeShellArg(path);
|
|
89
|
+
const flags = showHidden ? "-la" : "-l";
|
|
90
|
+
const command = `ls ${flags} ${escapedPath}`;
|
|
91
|
+
return this.sshService.executeSSHCommand(host, command, [], {
|
|
92
|
+
timeoutMs: DEFAULT_COMMAND_TIMEOUT
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get tree representation of a directory structure.
|
|
97
|
+
*/
|
|
98
|
+
async treeDirectory(host, path, depth) {
|
|
99
|
+
this.validatePath(path);
|
|
100
|
+
// Validate depth is a safe integer to prevent injection
|
|
101
|
+
const safeDepth = validatePositiveInt(depth, "depth", MAX_TREE_DEPTH);
|
|
102
|
+
const escapedPath = escapeShellArg(path);
|
|
103
|
+
const command = `tree -L ${safeDepth} ${escapedPath}`;
|
|
104
|
+
return this.sshService.executeSSHCommand(host, command, [], {
|
|
105
|
+
timeoutMs: DEFAULT_COMMAND_TIMEOUT
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Execute a command in a working directory on a remote host.
|
|
110
|
+
*
|
|
111
|
+
* SECURITY: Command is validated against allowlist and all arguments
|
|
112
|
+
* are individually escaped to prevent injection attacks.
|
|
113
|
+
*/
|
|
114
|
+
async executeCommand(host, path, command, timeout) {
|
|
115
|
+
this.validatePath(path);
|
|
116
|
+
// Validate timeout is a safe integer
|
|
117
|
+
const safeTimeout = validatePositiveInt(timeout, "timeout", MAX_COMMAND_TIMEOUT);
|
|
118
|
+
// Validate base command and escape all arguments
|
|
119
|
+
const safeCommand = this.validateAndEscapeCommand(command);
|
|
120
|
+
const escapedPath = escapeShellArg(path);
|
|
121
|
+
const fullCommand = `cd ${escapedPath} && ${safeCommand}`;
|
|
122
|
+
const stdout = await this.sshService.executeSSHCommand(host, fullCommand, [], {
|
|
123
|
+
timeoutMs: safeTimeout
|
|
124
|
+
});
|
|
125
|
+
return { stdout, exitCode: 0 };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Find files matching a pattern on a remote host.
|
|
129
|
+
*/
|
|
130
|
+
async findFiles(host, path, pattern, options) {
|
|
131
|
+
this.validatePath(path);
|
|
132
|
+
const escapedPath = escapeShellArg(path);
|
|
133
|
+
const escapedPattern = escapeShellArg(pattern);
|
|
134
|
+
let command = `find ${escapedPath}`;
|
|
135
|
+
// Validate and add maxDepth if provided
|
|
136
|
+
if (options.maxDepth !== undefined) {
|
|
137
|
+
const safeMaxDepth = validatePositiveInt(options.maxDepth, "maxDepth", MAX_TREE_DEPTH);
|
|
138
|
+
command += ` -maxdepth ${safeMaxDepth}`;
|
|
139
|
+
}
|
|
140
|
+
// Type is validated by TypeScript (literal union), safe to use directly
|
|
141
|
+
if (options.type) {
|
|
142
|
+
command += ` -type ${options.type}`;
|
|
143
|
+
}
|
|
144
|
+
command += ` -name ${escapedPattern}`;
|
|
145
|
+
// Validate and add limit if provided
|
|
146
|
+
if (options.limit !== undefined) {
|
|
147
|
+
const safeLimit = validatePositiveInt(options.limit, "limit", MAX_FIND_LIMIT);
|
|
148
|
+
command += ` | head -n ${safeLimit}`;
|
|
149
|
+
}
|
|
150
|
+
return this.sshService.executeSSHCommand(host, command, [], {
|
|
151
|
+
timeoutMs: DEFAULT_COMMAND_TIMEOUT
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Transfer a file between hosts via SSH cat piping.
|
|
156
|
+
*
|
|
157
|
+
* SECURITY: Uses SSH cat piping instead of SCP to avoid path escaping
|
|
158
|
+
* issues with the user@host:path format. The source path is escaped
|
|
159
|
+
* for the source shell, and the target path is separately escaped
|
|
160
|
+
* inside the SSH command for the target shell.
|
|
161
|
+
*/
|
|
162
|
+
async transferFile(sourceHost, sourcePath, targetHost, targetPath) {
|
|
163
|
+
this.validatePath(sourcePath);
|
|
164
|
+
this.validatePath(targetPath);
|
|
165
|
+
let warning;
|
|
166
|
+
if (isSystemPath(targetPath)) {
|
|
167
|
+
warning = `Warning: target is a system path (${targetPath}). Proceed with caution.`;
|
|
168
|
+
}
|
|
169
|
+
const escapedSource = escapeShellArg(sourcePath);
|
|
170
|
+
// Get file size first
|
|
171
|
+
const sizeOutput = await this.sshService.executeSSHCommand(sourceHost, `stat -c %s ${escapedSource}`, [], { timeoutMs: DEFAULT_COMMAND_TIMEOUT });
|
|
172
|
+
const sizeStr = sizeOutput.trim();
|
|
173
|
+
const size = parseInt(sizeStr, 10);
|
|
174
|
+
if (isNaN(size) || size < 0) {
|
|
175
|
+
throw new Error(`Failed to get file size: stat returned '${sizeStr}'`);
|
|
176
|
+
}
|
|
177
|
+
// For same-host transfers, use simple cp
|
|
178
|
+
if (sourceHost.name === targetHost.name) {
|
|
179
|
+
const escapedTarget = escapeShellArg(targetPath);
|
|
180
|
+
await this.sshService.executeSSHCommand(sourceHost, `cp ${escapedSource} ${escapedTarget}`, [], { timeoutMs: 300000 });
|
|
181
|
+
return { bytesTransferred: size, warning };
|
|
182
|
+
}
|
|
183
|
+
// For cross-host transfers, use SSH cat piping
|
|
184
|
+
// This avoids SCP's path escaping issues with user@host:path format
|
|
185
|
+
// Command: cat /source/path | ssh user@target 'cat > /target/path'
|
|
186
|
+
const targetUser = targetHost.sshUser || "root";
|
|
187
|
+
const escapedTarget = escapeShellArg(targetPath);
|
|
188
|
+
// The target path needs to be escaped twice:
|
|
189
|
+
// 1. For the source host's shell (outer escapeShellArg)
|
|
190
|
+
// 2. For the target host's shell (inner escapeShellArg already applied)
|
|
191
|
+
// We wrap the entire remote command in single quotes, so we need to
|
|
192
|
+
// escape any single quotes in the target path for the outer shell
|
|
193
|
+
const remoteCmd = `cat > ${escapedTarget}`;
|
|
194
|
+
const escapedRemoteCmd = escapeShellArg(remoteCmd);
|
|
195
|
+
const transferCmd = `cat ${escapedSource} | ssh ${targetUser}@${targetHost.host} ${escapedRemoteCmd}`;
|
|
196
|
+
await this.sshService.executeSSHCommand(sourceHost, transferCmd, [], { timeoutMs: 300000 } // 5 minute timeout for transfers
|
|
197
|
+
);
|
|
198
|
+
return { bytesTransferred: size, warning };
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Compare two files and return diff output.
|
|
202
|
+
*/
|
|
203
|
+
async diffFiles(host1, path1, host2, path2, contextLines) {
|
|
204
|
+
this.validatePath(path1);
|
|
205
|
+
this.validatePath(path2);
|
|
206
|
+
// Validate contextLines is a safe integer
|
|
207
|
+
const safeContextLines = validatePositiveInt(contextLines, "contextLines", MAX_DIFF_CONTEXT_LINES);
|
|
208
|
+
// Same host: direct diff
|
|
209
|
+
if (host1.name === host2.name) {
|
|
210
|
+
const escapedPath1 = escapeShellArg(path1);
|
|
211
|
+
const escapedPath2 = escapeShellArg(path2);
|
|
212
|
+
// Use || true to prevent non-zero exit code when files differ
|
|
213
|
+
return this.sshService.executeSSHCommand(host1, `diff -u -U ${safeContextLines} ${escapedPath1} ${escapedPath2} || true`, [], { timeoutMs: DEFAULT_COMMAND_TIMEOUT });
|
|
214
|
+
}
|
|
215
|
+
// Cross-host: read both files and compare
|
|
216
|
+
const [content1, content2] = await Promise.all([
|
|
217
|
+
this.readFile(host1, path1, 10485760), // 10MB max
|
|
218
|
+
this.readFile(host2, path2, 10485760)
|
|
219
|
+
]);
|
|
220
|
+
if (content1.content === content2.content) {
|
|
221
|
+
return "(files are identical)";
|
|
222
|
+
}
|
|
223
|
+
return `--- ${host1.name}:${path1}\n+++ ${host2.name}:${path2}\n@@ differences exist (cross-host diff) @@`;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=file-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-service.js","sourceRoot":"","sources":["../../src/services/file-service.ts"],"names":[],"mappings":"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"}
|