@lemoncat7/dsh-ssh 1.11.7 → 1.14.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/ARCHITECTURE.md +4 -0
- package/README.md +3 -0
- package/docs/releases/1.12.0.md +15 -0
- package/docs/releases/1.13.0.md +15 -0
- package/docs/releases/1.14.0.md +10 -0
- package/docs/third-party/react-bits.md +29 -0
- package/docs/usage.md +28 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +22 -0
- package/lib/api.js.map +1 -1
- package/lib/client-api.d.ts +3 -0
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +291 -185
- package/lib/client.js.map +4 -4
- package/lib/config-backup-panel.d.ts +2 -0
- package/lib/config-backup-panel.d.ts.map +1 -0
- package/lib/config-backup-panel.js +74 -0
- package/lib/config-backup-panel.js.map +1 -0
- package/lib/config-backup.d.ts +6 -0
- package/lib/config-backup.d.ts.map +1 -0
- package/lib/config-backup.js +142 -0
- package/lib/config-backup.js.map +1 -0
- package/lib/config.d.ts +2 -0
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +4 -0
- package/lib/config.js.map +1 -1
- package/lib/connection-policy.d.ts +6 -0
- package/lib/connection-policy.d.ts.map +1 -0
- package/lib/connection-policy.js +10 -0
- package/lib/connection-policy.js.map +1 -0
- package/lib/connector.d.ts +9 -1
- package/lib/connector.d.ts.map +1 -1
- package/lib/connector.js +39 -7
- package/lib/connector.js.map +1 -1
- package/lib/credentials.d.ts +2 -0
- package/lib/credentials.d.ts.map +1 -1
- package/lib/credentials.js +5 -0
- package/lib/credentials.js.map +1 -1
- package/lib/domain.d.ts +4 -0
- package/lib/domain.d.ts.map +1 -1
- package/lib/domain.js +3 -0
- package/lib/domain.js.map +1 -1
- package/lib/file-transfer-tools.d.ts +2 -1
- package/lib/file-transfer-tools.d.ts.map +1 -1
- package/lib/file-transfer-tools.js +8 -6
- package/lib/file-transfer-tools.js.map +1 -1
- package/lib/gist-sync.d.ts +3 -1
- package/lib/gist-sync.d.ts.map +1 -1
- package/lib/gist-sync.js +10 -3
- package/lib/gist-sync.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/locales/messages.d.ts +448 -0
- package/lib/locales/messages.d.ts.map +1 -1
- package/lib/locales/messages.js +112 -0
- package/lib/locales/messages.js.map +1 -1
- package/lib/profile-editor.d.ts.map +1 -1
- package/lib/profile-editor.js +9 -2
- package/lib/profile-editor.js.map +1 -1
- package/lib/settings-pane.d.ts +2 -0
- package/lib/settings-pane.d.ts.map +1 -0
- package/lib/settings-pane.js +54 -0
- package/lib/settings-pane.js.map +1 -0
- package/lib/ssh-channel.d.ts +4 -0
- package/lib/ssh-channel.d.ts.map +1 -0
- package/lib/ssh-channel.js +37 -0
- package/lib/ssh-channel.js.map +1 -0
- package/lib/sync-panel.d.ts +4 -0
- package/lib/sync-panel.d.ts.map +1 -0
- package/lib/sync-panel.js +252 -0
- package/lib/sync-panel.js.map +1 -0
- package/lib/sync-stepper.d.ts +16 -0
- package/lib/sync-stepper.d.ts.map +1 -0
- package/lib/sync-stepper.js +42 -0
- package/lib/sync-stepper.js.map +1 -0
- package/lib/temporary-access.d.ts +2 -1
- package/lib/temporary-access.d.ts.map +1 -1
- package/lib/temporary-access.js +3 -3
- package/lib/temporary-access.js.map +1 -1
- package/lib/terminal-connection-pool.d.ts +16 -0
- package/lib/terminal-connection-pool.d.ts.map +1 -0
- package/lib/terminal-connection-pool.js +111 -0
- package/lib/terminal-connection-pool.js.map +1 -0
- package/lib/terminal.d.ts.map +1 -1
- package/lib/terminal.js +11 -10
- package/lib/terminal.js.map +1 -1
- package/lib/tool-entry.d.ts +11 -0
- package/lib/tool-entry.d.ts.map +1 -0
- package/lib/tool-entry.js +64 -0
- package/lib/tool-entry.js.map +1 -0
- package/lib/tools.d.ts.map +1 -1
- package/lib/tools.js +10 -12
- package/lib/tools.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-backup-panel.d.ts","sourceRoot":"","sources":["../src/config-backup-panel.tsx"],"names":[],"mappings":"AAQA,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,OAAO,CAY/C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { api } from './client-api.js';
|
|
4
|
+
import { Dialog, Field, PasswordInput, errorMessage } from './ui-components.js';
|
|
5
|
+
import { t } from './i18n.js';
|
|
6
|
+
import { useSshLocale } from './use-ssh-locale.js';
|
|
7
|
+
import { refreshWorkspace } from './use-workspace-refresh.js';
|
|
8
|
+
const countKeys = ['profiles', 'ftpProfiles', 'remoteProjects', 'credentialEntries', 'proxyEntries', 'commands', 'groupProxies'];
|
|
9
|
+
export function ConfigBackupPanel() {
|
|
10
|
+
useSshLocale();
|
|
11
|
+
const [mode, setMode] = useState();
|
|
12
|
+
const [notice, setNotice] = useState('');
|
|
13
|
+
return _jsxs("section", { className: "dsh-ssh-settings-section dsh-ssh-backup-section", "aria-labelledby": "ssh-backup-title", children: [_jsx("div", { className: "dsh-ssh-settings-section-heading", children: _jsxs("span", { children: [_jsx("strong", { id: "ssh-backup-title", children: t('backup.title') }), _jsx("small", { children: t('backup.description') })] }) }), _jsxs("div", { className: "dsh-ssh-backup-content", children: [_jsx("p", { children: t('backup.scope') }), _jsxs("div", { className: "dsh-ssh-backup-actions", children: [_jsx("button", { type: "button", className: "dsh-ssh-secondary-button", onClick: () => { setNotice(''); setMode('import'); }, children: t('backup.import') }), _jsx("button", { type: "button", className: "dsh-ssh-secondary-button", onClick: () => { setNotice(''); setMode('export'); }, children: t('backup.export') })] }), _jsx("small", { children: t('backup.excluded') }), notice && _jsx("p", { className: "dsh-ssh-inline-success", role: "status", children: notice })] }), mode && _jsx(BackupDialog, { mode: mode, onClose: () => setMode(undefined), onDone: () => { setMode(undefined); setNotice(mode === 'export' ? t('backup.exported') : t('backup.imported')); if (mode === 'import')
|
|
14
|
+
refreshWorkspace(); } })] });
|
|
15
|
+
}
|
|
16
|
+
function BackupDialog({ mode, onClose, onDone }) {
|
|
17
|
+
const [passphrase, setPassphrase] = useState('');
|
|
18
|
+
const [confirmation, setConfirmation] = useState('');
|
|
19
|
+
const [file, setFile] = useState();
|
|
20
|
+
const [preview, setPreview] = useState();
|
|
21
|
+
const [busy, setBusy] = useState(false);
|
|
22
|
+
const [error, setError] = useState('');
|
|
23
|
+
const exporting = mode === 'export';
|
|
24
|
+
const labels = { profiles: t('backup.profiles'), ftpProfiles: t('backup.ftpProfiles'), remoteProjects: t('backup.remoteProjects'), credentialEntries: t('backup.credentialEntries'), proxyEntries: t('backup.proxyEntries'), commands: t('backup.commands'), groupProxies: t('backup.groupProxies') };
|
|
25
|
+
const submit = async (event) => {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
if (busy)
|
|
28
|
+
return;
|
|
29
|
+
setError('');
|
|
30
|
+
setBusy(true);
|
|
31
|
+
try {
|
|
32
|
+
if (exporting) {
|
|
33
|
+
if (passphrase !== confirmation)
|
|
34
|
+
throw new Error(t('backup.mismatch'));
|
|
35
|
+
const { content } = await api('/config-backup/export', { method: 'POST', body: JSON.stringify({ passphrase }) });
|
|
36
|
+
const url = URL.createObjectURL(new Blob([content], { type: 'application/json' }));
|
|
37
|
+
const link = document.createElement('a');
|
|
38
|
+
link.href = url;
|
|
39
|
+
link.download = `dsh-ssh-backup-${new Date().toISOString().slice(0, 10)}.json`;
|
|
40
|
+
document.body.append(link);
|
|
41
|
+
link.click();
|
|
42
|
+
link.remove();
|
|
43
|
+
setTimeout(() => URL.revokeObjectURL(url), 60_000);
|
|
44
|
+
onDone();
|
|
45
|
+
}
|
|
46
|
+
else if (preview) {
|
|
47
|
+
await api('/config-backup/import', { method: 'POST', body: JSON.stringify({ content: preview.content, passphrase }) });
|
|
48
|
+
onDone();
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (!file)
|
|
52
|
+
throw new Error(t('backup.chooseFile'));
|
|
53
|
+
if (file.size > 1_048_576)
|
|
54
|
+
throw new Error(t('backup.fileLimit'));
|
|
55
|
+
const content = await file.text();
|
|
56
|
+
const counts = await api('/config-backup/preview', { method: 'POST', body: JSON.stringify({ content, passphrase }) });
|
|
57
|
+
setPreview({ content, counts });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (reason) {
|
|
61
|
+
setError(errorMessage(reason));
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
setBusy(false);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
return _jsx(Dialog, { title: exporting ? t('backup.export') : t('backup.import'), subtitle: exporting ? t('backup.passwordHint') : t('backup.importHint'), onClose: onClose, dismissible: !busy, children: _jsxs("form", { className: "dsh-ssh-form dsh-ssh-backup-form", onSubmit: event => { void submit(event); }, children: [!preview && _jsxs("fieldset", { disabled: busy, className: "dsh-ssh-backup-fields", children: [!exporting && _jsx(Field, { label: t('backup.file'), hint: t('backup.fileHint'), children: _jsx("input", { type: "file", accept: ".json,application/json", required: true, onChange: event => { setFile(event.target.files?.[0]); setError(''); } }) }), _jsx(Field, { label: t('backup.password'), hint: t('backup.passwordLength'), children: _jsx(PasswordInput, { required: true, minLength: 8, maxLength: 256, autoComplete: exporting ? 'new-password' : 'current-password', value: passphrase, onChange: event => setPassphrase(event.target.value) }) }), exporting && _jsx(Field, { label: t('backup.confirmPassword'), children: _jsx(PasswordInput, { required: true, minLength: 8, maxLength: 256, autoComplete: "new-password", value: confirmation, onChange: event => setConfirmation(event.target.value) }) })] }), preview && _jsxs("div", { children: [_jsx("h3", { children: t('backup.preview') }), _jsx("dl", { className: "dsh-ssh-backup-counts", children: countKeys.map(key => _jsxs("div", { children: [_jsx("dt", { children: labels[key] }), _jsx("dd", { children: preview.counts[key] ?? 0 })] }, key)) }), _jsx("p", { className: "dsh-ssh-backup-hint", children: t('backup.copyHint') })] }), error && _jsx("p", { className: "dsh-ssh-inline-error", role: "alert", children: error }), _jsxs("div", { className: "dsh-ssh-dialog-actions", children: [_jsx("button", { type: "button", className: "dsh-ssh-secondary-button", disabled: busy, onClick: () => { if (preview) {
|
|
68
|
+
setPreview(undefined);
|
|
69
|
+
setError('');
|
|
70
|
+
}
|
|
71
|
+
else
|
|
72
|
+
onClose(); }, children: preview ? t('backup.back') : t('client.cancel') }), _jsx("button", { type: "submit", className: "dsh-ssh-primary-button", disabled: busy, children: busy ? t('backup.processing') : exporting ? t('backup.download') : preview ? t('backup.confirmImport') : t('backup.read') })] })] }) });
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=config-backup-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-backup-panel.js","sourceRoot":"","sources":["../src/config-backup-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SshStore } from './store.js';
|
|
2
|
+
import type { SshCredentialVault } from './credentials.js';
|
|
3
|
+
export declare function exportConfiguration(store: SshStore, vault: SshCredentialVault, passphrase: unknown): Promise<string>;
|
|
4
|
+
export declare function previewConfiguration(content: unknown, passphrase: unknown): Promise<Record<string, number>>;
|
|
5
|
+
export declare function importConfiguration(store: SshStore, vault: SshCredentialVault, content: unknown, passphrase: unknown): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=config-backup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-backup.d.ts","sourceRoot":"","sources":["../src/config-backup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAkB1D,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAU1H;AAqBD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIjH;AACD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D1I"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { createCipheriv, createDecipheriv, randomBytes, randomUUID, scrypt } from 'node:crypto';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { createEncryptedPortableSnapshot, decryptPortableSecrets, parsePortableSnapshot } from './gist-sync.js';
|
|
4
|
+
import { groupProxyId } from './group-proxy.js';
|
|
5
|
+
const derive = promisify(scrypt);
|
|
6
|
+
const FORMAT = 'dsh-ssh-backup';
|
|
7
|
+
const invalid = (message) => Object.assign(new Error(message), { status: 400 });
|
|
8
|
+
const LIMIT = 1_048_576;
|
|
9
|
+
const collections = ['profiles', 'ftpProfiles', 'remoteProjects', 'credentialEntries', 'proxyEntries', 'commands', 'groupProxies'];
|
|
10
|
+
const emptyTombstones = () => ({ profiles: {}, ftpProfiles: {}, remoteProjects: {}, credentialEntries: {}, proxyEntries: {}, commands: {}, groupProxies: {} });
|
|
11
|
+
function password(value) {
|
|
12
|
+
if (typeof value !== 'string' || value.length < 8 || value.length > 256)
|
|
13
|
+
throw invalid('备份密码需要 8–256 个字符');
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
function bounded(value) {
|
|
17
|
+
if (typeof value !== 'string' || Buffer.byteLength(value) > LIMIT)
|
|
18
|
+
throw invalid('备份文件不能超过 1 MB');
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
export async function exportConfiguration(store, vault, passphrase) {
|
|
22
|
+
const pass = password(passphrase), revision = store.workspaceRevision();
|
|
23
|
+
const snapshot = await createEncryptedPortableSnapshot(store.snapshot(), randomUUID(), emptyTombstones(), vault, pass);
|
|
24
|
+
if (revision !== store.workspaceRevision())
|
|
25
|
+
throw new Error('配置刚刚发生变化,请重新导出');
|
|
26
|
+
// Authenticate and encrypt the entire file, including addresses and configuration metadata.
|
|
27
|
+
const salt = randomBytes(16), iv = randomBytes(12);
|
|
28
|
+
const cipher = createCipheriv('aes-256-gcm', await derive(pass, salt, 32), iv);
|
|
29
|
+
const plaintext = bounded(JSON.stringify(snapshot));
|
|
30
|
+
const ciphertext = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);
|
|
31
|
+
return bounded(JSON.stringify({ format: FORMAT, version: 1, salt: salt.toString('base64'), iv: iv.toString('base64'), tag: cipher.getAuthTag().toString('base64'), ciphertext: ciphertext.toString('base64') }));
|
|
32
|
+
}
|
|
33
|
+
async function decode(content, passphrase) {
|
|
34
|
+
const pass = password(passphrase);
|
|
35
|
+
let file;
|
|
36
|
+
try {
|
|
37
|
+
file = JSON.parse(bounded(content));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
throw invalid('备份文件格式不正确,或文件超过 1 MB');
|
|
41
|
+
}
|
|
42
|
+
if (!file || file.format !== FORMAT || file.version !== 1)
|
|
43
|
+
throw invalid('不是受支持的 SSH 配置备份文件');
|
|
44
|
+
const bytes = (key, length) => {
|
|
45
|
+
if (typeof file[key] !== 'string')
|
|
46
|
+
throw invalid('备份文件格式不正确');
|
|
47
|
+
const value = Buffer.from(file[key], 'base64');
|
|
48
|
+
if (!value.length || value.toString('base64') !== file[key] || length !== undefined && value.length !== length)
|
|
49
|
+
throw invalid('备份文件格式不正确');
|
|
50
|
+
return value;
|
|
51
|
+
};
|
|
52
|
+
const salt = bytes('salt', 16), iv = bytes('iv', 12), tag = bytes('tag', 16), ciphertext = bytes('ciphertext');
|
|
53
|
+
let plaintext;
|
|
54
|
+
try {
|
|
55
|
+
const decipher = createDecipheriv('aes-256-gcm', await derive(pass, salt, 32), iv);
|
|
56
|
+
decipher.setAuthTag(tag);
|
|
57
|
+
plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf8');
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
throw invalid('密码不正确,或备份文件已损坏');
|
|
61
|
+
}
|
|
62
|
+
return parsePortableSnapshot(plaintext);
|
|
63
|
+
}
|
|
64
|
+
export async function previewConfiguration(content, passphrase) {
|
|
65
|
+
const snapshot = await decode(content, passphrase);
|
|
66
|
+
await decryptPortableSecrets(snapshot, password(passphrase));
|
|
67
|
+
return Object.fromEntries(collections.map(name => [name, snapshot.collections[name]?.length ?? 0]));
|
|
68
|
+
}
|
|
69
|
+
export async function importConfiguration(store, vault, content, passphrase) {
|
|
70
|
+
const snapshot = await decode(content, passphrase);
|
|
71
|
+
const secrets = await decryptPortableSecrets(snapshot, password(passphrase));
|
|
72
|
+
const items = snapshot.collections;
|
|
73
|
+
// A fresh namespace preserves existing data and keeps every imported reference within its copy.
|
|
74
|
+
const maps = Object.fromEntries(collections.map(name => [name, new Map((items[name] ?? []).map(item => [item.id, `import-${randomUUID()}`]))]));
|
|
75
|
+
const ref = (name, id) => {
|
|
76
|
+
const result = maps[name].get(id);
|
|
77
|
+
if (!result)
|
|
78
|
+
throw invalid('备份中存在无效引用');
|
|
79
|
+
return result;
|
|
80
|
+
};
|
|
81
|
+
const groupNames = new Map();
|
|
82
|
+
const group = (name) => {
|
|
83
|
+
if (!groupNames.has(name))
|
|
84
|
+
groupNames.set(name, `${name.slice(0, 38)} (import ${randomBytes(8).toString('hex')})`);
|
|
85
|
+
return groupNames.get(name);
|
|
86
|
+
};
|
|
87
|
+
for (const profile of [...items.profiles, ...items.ftpProfiles]) {
|
|
88
|
+
if (profile.credentialId)
|
|
89
|
+
profile.credentialId = ref('credentialEntries', profile.credentialId);
|
|
90
|
+
if (profile.proxy.type === 'saved')
|
|
91
|
+
profile.proxy.proxyId = ref('proxyEntries', profile.proxy.proxyId);
|
|
92
|
+
if (profile.proxy.type === 'jump')
|
|
93
|
+
profile.proxy.profileIds = profile.proxy.profileIds.map(id => ref('profiles', id));
|
|
94
|
+
if (profile.group)
|
|
95
|
+
profile.group = group(profile.group);
|
|
96
|
+
}
|
|
97
|
+
for (const project of items.remoteProjects)
|
|
98
|
+
project.profileId = ref('profiles', project.profileId);
|
|
99
|
+
for (const entry of items.groupProxies ?? []) {
|
|
100
|
+
entry.name = group(entry.name);
|
|
101
|
+
maps.groupProxies.set(entry.id, groupProxyId(entry.name));
|
|
102
|
+
if (entry.proxyId)
|
|
103
|
+
entry.proxyId = ref('proxyEntries', entry.proxyId);
|
|
104
|
+
}
|
|
105
|
+
const scopes = {
|
|
106
|
+
'ssh-profile': { name: 'profiles', write: vault.replace.bind(vault), remove: vault.delete.bind(vault) },
|
|
107
|
+
'ftp-profile': { name: 'ftpProfiles', write: vault.replaceFtp.bind(vault), remove: vault.deleteFtp.bind(vault) },
|
|
108
|
+
'vault-entry': { name: 'credentialEntries', write: vault.replaceEntry.bind(vault), remove: vault.deleteEntry.bind(vault) },
|
|
109
|
+
'proxy-entry': { name: 'proxyEntries', write: vault.replaceProxyEntry.bind(vault), remove: vault.deleteProxyEntry.bind(vault) },
|
|
110
|
+
};
|
|
111
|
+
const cleanup = [];
|
|
112
|
+
try {
|
|
113
|
+
for (const record of snapshot.secrets) {
|
|
114
|
+
const scope = scopes[record.scope], id = ref(scope.name, record.id);
|
|
115
|
+
cleanup.push(() => scope.remove(id));
|
|
116
|
+
await scope.write(id, secrets[`${record.scope}:${record.id}`]);
|
|
117
|
+
}
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
for (const name of collections)
|
|
120
|
+
for (const item of items[name] ?? []) {
|
|
121
|
+
item.id = ref(name, item.id);
|
|
122
|
+
item.createdAt = now;
|
|
123
|
+
item.updatedAt = now;
|
|
124
|
+
}
|
|
125
|
+
// Validate the remapped graph before publishing it to readers or automatic sync.
|
|
126
|
+
parsePortableSnapshot(JSON.stringify({ ...snapshot, secrets: [] }));
|
|
127
|
+
await store.update(state => {
|
|
128
|
+
state.profiles.push(...items.profiles);
|
|
129
|
+
state.ftpProfiles.push(...items.ftpProfiles);
|
|
130
|
+
state.remoteProjects.push(...items.remoteProjects);
|
|
131
|
+
state.credentialEntries.push(...items.credentialEntries);
|
|
132
|
+
state.proxyEntries.push(...items.proxyEntries);
|
|
133
|
+
state.commands = [...(state.commands ?? []), ...(items.commands ?? [])];
|
|
134
|
+
state.groupProxies = [...(state.groupProxies ?? []), ...(items.groupProxies ?? [])];
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
await Promise.allSettled(cleanup.map(remove => remove()));
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=config-backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-backup.js","sourceRoot":"","sources":["../src/config-backup.ts"],"names":[],"mappings":"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"}
|
package/lib/config.d.ts
CHANGED
package/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAShC,CAAA;AAEF,MAAM,WAAW,cAAe,SAAQ,MAAM;CAAG;AAEjD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAa5D"}
|
package/lib/config.js
CHANGED
|
@@ -4,6 +4,8 @@ export const Config = Schema.object({
|
|
|
4
4
|
exposeWeb: Schema.boolean().default(true),
|
|
5
5
|
apiPrefix: Schema.string().default('/ssh-local/v1'),
|
|
6
6
|
defaultCommandTimeoutMs: Schema.number().min(1000).max(300_000).default(30_000),
|
|
7
|
+
defaultConnectTimeoutMs: Schema.number().min(1000).max(120_000).default(15_000),
|
|
8
|
+
reuseTerminalConnections: Schema.boolean().default(false),
|
|
7
9
|
maxOutputChars: Schema.number().min(1000).max(1_000_000).default(32_000),
|
|
8
10
|
allowPublicBind: Schema.boolean().default(false),
|
|
9
11
|
});
|
|
@@ -16,6 +18,8 @@ export function resolveConfig(config) {
|
|
|
16
18
|
exposeWeb: config.exposeWeb ?? true,
|
|
17
19
|
apiPrefix,
|
|
18
20
|
defaultCommandTimeoutMs: config.defaultCommandTimeoutMs ?? 30_000,
|
|
21
|
+
defaultConnectTimeoutMs: config.defaultConnectTimeoutMs ?? 15_000,
|
|
22
|
+
reuseTerminalConnections: config.reuseTerminalConnections ?? false,
|
|
19
23
|
maxOutputChars: config.maxOutputChars ?? 32_000,
|
|
20
24
|
allowPublicBind: config.allowPublicBind ?? false,
|
|
21
25
|
};
|
package/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAa7C,MAAM,CAAC,MAAM,MAAM,GAAmB,MAAM,CAAC,MAAM,CAAC;IAClD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;IACnD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/E,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/E,wBAAwB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACjD,CAAC,CAAA;AAIF,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,IAAI,eAAe,CAAC,CAAA;IACtE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC5E,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;QACnC,SAAS;QACT,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,MAAM;QACjE,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,MAAM;QACjE,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,KAAK;QAClE,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,MAAM;QAC/C,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,KAAK;KACjD,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAA;IACnE,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACtG,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SshProfile, SshSettings } from './domain.js';
|
|
2
|
+
export declare const DEFAULT_CONNECT_TIMEOUT_MS = 15000;
|
|
3
|
+
/** Legacy custom values survive; the old implicit 15s default follows settings. */
|
|
4
|
+
export declare function usesDefaultConnectTimeout(profile: Pick<SshProfile, 'connectTimeoutMs' | 'useDefaultConnectTimeout'>): boolean;
|
|
5
|
+
export declare function connectionProfile(profile: SshProfile, settings: SshSettings): SshProfile;
|
|
6
|
+
//# sourceMappingURL=connection-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-policy.d.ts","sourceRoot":"","sources":["../src/connection-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE1D,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAEhD,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,0BAA0B,CAAC,GAAG,OAAO,CAE7H;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,GAAG,UAAU,CAGxF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const DEFAULT_CONNECT_TIMEOUT_MS = 15_000;
|
|
2
|
+
/** Legacy custom values survive; the old implicit 15s default follows settings. */
|
|
3
|
+
export function usesDefaultConnectTimeout(profile) {
|
|
4
|
+
return profile.useDefaultConnectTimeout ?? profile.connectTimeoutMs === DEFAULT_CONNECT_TIMEOUT_MS;
|
|
5
|
+
}
|
|
6
|
+
export function connectionProfile(profile, settings) {
|
|
7
|
+
return { ...profile, connectTimeoutMs: usesDefaultConnectTimeout(profile)
|
|
8
|
+
? settings.defaultConnectTimeoutMs ?? DEFAULT_CONNECT_TIMEOUT_MS : profile.connectTimeoutMs };
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=connection-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-policy.js","sourceRoot":"","sources":["../src/connection-policy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAA;AAEhD,mFAAmF;AACnF,MAAM,UAAU,yBAAyB,CAAC,OAA0E;IAClH,OAAO,OAAO,CAAC,wBAAwB,IAAI,OAAO,CAAC,gBAAgB,KAAK,0BAA0B,CAAA;AACpG,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAmB,EAAE,QAAqB;IAC1E,OAAO,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,CAAC,OAAO,CAAC;YACvE,CAAC,CAAC,QAAQ,CAAC,uBAAuB,IAAI,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAA;AACjG,CAAC"}
|
package/lib/connector.d.ts
CHANGED
|
@@ -19,7 +19,13 @@ export declare class HostKeyRequiredError extends Error {
|
|
|
19
19
|
export declare class SshConnector {
|
|
20
20
|
private readonly store;
|
|
21
21
|
private readonly credentials;
|
|
22
|
+
private readonly pool;
|
|
23
|
+
private poolIdentity;
|
|
24
|
+
private readonly unsubscribe;
|
|
22
25
|
constructor(store: SshStore, credentials: SshCredentialVault);
|
|
26
|
+
private refreshPool;
|
|
27
|
+
connectTerminal(profileId: string, owner: string, signal?: AbortSignal): Promise<ManagedSshConnection>;
|
|
28
|
+
close(): void;
|
|
23
29
|
connect(profileId: string, signal?: AbortSignal): Promise<ManagedSshConnection>;
|
|
24
30
|
connectDraft(profile: SshProfile, secrets: SshCredentialPayload, signal?: AbortSignal): Promise<ManagedSshConnection>;
|
|
25
31
|
private connectRecursive;
|
|
@@ -32,8 +38,10 @@ export declare class ManagedSshConnection {
|
|
|
32
38
|
readonly client: SshClient;
|
|
33
39
|
readonly profile: SshProfile;
|
|
34
40
|
private readonly parent?;
|
|
41
|
+
private readonly release?;
|
|
35
42
|
private closed;
|
|
36
|
-
constructor(client: SshClient, profile: SshProfile, parent?: ManagedSshConnection | undefined);
|
|
43
|
+
constructor(client: SshClient, profile: SshProfile, parent?: ManagedSshConnection | undefined, release?: (() => void) | undefined);
|
|
44
|
+
lease(release: () => void): ManagedSshConnection;
|
|
37
45
|
close(): void;
|
|
38
46
|
}
|
|
39
47
|
//# sourceMappingURL=connector.d.ts.map
|
package/lib/connector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,KAAK,MAAM,IAAI,SAAS,EAA0C,MAAM,MAAM,CAAA;AAG7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,KAAK,MAAM,IAAI,SAAS,EAA0C,MAAM,MAAM,CAAA;AAG7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAMrC,qBAAa,oBAAqB,SAAQ,KAAK;IAEjC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM;IAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM;IAD1I,QAAQ,CAAC,IAAI,uBAAsB;gBACd,SAAS,EAAE,MAAM,EAAW,WAAW,EAAE,MAAM,EAAW,mBAAmB,CAAC,EAAE,MAAM,YAAA,EAAW,WAAW,CAAC,EAAE,MAAM,YAAA;IAI1I,IAAI,OAAO;;;;;MAAwJ;CACpK;AAED,qBAAa,YAAY;IAIX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAY,OAAO,CAAC,QAAQ,CAAC,WAAW;IAH1E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+B;IACpD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;gBACX,KAAK,EAAE,QAAQ,EAAmB,WAAW,EAAE,kBAAkB;IAI9F,OAAO,CAAC,WAAW;IAKb,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM5G,KAAK,IAAI,IAAI;IAEP,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI/E,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;YAM7G,gBAAgB;YAUhB,eAAe;YA6Bf,YAAY;YAeZ,gBAAgB;YAgChB,eAAe;CAU9B;AAED,qBAAa,oBAAoB;IAEnB,QAAQ,CAAC,MAAM,EAAE,SAAS;IAAE,QAAQ,CAAC,OAAO,EAAE,UAAU;IAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAAwB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAD/I,OAAO,CAAC,MAAM,CAAQ;gBACD,MAAM,EAAE,SAAS,EAAW,OAAO,EAAE,UAAU,EAAmB,MAAM,CAAC,EAAE,oBAAoB,YAAA,EAAmB,OAAO,CAAC,GAAE,MAAM,IAAI,aAAA;IAC3J,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,oBAAoB;IAChD,KAAK,IAAI,IAAI;CAOd"}
|
package/lib/connector.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import ssh2 from 'ssh2';
|
|
2
2
|
import { connectHttpProxy, connectSocks5Proxy } from './proxy.js';
|
|
3
3
|
import { effectiveHostProxy } from './group-proxy.js';
|
|
4
|
+
import { connectionProfile } from './connection-policy.js';
|
|
5
|
+
import { TerminalConnectionPool } from './terminal-connection-pool.js';
|
|
6
|
+
import { openSshChannel } from './ssh-channel.js';
|
|
4
7
|
export class HostKeyRequiredError extends Error {
|
|
5
8
|
profileId;
|
|
6
9
|
fingerprint;
|
|
@@ -20,14 +23,33 @@ export class HostKeyRequiredError extends Error {
|
|
|
20
23
|
export class SshConnector {
|
|
21
24
|
store;
|
|
22
25
|
credentials;
|
|
26
|
+
pool = new TerminalConnectionPool();
|
|
27
|
+
poolIdentity = '';
|
|
28
|
+
unsubscribe;
|
|
23
29
|
constructor(store, credentials) {
|
|
24
30
|
this.store = store;
|
|
25
31
|
this.credentials = credentials;
|
|
32
|
+
this.unsubscribe = store.subscribe?.(() => this.refreshPool()) ?? (() => { });
|
|
26
33
|
}
|
|
34
|
+
refreshPool() {
|
|
35
|
+
const identity = JSON.stringify([this.store.profiles(), this.store.credentialEntries(), this.store.proxyEntries(), this.store.groupProxies(), this.store.settings().defaultConnectTimeoutMs, this.store.settings().reuseTerminalConnections, this.credentials.revision()]);
|
|
36
|
+
if (identity !== this.poolIdentity) {
|
|
37
|
+
this.pool.drain();
|
|
38
|
+
this.poolIdentity = identity;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async connectTerminal(profileId, owner, signal) {
|
|
42
|
+
this.refreshPool();
|
|
43
|
+
if (this.store.settings().reuseTerminalConnections !== true)
|
|
44
|
+
return this.connect(profileId, signal);
|
|
45
|
+
return this.pool.acquire(JSON.stringify([owner, profileId]), sharedSignal => this.connect(profileId, sharedSignal), signal);
|
|
46
|
+
}
|
|
47
|
+
close() { this.unsubscribe(); this.pool.close(); }
|
|
27
48
|
async connect(profileId, signal) {
|
|
28
49
|
return this.connectRecursive(profileId, new Set(), signal);
|
|
29
50
|
}
|
|
30
51
|
async connectDraft(profile, secrets, signal) {
|
|
52
|
+
profile = connectionProfile(profile, this.store.settings());
|
|
31
53
|
const identity = profile.credentialId === undefined ? { profile, secrets } : await this.resolveIdentity(profile);
|
|
32
54
|
return this.connectResolved(identity.profile, identity.secrets, new Set([profile.id]), signal);
|
|
33
55
|
}
|
|
@@ -62,7 +84,7 @@ export class SshConnector {
|
|
|
62
84
|
}
|
|
63
85
|
else if (profile.proxy.type === 'jump') {
|
|
64
86
|
parent = await this.connectJumpChain(profile.proxy.profileIds, chain, signal);
|
|
65
|
-
socket = await forwardOut(parent.client, profile.host, profile.port);
|
|
87
|
+
socket = await forwardOut(parent.client, profile.host, profile.port, profile.connectTimeoutMs, signal);
|
|
66
88
|
}
|
|
67
89
|
const client = await connectClient(profile, secrets, socket, signal);
|
|
68
90
|
return new ManagedSshConnection(client, profile, parent);
|
|
@@ -102,7 +124,7 @@ export class SshConnector {
|
|
|
102
124
|
if (storedProfile === undefined)
|
|
103
125
|
throw Object.assign(new Error(`SSH profile ${profileId} was not found`), { status: 404 });
|
|
104
126
|
const { profile, secrets } = await this.resolveIdentity(storedProfile);
|
|
105
|
-
const socket = await forwardOut(parent.client, profile.host, profile.port);
|
|
127
|
+
const socket = await forwardOut(parent.client, profile.host, profile.port, profile.connectTimeoutMs, signal);
|
|
106
128
|
try {
|
|
107
129
|
const client = await connectClient(profile, secrets, socket, signal);
|
|
108
130
|
parent = new ManagedSshConnection(client, profile, parent);
|
|
@@ -124,6 +146,7 @@ export class SshConnector {
|
|
|
124
146
|
}
|
|
125
147
|
}
|
|
126
148
|
async resolveIdentity(profile) {
|
|
149
|
+
profile = connectionProfile(profile, this.store.settings());
|
|
127
150
|
if (profile.credentialId === undefined)
|
|
128
151
|
return { profile, secrets: await this.credentials.read(profile.id) };
|
|
129
152
|
const entry = this.store.credentialEntry(profile.credentialId);
|
|
@@ -139,16 +162,23 @@ export class ManagedSshConnection {
|
|
|
139
162
|
client;
|
|
140
163
|
profile;
|
|
141
164
|
parent;
|
|
165
|
+
release;
|
|
142
166
|
closed = false;
|
|
143
|
-
constructor(client, profile, parent) {
|
|
167
|
+
constructor(client, profile, parent, release) {
|
|
144
168
|
this.client = client;
|
|
145
169
|
this.profile = profile;
|
|
146
170
|
this.parent = parent;
|
|
171
|
+
this.release = release;
|
|
147
172
|
}
|
|
173
|
+
lease(release) { return new ManagedSshConnection(this.client, this.profile, undefined, release); }
|
|
148
174
|
close() {
|
|
149
175
|
if (this.closed)
|
|
150
176
|
return;
|
|
151
177
|
this.closed = true;
|
|
178
|
+
if (this.release) {
|
|
179
|
+
this.release();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
152
182
|
this.client.end();
|
|
153
183
|
this.parent?.close();
|
|
154
184
|
}
|
|
@@ -202,6 +232,10 @@ async function connectClient(profile, secrets, socket, signal) {
|
|
|
202
232
|
cleanup();
|
|
203
233
|
if (observedFingerprint !== undefined && observedFingerprint !== profile.hostFingerprint)
|
|
204
234
|
reject(new HostKeyRequiredError(profile.id, observedFingerprint, profile.hostFingerprint, profile.name));
|
|
235
|
+
else if (error.level === 'client-timeout')
|
|
236
|
+
reject(Object.assign(new Error(observedFingerprint
|
|
237
|
+
? `SSH host fingerprint verified, but authentication did not finish within ${profile.connectTimeoutMs / 1000}s. Increase the SSH connection timeout in settings or this host; check server DNS/PAM authentication delays.`
|
|
238
|
+
: `SSH handshake did not finish within ${profile.connectTimeoutMs / 1000}s. Check the host/proxy route or increase the SSH connection timeout.`), { code: 'SSH_CONNECT_TIMEOUT', phase: observedFingerprint ? 'authentication' : 'handshake' }));
|
|
205
239
|
else
|
|
206
240
|
reject(error);
|
|
207
241
|
client.destroy();
|
|
@@ -233,10 +267,8 @@ async function connectClient(profile, secrets, socket, signal) {
|
|
|
233
267
|
}
|
|
234
268
|
});
|
|
235
269
|
}
|
|
236
|
-
function forwardOut(client, host, port) {
|
|
237
|
-
return
|
|
238
|
-
client.forwardOut('127.0.0.1', 0, host, port, (error, channel) => error ? reject(error) : resolve(channel));
|
|
239
|
-
});
|
|
270
|
+
function forwardOut(client, host, port, timeoutMs, signal) {
|
|
271
|
+
return openSshChannel(client, timeoutMs, done => client.forwardOut('127.0.0.1', 0, host, port, done), signal);
|
|
240
272
|
}
|
|
241
273
|
function timingSafeEqualText(left, right) {
|
|
242
274
|
if (left.length !== right.length)
|
package/lib/connector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
|
package/lib/credentials.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { type CredentialProvider } from '@deepseek-ai/dsh-credentials';
|
|
|
2
2
|
import { type SshCredentialPayload } from './domain.js';
|
|
3
3
|
export declare class SshCredentialVault {
|
|
4
4
|
private readonly provider;
|
|
5
|
+
private generation;
|
|
6
|
+
revision(): number;
|
|
5
7
|
constructor(provider: CredentialProvider);
|
|
6
8
|
describe(profileId: string): Promise<{
|
|
7
9
|
configured: boolean;
|
package/lib/credentials.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,kBAAkB,EAAoB,MAAM,8BAA8B,CAAA;AACvG,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAOvE,qBAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,kBAAkB,EAAoB,MAAM,8BAA8B,CAAA;AACvG,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAOvE,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,UAAU,CAAI;IACtB,QAAQ,IAAI,MAAM;gBACW,QAAQ,EAAE,kBAAkB;IAEnD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAIlG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAItD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAIrG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIzD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAIrG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIzD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAI1G,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI9D,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAIxC,cAAc;YAMd,UAAU;YAOV,WAAW;YAUX,aAAa;YAKb,YAAY;CAI3B"}
|
package/lib/credentials.js
CHANGED
|
@@ -6,6 +6,8 @@ const VAULT_SCOPE = 'dsh-ssh-vault';
|
|
|
6
6
|
const PROXY_SCOPE = 'dsh-ssh-proxy';
|
|
7
7
|
export class SshCredentialVault {
|
|
8
8
|
provider;
|
|
9
|
+
generation = 0;
|
|
10
|
+
revision() { return this.generation; }
|
|
9
11
|
constructor(provider) {
|
|
10
12
|
this.provider = provider;
|
|
11
13
|
}
|
|
@@ -90,12 +92,15 @@ export class SshCredentialVault {
|
|
|
90
92
|
const previous = current === undefined ? {} : parsePayload(current.payload);
|
|
91
93
|
return { kind: 'grant', payload: compactSecrets({ ...previous, ...patch }) };
|
|
92
94
|
});
|
|
95
|
+
this.generation++;
|
|
93
96
|
}
|
|
94
97
|
async replaceScoped(scope, id, value) {
|
|
95
98
|
await this.provider.modifyRecord(credentialKey(scope, id), async () => ({ kind: 'grant', payload: compactSecrets(value) }));
|
|
99
|
+
this.generation++;
|
|
96
100
|
}
|
|
97
101
|
async deleteScoped(scope, id) {
|
|
98
102
|
await this.provider.deleteRecord(credentialKey(scope, id));
|
|
103
|
+
this.generation++;
|
|
99
104
|
}
|
|
100
105
|
}
|
|
101
106
|
function parsePayload(value) {
|