@serve.zone/dcrouter 6.4.5 → 6.6.1

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.
@@ -175,7 +175,7 @@ export class OpsViewCertificates extends DeesElement {
175
175
  title: 'Total Certificates',
176
176
  value: summary.total,
177
177
  type: 'number',
178
- icon: 'shieldHalved',
178
+ icon: 'lucide:ShieldHalf',
179
179
  color: '#3b82f6',
180
180
  },
181
181
  {
@@ -183,7 +183,7 @@ export class OpsViewCertificates extends DeesElement {
183
183
  title: 'Valid',
184
184
  value: summary.valid,
185
185
  type: 'number',
186
- icon: 'check',
186
+ icon: 'lucide:Check',
187
187
  color: '#22c55e',
188
188
  },
189
189
  {
@@ -191,7 +191,7 @@ export class OpsViewCertificates extends DeesElement {
191
191
  title: 'Expiring Soon',
192
192
  value: summary.expiring,
193
193
  type: 'number',
194
- icon: 'clock',
194
+ icon: 'lucide:Clock',
195
195
  color: '#f59e0b',
196
196
  },
197
197
  {
@@ -199,7 +199,7 @@ export class OpsViewCertificates extends DeesElement {
199
199
  title: 'Failed / Expired',
200
200
  value: summary.failed + summary.expired,
201
201
  type: 'number',
202
- icon: 'triangleExclamation',
202
+ icon: 'lucide:TriangleAlert',
203
203
  color: '#ef4444',
204
204
  },
205
205
  ];
@@ -211,7 +211,7 @@ export class OpsViewCertificates extends DeesElement {
211
211
  .gridActions=${[
212
212
  {
213
213
  name: 'Refresh',
214
- iconName: 'arrowsRotate',
214
+ iconName: 'lucide:RefreshCw',
215
215
  action: async () => {
216
216
  await appstate.certificateStatePart.dispatchAction(
217
217
  appstate.fetchCertificateOverviewAction,
@@ -243,7 +243,7 @@ export class OpsViewCertificates extends DeesElement {
243
243
  .dataActions=${[
244
244
  {
245
245
  name: 'Reprovision',
246
- iconName: 'arrowsRotate',
246
+ iconName: 'lucide:RefreshCw',
247
247
  type: ['inRow'],
248
248
  actionFunc: async (actionData: { item: interfaces.requests.ICertificateInfo }) => {
249
249
  const cert = actionData.item;
@@ -270,7 +270,7 @@ export class OpsViewCertificates extends DeesElement {
270
270
  },
271
271
  {
272
272
  name: 'View Details',
273
- iconName: 'magnifyingGlass',
273
+ iconName: 'lucide:Search',
274
274
  type: ['doubleClick', 'contextmenu'],
275
275
  actionFunc: async (actionData: { item: interfaces.requests.ICertificateInfo }) => {
276
276
  const cert = actionData.item;
@@ -289,7 +289,7 @@ export class OpsViewCertificates extends DeesElement {
289
289
  menuOptions: [
290
290
  {
291
291
  name: 'Copy Domain',
292
- iconName: 'copy',
292
+ iconName: 'lucide:Copy',
293
293
  action: async () => {
294
294
  await navigator.clipboard.writeText(cert.domain);
295
295
  },
@@ -287,7 +287,7 @@ export class OpsViewNetwork extends DeesElement {
287
287
  .dataActions=${[
288
288
  {
289
289
  name: 'View Details',
290
- iconName: 'magnifyingGlass',
290
+ iconName: 'lucide:Search',
291
291
  type: ['inRow', 'doubleClick', 'contextmenu'],
292
292
  actionFunc: async (actionData) => {
293
293
  await this.showRequestDetails(actionData.item);
@@ -336,7 +336,7 @@ export class OpsViewNetwork extends DeesElement {
336
336
  menuOptions: [
337
337
  {
338
338
  name: 'Copy Request ID',
339
- iconName: 'copy',
339
+ iconName: 'lucide:Copy',
340
340
  action: async () => {
341
341
  await navigator.clipboard.writeText(request.id);
342
342
  }
@@ -429,13 +429,13 @@ export class OpsViewNetwork extends DeesElement {
429
429
  title: 'Active Connections',
430
430
  value: activeConnections,
431
431
  type: 'number',
432
- icon: 'plug',
432
+ icon: 'lucide:Plug',
433
433
  color: activeConnections > 100 ? '#f59e0b' : '#22c55e',
434
434
  description: `Total: ${this.networkState.requestsTotal || this.statsState.serverStats?.totalConnections || 0}`,
435
435
  actions: [
436
436
  {
437
437
  name: 'View Details',
438
- iconName: 'magnifyingGlass',
438
+ iconName: 'lucide:Search',
439
439
  action: async () => {
440
440
  },
441
441
  },
@@ -446,7 +446,7 @@ export class OpsViewNetwork extends DeesElement {
446
446
  title: 'Requests/sec',
447
447
  value: reqPerSec,
448
448
  type: 'trend',
449
- icon: 'chartLine',
449
+ icon: 'lucide:ChartLine',
450
450
  color: '#3b82f6',
451
451
  trendData: trendData,
452
452
  description: `Total: ${this.formatNumber(this.networkState.requestsTotal || 0)} requests`,
@@ -457,7 +457,7 @@ export class OpsViewNetwork extends DeesElement {
457
457
  value: this.formatBitsPerSecond(throughput.in),
458
458
  unit: '',
459
459
  type: 'number',
460
- icon: 'download',
460
+ icon: 'lucide:Download',
461
461
  color: '#22c55e',
462
462
  description: `Total: ${this.formatBytes(this.networkState.totalBytes?.in || 0)}`,
463
463
  },
@@ -467,7 +467,7 @@ export class OpsViewNetwork extends DeesElement {
467
467
  value: this.formatBitsPerSecond(throughput.out),
468
468
  unit: '',
469
469
  type: 'number',
470
- icon: 'upload',
470
+ icon: 'lucide:Upload',
471
471
  color: '#8b5cf6',
472
472
  description: `Total: ${this.formatBytes(this.networkState.totalBytes?.out || 0)}`,
473
473
  },
@@ -480,7 +480,7 @@ export class OpsViewNetwork extends DeesElement {
480
480
  .gridActions=${[
481
481
  {
482
482
  name: 'Export Data',
483
- iconName: 'fileExport',
483
+ iconName: 'lucide:FileOutput',
484
484
  action: async () => {
485
485
  console.log('Export feature coming soon');
486
486
  },
@@ -163,7 +163,7 @@ export class OpsViewOverview extends DeesElement {
163
163
  title: 'Server Status',
164
164
  value: this.statsState.serverStats.uptime ? 'Online' : 'Offline',
165
165
  type: 'text',
166
- icon: 'server',
166
+ icon: 'lucide:Server',
167
167
  color: this.statsState.serverStats.uptime ? '#22c55e' : '#ef4444',
168
168
  description: `Uptime: ${this.formatUptime(this.statsState.serverStats.uptime)}`,
169
169
  },
@@ -172,7 +172,7 @@ export class OpsViewOverview extends DeesElement {
172
172
  title: 'Active Connections',
173
173
  value: this.statsState.serverStats.activeConnections,
174
174
  type: 'number',
175
- icon: 'networkWired',
175
+ icon: 'lucide:Network',
176
176
  color: '#3b82f6',
177
177
  description: `Total: ${this.statsState.serverStats.totalConnections}`,
178
178
  },
@@ -181,7 +181,7 @@ export class OpsViewOverview extends DeesElement {
181
181
  title: 'Throughput In',
182
182
  value: this.formatBitsPerSecond(this.statsState.serverStats.throughput?.bytesInPerSecond || 0),
183
183
  type: 'text',
184
- icon: 'download',
184
+ icon: 'lucide:Download',
185
185
  color: '#22c55e',
186
186
  description: `Total: ${this.formatBytes(this.statsState.serverStats.throughput?.bytesIn || 0)}`,
187
187
  },
@@ -190,7 +190,7 @@ export class OpsViewOverview extends DeesElement {
190
190
  title: 'Throughput Out',
191
191
  value: this.formatBitsPerSecond(this.statsState.serverStats.throughput?.bytesOutPerSecond || 0),
192
192
  type: 'text',
193
- icon: 'upload',
193
+ icon: 'lucide:Upload',
194
194
  color: '#8b5cf6',
195
195
  description: `Total: ${this.formatBytes(this.statsState.serverStats.throughput?.bytesOut || 0)}`,
196
196
  },
@@ -199,7 +199,7 @@ export class OpsViewOverview extends DeesElement {
199
199
  title: 'CPU Usage',
200
200
  value: cpuUsage,
201
201
  type: 'gauge',
202
- icon: 'microchip',
202
+ icon: 'lucide:Cpu',
203
203
  gaugeOptions: {
204
204
  min: 0,
205
205
  max: 100,
@@ -215,7 +215,7 @@ export class OpsViewOverview extends DeesElement {
215
215
  title: 'Memory Usage',
216
216
  value: memoryUsage,
217
217
  type: 'percentage',
218
- icon: 'memory',
218
+ icon: 'lucide:MemoryStick',
219
219
  color: memoryUsage > 80 ? '#ef4444' : memoryUsage > 60 ? '#f59e0b' : '#22c55e',
220
220
  description: this.statsState.serverStats.memoryUsage.actualUsageBytes !== undefined && this.statsState.serverStats.memoryUsage.maxMemoryMB !== undefined
221
221
  ? `${this.formatBytes(this.statsState.serverStats.memoryUsage.actualUsageBytes)} / ${this.formatBytes(this.statsState.serverStats.memoryUsage.maxMemoryMB * 1024 * 1024)}`
@@ -229,7 +229,7 @@ export class OpsViewOverview extends DeesElement {
229
229
  .gridActions=${[
230
230
  {
231
231
  name: 'Refresh',
232
- iconName: 'arrowsRotate',
232
+ iconName: 'lucide:RefreshCw',
233
233
  action: async () => {
234
234
  await appstate.statsStatePart.dispatchAction(appstate.fetchAllStatsAction, null);
235
235
  },
@@ -251,7 +251,7 @@ export class OpsViewOverview extends DeesElement {
251
251
  title: 'Emails Sent',
252
252
  value: this.statsState.emailStats.sent,
253
253
  type: 'number',
254
- icon: 'paperPlane',
254
+ icon: 'lucide:Send',
255
255
  color: '#22c55e',
256
256
  description: `Delivery rate: ${(deliveryRate * 100).toFixed(1)}%`,
257
257
  },
@@ -260,7 +260,7 @@ export class OpsViewOverview extends DeesElement {
260
260
  title: 'Emails Received',
261
261
  value: this.statsState.emailStats.received,
262
262
  type: 'number',
263
- icon: 'envelope',
263
+ icon: 'lucide:Mail',
264
264
  color: '#3b82f6',
265
265
  },
266
266
  {
@@ -268,7 +268,7 @@ export class OpsViewOverview extends DeesElement {
268
268
  title: 'Queued',
269
269
  value: this.statsState.emailStats.queued,
270
270
  type: 'number',
271
- icon: 'clock',
271
+ icon: 'lucide:Clock',
272
272
  color: '#f59e0b',
273
273
  description: 'Pending delivery',
274
274
  },
@@ -277,7 +277,7 @@ export class OpsViewOverview extends DeesElement {
277
277
  title: 'Failed',
278
278
  value: this.statsState.emailStats.failed,
279
279
  type: 'number',
280
- icon: 'triangleExclamation',
280
+ icon: 'lucide:TriangleAlert',
281
281
  color: '#ef4444',
282
282
  description: `Bounce rate: ${(bounceRate * 100).toFixed(1)}%`,
283
283
  },
@@ -300,7 +300,7 @@ export class OpsViewOverview extends DeesElement {
300
300
  title: 'DNS Queries',
301
301
  value: this.statsState.dnsStats.totalQueries,
302
302
  type: 'number',
303
- icon: 'globe',
303
+ icon: 'lucide:Globe',
304
304
  color: '#3b82f6',
305
305
  description: 'Total queries handled',
306
306
  },
@@ -309,7 +309,7 @@ export class OpsViewOverview extends DeesElement {
309
309
  title: 'Cache Hit Rate',
310
310
  value: cacheHitRate,
311
311
  type: 'percentage',
312
- icon: 'database',
312
+ icon: 'lucide:Database',
313
313
  color: cacheHitRate > 80 ? '#22c55e' : cacheHitRate > 60 ? '#f59e0b' : '#ef4444',
314
314
  description: `${this.statsState.dnsStats.cacheHits} hits / ${this.statsState.dnsStats.cacheMisses} misses`,
315
315
  },
@@ -318,7 +318,7 @@ export class OpsViewOverview extends DeesElement {
318
318
  title: 'Active Domains',
319
319
  value: this.statsState.dnsStats.activeDomains,
320
320
  type: 'number',
321
- icon: 'sitemap',
321
+ icon: 'lucide:Network',
322
322
  color: '#8b5cf6',
323
323
  },
324
324
  {
@@ -327,7 +327,7 @@ export class OpsViewOverview extends DeesElement {
327
327
  value: this.statsState.dnsStats.averageResponseTime.toFixed(1),
328
328
  unit: 'ms',
329
329
  type: 'number',
330
- icon: 'clockRotateLeft',
330
+ icon: 'lucide:History',
331
331
  color: this.statsState.dnsStats.averageResponseTime < 50 ? '#22c55e' : '#f59e0b',
332
332
  },
333
333
  ];
@@ -192,6 +192,43 @@ export class OpsViewRemoteIngress extends DeesElement {
192
192
  lastHeartbeat: this.getLastHeartbeat(edge.id),
193
193
  })}
194
194
  .dataActions=${[
195
+ {
196
+ name: 'Create Edge Node',
197
+ iconName: 'lucide:plus',
198
+ type: ['header'],
199
+ actionFunc: async () => {
200
+ const { DeesModal } = await import('@design.estate/dees-catalog');
201
+ const result = await DeesModal.createAndShow({
202
+ heading: 'Create Edge Node',
203
+ content: html`
204
+ <dees-form>
205
+ <dees-input-text .key=${'name'} .label=${'Name'} .required=${true}></dees-input-text>
206
+ <dees-input-text .key=${'listenPorts'} .label=${'Listen Ports (comma-separated)'} .required=${true} .value=${'443,25'}></dees-input-text>
207
+ <dees-input-text .key=${'tags'} .label=${'Tags (comma-separated, optional)'}></dees-input-text>
208
+ </dees-form>
209
+ `,
210
+ menuOptions: [],
211
+ });
212
+ if (result) {
213
+ const formData = result as any;
214
+ const ports = (formData.name ? formData.listenPorts : '443')
215
+ .split(',')
216
+ .map((p: string) => parseInt(p.trim(), 10))
217
+ .filter((p: number) => !isNaN(p));
218
+ const tags = formData.tags
219
+ ? formData.tags.split(',').map((t: string) => t.trim()).filter(Boolean)
220
+ : undefined;
221
+ await appstate.remoteIngressStatePart.dispatchAction(
222
+ appstate.createRemoteIngressAction,
223
+ {
224
+ name: formData.name,
225
+ listenPorts: ports,
226
+ tags,
227
+ },
228
+ );
229
+ }
230
+ },
231
+ },
195
232
  {
196
233
  name: 'Regenerate Secret',
197
234
  iconName: 'lucide:key',
@@ -215,38 +252,6 @@ export class OpsViewRemoteIngress extends DeesElement {
215
252
  },
216
253
  },
217
254
  ]}
218
- .createNewAction=${async () => {
219
- const { DeesModal } = await import('@design.estate/dees-catalog');
220
- const result = await DeesModal.createAndShow({
221
- heading: 'Create Edge Node',
222
- content: html`
223
- <dees-form>
224
- <dees-input-text .key=${'name'} .label=${'Name'} .required=${true}></dees-input-text>
225
- <dees-input-text .key=${'listenPorts'} .label=${'Listen Ports (comma-separated)'} .required=${true} .value=${'443,25'}></dees-input-text>
226
- <dees-input-text .key=${'tags'} .label=${'Tags (comma-separated, optional)'}></dees-input-text>
227
- </dees-form>
228
- `,
229
- menuOptions: [],
230
- });
231
- if (result) {
232
- const formData = result as any;
233
- const ports = (formData.name ? formData.listenPorts : '443')
234
- .split(',')
235
- .map((p: string) => parseInt(p.trim(), 10))
236
- .filter((p: number) => !isNaN(p));
237
- const tags = formData.tags
238
- ? formData.tags.split(',').map((t: string) => t.trim()).filter(Boolean)
239
- : undefined;
240
- await appstate.remoteIngressStatePart.dispatchAction(
241
- appstate.createRemoteIngressAction,
242
- {
243
- name: formData.name,
244
- listenPorts: ports,
245
- tags,
246
- },
247
- );
248
- }
249
- }}
250
255
  ></dees-table>
251
256
  </div>
252
257
  `;
@@ -256,7 +256,7 @@ export class OpsViewSecurity extends DeesElement {
256
256
  title: 'Threat Level',
257
257
  value: threatScore,
258
258
  type: 'gauge',
259
- icon: 'shield',
259
+ icon: 'lucide:Shield',
260
260
  gaugeOptions: {
261
261
  min: 0,
262
262
  max: 100,
@@ -273,7 +273,7 @@ export class OpsViewSecurity extends DeesElement {
273
273
  title: 'Blocked Threats',
274
274
  value: metrics.blockedIPs.length + metrics.spamDetected,
275
275
  type: 'number',
276
- icon: 'userShield',
276
+ icon: 'lucide:ShieldCheck',
277
277
  color: '#ef4444',
278
278
  description: 'Total threats blocked today',
279
279
  },
@@ -282,7 +282,7 @@ export class OpsViewSecurity extends DeesElement {
282
282
  title: 'Active Sessions',
283
283
  value: 0,
284
284
  type: 'number',
285
- icon: 'users',
285
+ icon: 'lucide:Users',
286
286
  color: '#22c55e',
287
287
  description: 'Current authenticated sessions',
288
288
  },
@@ -291,7 +291,7 @@ export class OpsViewSecurity extends DeesElement {
291
291
  title: 'Auth Failures',
292
292
  value: metrics.authenticationFailures,
293
293
  type: 'number',
294
- icon: 'lockOpen',
294
+ icon: 'lucide:LockOpen',
295
295
  color: metrics.authenticationFailures > 10 ? '#ef4444' : '#f59e0b',
296
296
  description: 'Failed login attempts today',
297
297
  },
@@ -355,7 +355,7 @@ export class OpsViewSecurity extends DeesElement {
355
355
  title: 'Authentication Failures',
356
356
  value: metrics.authenticationFailures,
357
357
  type: 'number',
358
- icon: 'lockOpen',
358
+ icon: 'lucide:LockOpen',
359
359
  color: metrics.authenticationFailures > 10 ? '#ef4444' : '#f59e0b',
360
360
  description: 'Failed authentication attempts today',
361
361
  },
@@ -364,7 +364,7 @@ export class OpsViewSecurity extends DeesElement {
364
364
  title: 'Successful Logins',
365
365
  value: 0,
366
366
  type: 'number',
367
- icon: 'lock',
367
+ icon: 'lucide:Lock',
368
368
  color: '#22c55e',
369
369
  description: 'Successful logins today',
370
370
  },
@@ -399,7 +399,7 @@ export class OpsViewSecurity extends DeesElement {
399
399
  title: 'Malware Detection',
400
400
  value: metrics.malwareDetected,
401
401
  type: 'number',
402
- icon: 'virusSlash',
402
+ icon: 'lucide:BugOff',
403
403
  color: metrics.malwareDetected > 0 ? '#ef4444' : '#22c55e',
404
404
  description: 'Malware detected',
405
405
  },
@@ -408,7 +408,7 @@ export class OpsViewSecurity extends DeesElement {
408
408
  title: 'Phishing Detection',
409
409
  value: metrics.phishingDetected,
410
410
  type: 'number',
411
- icon: 'fishFins',
411
+ icon: 'lucide:Fish',
412
412
  color: metrics.phishingDetected > 0 ? '#ef4444' : '#22c55e',
413
413
  description: 'Phishing attempts detected',
414
414
  },
@@ -417,7 +417,7 @@ export class OpsViewSecurity extends DeesElement {
417
417
  title: 'Suspicious Activities',
418
418
  value: metrics.suspiciousActivities,
419
419
  type: 'number',
420
- icon: 'triangleExclamation',
420
+ icon: 'lucide:TriangleAlert',
421
421
  color: metrics.suspiciousActivities > 5 ? '#ef4444' : '#f59e0b',
422
422
  description: 'Suspicious activities detected',
423
423
  },
@@ -426,7 +426,7 @@ export class OpsViewSecurity extends DeesElement {
426
426
  title: 'Spam Detection',
427
427
  value: metrics.spamDetected,
428
428
  type: 'number',
429
- icon: 'ban',
429
+ icon: 'lucide:Ban',
430
430
  color: '#f59e0b',
431
431
  description: 'Spam emails blocked',
432
432
  },