@serve.zone/dcrouter 13.9.1 → 13.10.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.
Files changed (29) hide show
  1. package/dist_serve/bundle.js +3044 -2684
  2. package/dist_ts/00_commitinfo_data.js +2 -2
  3. package/dist_ts_interfaces/data/dns-provider.js +2 -2
  4. package/dist_ts_web/00_commitinfo_data.js +2 -2
  5. package/dist_ts_web/elements/access/ops-view-apitokens.js +2 -2
  6. package/dist_ts_web/elements/domains/dns-provider-form.js +4 -19
  7. package/dist_ts_web/elements/domains/ops-view-certificates.d.ts +1 -1
  8. package/dist_ts_web/elements/domains/ops-view-certificates.js +28 -116
  9. package/dist_ts_web/elements/domains/ops-view-dns.js +8 -7
  10. package/dist_ts_web/elements/domains/ops-view-domains.js +5 -4
  11. package/dist_ts_web/elements/email/ops-view-email-security.d.ts +1 -1
  12. package/dist_ts_web/elements/email/ops-view-email-security.js +39 -58
  13. package/dist_ts_web/elements/network/ops-view-remoteingress.js +5 -5
  14. package/dist_ts_web/elements/network/ops-view-routes.js +13 -13
  15. package/dist_ts_web/elements/network/ops-view-targetprofiles.js +3 -3
  16. package/dist_ts_web/elements/network/ops-view-vpn.js +5 -5
  17. package/package.json +4 -4
  18. package/ts/00_commitinfo_data.ts +1 -1
  19. package/ts_web/00_commitinfo_data.ts +1 -1
  20. package/ts_web/elements/access/ops-view-apitokens.ts +1 -1
  21. package/ts_web/elements/domains/dns-provider-form.ts +3 -18
  22. package/ts_web/elements/domains/ops-view-certificates.ts +27 -115
  23. package/ts_web/elements/domains/ops-view-dns.ts +7 -6
  24. package/ts_web/elements/domains/ops-view-domains.ts +4 -3
  25. package/ts_web/elements/email/ops-view-email-security.ts +38 -57
  26. package/ts_web/elements/network/ops-view-remoteingress.ts +4 -4
  27. package/ts_web/elements/network/ops-view-routes.ts +12 -12
  28. package/ts_web/elements/network/ops-view-targetprofiles.ts +2 -2
  29. package/ts_web/elements/network/ops-view-vpn.ts +4 -4
@@ -101,8 +101,8 @@ export class OpsViewDns extends DeesElement {
101
101
  <dees-heading level="3">DNS Records</dees-heading>
102
102
  <div class="dnsContainer">
103
103
  <div class="domainPicker">
104
- <span>Domain:</span>
105
104
  <dees-input-dropdown
105
+ .label=${'Domain'}
106
106
  .options=${domains.map((d) => ({ option: d.name, key: d.id }))}
107
107
  .selectedOption=${selectedId
108
108
  ? { option: domains.find((d) => d.id === selectedId)?.name || '', key: selectedId }
@@ -196,7 +196,7 @@ export class OpsViewDns extends DeesElement {
196
196
  heading: 'Add DNS Record',
197
197
  content: html`
198
198
  <dees-form>
199
- <dees-input-text .key=${'name'} .label=${'Name (FQDN)'} .required=${true}></dees-input-text>
199
+ <dees-input-text .key=${'name'} .label=${'Name'} .description=${'Fully qualified domain name'} .required=${true}></dees-input-text>
200
200
  <dees-input-dropdown
201
201
  .key=${'type'}
202
202
  .label=${'Type'}
@@ -205,10 +205,11 @@ export class OpsViewDns extends DeesElement {
205
205
  ></dees-input-dropdown>
206
206
  <dees-input-text
207
207
  .key=${'value'}
208
- .label=${'Value (for MX use "10 mail.example.com")'}
208
+ .label=${'Value'}
209
+ .description=${'For MX records use priority format, e.g. "10 mail.example.com"'}
209
210
  .required=${true}
210
211
  ></dees-input-text>
211
- <dees-input-text .key=${'ttl'} .label=${'TTL (seconds)'} .value=${'300'}></dees-input-text>
212
+ <dees-input-text .key=${'ttl'} .label=${'TTL'} .description=${'Time to live in seconds'} .value=${'300'}></dees-input-text>
212
213
  </dees-form>
213
214
  `,
214
215
  menuOptions: [
@@ -242,9 +243,9 @@ export class OpsViewDns extends DeesElement {
242
243
  heading: `Edit ${rec.type} ${rec.name}`,
243
244
  content: html`
244
245
  <dees-form>
245
- <dees-input-text .key=${'name'} .label=${'Name (FQDN)'} .value=${rec.name}></dees-input-text>
246
+ <dees-input-text .key=${'name'} .label=${'Name'} .description=${'Fully qualified domain name'} .value=${rec.name}></dees-input-text>
246
247
  <dees-input-text .key=${'value'} .label=${'Value'} .value=${rec.value}></dees-input-text>
247
- <dees-input-text .key=${'ttl'} .label=${'TTL (seconds)'} .value=${String(rec.ttl)}></dees-input-text>
248
+ <dees-input-text .key=${'ttl'} .label=${'TTL'} .description=${'Time to live in seconds'} .value=${String(rec.ttl)}></dees-input-text>
248
249
  </dees-form>
249
250
  `,
250
251
  menuOptions: [
@@ -181,8 +181,8 @@ export class OpsViewDomains extends DeesElement {
181
181
  heading: 'Add DcRouter Domain',
182
182
  content: html`
183
183
  <dees-form>
184
- <dees-input-text .key=${'name'} .label=${'FQDN (e.g. example.com)'} .required=${true}></dees-input-text>
185
- <dees-input-text .key=${'description'} .label=${'Description (optional)'}></dees-input-text>
184
+ <dees-input-text .key=${'name'} .label=${'FQDN'} .description=${'e.g. example.com'} .required=${true}></dees-input-text>
185
+ <dees-input-text .key=${'description'} .label=${'Description'}></dees-input-text>
186
186
  </dees-form>
187
187
  <p style="margin-top: 12px; font-size: 12px; opacity: 0.7;">
188
188
  dcrouter will become the authoritative DNS server for this domain. You'll need to
@@ -235,7 +235,8 @@ export class OpsViewDomains extends DeesElement {
235
235
  ></dees-input-dropdown>
236
236
  <dees-input-text
237
237
  .key=${'domainNames'}
238
- .label=${'Comma-separated FQDNs to import (e.g. example.com, foo.com)'}
238
+ .label=${'Domain Names'}
239
+ .description=${'Comma-separated FQDNs, e.g. example.com, foo.com'}
239
240
  .required=${true}
240
241
  ></dees-input-text>
241
242
  </dees-form>
@@ -37,25 +37,10 @@ export class OpsViewEmailSecurity extends DeesElement {
37
37
  cssManager.defaultStyles,
38
38
  viewHostCss,
39
39
  css`
40
- h2 {
41
- margin: 32px 0 16px 0;
42
- font-size: 24px;
43
- font-weight: 600;
44
- color: ${cssManager.bdTheme('#333', '#ccc')};
45
- }
46
- dees-statsgrid {
47
- margin-bottom: 32px;
48
- }
49
- .securityCard {
50
- background: ${cssManager.bdTheme('#fff', '#222')};
51
- border: 1px solid ${cssManager.bdTheme('#e9ecef', '#333')};
52
- border-radius: 8px;
53
- padding: 24px;
54
- position: relative;
55
- overflow: hidden;
56
- }
57
- .actionButton {
58
- margin-top: 16px;
40
+ .securityContainer {
41
+ display: flex;
42
+ flex-direction: column;
43
+ gap: 24px;
59
44
  }
60
45
  `,
61
46
  ];
@@ -113,48 +98,44 @@ export class OpsViewEmailSecurity extends DeesElement {
113
98
  return html`
114
99
  <dees-heading level="3">Email Security</dees-heading>
115
100
 
116
- <dees-statsgrid
117
- .tiles=${tiles}
118
- .minTileWidth=${200}
119
- ></dees-statsgrid>
101
+ <div class="securityContainer">
102
+ <dees-statsgrid
103
+ .tiles=${tiles}
104
+ .minTileWidth=${200}
105
+ ></dees-statsgrid>
120
106
 
121
- <h2>Email Security Configuration</h2>
122
- <div class="securityCard">
123
- <dees-form>
124
- <dees-input-checkbox
125
- .key=${'enableSPF'}
126
- .label=${'Enable SPF checking'}
127
- .value=${true}
128
- ></dees-input-checkbox>
129
- <dees-input-checkbox
130
- .key=${'enableDKIM'}
131
- .label=${'Enable DKIM validation'}
132
- .value=${true}
133
- ></dees-input-checkbox>
134
- <dees-input-checkbox
135
- .key=${'enableDMARC'}
136
- .label=${'Enable DMARC policy enforcement'}
137
- .value=${true}
138
- ></dees-input-checkbox>
139
- <dees-input-checkbox
140
- .key=${'enableSpamFilter'}
141
- .label=${'Enable spam filtering'}
142
- .value=${true}
143
- ></dees-input-checkbox>
144
- </dees-form>
145
- <dees-button
146
- class="actionButton"
147
- type="highlighted"
148
- @click=${() => this.saveEmailSecuritySettings()}
149
- >
150
- Save Settings
151
- </dees-button>
107
+ <dees-settings
108
+ .heading=${'Security Configuration'}
109
+ .settingsFields=${[
110
+ { key: 'spf', label: 'SPF checking', value: 'enabled' },
111
+ { key: 'dkim', label: 'DKIM validation', value: 'enabled' },
112
+ { key: 'dmarc', label: 'DMARC policy', value: 'enabled' },
113
+ { key: 'spam', label: 'Spam filtering', value: 'enabled' },
114
+ ]}
115
+ .actions=${[{ name: 'Edit', action: () => this.showEditSecurityDialog() }]}
116
+ ></dees-settings>
152
117
  </div>
153
118
  `;
154
119
  }
155
120
 
156
- private async saveEmailSecuritySettings() {
157
- // Config is read-only from the UI for now
158
- alert('Email security settings are read-only. Update the dcrouter configuration file to change these settings.');
121
+ private async showEditSecurityDialog() {
122
+ const { DeesModal } = await import('@design.estate/dees-catalog');
123
+ DeesModal.createAndShow({
124
+ heading: 'Edit Security Configuration',
125
+ content: html`
126
+ <dees-form>
127
+ <dees-input-checkbox .key=${'enableSPF'} .label=${'SPF checking'} .value=${true}></dees-input-checkbox>
128
+ <dees-input-checkbox .key=${'enableDKIM'} .label=${'DKIM validation'} .value=${true}></dees-input-checkbox>
129
+ <dees-input-checkbox .key=${'enableDMARC'} .label=${'DMARC policy enforcement'} .value=${true}></dees-input-checkbox>
130
+ <dees-input-checkbox .key=${'enableSpamFilter'} .label=${'Spam filtering'} .value=${true}></dees-input-checkbox>
131
+ </dees-form>
132
+ <p style="margin-top: 12px; font-size: 12px; opacity: 0.7;">
133
+ These settings are read-only for now. Update the dcrouter configuration to change them.
134
+ </p>
135
+ `,
136
+ menuOptions: [
137
+ { name: 'Close', action: async (modalArg: any) => modalArg.destroy() },
138
+ ],
139
+ });
159
140
  }
160
141
  }
@@ -243,9 +243,9 @@ export class OpsViewRemoteIngress extends DeesElement {
243
243
  content: html`
244
244
  <dees-form>
245
245
  <dees-input-text .key=${'name'} .label=${'Name'} .required=${true}></dees-input-text>
246
- <dees-input-text .key=${'listenPorts'} .label=${'Additional Manual Ports (comma-separated, optional)'}></dees-input-text>
246
+ <dees-input-text .key=${'listenPorts'} .label=${'Manual Ports'} .description=${'Comma-separated port numbers, optional'}></dees-input-text>
247
247
  <dees-input-checkbox .key=${'autoDerivePorts'} .label=${'Auto-derive ports from routes'} .value=${true}></dees-input-checkbox>
248
- <dees-input-text .key=${'tags'} .label=${'Tags (comma-separated, optional)'}></dees-input-text>
248
+ <dees-input-text .key=${'tags'} .label=${'Tags'} .description=${'Comma-separated, optional'}></dees-input-text>
249
249
  </dees-form>
250
250
  `,
251
251
  menuOptions: [
@@ -320,9 +320,9 @@ export class OpsViewRemoteIngress extends DeesElement {
320
320
  content: html`
321
321
  <dees-form>
322
322
  <dees-input-text .key=${'name'} .label=${'Name'} .value=${edge.name}></dees-input-text>
323
- <dees-input-text .key=${'listenPorts'} .label=${'Manual Ports (comma-separated)'} .value=${(edge.listenPorts || []).join(', ')}></dees-input-text>
323
+ <dees-input-text .key=${'listenPorts'} .label=${'Manual Ports'} .description=${'Comma-separated port numbers'} .value=${(edge.listenPorts || []).join(', ')}></dees-input-text>
324
324
  <dees-input-checkbox .key=${'autoDerivePorts'} .label=${'Auto-derive ports from routes'} .value=${edge.autoDerivePorts !== false}></dees-input-checkbox>
325
- <dees-input-text .key=${'tags'} .label=${'Tags (comma-separated)'} .value=${(edge.tags || []).join(', ')}></dees-input-text>
325
+ <dees-input-text .key=${'tags'} .label=${'Tags'} .description=${'Comma-separated'} .value=${(edge.tags || []).join(', ')}></dees-input-text>
326
326
  </dees-form>
327
327
  `,
328
328
  menuOptions: [
@@ -473,19 +473,19 @@ export class OpsViewRoutes extends DeesElement {
473
473
  content: html`
474
474
  <dees-form>
475
475
  <dees-input-text .key=${'name'} .label=${'Route Name'} .value=${route.name || ''} .required=${true}></dees-input-text>
476
- <dees-input-text .key=${'ports'} .label=${'Ports (comma-separated)'} .value=${currentPorts} .required=${true}></dees-input-text>
476
+ <dees-input-text .key=${'ports'} .label=${'Ports'} .description=${'Comma-separated, e.g. 80, 443'} .value=${currentPorts} .required=${true}></dees-input-text>
477
477
  <dees-input-list .key=${'domains'} .label=${'Domains'} .placeholder=${'Add domain...'} .value=${currentDomains}></dees-input-list>
478
- <dees-input-text .key=${'priority'} .label=${'Priority (higher = matched first)'} .value=${route.priority != null ? String(route.priority) : ''}></dees-input-text>
478
+ <dees-input-text .key=${'priority'} .label=${'Priority'} .description=${'Higher values are matched first'} .value=${route.priority != null ? String(route.priority) : ''}></dees-input-text>
479
479
  <dees-input-dropdown .key=${'sourceProfileRef'} .label=${'Source Profile'} .options=${profileOptions} .selectedOption=${profileOptions.find((o) => o.key === (merged.metadata?.sourceProfileRef || '')) || null}></dees-input-dropdown>
480
480
  <dees-input-dropdown .key=${'networkTargetRef'} .label=${'Network Target'} .options=${targetOptions} .selectedOption=${targetOptions.find((o) => o.key === (merged.metadata?.networkTargetRef || '')) || null}></dees-input-dropdown>
481
- <dees-input-text .key=${'targetHost'} .label=${'Target Host (if no target selected)'} .value=${currentTargetHost}></dees-input-text>
482
- <dees-input-text .key=${'targetPort'} .label=${'Target Port (if no target selected)'} .value=${currentTargetPort}></dees-input-text>
481
+ <dees-input-text .key=${'targetHost'} .label=${'Target Host'} .description=${'Used when no network target is selected'} .value=${currentTargetHost}></dees-input-text>
482
+ <dees-input-text .key=${'targetPort'} .label=${'Target Port'} .description=${'Used when no network target is selected'} .value=${currentTargetPort}></dees-input-text>
483
483
  <dees-input-dropdown .key=${'tlsMode'} .label=${'TLS Mode'} .options=${tlsModeOptions} .selectedOption=${tlsModeOptions.find((o) => o.key === currentTlsMode) || tlsModeOptions[0]}></dees-input-dropdown>
484
484
  <div class="tlsCertificateGroup" style="display: ${needsCert ? 'flex' : 'none'}; flex-direction: column; gap: 16px;">
485
485
  <dees-input-dropdown .key=${'tlsCertificate'} .label=${'Certificate'} .options=${tlsCertOptions} .selectedOption=${tlsCertOptions.find((o) => o.key === currentTlsCert) || tlsCertOptions[0]}></dees-input-dropdown>
486
486
  <div class="tlsCustomCertGroup" style="display: ${needsCert && isCustom ? 'flex' : 'none'}; flex-direction: column; gap: 16px;">
487
- <dees-input-text .key=${'tlsCertKey'} .label=${'Private Key (PEM)'} .value=${currentCustomKey}></dees-input-text>
488
- <dees-input-text .key=${'tlsCertCert'} .label=${'Certificate (PEM)'} .value=${currentCustomCert}></dees-input-text>
487
+ <dees-input-text .key=${'tlsCertKey'} .label=${'Private Key'} .description=${'PEM-encoded private key'} .value=${currentCustomKey}></dees-input-text>
488
+ <dees-input-text .key=${'tlsCertCert'} .label=${'Certificate'} .description=${'PEM-encoded certificate'} .value=${currentCustomCert}></dees-input-text>
489
489
  </div>
490
490
  </div>
491
491
  </dees-form>
@@ -607,19 +607,19 @@ export class OpsViewRoutes extends DeesElement {
607
607
  content: html`
608
608
  <dees-form>
609
609
  <dees-input-text .key=${'name'} .label=${'Route Name'} .required=${true}></dees-input-text>
610
- <dees-input-text .key=${'ports'} .label=${'Ports (comma-separated)'} .required=${true}></dees-input-text>
610
+ <dees-input-text .key=${'ports'} .label=${'Ports'} .description=${'Comma-separated, e.g. 80, 443'} .required=${true}></dees-input-text>
611
611
  <dees-input-list .key=${'domains'} .label=${'Domains'} .placeholder=${'Add domain...'}></dees-input-list>
612
- <dees-input-text .key=${'priority'} .label=${'Priority (higher = matched first)'}></dees-input-text>
612
+ <dees-input-text .key=${'priority'} .label=${'Priority'} .description=${'Higher values are matched first'}></dees-input-text>
613
613
  <dees-input-dropdown .key=${'sourceProfileRef'} .label=${'Source Profile'} .options=${profileOptions}></dees-input-dropdown>
614
614
  <dees-input-dropdown .key=${'networkTargetRef'} .label=${'Network Target'} .options=${targetOptions}></dees-input-dropdown>
615
- <dees-input-text .key=${'targetHost'} .label=${'Target Host (if no target selected)'} .value=${'localhost'}></dees-input-text>
616
- <dees-input-text .key=${'targetPort'} .label=${'Target Port (if no target selected)'}></dees-input-text>
615
+ <dees-input-text .key=${'targetHost'} .label=${'Target Host'} .description=${'Used when no network target is selected'} .value=${'localhost'}></dees-input-text>
616
+ <dees-input-text .key=${'targetPort'} .label=${'Target Port'} .description=${'Used when no network target is selected'}></dees-input-text>
617
617
  <dees-input-dropdown .key=${'tlsMode'} .label=${'TLS Mode'} .options=${tlsModeOptions} .selectedOption=${tlsModeOptions[0]}></dees-input-dropdown>
618
618
  <div class="tlsCertificateGroup" style="display: none; flex-direction: column; gap: 16px;">
619
619
  <dees-input-dropdown .key=${'tlsCertificate'} .label=${'Certificate'} .options=${tlsCertOptions} .selectedOption=${tlsCertOptions[0]}></dees-input-dropdown>
620
620
  <div class="tlsCustomCertGroup" style="display: none; flex-direction: column; gap: 16px;">
621
- <dees-input-text .key=${'tlsCertKey'} .label=${'Private Key (PEM)'}></dees-input-text>
622
- <dees-input-text .key=${'tlsCertCert'} .label=${'Certificate (PEM)'}></dees-input-text>
621
+ <dees-input-text .key=${'tlsCertKey'} .label=${'Private Key'} .description=${'PEM-encoded private key'}></dees-input-text>
622
+ <dees-input-text .key=${'tlsCertCert'} .label=${'Certificate'} .description=${'PEM-encoded certificate'}></dees-input-text>
623
623
  </div>
624
624
  </div>
625
625
  </dees-form>
@@ -176,7 +176,7 @@ export class OpsViewTargetProfiles extends DeesElement {
176
176
  <dees-input-text .key=${'name'} .label=${'Name'} .required=${true}></dees-input-text>
177
177
  <dees-input-text .key=${'description'} .label=${'Description'}></dees-input-text>
178
178
  <dees-input-list .key=${'domains'} .label=${'Domains'} .placeholder=${'e.g. *.example.com'} .allowFreeform=${true}></dees-input-list>
179
- <dees-input-list .key=${'targets'} .label=${'Targets (ip:port)'} .placeholder=${'e.g. 10.0.0.1:443'} .allowFreeform=${true}></dees-input-list>
179
+ <dees-input-list .key=${'targets'} .label=${'Targets'} .description=${'Format: ip:port, e.g. 10.0.0.1:443'} .placeholder=${'e.g. 10.0.0.1:443'} .allowFreeform=${true}></dees-input-list>
180
180
  <dees-input-list .key=${'routeRefs'} .label=${'Route Refs'} .placeholder=${'Type to search routes...'} .candidates=${routeCandidates} .allowFreeform=${true}></dees-input-list>
181
181
  </dees-form>
182
182
  `,
@@ -235,7 +235,7 @@ export class OpsViewTargetProfiles extends DeesElement {
235
235
  <dees-input-text .key=${'name'} .label=${'Name'} .value=${profile.name}></dees-input-text>
236
236
  <dees-input-text .key=${'description'} .label=${'Description'} .value=${profile.description || ''}></dees-input-text>
237
237
  <dees-input-list .key=${'domains'} .label=${'Domains'} .placeholder=${'e.g. *.example.com'} .allowFreeform=${true} .value=${currentDomains}></dees-input-list>
238
- <dees-input-list .key=${'targets'} .label=${'Targets (ip:port)'} .placeholder=${'e.g. 10.0.0.1:443'} .allowFreeform=${true} .value=${currentTargets}></dees-input-list>
238
+ <dees-input-list .key=${'targets'} .label=${'Targets'} .description=${'Format: ip:port, e.g. 10.0.0.1:443'} .placeholder=${'e.g. 10.0.0.1:443'} .allowFreeform=${true} .value=${currentTargets}></dees-input-list>
239
239
  <dees-input-list .key=${'routeRefs'} .label=${'Route Refs'} .placeholder=${'Type to search routes...'} .candidates=${routeCandidates} .allowFreeform=${true} .value=${currentRouteRefs}></dees-input-list>
240
240
  </dees-form>
241
241
  `,
@@ -371,8 +371,8 @@ export class OpsViewVpn extends DeesElement {
371
371
  </div>
372
372
  <dees-input-checkbox .key=${'allowAdditionalAcls'} .label=${'Allow additional ACLs'} .value=${false}></dees-input-checkbox>
373
373
  <div class="aclGroup" style="display: none; flex-direction: column; gap: 16px;">
374
- <dees-input-text .key=${'destinationAllowList'} .label=${'Destination Allow List (comma-separated IPs/CIDRs)'}></dees-input-text>
375
- <dees-input-text .key=${'destinationBlockList'} .label=${'Destination Block List (comma-separated IPs/CIDRs)'}></dees-input-text>
374
+ <dees-input-text .key=${'destinationAllowList'} .label=${'Destination Allow List'} .description=${'Comma-separated IPs or CIDRs'}></dees-input-text>
375
+ <dees-input-text .key=${'destinationBlockList'} .label=${'Destination Block List'} .description=${'Comma-separated IPs or CIDRs'}></dees-input-text>
376
376
  </div>
377
377
  </dees-form>
378
378
  `,
@@ -681,8 +681,8 @@ export class OpsViewVpn extends DeesElement {
681
681
  </div>
682
682
  <dees-input-checkbox .key=${'allowAdditionalAcls'} .label=${'Allow additional ACLs'} .value=${currentAllowAcls}></dees-input-checkbox>
683
683
  <div class="aclGroup" style="display: ${currentAllowAcls ? 'flex' : 'none'}; flex-direction: column; gap: 16px;">
684
- <dees-input-text .key=${'destinationAllowList'} .label=${'Destination Allow List (comma-separated IPs/CIDRs)'} .value=${currentAllowList}></dees-input-text>
685
- <dees-input-text .key=${'destinationBlockList'} .label=${'Destination Block List (comma-separated IPs/CIDRs)'} .value=${currentBlockList}></dees-input-text>
684
+ <dees-input-text .key=${'destinationAllowList'} .label=${'Destination Allow List'} .description=${'Comma-separated IPs or CIDRs'} .value=${currentAllowList}></dees-input-text>
685
+ <dees-input-text .key=${'destinationBlockList'} .label=${'Destination Block List'} .description=${'Comma-separated IPs or CIDRs'} .value=${currentBlockList}></dees-input-text>
686
686
  </div>
687
687
  </dees-form>
688
688
  `,