@continuumdao/continuum-node-sdk 1.2.27 → 1.2.29
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/config/mpa-wallet.d.ts +141 -29
- package/dist/config/mpa-wallet.d.ts.map +1 -1
- package/dist/config/mpa-wallet.js +75 -17
- package/dist/config/mpa-wallet.js.map +1 -1
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +12 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/core/mpc/mpa-billing-ops.d.ts +29 -0
- package/dist/core/mpc/mpa-billing-ops.d.ts.map +1 -0
- package/dist/core/mpc/mpa-billing-ops.js +473 -0
- package/dist/core/mpc/mpa-billing-ops.js.map +1 -0
- package/dist/core/mpc/mpa-top-up.d.ts +2 -0
- package/dist/core/mpc/mpa-top-up.d.ts.map +1 -1
- package/dist/core/mpc/mpa-top-up.js +55 -43
- package/dist/core/mpc/mpa-top-up.js.map +1 -1
- package/dist/core/mpc/register-keygen.d.ts.map +1 -1
- package/dist/core/mpc/register-keygen.js +6 -3
- package/dist/core/mpc/register-keygen.js.map +1 -1
- package/dist/core/mpc/schemas.d.ts +47 -0
- package/dist/core/mpc/schemas.d.ts.map +1 -1
- package/dist/core/mpc/schemas.js +35 -0
- package/dist/core/mpc/schemas.js.map +1 -1
- package/dist/core/vpn/schemas.d.ts +181 -0
- package/dist/core/vpn/schemas.d.ts.map +1 -0
- package/dist/core/vpn/schemas.js +112 -0
- package/dist/core/vpn/schemas.js.map +1 -0
- package/dist/core/vpn/vpn-admin.d.ts +22 -0
- package/dist/core/vpn/vpn-admin.d.ts.map +1 -0
- package/dist/core/vpn/vpn-admin.js +88 -0
- package/dist/core/vpn/vpn-admin.js.map +1 -0
- package/dist/core/vpn/vpn-egress.d.ts +30 -0
- package/dist/core/vpn/vpn-egress.d.ts.map +1 -0
- package/dist/core/vpn/vpn-egress.js +91 -0
- package/dist/core/vpn/vpn-egress.js.map +1 -0
- package/dist/core/vpn/vpn-files.d.ts +14 -0
- package/dist/core/vpn/vpn-files.d.ts.map +1 -0
- package/dist/core/vpn/vpn-files.js +32 -0
- package/dist/core/vpn/vpn-files.js.map +1 -0
- package/dist/core/vpn/vpn-host-binding.d.ts +4 -0
- package/dist/core/vpn/vpn-host-binding.d.ts.map +1 -0
- package/dist/core/vpn/vpn-host-binding.js +6 -0
- package/dist/core/vpn/vpn-host-binding.js.map +1 -0
- package/dist/core/vpn/vpn-parse.d.ts +115 -0
- package/dist/core/vpn/vpn-parse.d.ts.map +1 -0
- package/dist/core/vpn/vpn-parse.js +238 -0
- package/dist/core/vpn/vpn-parse.js.map +1 -0
- package/dist/core/vpn/vpn-signed.d.ts +13 -0
- package/dist/core/vpn/vpn-signed.d.ts.map +1 -0
- package/dist/core/vpn/vpn-signed.js +39 -0
- package/dist/core/vpn/vpn-signed.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/mpc.d.ts.map +1 -1
- package/dist/mcp/mpc.js +33 -2
- package/dist/mcp/mpc.js.map +1 -1
- package/dist/mcp/register.d.ts +1 -0
- package/dist/mcp/register.d.ts.map +1 -1
- package/dist/mcp/register.js +4 -0
- package/dist/mcp/register.js.map +1 -1
- package/dist/mcp/vpn.d.ts +4 -0
- package/dist/mcp/vpn.d.ts.map +1 -0
- package/dist/mcp/vpn.js +107 -0
- package/dist/mcp/vpn.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,gBAAgB;;;EAA4B,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;;;EAM/B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;kBAI3B,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;kBAI1B,CAAC;AAEZ,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;kBAGzC,CAAC;AAEZ,eAAO,MAAM,8BAA8B;;;;;;;;;;kBAMjC,CAAC;AAEX,eAAO,MAAM,8BAA8B;;kBAIjC,CAAC;AAEX,eAAO,MAAM,wCAAwC;;;;;;;;;;kBAG1C,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgBlB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;kBAgBxB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;kBAY1B,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;kBAM9B,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;kBAW1B,CAAC;AAEX,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;kBAIjC,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { SelectedSigningKeySchema } from '../../schemas/extended.js';
|
|
3
|
+
export const VpnProfileSchema = z.enum(['split', 'full']);
|
|
4
|
+
export const VpnObfuscationSchema = z.enum([
|
|
5
|
+
'none',
|
|
6
|
+
'shadowsocks',
|
|
7
|
+
'wg_obfuscator',
|
|
8
|
+
'lwo',
|
|
9
|
+
'udp2raw',
|
|
10
|
+
]);
|
|
11
|
+
export const VpnUserFolderInputSchema = z
|
|
12
|
+
.object({
|
|
13
|
+
userFolder: z.string().min(1).optional(),
|
|
14
|
+
})
|
|
15
|
+
.strict();
|
|
16
|
+
export const SetVpnEnabledInputSchema = VpnUserFolderInputSchema.extend({
|
|
17
|
+
enabled: z.boolean(),
|
|
18
|
+
profile: VpnProfileSchema.optional(),
|
|
19
|
+
obfuscation: VpnObfuscationSchema.optional(),
|
|
20
|
+
}).strict();
|
|
21
|
+
export const DownloadVpnAdminClientConfigInputSchema = VpnUserFolderInputSchema.extend({
|
|
22
|
+
profile: VpnProfileSchema.optional(),
|
|
23
|
+
obfuscation: VpnObfuscationSchema.optional(),
|
|
24
|
+
}).strict();
|
|
25
|
+
export const SetVpnEgressSharingInputSchema = z
|
|
26
|
+
.object({
|
|
27
|
+
enabled: z.boolean(),
|
|
28
|
+
obfuscation: VpnObfuscationSchema.optional(),
|
|
29
|
+
defaultRateLimitMbps: z.number().nonnegative().optional(),
|
|
30
|
+
})
|
|
31
|
+
.strict();
|
|
32
|
+
export const RevokeVpnEgressPeerInputSchema = z
|
|
33
|
+
.object({
|
|
34
|
+
consumerNodeKey: z.string().min(1),
|
|
35
|
+
})
|
|
36
|
+
.strict();
|
|
37
|
+
export const DownloadVpnEgressClientConfigInputSchema = VpnUserFolderInputSchema.extend({
|
|
38
|
+
targetAddress: z.string().min(1),
|
|
39
|
+
obfuscation: VpnObfuscationSchema.optional(),
|
|
40
|
+
}).strict();
|
|
41
|
+
export const VpnStatusSchema = z
|
|
42
|
+
.object({
|
|
43
|
+
available: z.boolean(),
|
|
44
|
+
installed: z.boolean(),
|
|
45
|
+
active: z.boolean(),
|
|
46
|
+
listenPort: z.number(),
|
|
47
|
+
endpointHost: z.string(),
|
|
48
|
+
profiles: z.array(VpnProfileSchema),
|
|
49
|
+
profile: z.union([VpnProfileSchema, z.literal('')]).optional(),
|
|
50
|
+
obfuscation: VpnObfuscationSchema.optional(),
|
|
51
|
+
clientConfigured: z.boolean(),
|
|
52
|
+
vpnBillingRegistered: z.boolean().optional(),
|
|
53
|
+
vpnBillingMonthActive: z.boolean().optional(),
|
|
54
|
+
message: z.string().optional(),
|
|
55
|
+
lastError: z.string().optional(),
|
|
56
|
+
})
|
|
57
|
+
.strict();
|
|
58
|
+
export const VpnEgressStatusSchema = z
|
|
59
|
+
.object({
|
|
60
|
+
available: z.boolean(),
|
|
61
|
+
active: z.boolean(),
|
|
62
|
+
sharingEnabled: z.boolean(),
|
|
63
|
+
listenPort: z.number(),
|
|
64
|
+
endpointHost: z.string(),
|
|
65
|
+
countryCode: z.string(),
|
|
66
|
+
defaultRateLimitMbps: z.number(),
|
|
67
|
+
obfuscation: VpnObfuscationSchema,
|
|
68
|
+
peerCount: z.number().optional(),
|
|
69
|
+
vpnBillingRegistered: z.boolean().optional(),
|
|
70
|
+
vpnBillingMonthActive: z.boolean().optional(),
|
|
71
|
+
message: z.string().optional(),
|
|
72
|
+
lastError: z.string().optional(),
|
|
73
|
+
})
|
|
74
|
+
.strict();
|
|
75
|
+
export const VpnEgressExitPeerSchema = z
|
|
76
|
+
.object({
|
|
77
|
+
address: z.string(),
|
|
78
|
+
publicKey: z.string(),
|
|
79
|
+
countryCode: z.string().optional(),
|
|
80
|
+
obfuscation: VpnObfuscationSchema.optional(),
|
|
81
|
+
endpointHost: z.string().optional(),
|
|
82
|
+
listenPort: z.number().optional(),
|
|
83
|
+
defaultRateLimitMbps: z.number().optional(),
|
|
84
|
+
vpnBillingRegistered: z.boolean().optional(),
|
|
85
|
+
vpnBillingMonthActive: z.boolean().optional(),
|
|
86
|
+
})
|
|
87
|
+
.strict();
|
|
88
|
+
export const VpnSignedActionOutputSchema = z
|
|
89
|
+
.object({
|
|
90
|
+
result: z.record(z.string(), z.unknown()),
|
|
91
|
+
selectedSigningKey: SelectedSigningKeySchema.optional(),
|
|
92
|
+
signingMessage: z.string(),
|
|
93
|
+
})
|
|
94
|
+
.strict();
|
|
95
|
+
export const VpnDownloadOutputSchema = z
|
|
96
|
+
.object({
|
|
97
|
+
userFolder: z.string(),
|
|
98
|
+
wireGuardPath: z.string(),
|
|
99
|
+
transportPath: z.string().optional(),
|
|
100
|
+
wireGuardFilename: z.string(),
|
|
101
|
+
transportFilename: z.string().optional(),
|
|
102
|
+
setupInstructions: z.string().optional(),
|
|
103
|
+
selectedSigningKey: SelectedSigningKeySchema.optional(),
|
|
104
|
+
signingMessage: z.string(),
|
|
105
|
+
})
|
|
106
|
+
.strict();
|
|
107
|
+
export const ListVpnEgressExitsOutputSchema = z
|
|
108
|
+
.object({
|
|
109
|
+
exits: z.array(VpnEgressExitPeerSchema),
|
|
110
|
+
})
|
|
111
|
+
.strict();
|
|
112
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/core/vpn/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NodeSdkConfig } from '../../config/schema.js';
|
|
2
|
+
import { type ManagementSigningMethod } from '../../schemas/extended.js';
|
|
3
|
+
import type { SdkResult } from '../result.js';
|
|
4
|
+
import { toSelectedSigner } from '../management-signer.js';
|
|
5
|
+
import { type VpnSetEnabledResult, type VpnStatusData } from './vpn-parse.js';
|
|
6
|
+
export declare function getVpnStatus(config: NodeSdkConfig): Promise<SdkResult<VpnStatusData>>;
|
|
7
|
+
export declare function setVpnEnabled(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
|
|
8
|
+
result: VpnSetEnabledResult;
|
|
9
|
+
selectedSigningKey?: ReturnType<typeof toSelectedSigner>;
|
|
10
|
+
signingMessage: string;
|
|
11
|
+
}>>;
|
|
12
|
+
export declare function downloadVpnAdminClientConfig(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
|
|
13
|
+
userFolder: string;
|
|
14
|
+
wireGuardPath: string;
|
|
15
|
+
transportPath?: string;
|
|
16
|
+
wireGuardFilename: string;
|
|
17
|
+
transportFilename?: string;
|
|
18
|
+
setupInstructions?: string;
|
|
19
|
+
selectedSigningKey?: ReturnType<typeof toSelectedSigner>;
|
|
20
|
+
signingMessage: string;
|
|
21
|
+
}>>;
|
|
22
|
+
//# sourceMappingURL=vpn-admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-admin.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAEN,KAAK,uBAAuB,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAON,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,MAAM,gBAAgB,CAAC;AAqCxB,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAI3F;AAED,wBAAsB,aAAa,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CACT,SAAS,CAAC;IACT,MAAM,EAAE,mBAAmB,CAAC;IAC5B,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC,CACF,CA4BA;AAED,wBAAsB,4BAA4B,CACjD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CACT,SAAS,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC,CACF,CAuCA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DEFAULT_MANAGEMENT_SIGNING, } from '../../schemas/extended.js';
|
|
2
|
+
import { saveVpnClientBundleToUserFolder } from './vpn-files.js';
|
|
3
|
+
import { isVpnObfuscated, parseVpnClientConfigPayload, parseVpnSetEnabledPayload, parseVpnStatusPayload, } from './vpn-parse.js';
|
|
4
|
+
import { DownloadVpnAdminClientConfigInputSchema, SetVpnEnabledInputSchema, } from './schemas.js';
|
|
5
|
+
import { getManagementRecord, postSignedManagementRequest } from './vpn-signed.js';
|
|
6
|
+
function normalizeProfile(raw) {
|
|
7
|
+
return raw === 'split' ? 'split' : 'full';
|
|
8
|
+
}
|
|
9
|
+
function buildSetEnabledFields(input) {
|
|
10
|
+
const fields = {
|
|
11
|
+
enabled: input.enabled,
|
|
12
|
+
profile: input.profile,
|
|
13
|
+
};
|
|
14
|
+
if (input.enabled) {
|
|
15
|
+
fields.obfuscation = input.obfuscation ?? 'none';
|
|
16
|
+
}
|
|
17
|
+
return fields;
|
|
18
|
+
}
|
|
19
|
+
function buildClientConfigFields(input) {
|
|
20
|
+
const fields = { profile: input.profile };
|
|
21
|
+
if (input.obfuscation && isVpnObfuscated(input.obfuscation)) {
|
|
22
|
+
fields.obfuscation = input.obfuscation;
|
|
23
|
+
}
|
|
24
|
+
return fields;
|
|
25
|
+
}
|
|
26
|
+
export async function getVpnStatus(config) {
|
|
27
|
+
const result = await getManagementRecord(config, '/vpn/status');
|
|
28
|
+
if (!result.ok)
|
|
29
|
+
return result;
|
|
30
|
+
return { ok: true, data: parseVpnStatusPayload(result.data) };
|
|
31
|
+
}
|
|
32
|
+
export async function setVpnEnabled(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
33
|
+
const parsed = SetVpnEnabledInputSchema.safeParse(input);
|
|
34
|
+
if (!parsed.success) {
|
|
35
|
+
return { ok: false, reason: 'Invalid set VPN enabled input.' };
|
|
36
|
+
}
|
|
37
|
+
const profile = normalizeProfile(parsed.data.profile);
|
|
38
|
+
const posted = await postSignedManagementRequest(config, '/vpn/setEnabled', () => buildSetEnabledFields({
|
|
39
|
+
enabled: parsed.data.enabled,
|
|
40
|
+
profile,
|
|
41
|
+
obfuscation: parsed.data.obfuscation,
|
|
42
|
+
}), signing);
|
|
43
|
+
if (!posted.ok)
|
|
44
|
+
return posted;
|
|
45
|
+
return {
|
|
46
|
+
ok: true,
|
|
47
|
+
data: {
|
|
48
|
+
result: parseVpnSetEnabledPayload(posted.data.data),
|
|
49
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
50
|
+
signingMessage: posted.data.signingMessage,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export async function downloadVpnAdminClientConfig(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
55
|
+
const parsed = DownloadVpnAdminClientConfigInputSchema.safeParse(input);
|
|
56
|
+
if (!parsed.success) {
|
|
57
|
+
return { ok: false, reason: 'Invalid download VPN admin client config input.' };
|
|
58
|
+
}
|
|
59
|
+
const profile = normalizeProfile(parsed.data.profile);
|
|
60
|
+
const posted = await postSignedManagementRequest(config, '/vpn/clientConfig', () => buildClientConfigFields({
|
|
61
|
+
profile,
|
|
62
|
+
obfuscation: parsed.data.obfuscation,
|
|
63
|
+
}), signing);
|
|
64
|
+
if (!posted.ok)
|
|
65
|
+
return posted;
|
|
66
|
+
try {
|
|
67
|
+
const bundle = parseVpnClientConfigPayload(posted.data.data);
|
|
68
|
+
const saved = await saveVpnClientBundleToUserFolder(bundle, 'admin', {
|
|
69
|
+
userFolder: parsed.data.userFolder,
|
|
70
|
+
profile,
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
ok: true,
|
|
74
|
+
data: {
|
|
75
|
+
...saved,
|
|
76
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
77
|
+
signingMessage: posted.data.signingMessage,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
return {
|
|
83
|
+
ok: false,
|
|
84
|
+
reason: error instanceof Error ? error.message : 'Failed to save VPN client config.',
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=vpn-admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-admin.js","sourceRoot":"","sources":["../../../src/core/vpn/vpn-admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { NodeSdkConfig } from '../../config/schema.js';
|
|
2
|
+
import { type ManagementSigningMethod } from '../../schemas/extended.js';
|
|
3
|
+
import type { SdkResult } from '../result.js';
|
|
4
|
+
import { toSelectedSigner } from '../management-signer.js';
|
|
5
|
+
import { type VpnEgressExitPeer, type VpnEgressStatusData } from './vpn-parse.js';
|
|
6
|
+
export declare function getVpnEgressStatus(config: NodeSdkConfig): Promise<SdkResult<VpnEgressStatusData>>;
|
|
7
|
+
export declare function listVpnEgressExits(config: NodeSdkConfig): Promise<SdkResult<{
|
|
8
|
+
exits: VpnEgressExitPeer[];
|
|
9
|
+
}>>;
|
|
10
|
+
export declare function setVpnEgressSharing(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
|
|
11
|
+
result: Record<string, unknown>;
|
|
12
|
+
selectedSigningKey?: ReturnType<typeof toSelectedSigner>;
|
|
13
|
+
signingMessage: string;
|
|
14
|
+
}>>;
|
|
15
|
+
export declare function revokeVpnEgressPeer(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
|
|
16
|
+
result: Record<string, unknown>;
|
|
17
|
+
selectedSigningKey?: ReturnType<typeof toSelectedSigner>;
|
|
18
|
+
signingMessage: string;
|
|
19
|
+
}>>;
|
|
20
|
+
export declare function downloadVpnEgressClientConfig(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
|
|
21
|
+
userFolder: string;
|
|
22
|
+
wireGuardPath: string;
|
|
23
|
+
transportPath?: string;
|
|
24
|
+
wireGuardFilename: string;
|
|
25
|
+
transportFilename?: string;
|
|
26
|
+
setupInstructions?: string;
|
|
27
|
+
selectedSigningKey?: ReturnType<typeof toSelectedSigner>;
|
|
28
|
+
signingMessage: string;
|
|
29
|
+
}>>;
|
|
30
|
+
//# sourceMappingURL=vpn-egress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-egress.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-egress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAEN,KAAK,uBAAuB,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAIN,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAExB,MAAM,gBAAgB,CAAC;AAQxB,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAIzC;AAED,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,SAAS,CAAC;IAAC,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAAC,CAAC,CAAC,CAIlD;AAED,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CACT,SAAS,CAAC;IACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC,CACF,CA0BA;AAED,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CACT,SAAS,CAAC;IACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC,CACF,CAuBA;AAED,wBAAsB,6BAA6B,CAClD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CACT,SAAS,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC,CACF,CAuCA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { DEFAULT_MANAGEMENT_SIGNING, } from '../../schemas/extended.js';
|
|
2
|
+
import { saveVpnClientBundleToUserFolder } from './vpn-files.js';
|
|
3
|
+
import { parseVpnClientConfigPayload, parseVpnEgressExitsPayload, parseVpnEgressStatusPayload, } from './vpn-parse.js';
|
|
4
|
+
import { DownloadVpnEgressClientConfigInputSchema, RevokeVpnEgressPeerInputSchema, SetVpnEgressSharingInputSchema, } from './schemas.js';
|
|
5
|
+
import { getManagementRecord, postSignedManagementRequest } from './vpn-signed.js';
|
|
6
|
+
export async function getVpnEgressStatus(config) {
|
|
7
|
+
const result = await getManagementRecord(config, '/vpn/egress/status');
|
|
8
|
+
if (!result.ok)
|
|
9
|
+
return result;
|
|
10
|
+
return { ok: true, data: parseVpnEgressStatusPayload(result.data) };
|
|
11
|
+
}
|
|
12
|
+
export async function listVpnEgressExits(config) {
|
|
13
|
+
const result = await getManagementRecord(config, '/vpn/egress/availableExits');
|
|
14
|
+
if (!result.ok)
|
|
15
|
+
return result;
|
|
16
|
+
return { ok: true, data: { exits: parseVpnEgressExitsPayload(result.data) } };
|
|
17
|
+
}
|
|
18
|
+
export async function setVpnEgressSharing(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
19
|
+
const parsed = SetVpnEgressSharingInputSchema.safeParse(input);
|
|
20
|
+
if (!parsed.success) {
|
|
21
|
+
return { ok: false, reason: 'Invalid set VPN egress sharing input.' };
|
|
22
|
+
}
|
|
23
|
+
const posted = await postSignedManagementRequest(config, '/vpn/egress/setSharing', () => ({
|
|
24
|
+
enabled: parsed.data.enabled,
|
|
25
|
+
obfuscation: parsed.data.obfuscation ?? 'none',
|
|
26
|
+
defaultRateLimitMbps: parsed.data.defaultRateLimitMbps ?? 0,
|
|
27
|
+
}), signing);
|
|
28
|
+
if (!posted.ok)
|
|
29
|
+
return posted;
|
|
30
|
+
return {
|
|
31
|
+
ok: true,
|
|
32
|
+
data: {
|
|
33
|
+
result: posted.data.data,
|
|
34
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
35
|
+
signingMessage: posted.data.signingMessage,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export async function revokeVpnEgressPeer(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
40
|
+
const parsed = RevokeVpnEgressPeerInputSchema.safeParse(input);
|
|
41
|
+
if (!parsed.success) {
|
|
42
|
+
return { ok: false, reason: 'Invalid revoke VPN egress peer input.' };
|
|
43
|
+
}
|
|
44
|
+
const consumerNodeKey = parsed.data.consumerNodeKey.trim().toLowerCase();
|
|
45
|
+
const posted = await postSignedManagementRequest(config, '/vpn/egress/revokePeer', () => ({ consumerNodeKey }), signing);
|
|
46
|
+
if (!posted.ok)
|
|
47
|
+
return posted;
|
|
48
|
+
return {
|
|
49
|
+
ok: true,
|
|
50
|
+
data: {
|
|
51
|
+
result: posted.data.data,
|
|
52
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
53
|
+
signingMessage: posted.data.signingMessage,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export async function downloadVpnEgressClientConfig(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
58
|
+
const parsed = DownloadVpnEgressClientConfigInputSchema.safeParse(input);
|
|
59
|
+
if (!parsed.success) {
|
|
60
|
+
return { ok: false, reason: 'Invalid download VPN egress client config input.' };
|
|
61
|
+
}
|
|
62
|
+
const targetAddress = parsed.data.targetAddress.trim();
|
|
63
|
+
const obfuscation = (parsed.data.obfuscation ?? 'none');
|
|
64
|
+
const posted = await postSignedManagementRequest(config, '/vpn/egress/requestClientConfig', () => ({
|
|
65
|
+
targetAddress,
|
|
66
|
+
obfuscation,
|
|
67
|
+
}), signing);
|
|
68
|
+
if (!posted.ok)
|
|
69
|
+
return posted;
|
|
70
|
+
try {
|
|
71
|
+
const bundle = parseVpnClientConfigPayload(posted.data.data);
|
|
72
|
+
const saved = await saveVpnClientBundleToUserFolder(bundle, 'egress', {
|
|
73
|
+
userFolder: parsed.data.userFolder,
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
ok: true,
|
|
77
|
+
data: {
|
|
78
|
+
...saved,
|
|
79
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
80
|
+
signingMessage: posted.data.signingMessage,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
return {
|
|
86
|
+
ok: false,
|
|
87
|
+
reason: error instanceof Error ? error.message : 'Failed to save egress client config.',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=vpn-egress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-egress.js","sourceRoot":"","sources":["../../../src/core/vpn/vpn-egress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { VpnClientBundle, VpnConnectSource, VpnProfile } from './vpn-parse.js';
|
|
2
|
+
export type SavedVpnClientFiles = {
|
|
3
|
+
userFolder: string;
|
|
4
|
+
wireGuardPath: string;
|
|
5
|
+
transportPath?: string;
|
|
6
|
+
wireGuardFilename: string;
|
|
7
|
+
transportFilename?: string;
|
|
8
|
+
setupInstructions?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function saveVpnClientBundleToUserFolder(bundle: VpnClientBundle, source: VpnConnectSource, options?: {
|
|
11
|
+
userFolder?: string;
|
|
12
|
+
profile?: VpnProfile;
|
|
13
|
+
}): Promise<SavedVpnClientFiles>;
|
|
14
|
+
//# sourceMappingURL=vpn-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-files.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-files.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,MAAM,gBAAgB,CAAC;AAOxB,MAAM,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAsB,+BAA+B,CACpD,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,UAAU,CAAC;CAChB,GACJ,OAAO,CAAC,mBAAmB,CAAC,CA+B9B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { resolveUserFolderPath } from '../../config/paths.js';
|
|
4
|
+
import { resolveTransportBundle, vpnDownloadWireGuardFilename, wireGuardConfigTextFromBundle, } from './vpn-parse.js';
|
|
5
|
+
export async function saveVpnClientBundleToUserFolder(bundle, source, options = {}) {
|
|
6
|
+
const configText = wireGuardConfigTextFromBundle(bundle);
|
|
7
|
+
if (!configText) {
|
|
8
|
+
throw new Error('Empty VPN client config.');
|
|
9
|
+
}
|
|
10
|
+
const userFolder = resolveUserFolderPath(options.userFolder);
|
|
11
|
+
await fs.mkdir(userFolder, { recursive: true });
|
|
12
|
+
const profile = bundle.profile ?? options.profile;
|
|
13
|
+
const wireGuardFilename = bundle.filename?.trim() ||
|
|
14
|
+
vpnDownloadWireGuardFilename(source === 'egress' ? 'egress' : profile);
|
|
15
|
+
const wireGuardPath = path.join(userFolder, wireGuardFilename);
|
|
16
|
+
await fs.writeFile(wireGuardPath, configText, { mode: 0o644 });
|
|
17
|
+
const transport = resolveTransportBundle(bundle, source);
|
|
18
|
+
let transportPath;
|
|
19
|
+
if (transport) {
|
|
20
|
+
transportPath = path.join(userFolder, transport.filename);
|
|
21
|
+
await fs.writeFile(transportPath, transport.text, { mode: 0o644 });
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
userFolder,
|
|
25
|
+
wireGuardPath,
|
|
26
|
+
transportPath,
|
|
27
|
+
wireGuardFilename,
|
|
28
|
+
transportFilename: transport?.filename,
|
|
29
|
+
setupInstructions: bundle.setupInstructions,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=vpn-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-files.js","sourceRoot":"","sources":["../../../src/core/vpn/vpn-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,IAAI,EAAE,EAAC,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EACN,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,GAC7B,MAAM,gBAAgB,CAAC;AAWxB,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACpD,MAAuB,EACvB,MAAwB,EACxB,UAGI,EAAE;IAEN,MAAM,UAAU,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAClD,MAAM,iBAAiB,GACtB,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE;QACvB,4BAA4B,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,aAAiC,CAAC;IACtC,IAAI,SAAS,EAAE,CAAC;QACf,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACN,UAAU;QACV,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,iBAAiB,EAAE,SAAS,EAAE,QAAQ;QACtC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;KAC3C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Hex } from 'viem';
|
|
2
|
+
/** keccak256(abi.encodePacked(nodeKey, hostIpAddress)) — matches continuumdao-node-app vpnHostBinding.ts */
|
|
3
|
+
export declare function computeVpnHostBinding(nodeKey: string, hostIpAddress: string): Hex;
|
|
4
|
+
//# sourceMappingURL=vpn-host-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-host-binding.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-host-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,GAAG,EAAC,MAAM,MAAM,CAAC;AAEvD,4GAA4G;AAC5G,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,GAAG,CAEjF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { encodePacked, keccak256 } from 'viem';
|
|
2
|
+
/** keccak256(abi.encodePacked(nodeKey, hostIpAddress)) — matches continuumdao-node-app vpnHostBinding.ts */
|
|
3
|
+
export function computeVpnHostBinding(nodeKey, hostIpAddress) {
|
|
4
|
+
return keccak256(encodePacked(['string', 'string'], [nodeKey, hostIpAddress]));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=vpn-host-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-host-binding.js","sourceRoot":"","sources":["../../../src/core/vpn/vpn-host-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,SAAS,EAAW,MAAM,MAAM,CAAC;AAEvD,4GAA4G;AAC5G,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,aAAqB;IAC3E,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export type VpnProfile = 'split' | 'full';
|
|
2
|
+
export declare const VPN_OBFUSCATION_PROTOCOLS: readonly ["shadowsocks", "wg_obfuscator", "lwo", "udp2raw"];
|
|
3
|
+
export type VpnObfuscationProtocol = (typeof VPN_OBFUSCATION_PROTOCOLS)[number];
|
|
4
|
+
export type VpnObfuscation = 'none' | VpnObfuscationProtocol;
|
|
5
|
+
export type VpnConnectSource = 'admin' | 'egress';
|
|
6
|
+
export declare const VPN_DOWNLOAD_WG_FULL = "cont-full.conf";
|
|
7
|
+
export declare const VPN_DOWNLOAD_WG_SPLIT = "cont-split.conf";
|
|
8
|
+
export declare const VPN_DOWNLOAD_WG_EGRESS = "cont-egress.conf";
|
|
9
|
+
export declare const VPN_DOWNLOAD_SS_LOCAL = "cont-ss.json";
|
|
10
|
+
export declare const VPN_DOWNLOAD_SS_EGRESS = "cont-egss.json";
|
|
11
|
+
export declare const VPN_DOWNLOAD_WG_OBFUSC = "cont-wgo.conf";
|
|
12
|
+
export declare const VPN_DOWNLOAD_LWO_CLIENT = "cont-lwo.json";
|
|
13
|
+
export declare const VPN_DOWNLOAD_UDP2RAW = "cont-u2r.sh";
|
|
14
|
+
export type VpnStatusData = {
|
|
15
|
+
available: boolean;
|
|
16
|
+
installed: boolean;
|
|
17
|
+
active: boolean;
|
|
18
|
+
listenPort: number;
|
|
19
|
+
serverAddress: string;
|
|
20
|
+
vpnNetworkCidr: string;
|
|
21
|
+
endpointHost: string;
|
|
22
|
+
profiles: VpnProfile[];
|
|
23
|
+
clientConfigured: boolean;
|
|
24
|
+
profile?: VpnProfile | '';
|
|
25
|
+
obfuscation?: VpnObfuscation;
|
|
26
|
+
obfuscationAvailable?: boolean;
|
|
27
|
+
availableObfuscations?: VpnObfuscationProtocol[];
|
|
28
|
+
shadowsocksListenPort?: number;
|
|
29
|
+
shadowsocksMethod?: string;
|
|
30
|
+
wgObfuscatorListenPort?: number;
|
|
31
|
+
directWireGuardBlocked?: boolean;
|
|
32
|
+
managementViaVpn?: string;
|
|
33
|
+
message?: string;
|
|
34
|
+
lastError?: string;
|
|
35
|
+
hostProfile?: string;
|
|
36
|
+
vpnBillingRegistered?: boolean;
|
|
37
|
+
vpnBillingMonthActive?: boolean;
|
|
38
|
+
vpnBillingMonthUTC?: number;
|
|
39
|
+
};
|
|
40
|
+
export type VpnClientBundle = {
|
|
41
|
+
profile?: VpnProfile;
|
|
42
|
+
obfuscation?: VpnObfuscation;
|
|
43
|
+
configText?: string;
|
|
44
|
+
wireGuardConfigText?: string;
|
|
45
|
+
transportConfigText?: string;
|
|
46
|
+
transportFilename?: string;
|
|
47
|
+
transportBinary?: string;
|
|
48
|
+
shadowsocksLocalConfigText?: string;
|
|
49
|
+
shadowsocksUri?: string;
|
|
50
|
+
setupInstructions?: string;
|
|
51
|
+
filename?: string;
|
|
52
|
+
shadowsocksLocalFilename?: string;
|
|
53
|
+
localTunnelPort?: number;
|
|
54
|
+
};
|
|
55
|
+
export type VpnTransportBundle = {
|
|
56
|
+
text: string;
|
|
57
|
+
filename: string;
|
|
58
|
+
binary?: string;
|
|
59
|
+
};
|
|
60
|
+
export type VpnSetEnabledResult = {
|
|
61
|
+
message?: string;
|
|
62
|
+
profile?: VpnProfile;
|
|
63
|
+
obfuscation?: VpnObfuscation;
|
|
64
|
+
pendingVpnWritten?: boolean;
|
|
65
|
+
pendingVpnFileError?: string;
|
|
66
|
+
transportError?: string;
|
|
67
|
+
};
|
|
68
|
+
export type VpnEgressStatusData = {
|
|
69
|
+
available: boolean;
|
|
70
|
+
active: boolean;
|
|
71
|
+
sharingEnabled: boolean;
|
|
72
|
+
listenPort: number;
|
|
73
|
+
vpnNetworkCidr: string;
|
|
74
|
+
endpointHost: string;
|
|
75
|
+
obfuscation: VpnObfuscation;
|
|
76
|
+
countryCode: string;
|
|
77
|
+
defaultRateLimitMbps: number;
|
|
78
|
+
shadowsocksListenPort?: number;
|
|
79
|
+
wgObfuscatorListenPort?: number;
|
|
80
|
+
udp2rawListenPort?: number;
|
|
81
|
+
availableObfuscations?: VpnObfuscationProtocol[];
|
|
82
|
+
peerCount?: number;
|
|
83
|
+
message?: string;
|
|
84
|
+
lastError?: string;
|
|
85
|
+
vpnBillingRegistered?: boolean;
|
|
86
|
+
vpnBillingMonthActive?: boolean;
|
|
87
|
+
vpnBillingMonthUTC?: number;
|
|
88
|
+
};
|
|
89
|
+
export type VpnEgressExitPeer = {
|
|
90
|
+
address: string;
|
|
91
|
+
publicKey: string;
|
|
92
|
+
countryCode?: string;
|
|
93
|
+
obfuscation?: VpnObfuscation;
|
|
94
|
+
endpointHost?: string;
|
|
95
|
+
listenPort?: number;
|
|
96
|
+
defaultRateLimitMbps?: number;
|
|
97
|
+
shadowsocksListenPort?: number;
|
|
98
|
+
wgObfuscatorListenPort?: number;
|
|
99
|
+
udp2rawListenPort?: number;
|
|
100
|
+
vpnBillingRegistered?: boolean;
|
|
101
|
+
vpnBillingMonthActive?: boolean;
|
|
102
|
+
vpnBillingMonthUTC?: number;
|
|
103
|
+
};
|
|
104
|
+
export declare function parseVpnObfuscation(raw: unknown): VpnObfuscation;
|
|
105
|
+
export declare function isVpnObfuscated(obfuscation?: VpnObfuscation | string): boolean;
|
|
106
|
+
export declare function parseVpnStatusPayload(data: Record<string, unknown>): VpnStatusData;
|
|
107
|
+
export declare function parseVpnClientConfigPayload(data: Record<string, unknown>): VpnClientBundle;
|
|
108
|
+
export declare function parseVpnSetEnabledPayload(data: Record<string, unknown>): VpnSetEnabledResult;
|
|
109
|
+
export declare function parseVpnEgressStatusPayload(data: Record<string, unknown>): VpnEgressStatusData;
|
|
110
|
+
export declare function parseVpnEgressExitsPayload(data: Record<string, unknown>): VpnEgressExitPeer[];
|
|
111
|
+
export declare function vpnDownloadWireGuardFilename(profile?: VpnProfile | 'egress' | ''): string;
|
|
112
|
+
export declare function vpnDownloadTransportFilename(obfuscation: VpnObfuscation, source: VpnConnectSource): string | undefined;
|
|
113
|
+
export declare function resolveTransportBundle(bundle: VpnClientBundle, source?: VpnConnectSource): VpnTransportBundle | undefined;
|
|
114
|
+
export declare function wireGuardConfigTextFromBundle(bundle: VpnClientBundle): string;
|
|
115
|
+
//# sourceMappingURL=vpn-parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-parse.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-parse.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1C,eAAO,MAAM,yBAAyB,6DAK5B,CAAC;AACX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,sBAAsB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,UAAU,GAAG,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACjD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,cAAc,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAcF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAEhE;AAED,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAM9E;AA0BD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CA8ClF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CA6B1F;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAoB5F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAgC9F;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,EAAE,CAqC7F;AAED,wBAAgB,4BAA4B,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,EAAE,GAAG,MAAM,CAIzF;AAED,wBAAgB,4BAA4B,CAC3C,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,gBAAgB,GACtB,MAAM,GAAG,SAAS,CAapB;AAED,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,eAAe,EACvB,MAAM,GAAE,gBAA0B,GAChC,kBAAkB,GAAG,SAAS,CAUhC;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE7E"}
|