@serve.zone/dcrouter 17.2.4 → 17.4.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/deno.json +1 -1
- package/dist_serve/bundle.js +2024 -1758
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.dcrouter.d.ts +11 -1
- package/dist_ts/classes.dcrouter.js +63 -3
- package/dist_ts/config/classes.api-token-manager.d.ts +20 -2
- package/dist_ts/config/classes.api-token-manager.js +201 -6
- package/dist_ts/config/classes.gateway-client-manager.d.ts +36 -2
- package/dist_ts/config/classes.gateway-client-manager.js +391 -27
- package/dist_ts/db/documents/classes.api-token.doc.d.ts +2 -1
- package/dist_ts/db/documents/classes.api-token.doc.js +8 -2
- package/dist_ts/db/documents/classes.cached.email.d.ts +10 -1
- package/dist_ts/db/documents/classes.cached.email.js +27 -2
- package/dist_ts/db/documents/classes.gateway-client.doc.d.ts +25 -0
- package/dist_ts/db/documents/classes.gateway-client.doc.js +73 -2
- package/dist_ts/db/documents/classes.ops-config-event.doc.d.ts +55 -0
- package/dist_ts/db/documents/classes.ops-config-event.doc.js +296 -0
- package/dist_ts/db/documents/index.d.ts +1 -0
- package/dist_ts/db/documents/index.js +2 -1
- package/dist_ts/dns/classes.gateway-route-dns-reconciler.d.ts +52 -0
- package/dist_ts/dns/classes.gateway-route-dns-reconciler.js +609 -0
- package/dist_ts/dns/index.d.ts +1 -0
- package/dist_ts/dns/index.js +2 -1
- package/dist_ts/dns/manager.dns.d.ts +19 -0
- package/dist_ts/dns/manager.dns.js +25 -1
- package/dist_ts/email/classes.accepted-email-spool.d.ts +8 -1
- package/dist_ts/email/classes.accepted-email-spool.js +93 -1
- package/dist_ts/email/classes.smartmta-storage-manager.d.ts +7 -1
- package/dist_ts/email/classes.smartmta-storage-manager.js +46 -1
- package/dist_ts/email/smartmta-storage-policy.js +3 -1
- package/dist_ts/monitoring/classes.ops-event-manager.d.ts +32 -0
- package/dist_ts/monitoring/classes.ops-event-manager.js +71 -0
- package/dist_ts/monitoring/index.d.ts +1 -0
- package/dist_ts/monitoring/index.js +2 -1
- package/dist_ts/opsserver/classes.opsserver.d.ts +1 -0
- package/dist_ts/opsserver/classes.opsserver.js +3 -1
- package/dist_ts/opsserver/handlers/certificate.handler.d.ts +1 -0
- package/dist_ts/opsserver/handlers/certificate.handler.js +35 -5
- package/dist_ts/opsserver/handlers/config-event.handler.d.ts +12 -0
- package/dist_ts/opsserver/handlers/config-event.handler.js +47 -0
- package/dist_ts/opsserver/handlers/dns-record.handler.d.ts +1 -0
- package/dist_ts/opsserver/handlers/dns-record.handler.js +82 -3
- package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +6 -0
- package/dist_ts/opsserver/handlers/email-ops.handler.js +40 -9
- package/dist_ts/opsserver/handlers/gatewayclient.handler.d.ts +9 -1
- package/dist_ts/opsserver/handlers/gatewayclient.handler.js +714 -162
- package/dist_ts/opsserver/handlers/index.d.ts +1 -0
- package/dist_ts/opsserver/handlers/index.js +2 -1
- package/dist_ts/opsserver/helpers/gateway-client-auth.d.ts +25 -0
- package/dist_ts/opsserver/helpers/gateway-client-auth.js +168 -0
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts_apiclient/classes.gatewayclient.d.ts +13 -1
- package/dist_ts_apiclient/classes.gatewayclient.js +18 -2
- package/dist_ts_interfaces/data/config-events.d.ts +34 -0
- package/dist_ts_interfaces/data/config-events.js +8 -0
- package/dist_ts_interfaces/data/index.d.ts +1 -0
- package/dist_ts_interfaces/data/index.js +2 -1
- package/dist_ts_interfaces/data/route-management.d.ts +28 -1
- package/dist_ts_interfaces/data/route-management.js +3 -1
- package/dist_ts_interfaces/data/workhoster.d.ts +1 -0
- package/dist_ts_interfaces/requests/config-events.d.ts +35 -0
- package/dist_ts_interfaces/requests/config-events.js +4 -0
- package/dist_ts_interfaces/requests/index.d.ts +1 -0
- package/dist_ts_interfaces/requests/index.js +2 -1
- package/dist_ts_interfaces/requests/realtime.d.ts +1 -1
- package/dist_ts_interfaces/requests/realtime.js +2 -1
- package/dist_ts_migrations/index.js +148 -9
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/appstate/config-events.d.ts +19 -0
- package/dist_ts_web/appstate/config-events.js +68 -0
- package/dist_ts_web/appstate/runtime.js +7 -1
- package/dist_ts_web/appstate.d.ts +1 -0
- package/dist_ts_web/appstate.js +2 -1
- package/dist_ts_web/elements/ops-platform-events.d.ts +21 -0
- package/dist_ts_web/elements/ops-platform-events.js +361 -0
- package/dist_ts_web/elements/ops-view-logs.d.ts +4 -0
- package/dist_ts_web/elements/ops-view-logs.js +96 -9
- package/package.json +4 -4
- package/readme.plan.md +22 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.dcrouter.ts +72 -2
- package/ts/config/classes.api-token-manager.ts +237 -4
- package/ts/config/classes.gateway-client-manager.ts +463 -19
- package/ts/db/documents/classes.api-token.doc.ts +8 -1
- package/ts/db/documents/classes.cached.email.ts +21 -1
- package/ts/db/documents/classes.gateway-client.doc.ts +86 -0
- package/ts/db/documents/classes.ops-config-event.doc.ts +257 -0
- package/ts/db/documents/index.ts +1 -0
- package/ts/dns/classes.gateway-route-dns-reconciler.ts +801 -0
- package/ts/dns/index.ts +1 -0
- package/ts/dns/manager.dns.ts +36 -0
- package/ts/email/classes.accepted-email-spool.ts +111 -0
- package/ts/email/classes.smartmta-storage-manager.ts +57 -1
- package/ts/email/smartmta-storage-policy.ts +2 -0
- package/ts/monitoring/classes.ops-event-manager.ts +99 -0
- package/ts/monitoring/index.ts +2 -1
- package/ts/opsserver/classes.opsserver.ts +2 -0
- package/ts/opsserver/handlers/certificate.handler.ts +51 -4
- package/ts/opsserver/handlers/config-event.handler.ts +62 -0
- package/ts/opsserver/handlers/dns-record.handler.ts +101 -2
- package/ts/opsserver/handlers/email-ops.handler.ts +42 -8
- package/ts/opsserver/handlers/gatewayclient.handler.ts +804 -136
- package/ts/opsserver/handlers/index.ts +1 -0
- package/ts/opsserver/helpers/gateway-client-auth.ts +198 -0
- package/ts/plugins.ts +2 -0
- package/ts_apiclient/classes.gatewayclient.ts +45 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/appstate/config-events.ts +98 -0
- package/ts_web/appstate/runtime.ts +8 -1
- package/ts_web/appstate.ts +1 -0
- package/ts_web/elements/ops-platform-events.ts +315 -0
- package/ts_web/elements/ops-view-logs.ts +84 -7
|
@@ -22,4 +22,5 @@ export * from './acme-config.handler.js';
|
|
|
22
22
|
export * from './email-domain.handler.js';
|
|
23
23
|
export * from './gatewayclient.handler.js';
|
|
24
24
|
export * from './realtime.handler.js';
|
|
25
|
-
|
|
25
|
+
export * from './config-event.handler.js';
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQyJ9
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { OpsServer } from '../classes.opsserver.js';
|
|
2
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
3
|
+
export interface IGatewayMachineAuthContext {
|
|
4
|
+
userId: string;
|
|
5
|
+
isAdmin: boolean;
|
|
6
|
+
token?: interfaces.data.IStoredApiToken;
|
|
7
|
+
credentialId?: string;
|
|
8
|
+
policy?: interfaces.data.IApiTokenPolicy;
|
|
9
|
+
gatewayClient?: interfaces.data.IGatewayClient;
|
|
10
|
+
managedZoneNames: string[];
|
|
11
|
+
}
|
|
12
|
+
export type TGatewayCredentialState = 'candidate' | 'active' | 'manual';
|
|
13
|
+
export interface IRequireGatewayMachineAuthOptions {
|
|
14
|
+
allowCandidate?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function getGatewayCredentialState(tokenArg: interfaces.data.IStoredApiToken): TGatewayCredentialState;
|
|
17
|
+
export declare function normalizeGatewayHostname(hostnameArg: string): string;
|
|
18
|
+
export declare function normalizeGatewayTargetHost(hostArg: string): string;
|
|
19
|
+
export declare function isHostnameInManagedZone(hostnameArg: string, managedZoneNamesArg: string[]): boolean;
|
|
20
|
+
export declare function matchesGatewayHostnamePatterns(hostnameArg: string, patternsArg: string[], managedZoneNamesArg: string[]): boolean;
|
|
21
|
+
export declare function hasOwnedEnabledGatewayRoute(opsServerRefArg: OpsServer, authArg: IGatewayMachineAuthContext, hostnameArg: string): boolean;
|
|
22
|
+
export declare function requireGatewayMachineAuth(opsServerRefArg: OpsServer, requestArg: {
|
|
23
|
+
identity?: interfaces.data.IIdentity;
|
|
24
|
+
apiToken?: string;
|
|
25
|
+
}, scopeArg: 'gateway-clients:read' | 'gateway-clients:write', optionsArg?: IRequireGatewayMachineAuthOptions): Promise<IGatewayMachineAuthContext>;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
3
|
+
import { requireOpsAuth } from './auth.js';
|
|
4
|
+
export function getGatewayCredentialState(tokenArg) {
|
|
5
|
+
const lifecycle = tokenArg.gatewayCredentialLifecycle;
|
|
6
|
+
if (lifecycle == null)
|
|
7
|
+
return 'manual';
|
|
8
|
+
if (lifecycle.source === 'provisioned'
|
|
9
|
+
&& (lifecycle.state === 'candidate' || lifecycle.state === 'active')) {
|
|
10
|
+
return lifecycle.state;
|
|
11
|
+
}
|
|
12
|
+
throw new plugins.typedrequest.TypedResponseError('gateway-client credential lifecycle is invalid');
|
|
13
|
+
}
|
|
14
|
+
export function normalizeGatewayHostname(hostnameArg) {
|
|
15
|
+
const candidate = String(hostnameArg || '').trim().toLowerCase().replace(/\.+$/, '');
|
|
16
|
+
if (!candidate || candidate.includes('*')) {
|
|
17
|
+
throw new plugins.typedrequest.TypedResponseError(`invalid hostname: ${hostnameArg}`);
|
|
18
|
+
}
|
|
19
|
+
const ascii = plugins.url.domainToASCII(candidate);
|
|
20
|
+
if (!ascii) {
|
|
21
|
+
throw new plugins.typedrequest.TypedResponseError(`invalid hostname: ${hostnameArg}`);
|
|
22
|
+
}
|
|
23
|
+
return ascii;
|
|
24
|
+
}
|
|
25
|
+
export function normalizeGatewayTargetHost(hostArg) {
|
|
26
|
+
const candidate = String(hostArg || '').trim().toLowerCase().replace(/\.+$/, '');
|
|
27
|
+
if (plugins.net.isIP(candidate))
|
|
28
|
+
return candidate;
|
|
29
|
+
const ascii = plugins.url.domainToASCII(candidate);
|
|
30
|
+
if (!ascii) {
|
|
31
|
+
throw new plugins.typedrequest.TypedResponseError(`invalid route target host: ${hostArg}`);
|
|
32
|
+
}
|
|
33
|
+
return ascii;
|
|
34
|
+
}
|
|
35
|
+
export function isHostnameInManagedZone(hostnameArg, managedZoneNamesArg) {
|
|
36
|
+
const hostname = normalizeGatewayHostname(hostnameArg);
|
|
37
|
+
return managedZoneNamesArg.some((zoneArg) => {
|
|
38
|
+
const zone = normalizeGatewayHostname(zoneArg);
|
|
39
|
+
return hostname === zone || hostname.endsWith(`.${zone}`);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function matchesGatewayHostnamePatterns(hostnameArg, patternsArg, managedZoneNamesArg) {
|
|
43
|
+
const hostname = normalizeGatewayHostname(hostnameArg);
|
|
44
|
+
for (const patternArg of patternsArg) {
|
|
45
|
+
const rawPattern = String(patternArg || '').trim().toLowerCase().replace(/\.+$/, '');
|
|
46
|
+
if (!rawPattern)
|
|
47
|
+
continue;
|
|
48
|
+
if (rawPattern === '*') {
|
|
49
|
+
if (isHostnameInManagedZone(hostname, managedZoneNamesArg))
|
|
50
|
+
return true;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const wildcard = rawPattern.startsWith('*.');
|
|
54
|
+
const normalizedPattern = normalizeGatewayHostname(wildcard ? rawPattern.slice(2) : rawPattern);
|
|
55
|
+
if (!wildcard && hostname === normalizedPattern)
|
|
56
|
+
return true;
|
|
57
|
+
if (!wildcard || !hostname.endsWith(`.${normalizedPattern}`))
|
|
58
|
+
continue;
|
|
59
|
+
const label = hostname.slice(0, -(normalizedPattern.length + 1));
|
|
60
|
+
if (label && !label.includes('.'))
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
export function hasOwnedEnabledGatewayRoute(opsServerRefArg, authArg, hostnameArg) {
|
|
66
|
+
if (authArg.isAdmin)
|
|
67
|
+
return true;
|
|
68
|
+
const liveClient = authArg.gatewayClient;
|
|
69
|
+
if (!liveClient)
|
|
70
|
+
return false;
|
|
71
|
+
const hostname = normalizeGatewayHostname(hostnameArg);
|
|
72
|
+
const routes = opsServerRefArg.dcRouterRef.routeConfigManager?.getMergedRoutes().routes || [];
|
|
73
|
+
return routes.some((routeArg) => {
|
|
74
|
+
if (!routeArg.enabled || routeArg.metadata?.ownerType !== 'gatewayClient')
|
|
75
|
+
return false;
|
|
76
|
+
if (routeArg.metadata.gatewayClientId !== liveClient.id)
|
|
77
|
+
return false;
|
|
78
|
+
if ((routeArg.metadata.gatewayClientType || 'custom') !== liveClient.type)
|
|
79
|
+
return false;
|
|
80
|
+
const domains = routeArg.route.match?.domains;
|
|
81
|
+
const values = Array.isArray(domains)
|
|
82
|
+
? domains
|
|
83
|
+
: typeof domains === 'string'
|
|
84
|
+
? domains.split(',')
|
|
85
|
+
: [];
|
|
86
|
+
return values.some((domainArg) => {
|
|
87
|
+
try {
|
|
88
|
+
return normalizeGatewayHostname(domainArg) === hostname;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
export async function requireGatewayMachineAuth(opsServerRefArg, requestArg, scopeArg, optionsArg = {}) {
|
|
97
|
+
const auth = await requireOpsAuth(opsServerRefArg, requestArg, {
|
|
98
|
+
scope: scopeArg,
|
|
99
|
+
requireAdminIdentity: false,
|
|
100
|
+
});
|
|
101
|
+
const managedZoneNames = (await opsServerRefArg.dcRouterRef.dnsManager?.listDomains() || [])
|
|
102
|
+
.map((domainArg) => domainArg.name);
|
|
103
|
+
if (auth.isAdmin) {
|
|
104
|
+
return {
|
|
105
|
+
userId: auth.userId,
|
|
106
|
+
isAdmin: true,
|
|
107
|
+
token: auth.token,
|
|
108
|
+
policy: auth.token?.policy,
|
|
109
|
+
managedZoneNames,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (auth.type !== 'apiToken' || auth.token?.policy?.role !== 'gatewayClient') {
|
|
113
|
+
throw new plugins.typedrequest.TypedResponseError('gateway-client credential required');
|
|
114
|
+
}
|
|
115
|
+
const credentialState = getGatewayCredentialState(auth.token);
|
|
116
|
+
if (credentialState === 'candidate' && !optionsArg.allowCandidate) {
|
|
117
|
+
throw new plugins.typedrequest.TypedResponseError('gateway-client credential is awaiting finalization');
|
|
118
|
+
}
|
|
119
|
+
const credentialLifecycle = auth.token.gatewayCredentialLifecycle;
|
|
120
|
+
const tokenBinding = auth.token.policy.gatewayClient;
|
|
121
|
+
if (!tokenBinding?.id || !tokenBinding.type || !Number.isSafeInteger(tokenBinding.policyGeneration)) {
|
|
122
|
+
throw new plugins.typedrequest.TypedResponseError('gateway-client credential binding is incomplete');
|
|
123
|
+
}
|
|
124
|
+
const manager = opsServerRefArg.dcRouterRef.gatewayClientManager;
|
|
125
|
+
if (!manager) {
|
|
126
|
+
throw new plugins.typedrequest.TypedResponseError('gateway client management not initialized');
|
|
127
|
+
}
|
|
128
|
+
// Deliberately load the durable policy on every request. Token snapshots are
|
|
129
|
+
// identity bindings only and never provide current authorization.
|
|
130
|
+
if (credentialLifecycle
|
|
131
|
+
&& credentialLifecycle.policyGeneration !== tokenBinding.policyGeneration) {
|
|
132
|
+
throw new plugins.typedrequest.TypedResponseError('gateway-client credential binding is inconsistent');
|
|
133
|
+
}
|
|
134
|
+
const liveClient = credentialLifecycle
|
|
135
|
+
? await manager.getClientForProvisionedCredential(tokenBinding.id, tokenBinding.type, credentialLifecycle)
|
|
136
|
+
: await manager.getClient(tokenBinding.id);
|
|
137
|
+
if (!liveClient || !liveClient.enabled) {
|
|
138
|
+
throw new plugins.typedrequest.TypedResponseError('gateway client is missing or disabled');
|
|
139
|
+
}
|
|
140
|
+
if (liveClient.type !== tokenBinding.type) {
|
|
141
|
+
throw new plugins.typedrequest.TypedResponseError('gateway-client credential type does not match live policy');
|
|
142
|
+
}
|
|
143
|
+
if (liveClient.policyGeneration !== tokenBinding.policyGeneration) {
|
|
144
|
+
throw new plugins.typedrequest.TypedResponseError('gateway-client credential policy generation is stale');
|
|
145
|
+
}
|
|
146
|
+
const livePolicy = {
|
|
147
|
+
role: 'gatewayClient',
|
|
148
|
+
scopes: ['gateway-clients:read', 'gateway-clients:write'],
|
|
149
|
+
gatewayClient: {
|
|
150
|
+
type: liveClient.type,
|
|
151
|
+
id: liveClient.id,
|
|
152
|
+
policyGeneration: liveClient.policyGeneration,
|
|
153
|
+
},
|
|
154
|
+
hostnamePatterns: structuredClone(liveClient.hostnamePatterns),
|
|
155
|
+
allowedRouteTargets: structuredClone(liveClient.allowedRouteTargets),
|
|
156
|
+
capabilities: structuredClone(liveClient.capabilities),
|
|
157
|
+
};
|
|
158
|
+
return {
|
|
159
|
+
userId: auth.userId,
|
|
160
|
+
isAdmin: false,
|
|
161
|
+
token: auth.token,
|
|
162
|
+
credentialId: auth.token.id,
|
|
163
|
+
policy: livePolicy,
|
|
164
|
+
gatewayClient: liveClient,
|
|
165
|
+
managedZoneNames,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS1jbGllbnQtYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL29wc3NlcnZlci9oZWxwZXJzL2dhdGV3YXktY2xpZW50LWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssVUFBVSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFrQjNDLE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsUUFBeUM7SUFFekMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLDBCQUEwQixDQUFDO0lBQ3RELElBQUksU0FBUyxJQUFJLElBQUk7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUN2QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssYUFBYTtXQUNqQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN2RSxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUNELE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLGdEQUFnRCxDQUFDLENBQUM7QUFDdEcsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxXQUFtQjtJQUMxRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMscUJB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
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ import * as os from 'node:os';
|
|
|
8
8
|
import * as path from 'node:path';
|
|
9
9
|
import * as tls from 'node:tls';
|
|
10
10
|
import * as util from 'node:util';
|
|
11
|
-
|
|
11
|
+
import * as url from 'node:url';
|
|
12
|
+
export { dns, fs, crypto, http, net, buffer, os, path, tls, util, url, };
|
|
12
13
|
import * as servezoneInterfaces from '@serve.zone/interfaces';
|
|
13
14
|
import * as remoteingress from '@serve.zone/remoteingress';
|
|
14
15
|
export { servezoneInterfaces, remoteingress, };
|
package/dist_ts/plugins.js
CHANGED
|
@@ -9,7 +9,8 @@ import * as os from 'node:os';
|
|
|
9
9
|
import * as path from 'node:path';
|
|
10
10
|
import * as tls from 'node:tls';
|
|
11
11
|
import * as util from 'node:util';
|
|
12
|
-
|
|
12
|
+
import * as url from 'node:url';
|
|
13
|
+
export { dns, fs, crypto, http, net, buffer, os, path, tls, util, url, };
|
|
13
14
|
// @serve.zone scope
|
|
14
15
|
import * as servezoneInterfaces from '@serve.zone/interfaces';
|
|
15
16
|
import * as remoteingress from '@serve.zone/remoteingress';
|
|
@@ -58,4 +59,4 @@ export { tsclass, };
|
|
|
58
59
|
// third party
|
|
59
60
|
import * as uuid from 'uuid';
|
|
60
61
|
export { uuid, };
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBRWhDLE9BQU8sRUFDTCxHQUFHLEVBQ0gsRUFBRSxFQUNGLE1BQU0sRUFDTixJQUFJLEVBQ0osR0FBRyxFQUNILE1BQU0sRUFDTixFQUFFLEVBQ0YsSUFBSSxFQUNKLEdBQUcsRUFDSCxJQUFJLEVBQ0osR0FBRyxHQUNKLENBQUE7QUFFRCxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLG1CQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sS0FBSyxhQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixhQUFhLEdBQ2QsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FB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
|
|
@@ -5,12 +5,24 @@ export declare class GatewayClientApi {
|
|
|
5
5
|
constructor(clientRef: DcRouterApiClient);
|
|
6
6
|
getCapabilities(): Promise<servezoneInterfaces.data.IGatewayCapabilities>;
|
|
7
7
|
getGatewayClientContext(): Promise<servezoneInterfaces.data.IGatewayClientContext>;
|
|
8
|
+
provisionCredential(options: {
|
|
9
|
+
provisioning: servezoneInterfaces.data.IGatewayClientProvisioningSpec;
|
|
10
|
+
credentialName?: string;
|
|
11
|
+
expiresInDays?: number | null;
|
|
12
|
+
}): Promise<servezoneInterfaces.requests.gateway.IReq_ProvisionGatewayClientCredential['response']>;
|
|
13
|
+
finalizeCredential(credential: Pick<servezoneInterfaces.data.IGatewayClientCredential, 'tokenId' | 'tokenValue'>): Promise<servezoneInterfaces.requests.gateway.IReq_FinalizeGatewayClientCredential['response']>;
|
|
14
|
+
getMailOverview(limit?: number): Promise<servezoneInterfaces.requests.gateway.IReq_GetGatewayClientMailOverview['response']>;
|
|
8
15
|
getDomains(): Promise<servezoneInterfaces.data.IGatewayDomain[]>;
|
|
9
16
|
getDnsRecords(): Promise<servezoneInterfaces.data.IGatewayDnsRecord[]>;
|
|
17
|
+
getRoutes(): Promise<servezoneInterfaces.data.IGatewayClientRoute[]>;
|
|
10
18
|
syncRoute(options: {
|
|
11
19
|
ownership: servezoneInterfaces.data.IGatewayClientOwnership;
|
|
12
20
|
route: servezoneInterfaces.data.IGatewayRouteConfig;
|
|
13
21
|
enabled?: boolean;
|
|
22
|
+
dnsMode?: servezoneInterfaces.data.TGatewayRouteDnsMode;
|
|
23
|
+
sourceProfileRef?: string;
|
|
24
|
+
}): Promise<servezoneInterfaces.data.IGatewayRouteSyncResult>;
|
|
25
|
+
deleteRoute(ownership: servezoneInterfaces.data.IGatewayClientOwnership, options?: {
|
|
26
|
+
dnsMode?: servezoneInterfaces.data.TGatewayRouteDnsMode;
|
|
14
27
|
}): Promise<servezoneInterfaces.data.IGatewayRouteSyncResult>;
|
|
15
|
-
deleteRoute(ownership: servezoneInterfaces.data.IGatewayClientOwnership): Promise<servezoneInterfaces.data.IGatewayRouteSyncResult>;
|
|
16
28
|
}
|
|
@@ -11,6 +11,15 @@ export class GatewayClientApi {
|
|
|
11
11
|
const response = await this.clientRef.request('getGatewayClientContext', this.clientRef.buildRequestPayload());
|
|
12
12
|
return response.context;
|
|
13
13
|
}
|
|
14
|
+
async provisionCredential(options) {
|
|
15
|
+
return await this.clientRef.request('provisionGatewayClientCredential', this.clientRef.buildRequestPayload(options));
|
|
16
|
+
}
|
|
17
|
+
async finalizeCredential(credential) {
|
|
18
|
+
return await this.clientRef.request('finalizeGatewayClientCredential', { apiToken: credential.tokenValue, tokenId: credential.tokenId });
|
|
19
|
+
}
|
|
20
|
+
async getMailOverview(limit) {
|
|
21
|
+
return await this.clientRef.request('getGatewayClientMailOverview', this.clientRef.buildRequestPayload({ limit }));
|
|
22
|
+
}
|
|
14
23
|
async getDomains() {
|
|
15
24
|
const response = await this.clientRef.request('getGatewayClientDomains', this.clientRef.buildRequestPayload());
|
|
16
25
|
return response.domains;
|
|
@@ -19,18 +28,25 @@ export class GatewayClientApi {
|
|
|
19
28
|
const response = await this.clientRef.request('getGatewayClientDnsRecords', this.clientRef.buildRequestPayload());
|
|
20
29
|
return response.records;
|
|
21
30
|
}
|
|
31
|
+
async getRoutes() {
|
|
32
|
+
const response = await this.clientRef.request('getGatewayClientRoutes', this.clientRef.buildRequestPayload());
|
|
33
|
+
return response.routes;
|
|
34
|
+
}
|
|
22
35
|
async syncRoute(options) {
|
|
23
36
|
return this.clientRef.request('syncGatewayClientRoute', this.clientRef.buildRequestPayload({
|
|
24
37
|
ownership: options.ownership,
|
|
25
38
|
route: options.route,
|
|
26
39
|
enabled: options.enabled,
|
|
40
|
+
dnsMode: options.dnsMode,
|
|
41
|
+
sourceProfileRef: options.sourceProfileRef,
|
|
27
42
|
}));
|
|
28
43
|
}
|
|
29
|
-
async deleteRoute(ownership) {
|
|
44
|
+
async deleteRoute(ownership, options = {}) {
|
|
30
45
|
return this.clientRef.request('syncGatewayClientRoute', this.clientRef.buildRequestPayload({
|
|
31
46
|
ownership,
|
|
32
47
|
delete: true,
|
|
48
|
+
dnsMode: options.dnsMode,
|
|
33
49
|
}));
|
|
34
50
|
}
|
|
35
51
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5nYXRld2F5Y2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfYXBpY2xpZW50L2NsYXNzZXMuZ2F0ZXdheWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1A7SUFBcEIsWUFBb0IsU0FBNEI7UUFBNUIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7SUFBRyxDQUFDO0lBRTdDLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNDLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFTLENBQzVDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUI7UUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BSWhDO1FBQ0MsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUNqQyxrQ0FBa0MsRUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQVEsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQzdCLFVBQTZGO1FBRTdGLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDakMsaUNBQWlDLEVBQ2pDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FDakUsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUMxQixLQUFjO1FBRWQsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUNqQyw4QkFBOEIsRUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFRLENBQ3JELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWE7UUFDeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MsNEJBQTRCLEVBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVM7UUFDcEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0Msd0JBQXdCLEVBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQU10QjtRQUNDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNCLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1lBQ2pDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO1NBQzNDLENBQVEsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQ3RCLFNBQTJELEVBQzNELFVBRUksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNCLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1lBQ2pDLFNBQVM7WUFDVCxNQUFNLEVBQUUsSUFBSTtZQUNaLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFRLENBQ1YsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform configuration events — operator-facing warnings and errors that are
|
|
3
|
+
* not application runtime errors (e.g. a manual DNS entry overwritten by
|
|
4
|
+
* gateway automation, or a rejected manual mutation on an auto-managed
|
|
5
|
+
* record). Stored durably and acknowledgeable from the ops UI.
|
|
6
|
+
*/
|
|
7
|
+
export type TOpsConfigEventSeverity = 'warning' | 'error';
|
|
8
|
+
/** Stable seek position for descending platform-event pages. */
|
|
9
|
+
export interface IOpsConfigEventCursor {
|
|
10
|
+
createdAt: number;
|
|
11
|
+
id: string;
|
|
12
|
+
}
|
|
13
|
+
export interface IOpsConfigEventContext {
|
|
14
|
+
domain?: string;
|
|
15
|
+
recordName?: string;
|
|
16
|
+
previousValue?: string;
|
|
17
|
+
newValue?: string;
|
|
18
|
+
routeRef?: string;
|
|
19
|
+
actor?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface IOpsConfigEvent {
|
|
22
|
+
id: string;
|
|
23
|
+
severity: TOpsConfigEventSeverity;
|
|
24
|
+
/** Producer-defined event class, e.g. 'dns-conflict'. */
|
|
25
|
+
category: string;
|
|
26
|
+
/** Short human-readable summary. */
|
|
27
|
+
title: string;
|
|
28
|
+
/** Full explanation of what happened and why. */
|
|
29
|
+
detail: string;
|
|
30
|
+
context: IOpsConfigEventContext;
|
|
31
|
+
createdAt: number;
|
|
32
|
+
acknowledgedBy?: string;
|
|
33
|
+
acknowledgedAt?: number;
|
|
34
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform configuration events — operator-facing warnings and errors that are
|
|
3
|
+
* not application runtime errors (e.g. a manual DNS entry overwritten by
|
|
4
|
+
* gateway automation, or a rejected manual mutation on an auto-managed
|
|
5
|
+
* record). Stored durably and acknowledgeable from the ops UI.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvZGF0YS9jb25maWctZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHIn0=
|
|
@@ -12,4 +12,5 @@ export * from './acme-config.js';
|
|
|
12
12
|
export * from './email-domain.js';
|
|
13
13
|
export * from './email-settings.js';
|
|
14
14
|
export * from './security-policy.js';
|
|
15
|
-
|
|
15
|
+
export * from './config-events.js';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL2RhdGEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDIn0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IRouteConfig } from '@push.rocks/smartproxy';
|
|
2
2
|
import type { IRouteChallengeConfig } from '@push.rocks/smartchallenge';
|
|
3
|
+
import type * as servezoneInterfaces from '@serve.zone/interfaces';
|
|
3
4
|
import type { IDcRouterRouteConfig, IRouteRemoteIngress } from './remoteingress.js';
|
|
4
5
|
type TSmartProxyRouteRateLimit = NonNullable<NonNullable<IRouteConfig['security']>['rateLimit']>;
|
|
5
6
|
export type TRouteRateLimitExceededPolicy = NonNullable<TSmartProxyRouteRateLimit['onExceeded']>;
|
|
@@ -11,7 +12,7 @@ export interface IRouteSecurity extends TSmartProxyRouteSecurityBase {
|
|
|
11
12
|
rateLimit?: IRouteRateLimit | null;
|
|
12
13
|
challenge?: IRouteChallengeConfig | null;
|
|
13
14
|
}
|
|
14
|
-
export declare const apiTokenScopes: readonly ["*", "routes:read", "routes:write", "config:read", "stats:read", "logs:read", "security:read", "security:write", "emails:read", "emails:write", "certificates:read", "certificates:write", "tokens:read", "tokens:manage", "users:read", "users:manage", "source-profiles:read", "source-profiles:write", "target-profiles:read", "target-profiles:write", "targets:read", "targets:write", "dns-providers:read", "dns-providers:write", "domains:read", "domains:write", "dns-records:read", "dns-records:write", "acme-config:read", "acme-config:write", "email-domains:read", "email-domains:write", "remote-ingress:read", "remote-ingress:write", "vpn:read", "vpn:write", "radius:read", "radius:write", "gateway-clients:read", "gateway-clients:write", "workhosters:read", "workhosters:write"];
|
|
15
|
+
export declare const apiTokenScopes: readonly ["*", "routes:read", "routes:write", "config:read", "stats:read", "logs:read", "config-events:read", "config-events:write", "security:read", "security:write", "emails:read", "emails:write", "certificates:read", "certificates:write", "tokens:read", "tokens:manage", "users:read", "users:manage", "source-profiles:read", "source-profiles:write", "target-profiles:read", "target-profiles:write", "targets:read", "targets:write", "dns-providers:read", "dns-providers:write", "domains:read", "domains:write", "dns-records:read", "dns-records:write", "acme-config:read", "acme-config:write", "email-domains:read", "email-domains:write", "remote-ingress:read", "remote-ingress:write", "vpn:read", "vpn:write", "radius:read", "radius:write", "gateway-clients:read", "gateway-clients:write", "workhosters:read", "workhosters:write"];
|
|
15
16
|
export type TApiTokenScope = typeof apiTokenScopes[number];
|
|
16
17
|
export type TGatewayClientType = 'onebox' | 'cloudly' | 'custom';
|
|
17
18
|
export interface IApiTokenPolicy {
|
|
@@ -20,20 +21,42 @@ export interface IApiTokenPolicy {
|
|
|
20
21
|
gatewayClient?: {
|
|
21
22
|
type: TGatewayClientType;
|
|
22
23
|
id: string;
|
|
24
|
+
policyGeneration: number;
|
|
23
25
|
};
|
|
24
26
|
hostnamePatterns?: string[];
|
|
25
27
|
allowedRouteTargets?: Array<{
|
|
26
28
|
host: string;
|
|
27
29
|
ports: number[];
|
|
30
|
+
allowAnyPort?: boolean;
|
|
28
31
|
}>;
|
|
29
32
|
capabilities?: {
|
|
30
33
|
readDomains?: boolean;
|
|
31
34
|
readDnsRecords?: boolean;
|
|
35
|
+
readRoutes?: boolean;
|
|
32
36
|
syncRoutes?: boolean;
|
|
33
37
|
syncDnsRecords?: boolean;
|
|
38
|
+
readMail?: boolean;
|
|
39
|
+
manageMail?: boolean;
|
|
40
|
+
readCertificates?: boolean;
|
|
34
41
|
requestCertificates?: boolean;
|
|
35
42
|
};
|
|
36
43
|
}
|
|
44
|
+
export interface IGatewayCredentialLifecycle {
|
|
45
|
+
source: 'provisioned';
|
|
46
|
+
state: 'candidate' | 'active';
|
|
47
|
+
/** Strictly monotonic within one gateway client. */
|
|
48
|
+
sequence: number;
|
|
49
|
+
/** Generation this credential was issued to activate. */
|
|
50
|
+
policyGeneration: number;
|
|
51
|
+
/** Digest of the exact durable policy snapshot this credential may activate. */
|
|
52
|
+
policyDigest: string;
|
|
53
|
+
/** Set once when a provisioned candidate first becomes active. */
|
|
54
|
+
finalizedAt: number | null;
|
|
55
|
+
/** Set only after older provisioned credentials have been durably cleaned up. */
|
|
56
|
+
cleanupCompletedAt: number | null;
|
|
57
|
+
/** Stable response value retained for idempotent finalization retries. */
|
|
58
|
+
revokedCredentialCount: number | null;
|
|
59
|
+
}
|
|
37
60
|
/**
|
|
38
61
|
* A reusable, named source profile that can be referenced by routes.
|
|
39
62
|
* Stores the full IRouteSecurity shape from SmartProxy.
|
|
@@ -137,6 +160,8 @@ export interface IRouteMetadata {
|
|
|
137
160
|
gatewayClientId?: string;
|
|
138
161
|
gatewayClientAppId?: string;
|
|
139
162
|
externalKey?: string;
|
|
163
|
+
/** Persisted DNS intent for gateway route reconciliation. */
|
|
164
|
+
gatewayDnsMode?: servezoneInterfaces.data.TGatewayRouteDnsMode;
|
|
140
165
|
/** Canonical server-managed route purpose. */
|
|
141
166
|
managedRouteKind?: TManagedRouteKind;
|
|
142
167
|
}
|
|
@@ -219,6 +244,8 @@ export interface IStoredApiToken {
|
|
|
219
244
|
tokenHash: string;
|
|
220
245
|
scopes: TApiTokenScope[];
|
|
221
246
|
policy?: IApiTokenPolicy;
|
|
247
|
+
/** Null/absent means an ordinary manually issued token. */
|
|
248
|
+
gatewayCredentialLifecycle?: IGatewayCredentialLifecycle | null;
|
|
222
249
|
createdAt: number;
|
|
223
250
|
expiresAt: number | null;
|
|
224
251
|
lastUsedAt: number | null;
|
|
@@ -8,6 +8,8 @@ export const apiTokenScopes = [
|
|
|
8
8
|
'config:read',
|
|
9
9
|
'stats:read',
|
|
10
10
|
'logs:read',
|
|
11
|
+
'config-events:read',
|
|
12
|
+
'config-events:write',
|
|
11
13
|
'security:read',
|
|
12
14
|
'security:write',
|
|
13
15
|
'emails:read',
|
|
@@ -118,4 +120,4 @@ export function canonicalizeSourceRouteId(routeId) {
|
|
|
118
120
|
const sourceVariantIndex = routeId.indexOf(':source:');
|
|
119
121
|
return sourceVariantIndex === -1 ? routeId : routeId.slice(0, sourceVariantIndex);
|
|
120
122
|
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvZGF0YS9yb3V0ZS1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCQSwrRUFBK0U7QUFDL0UsOEJBQThCO0FBQzlCLCtFQUErRTtBQUUvRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsR0FBRztJQUNILGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLFlBQVk7SUFDWixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixjQUFjO0lBQ2QsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2QsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsVUFBVTtJQUNWLFdBQVc7SUFDWCxhQUFhO0lBQ2IsY0FBYztJQUNkLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIsa0JBQWtCO0lBQ2xCLG1CQUFtQjtDQUNYLENBQUM7QUErRVgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsZ0JBQWdCO0lBQ2hCLFFBQVE7SUFDUixhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLEtBQUs7SUFDTCxTQUFTO0NBQ0QsQ0FBQztBQUlYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFvQztJQUN4RSxnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsTUFBTSxFQUFFLGVBQWU7SUFDdkIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLE9BQU8sRUFBRSxVQUFVO0NBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBc0M7SUFDNUUsZ0JBQWdCLEVBQUU7UUFDaEIsb0JBQW9CO1FBQ3BCLDBCQUEwQjtRQUMxQiwyQkFBMkI7UUFDM0IsbUJBQW1CO1FBQ25CLHFCQUFxQjtLQUN0QjtJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVc7UUFDWCxZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLGdCQUFnQjtRQUNoQixRQUFRO1FBQ1IsUUFBUTtRQUNSLE9BQU87UUFDUCxVQUFVO1FBQ1YsY0FBYztLQUNmO0lBQ0QsYUFBYSxFQUFFLEVBQUU7SUFDakIsZ0JBQWdCLEVBQUU7UUFDaEIsWUFBWTtRQUNaLFNBQVM7UUFDVCxXQUFXO1FBQ1gsUUFBUTtRQUNSLFVBQVU7UUFDVixTQUFTO1FBQ1QsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixlQUFlO1FBQ2YsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsYUFBYTtRQUNiLFlBQVk7UUFDWixlQUFlO1FBQ2YsY0FBYztRQUNkLGVBQWU7S0FDaEI7SUFDRCxHQUFHLEVBQUU7UUFDSCxZQUFZO1FBQ1osWUFBWTtLQUNiO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsZ0JBQWdCO1FBQ2hCLDBCQUEwQjtLQUMzQjtDQUNGLENBQUM7QUFtREYsK0VBQStFO0FBQy9FLHVCQUF1QjtBQUN2QiwrRUFBK0U7QUFFL0UsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBVSxDQUFDO0FBdUZ6RSxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQWU7SUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sa0JBQWtCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUNwRixDQUFDIn0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as authInterfaces from '../data/auth.js';
|
|
3
|
+
import * as configEventInterfaces from '../data/config-events.js';
|
|
4
|
+
export interface IReq_ListConfigEvents extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListConfigEvents> {
|
|
5
|
+
method: 'listConfigEvents';
|
|
6
|
+
request: {
|
|
7
|
+
identity?: authInterfaces.IIdentity;
|
|
8
|
+
apiToken?: string;
|
|
9
|
+
/** Filter by acknowledgement state; omit for all events. */
|
|
10
|
+
acknowledged?: boolean;
|
|
11
|
+
severity?: configEventInterfaces.TOpsConfigEventSeverity;
|
|
12
|
+
category?: string;
|
|
13
|
+
limit?: number;
|
|
14
|
+
cursor?: configEventInterfaces.IOpsConfigEventCursor;
|
|
15
|
+
};
|
|
16
|
+
response: {
|
|
17
|
+
events: configEventInterfaces.IOpsConfigEvent[];
|
|
18
|
+
total: number;
|
|
19
|
+
unacknowledgedCount: number;
|
|
20
|
+
nextCursor?: configEventInterfaces.IOpsConfigEventCursor;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface IReq_AcknowledgeConfigEvents extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_AcknowledgeConfigEvents> {
|
|
24
|
+
method: 'acknowledgeConfigEvents';
|
|
25
|
+
request: {
|
|
26
|
+
identity?: authInterfaces.IIdentity;
|
|
27
|
+
apiToken?: string;
|
|
28
|
+
ids: string[];
|
|
29
|
+
};
|
|
30
|
+
response: {
|
|
31
|
+
success: boolean;
|
|
32
|
+
acknowledgedCount: number;
|
|
33
|
+
message?: string;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as authInterfaces from '../data/auth.js';
|
|
3
|
+
import * as configEventInterfaces from '../data/config-events.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvcmVxdWVzdHMvY29uZmlnLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssY0FBYyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxxQkFBcUIsTUFBTSwwQkFBMEIsQ0FBQyJ9
|
|
@@ -23,4 +23,5 @@ export * from './email-settings.js';
|
|
|
23
23
|
export * from './realtime.js';
|
|
24
24
|
export * from './workhoster.js';
|
|
25
25
|
export * from './security-policy.js';
|
|
26
|
-
|
|
26
|
+
export * from './config-events.js';
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL3JlcXVlc3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQyJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
2
|
import type { IIdentity } from '../data/auth.js';
|
|
3
|
-
export declare const opsRealtimeResources: readonly ["emailDomains", "emailQueue", "smtpAttempts", "dns", "routes", "edges", "certificates"];
|
|
3
|
+
export declare const opsRealtimeResources: readonly ["emailDomains", "emailQueue", "smtpAttempts", "dns", "routes", "edges", "certificates", "configEvents"];
|
|
4
4
|
export type TOpsRealtimeResource = (typeof opsRealtimeResources)[number];
|
|
5
5
|
export type IOpsRealtimeRevisionMap = Record<TOpsRealtimeResource, number>;
|
|
6
6
|
export interface IOpsRealtimeInvalidation {
|
|
@@ -7,5 +7,6 @@ export const opsRealtimeResources = [
|
|
|
7
7
|
'routes',
|
|
8
8
|
'edges',
|
|
9
9
|
'certificates',
|
|
10
|
+
'configEvents',
|
|
10
11
|
];
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL3JlcXVlc3RzL3JlYWx0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGNBQWM7SUFDZCxZQUFZO0lBQ1osY0FBYztJQUNkLEtBQUs7SUFDTCxRQUFRO0lBQ1IsT0FBTztJQUNQLGNBQWM7SUFDZCxjQUFjO0NBQ04sQ0FBQyJ9
|