@awcp/transport-sshfs 0.0.0-dev-202601301521 → 0.0.1
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/dist/delegator/credential-manager.d.ts +52 -15
- package/dist/delegator/credential-manager.d.ts.map +1 -1
- package/dist/delegator/credential-manager.js +106 -82
- package/dist/delegator/credential-manager.js.map +1 -1
- package/dist/delegator/index.d.ts +1 -1
- package/dist/delegator/index.d.ts.map +1 -1
- package/dist/delegator/index.js.map +1 -1
- package/dist/executor/index.d.ts +1 -1
- package/dist/executor/index.d.ts.map +1 -1
- package/dist/executor/index.js +1 -1
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/sshfs-client.d.ts +23 -20
- package/dist/executor/sshfs-client.d.ts.map +1 -1
- package/dist/executor/sshfs-client.js +32 -60
- package/dist/executor/sshfs-client.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -6
- package/dist/cli/setup.d.ts +0 -13
- package/dist/cli/setup.d.ts.map +0 -1
- package/dist/cli/setup.js +0 -286
- package/dist/cli/setup.js.map +0 -1
- package/dist/sshfs-transport.d.ts +0 -24
- package/dist/sshfs-transport.d.ts.map +0 -1
- package/dist/sshfs-transport.js +0 -93
- package/dist/sshfs-transport.js.map +0 -1
- package/dist/types.d.ts +0 -114
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
package/dist/sshfs-transport.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SSHFS Transport Adapter
|
|
3
|
-
*
|
|
4
|
-
* Implements TransportAdapter interface for SSHFS transport.
|
|
5
|
-
*/
|
|
6
|
-
import { CredentialManager } from './delegator/credential-manager.js';
|
|
7
|
-
import { SshfsMountClient } from './executor/sshfs-client.js';
|
|
8
|
-
export class SshfsTransport {
|
|
9
|
-
type = 'sshfs';
|
|
10
|
-
config;
|
|
11
|
-
credentialManager;
|
|
12
|
-
mountClient;
|
|
13
|
-
constructor(config = {}) {
|
|
14
|
-
this.config = config;
|
|
15
|
-
}
|
|
16
|
-
// ========== Delegator Side ==========
|
|
17
|
-
async prepare(params) {
|
|
18
|
-
if (!this.credentialManager) {
|
|
19
|
-
if (!this.config.delegator?.caKeyPath) {
|
|
20
|
-
throw new Error('SshfsTransport: delegator.caKeyPath is required for Delegator operations');
|
|
21
|
-
}
|
|
22
|
-
this.credentialManager = new CredentialManager({
|
|
23
|
-
keyDir: this.config.delegator.keyDir,
|
|
24
|
-
sshHost: this.config.delegator.host,
|
|
25
|
-
sshPort: this.config.delegator.port,
|
|
26
|
-
sshUser: this.config.delegator.user,
|
|
27
|
-
caKeyPath: this.config.delegator.caKeyPath,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
const { delegationId, exportPath, ttlSeconds } = params;
|
|
31
|
-
const { credential, endpoint } = await this.credentialManager.generateCredential(delegationId, ttlSeconds);
|
|
32
|
-
const mountInfo = {
|
|
33
|
-
transport: 'sshfs',
|
|
34
|
-
endpoint,
|
|
35
|
-
exportLocator: exportPath,
|
|
36
|
-
credential,
|
|
37
|
-
};
|
|
38
|
-
return { mountInfo };
|
|
39
|
-
}
|
|
40
|
-
async cleanup(delegationId) {
|
|
41
|
-
await this.credentialManager?.revokeCredential(delegationId);
|
|
42
|
-
}
|
|
43
|
-
// ========== Executor Side ==========
|
|
44
|
-
async checkDependency() {
|
|
45
|
-
this.ensureMountClient();
|
|
46
|
-
const result = await this.mountClient.checkDependency();
|
|
47
|
-
return {
|
|
48
|
-
available: result.available,
|
|
49
|
-
hint: result.available
|
|
50
|
-
? undefined
|
|
51
|
-
: 'Install sshfs: brew install macfuse && brew install sshfs (macOS) or apt install sshfs (Linux)',
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
async setup(params) {
|
|
55
|
-
this.ensureMountClient();
|
|
56
|
-
const { mountInfo, workDir } = params;
|
|
57
|
-
if (mountInfo.transport !== 'sshfs') {
|
|
58
|
-
throw new Error(`SshfsTransport: unexpected transport type: ${mountInfo.transport}`);
|
|
59
|
-
}
|
|
60
|
-
const info = mountInfo;
|
|
61
|
-
await this.mountClient.mount({
|
|
62
|
-
endpoint: info.endpoint,
|
|
63
|
-
exportLocator: info.exportLocator,
|
|
64
|
-
credential: info.credential,
|
|
65
|
-
mountPoint: workDir,
|
|
66
|
-
options: info.mountOptions,
|
|
67
|
-
});
|
|
68
|
-
return workDir;
|
|
69
|
-
}
|
|
70
|
-
async teardown(params) {
|
|
71
|
-
await this.mountClient?.unmount(params.workDir);
|
|
72
|
-
}
|
|
73
|
-
// ========== Helpers ==========
|
|
74
|
-
ensureMountClient() {
|
|
75
|
-
if (!this.mountClient) {
|
|
76
|
-
this.mountClient = new SshfsMountClient({
|
|
77
|
-
tempKeyDir: this.config.executor?.tempKeyDir,
|
|
78
|
-
defaultOptions: this.config.executor?.defaultMountOptions,
|
|
79
|
-
mountTimeout: this.config.executor?.mountTimeout,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
async unmountAll() {
|
|
84
|
-
await this.mountClient?.unmountAll();
|
|
85
|
-
}
|
|
86
|
-
async revokeAllCredentials() {
|
|
87
|
-
await this.credentialManager?.revokeAll();
|
|
88
|
-
}
|
|
89
|
-
async cleanupStaleKeyFiles() {
|
|
90
|
-
return this.credentialManager?.cleanupStaleKeyFiles() ?? 0;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=sshfs-transport.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sshfs-transport.js","sourceRoot":"","sources":["../src/sshfs-transport.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SSHFS Transport Configuration Types
|
|
3
|
-
*/
|
|
4
|
-
export { SshfsMountInfo, SshCredential, SshEndpoint } from '@awcp/core';
|
|
5
|
-
/**
|
|
6
|
-
* Delegator-side configuration for SSHFS transport
|
|
7
|
-
*/
|
|
8
|
-
export interface SshfsDelegatorConfig {
|
|
9
|
-
/** Directory to store temporary keys (default: ~/.awcp/keys) */
|
|
10
|
-
keyDir?: string;
|
|
11
|
-
/** Path to CA private key for signing certificates */
|
|
12
|
-
caKeyPath: string;
|
|
13
|
-
/** SSH server host (default: localhost) */
|
|
14
|
-
host?: string;
|
|
15
|
-
/** SSH server port (default: 22) */
|
|
16
|
-
port?: number;
|
|
17
|
-
/** SSH user for connections */
|
|
18
|
-
user?: string;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Executor-side configuration for SSHFS transport
|
|
22
|
-
*/
|
|
23
|
-
export interface SshfsExecutorConfig {
|
|
24
|
-
/** Directory to store temporary key files (default: /tmp/awcp/client-keys) */
|
|
25
|
-
tempKeyDir?: string;
|
|
26
|
-
/** Additional sshfs mount options */
|
|
27
|
-
defaultMountOptions?: Record<string, string>;
|
|
28
|
-
/** Timeout for mount operation in milliseconds (default: 30000) */
|
|
29
|
-
mountTimeout?: number;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Combined configuration for SshfsTransport
|
|
33
|
-
*/
|
|
34
|
-
export interface SshfsTransportConfig {
|
|
35
|
-
/** Delegator-side configuration */
|
|
36
|
-
delegator?: SshfsDelegatorConfig;
|
|
37
|
-
/** Executor-side configuration */
|
|
38
|
-
executor?: SshfsExecutorConfig;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Credential Manager configuration
|
|
42
|
-
*/
|
|
43
|
-
export interface CredentialManagerConfig {
|
|
44
|
-
/** Directory to store temporary keys (default: ~/.awcp/keys) */
|
|
45
|
-
keyDir?: string;
|
|
46
|
-
/** Path to CA private key for signing certificates */
|
|
47
|
-
caKeyPath: string;
|
|
48
|
-
/** SSH server host (default: localhost) */
|
|
49
|
-
sshHost?: string;
|
|
50
|
-
/** SSH server port (default: 22) */
|
|
51
|
-
sshPort?: number;
|
|
52
|
-
/** SSH user for connections */
|
|
53
|
-
sshUser?: string;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Generated credential info
|
|
57
|
-
*/
|
|
58
|
-
export interface GeneratedCredential {
|
|
59
|
-
/** The private key content */
|
|
60
|
-
privateKey: string;
|
|
61
|
-
/** Path to the private key file */
|
|
62
|
-
privateKeyPath: string;
|
|
63
|
-
/** Path to the public key file */
|
|
64
|
-
publicKeyPath: string;
|
|
65
|
-
/** Path to the certificate file */
|
|
66
|
-
certPath: string;
|
|
67
|
-
/** Delegation ID for tracking */
|
|
68
|
-
delegationId: string;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* SSHFS Mount Client configuration
|
|
72
|
-
*/
|
|
73
|
-
export interface SshfsMountConfig {
|
|
74
|
-
/** Directory to store temporary key files */
|
|
75
|
-
tempKeyDir?: string;
|
|
76
|
-
/** Additional sshfs options */
|
|
77
|
-
defaultOptions?: Record<string, string>;
|
|
78
|
-
/** Timeout for mount operation in ms (default: 30000) */
|
|
79
|
-
mountTimeout?: number;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Mount parameters for SSHFS
|
|
83
|
-
*/
|
|
84
|
-
export interface MountParams {
|
|
85
|
-
/** SSH endpoint */
|
|
86
|
-
endpoint: {
|
|
87
|
-
host: string;
|
|
88
|
-
port: number;
|
|
89
|
-
user: string;
|
|
90
|
-
};
|
|
91
|
-
/** Remote path or export locator */
|
|
92
|
-
exportLocator: string;
|
|
93
|
-
/** SSH credential (private key + certificate) */
|
|
94
|
-
credential: {
|
|
95
|
-
privateKey: string;
|
|
96
|
-
certificate: string;
|
|
97
|
-
};
|
|
98
|
-
/** Local mount point path */
|
|
99
|
-
mountPoint: string;
|
|
100
|
-
/** Additional mount options */
|
|
101
|
-
options?: Record<string, string>;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Active mount tracking info
|
|
105
|
-
*/
|
|
106
|
-
export interface ActiveMount {
|
|
107
|
-
/** Local mount point path */
|
|
108
|
-
mountPoint: string;
|
|
109
|
-
/** Path to temporary private key file */
|
|
110
|
-
keyPath: string;
|
|
111
|
-
/** Path to temporary certificate file */
|
|
112
|
-
certPath: string;
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7C,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAEjC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IAEnB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IAEvB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;IAEtB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExC,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IAEtB,iDAAiD;IACjD,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IAEnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IAEnB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAEhB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|