@serve.zone/dcrouter 13.0.4 → 13.0.6
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_serve/bundle.js +1059 -972
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.dcrouter.js +5 -2
- package/dist_ts/opsserver/handlers/certificate.handler.js +31 -23
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/ops-view-apitokens.js +1 -1
- package/dist_ts_web/elements/ops-view-certificates.js +1 -1
- package/dist_ts_web/elements/ops-view-config.js +1 -1
- package/dist_ts_web/elements/ops-view-emails.js +1 -1
- package/dist_ts_web/elements/ops-view-logs.js +1 -1
- package/dist_ts_web/elements/ops-view-network.js +1 -1
- package/dist_ts_web/elements/ops-view-networktargets.js +1 -1
- package/dist_ts_web/elements/ops-view-overview.js +1 -1
- package/dist_ts_web/elements/ops-view-remoteingress.js +1 -1
- package/dist_ts_web/elements/ops-view-routes.js +1 -1
- package/dist_ts_web/elements/ops-view-security.js +1 -1
- package/dist_ts_web/elements/ops-view-sourceprofiles.js +1 -1
- package/dist_ts_web/elements/ops-view-targetprofiles.d.ts +1 -0
- package/dist_ts_web/elements/ops-view-targetprofiles.js +51 -52
- package/dist_ts_web/elements/ops-view-vpn.js +1 -1
- package/dist_ts_web/elements/shared/index.d.ts +0 -1
- package/dist_ts_web/elements/shared/index.js +1 -2
- package/package.json +5 -5
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.dcrouter.ts +4 -1
- package/ts/opsserver/handlers/certificate.handler.ts +30 -22
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/ops-view-apitokens.ts +1 -1
- package/ts_web/elements/ops-view-certificates.ts +1 -1
- package/ts_web/elements/ops-view-config.ts +1 -1
- package/ts_web/elements/ops-view-emails.ts +1 -1
- package/ts_web/elements/ops-view-logs.ts +1 -1
- package/ts_web/elements/ops-view-network.ts +1 -1
- package/ts_web/elements/ops-view-networktargets.ts +1 -1
- package/ts_web/elements/ops-view-overview.ts +1 -1
- package/ts_web/elements/ops-view-remoteingress.ts +1 -1
- package/ts_web/elements/ops-view-routes.ts +1 -1
- package/ts_web/elements/ops-view-security.ts +1 -1
- package/ts_web/elements/ops-view-sourceprofiles.ts +1 -1
- package/ts_web/elements/ops-view-targetprofiles.ts +51 -48
- package/ts_web/elements/ops-view-vpn.ts +1 -1
- package/ts_web/elements/shared/index.ts +1 -2
- package/dist_ts_web/elements/shared/ops-sectionheading.d.ts +0 -5
- package/dist_ts_web/elements/shared/ops-sectionheading.js +0 -82
- package/ts_web/elements/shared/ops-sectionheading.ts +0 -38
|
@@ -64,7 +64,7 @@ export class OpsViewSourceProfiles extends DeesElement {
|
|
|
64
64
|
];
|
|
65
65
|
|
|
66
66
|
return html`
|
|
67
|
-
<
|
|
67
|
+
<dees-heading level="2">Source Profiles</dees-heading>
|
|
68
68
|
<div class="profilesContainer">
|
|
69
69
|
<dees-statsgrid .tiles=${statsTiles}></dees-statsgrid>
|
|
70
70
|
<dees-table
|
|
@@ -77,7 +77,7 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
77
77
|
];
|
|
78
78
|
|
|
79
79
|
return html`
|
|
80
|
-
<
|
|
80
|
+
<dees-heading level="2">Target Profiles</dees-heading>
|
|
81
81
|
<div class="profilesContainer">
|
|
82
82
|
<dees-statsgrid .tiles=${statsTiles}></dees-statsgrid>
|
|
83
83
|
<dees-table
|
|
@@ -148,17 +148,27 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
148
148
|
`;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
+
private getRouteCandidates() {
|
|
152
|
+
const routeState = appstate.routeManagementStatePart.getState();
|
|
153
|
+
const routes = routeState?.mergedRoutes || [];
|
|
154
|
+
return routes
|
|
155
|
+
.filter((mr) => mr.route.name)
|
|
156
|
+
.map((mr) => ({ viewKey: mr.route.name! }));
|
|
157
|
+
}
|
|
158
|
+
|
|
151
159
|
private async showCreateProfileDialog() {
|
|
152
160
|
const { DeesModal } = await import('@design.estate/dees-catalog');
|
|
161
|
+
const routeCandidates = this.getRouteCandidates();
|
|
162
|
+
|
|
153
163
|
DeesModal.createAndShow({
|
|
154
164
|
heading: 'Create Target Profile',
|
|
155
165
|
content: html`
|
|
156
166
|
<dees-form>
|
|
157
167
|
<dees-input-text .key=${'name'} .label=${'Name'} .required=${true}></dees-input-text>
|
|
158
168
|
<dees-input-text .key=${'description'} .label=${'Description'}></dees-input-text>
|
|
159
|
-
<dees-input-
|
|
160
|
-
<dees-input-
|
|
161
|
-
<dees-input-
|
|
169
|
+
<dees-input-list .key=${'domains'} .label=${'Domains'} .placeholder=${'e.g. *.example.com'} .allowFreeform=${true}></dees-input-list>
|
|
170
|
+
<dees-input-list .key=${'targets'} .label=${'Targets (host:port)'} .placeholder=${'e.g. 10.0.0.1:443'} .allowFreeform=${true}></dees-input-list>
|
|
171
|
+
<dees-input-list .key=${'routeRefs'} .label=${'Route Refs'} .placeholder=${'Type to search routes...'} .candidates=${routeCandidates} .allowFreeform=${true}></dees-input-list>
|
|
162
172
|
</dees-form>
|
|
163
173
|
`,
|
|
164
174
|
menuOptions: [
|
|
@@ -172,30 +182,26 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
172
182
|
const data = await form.collectFormData();
|
|
173
183
|
if (!data.name) return;
|
|
174
184
|
|
|
175
|
-
const domains = data.domains
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
: undefined;
|
|
189
|
-
const routeRefs = data.routeRefs
|
|
190
|
-
? String(data.routeRefs).split(',').map((s: string) => s.trim()).filter(Boolean)
|
|
191
|
-
: undefined;
|
|
185
|
+
const domains: string[] = Array.isArray(data.domains) ? data.domains : [];
|
|
186
|
+
const targetStrings: string[] = Array.isArray(data.targets) ? data.targets : [];
|
|
187
|
+
const targets = targetStrings
|
|
188
|
+
.map((s: string) => {
|
|
189
|
+
const lastColon = s.lastIndexOf(':');
|
|
190
|
+
if (lastColon === -1) return null;
|
|
191
|
+
return {
|
|
192
|
+
host: s.substring(0, lastColon),
|
|
193
|
+
port: parseInt(s.substring(lastColon + 1), 10),
|
|
194
|
+
};
|
|
195
|
+
})
|
|
196
|
+
.filter((t): t is { host: string; port: number } => t !== null && !isNaN(t.port));
|
|
197
|
+
const routeRefs: string[] = Array.isArray(data.routeRefs) ? data.routeRefs : [];
|
|
192
198
|
|
|
193
199
|
await appstate.targetProfilesStatePart.dispatchAction(appstate.createTargetProfileAction, {
|
|
194
200
|
name: String(data.name),
|
|
195
201
|
description: data.description ? String(data.description) : undefined,
|
|
196
|
-
domains,
|
|
197
|
-
targets,
|
|
198
|
-
routeRefs,
|
|
202
|
+
domains: domains.length > 0 ? domains : undefined,
|
|
203
|
+
targets: targets.length > 0 ? targets : undefined,
|
|
204
|
+
routeRefs: routeRefs.length > 0 ? routeRefs : undefined,
|
|
199
205
|
});
|
|
200
206
|
modalArg.destroy();
|
|
201
207
|
},
|
|
@@ -205,20 +211,22 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
205
211
|
}
|
|
206
212
|
|
|
207
213
|
private async showEditProfileDialog(profile: interfaces.data.ITargetProfile) {
|
|
208
|
-
const currentDomains = profile.domains
|
|
209
|
-
const currentTargets = profile.targets?.map(t => `${t.host}:${t.port}`)
|
|
210
|
-
const currentRouteRefs = profile.routeRefs
|
|
214
|
+
const currentDomains = profile.domains || [];
|
|
215
|
+
const currentTargets = profile.targets?.map(t => `${t.host}:${t.port}`) || [];
|
|
216
|
+
const currentRouteRefs = profile.routeRefs || [];
|
|
211
217
|
|
|
212
218
|
const { DeesModal } = await import('@design.estate/dees-catalog');
|
|
219
|
+
const routeCandidates = this.getRouteCandidates();
|
|
220
|
+
|
|
213
221
|
DeesModal.createAndShow({
|
|
214
222
|
heading: `Edit Profile: ${profile.name}`,
|
|
215
223
|
content: html`
|
|
216
224
|
<dees-form>
|
|
217
225
|
<dees-input-text .key=${'name'} .label=${'Name'} .value=${profile.name}></dees-input-text>
|
|
218
226
|
<dees-input-text .key=${'description'} .label=${'Description'} .value=${profile.description || ''}></dees-input-text>
|
|
219
|
-
<dees-input-
|
|
220
|
-
<dees-input-
|
|
221
|
-
<dees-input-
|
|
227
|
+
<dees-input-list .key=${'domains'} .label=${'Domains'} .placeholder=${'e.g. *.example.com'} .allowFreeform=${true} .value=${currentDomains}></dees-input-list>
|
|
228
|
+
<dees-input-list .key=${'targets'} .label=${'Targets (host:port)'} .placeholder=${'e.g. 10.0.0.1:443'} .allowFreeform=${true} .value=${currentTargets}></dees-input-list>
|
|
229
|
+
<dees-input-list .key=${'routeRefs'} .label=${'Route Refs'} .placeholder=${'Type to search routes...'} .candidates=${routeCandidates} .allowFreeform=${true} .value=${currentRouteRefs}></dees-input-list>
|
|
222
230
|
</dees-form>
|
|
223
231
|
`,
|
|
224
232
|
menuOptions: [
|
|
@@ -231,24 +239,19 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
231
239
|
if (!form) return;
|
|
232
240
|
const data = await form.collectFormData();
|
|
233
241
|
|
|
234
|
-
const domains = data.domains
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}).filter((t): t is { host: string; port: number } => t !== null && !isNaN(t.port))
|
|
248
|
-
: [];
|
|
249
|
-
const routeRefs = data.routeRefs
|
|
250
|
-
? String(data.routeRefs).split(',').map((s: string) => s.trim()).filter(Boolean)
|
|
251
|
-
: [];
|
|
242
|
+
const domains: string[] = Array.isArray(data.domains) ? data.domains : [];
|
|
243
|
+
const targetStrings: string[] = Array.isArray(data.targets) ? data.targets : [];
|
|
244
|
+
const targets = targetStrings
|
|
245
|
+
.map((s: string) => {
|
|
246
|
+
const lastColon = s.lastIndexOf(':');
|
|
247
|
+
if (lastColon === -1) return null;
|
|
248
|
+
return {
|
|
249
|
+
host: s.substring(0, lastColon),
|
|
250
|
+
port: parseInt(s.substring(lastColon + 1), 10),
|
|
251
|
+
};
|
|
252
|
+
})
|
|
253
|
+
.filter((t): t is { host: string; port: number } => t !== null && !isNaN(t.port));
|
|
254
|
+
const routeRefs: string[] = Array.isArray(data.routeRefs) ? data.routeRefs : [];
|
|
252
255
|
|
|
253
256
|
await appstate.targetProfilesStatePart.dispatchAction(appstate.updateTargetProfileAction, {
|
|
254
257
|
id: profile.id,
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from './css.js';
|
|
2
|
-
export * from './ops-sectionheading.js';
|
|
1
|
+
export * from './css.js';
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
-
var _, done = false;
|
|
7
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
-
var context = {};
|
|
9
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
-
if (kind === "accessor") {
|
|
14
|
-
if (result === void 0) continue;
|
|
15
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
-
}
|
|
20
|
-
else if (_ = accept(result)) {
|
|
21
|
-
if (kind === "field") initializers.unshift(_);
|
|
22
|
-
else descriptor[key] = _;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
-
done = true;
|
|
27
|
-
};
|
|
28
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
-
var useValue = arguments.length > 2;
|
|
30
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
-
}
|
|
33
|
-
return useValue ? value : void 0;
|
|
34
|
-
};
|
|
35
|
-
import { DeesElement, css, cssManager, customElement, html } from '@design.estate/dees-element';
|
|
36
|
-
let OpsSectionHeading = (() => {
|
|
37
|
-
let _classDecorators = [customElement('ops-sectionheading')];
|
|
38
|
-
let _classDescriptor;
|
|
39
|
-
let _classExtraInitializers = [];
|
|
40
|
-
let _classThis;
|
|
41
|
-
let _classSuper = DeesElement;
|
|
42
|
-
var OpsSectionHeading = class extends _classSuper {
|
|
43
|
-
static { _classThis = this; }
|
|
44
|
-
static {
|
|
45
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
46
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
47
|
-
OpsSectionHeading = _classThis = _classDescriptor.value;
|
|
48
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
49
|
-
}
|
|
50
|
-
static styles = [
|
|
51
|
-
cssManager.defaultStyles,
|
|
52
|
-
css `
|
|
53
|
-
:host {
|
|
54
|
-
display: block;
|
|
55
|
-
margin-bottom: 24px;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.heading {
|
|
59
|
-
font-family: 'Cal Sans', 'Inter', sans-serif;
|
|
60
|
-
font-size: 28px;
|
|
61
|
-
font-weight: 600;
|
|
62
|
-
color: ${cssManager.bdTheme('#111', '#fff')};
|
|
63
|
-
margin: 0;
|
|
64
|
-
padding: 0;
|
|
65
|
-
}
|
|
66
|
-
`,
|
|
67
|
-
];
|
|
68
|
-
render() {
|
|
69
|
-
return html `
|
|
70
|
-
<h1 class="heading">
|
|
71
|
-
<slot></slot>
|
|
72
|
-
</h1>
|
|
73
|
-
`;
|
|
74
|
-
}
|
|
75
|
-
static {
|
|
76
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
return OpsSectionHeading = _classThis;
|
|
80
|
-
})();
|
|
81
|
-
export { OpsSectionHeading };
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BzLXNlY3Rpb25oZWFkaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzL3NoYXJlZC9vcHMtc2VjdGlvbmhlYWRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsR0FBRyxFQUNILFVBQVUsRUFDVixhQUFhLEVBQ2IsSUFBSSxFQUVMLE1BQU0sNkJBQTZCLENBQUM7SUFHeEIsaUJBQWlCOzRCQUQ3QixhQUFhLENBQUMsb0JBQW9CLENBQUM7Ozs7c0JBQ0csV0FBVztpQ0FBbkIsU0FBUSxXQUFXOzs7O1lBQWxELDZLQTJCQzs7OztRQTFCUSxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLFVBQVUsQ0FBQyxhQUFhO1lBQ3hCLEdBQUcsQ0FBQTs7Ozs7Ozs7OztpQkFVVSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7Ozs7S0FJOUM7U0FDRixDQUFDO1FBRUssTUFBTTtZQUNYLE9BQU8sSUFBSSxDQUFBOzs7O0tBSVYsQ0FBQztRQUNKLENBQUM7O1lBMUJVLHVEQUFpQjs7Ozs7U0FBakIsaUJBQWlCIn0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DeesElement,
|
|
3
|
-
css,
|
|
4
|
-
cssManager,
|
|
5
|
-
customElement,
|
|
6
|
-
html,
|
|
7
|
-
type TemplateResult
|
|
8
|
-
} from '@design.estate/dees-element';
|
|
9
|
-
|
|
10
|
-
@customElement('ops-sectionheading')
|
|
11
|
-
export class OpsSectionHeading extends DeesElement {
|
|
12
|
-
public static styles = [
|
|
13
|
-
cssManager.defaultStyles,
|
|
14
|
-
css`
|
|
15
|
-
:host {
|
|
16
|
-
display: block;
|
|
17
|
-
margin-bottom: 24px;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.heading {
|
|
21
|
-
font-family: 'Cal Sans', 'Inter', sans-serif;
|
|
22
|
-
font-size: 28px;
|
|
23
|
-
font-weight: 600;
|
|
24
|
-
color: ${cssManager.bdTheme('#111', '#fff')};
|
|
25
|
-
margin: 0;
|
|
26
|
-
padding: 0;
|
|
27
|
-
}
|
|
28
|
-
`,
|
|
29
|
-
];
|
|
30
|
-
|
|
31
|
-
public render(): TemplateResult {
|
|
32
|
-
return html`
|
|
33
|
-
<h1 class="heading">
|
|
34
|
-
<slot></slot>
|
|
35
|
-
</h1>
|
|
36
|
-
`;
|
|
37
|
-
}
|
|
38
|
-
}
|