@serve.zone/dcrouter 11.13.0 → 11.15.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/dist_serve/bundle.js +4 -4
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.dcrouter.d.ts +6 -0
- package/dist_ts/classes.dcrouter.js +25 -4
- package/dist_ts/config/classes.route-config-manager.d.ts +3 -3
- package/dist_ts/config/classes.route-config-manager.js +9 -8
- package/dist_ts/opsserver/handlers/vpn.handler.js +4 -4
- package/dist_ts/vpn/classes.vpn-manager.d.ts +16 -2
- package/dist_ts/vpn/classes.vpn-manager.js +42 -4
- package/dist_ts_interfaces/data/remoteingress.d.ts +2 -0
- package/dist_ts_interfaces/data/vpn.d.ts +1 -1
- package/dist_ts_interfaces/requests/vpn.d.ts +1 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/appstate.d.ts +1 -1
- package/dist_ts_web/appstate.js +2 -2
- package/dist_ts_web/elements/ops-view-vpn.js +5 -5
- package/dist_ts_web/router.d.ts +1 -1
- package/dist_ts_web/router.js +2 -2
- package/package.json +2 -2
- package/readme.md +107 -3
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.dcrouter.ts +33 -3
- package/ts/config/classes.route-config-manager.ts +7 -6
- package/ts/opsserver/handlers/vpn.handler.ts +3 -3
- package/ts/vpn/classes.vpn-manager.ts +56 -5
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/appstate.ts +2 -2
- package/ts_web/elements/ops-view-vpn.ts +4 -4
- package/ts_web/readme.md +17 -0
- package/ts_web/router.ts +1 -1
package/ts_web/appstate.ts
CHANGED
|
@@ -974,7 +974,7 @@ export const fetchVpnAction = vpnStatePart.createAction(async (statePartArg): Pr
|
|
|
974
974
|
|
|
975
975
|
export const createVpnClientAction = vpnStatePart.createAction<{
|
|
976
976
|
clientId: string;
|
|
977
|
-
|
|
977
|
+
serverDefinedClientTags?: string[];
|
|
978
978
|
description?: string;
|
|
979
979
|
}>(async (statePartArg, dataArg, actionContext): Promise<IVpnState> => {
|
|
980
980
|
const context = getActionContext();
|
|
@@ -988,7 +988,7 @@ export const createVpnClientAction = vpnStatePart.createAction<{
|
|
|
988
988
|
const response = await request.fire({
|
|
989
989
|
identity: context.identity!,
|
|
990
990
|
clientId: dataArg.clientId,
|
|
991
|
-
|
|
991
|
+
serverDefinedClientTags: dataArg.serverDefinedClientTags,
|
|
992
992
|
description: dataArg.description,
|
|
993
993
|
});
|
|
994
994
|
|
|
@@ -255,8 +255,8 @@ export class OpsViewVpn extends DeesElement {
|
|
|
255
255
|
? html`<span class="statusBadge enabled">enabled</span>`
|
|
256
256
|
: html`<span class="statusBadge disabled">disabled</span>`,
|
|
257
257
|
'VPN IP': client.assignedIp || '-',
|
|
258
|
-
'Tags': client.
|
|
259
|
-
? html`${client.
|
|
258
|
+
'Tags': client.serverDefinedClientTags?.length
|
|
259
|
+
? html`${client.serverDefinedClientTags.map(t => html`<span class="tagBadge">${t}</span>`)}`
|
|
260
260
|
: '-',
|
|
261
261
|
'Description': client.description || '-',
|
|
262
262
|
'Created': new Date(client.createdAt).toLocaleDateString(),
|
|
@@ -312,11 +312,11 @@ export class OpsViewVpn extends DeesElement {
|
|
|
312
312
|
action: async (modal: any) => {
|
|
313
313
|
const form = modal.shadowRoot!.querySelector('dees-form') as any;
|
|
314
314
|
const data = await form.collectFormData();
|
|
315
|
-
const
|
|
315
|
+
const serverDefinedClientTags = data.tags ? data.tags.split(',').map((t: string) => t.trim()).filter(Boolean) : undefined;
|
|
316
316
|
await appstate.vpnStatePart.dispatchAction(appstate.createVpnClientAction, {
|
|
317
317
|
clientId: data.clientId,
|
|
318
318
|
description: data.description || undefined,
|
|
319
|
-
|
|
319
|
+
serverDefinedClientTags,
|
|
320
320
|
});
|
|
321
321
|
modal.destroy();
|
|
322
322
|
},
|
package/ts_web/readme.md
CHANGED
|
@@ -50,6 +50,13 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
|
|
|
50
50
|
- **Connection token generation** — one-click "Copy Token" for easy edge provisioning
|
|
51
51
|
- Enable/disable, edit, secret regeneration, and delete actions
|
|
52
52
|
|
|
53
|
+
### 🔐 VPN Management
|
|
54
|
+
- VPN server status with forwarding mode, subnet, and WireGuard port
|
|
55
|
+
- Client registration table with create, enable/disable, and delete actions
|
|
56
|
+
- WireGuard config download and clipboard copy on client creation
|
|
57
|
+
- Per-client telemetry (bytes sent/received, keepalives)
|
|
58
|
+
- Server public key display for manual client configuration
|
|
59
|
+
|
|
53
60
|
### 📜 Log Viewer
|
|
54
61
|
- Real-time log streaming
|
|
55
62
|
- Filter by log level (error, warning, info, debug)
|
|
@@ -100,6 +107,7 @@ ts_web/
|
|
|
100
107
|
├── ops-view-emails.ts # Email queue management
|
|
101
108
|
├── ops-view-certificates.ts # Certificate overview & reprovisioning
|
|
102
109
|
├── ops-view-remoteingress.ts # Remote ingress edge management
|
|
110
|
+
├── ops-view-vpn.ts # VPN client management
|
|
103
111
|
├── ops-view-logs.ts # Log viewer
|
|
104
112
|
├── ops-view-routes.ts # Route & API token management
|
|
105
113
|
├── ops-view-config.ts # Configuration display
|
|
@@ -124,6 +132,7 @@ The app uses `@push.rocks/smartstate` v2.3+ with multiple state parts, scheduled
|
|
|
124
132
|
| `emailOpsStatePart` | Soft | Email queues, bounces, suppression list |
|
|
125
133
|
| `certificateStatePart` | Soft | Certificate list, summary, loading state |
|
|
126
134
|
| `remoteIngressStatePart` | Soft | Edge list, statuses, new edge secret |
|
|
135
|
+
| `vpnStatePart` | Soft | VPN clients, server status, new client config |
|
|
127
136
|
|
|
128
137
|
### Tab Visibility Optimization
|
|
129
138
|
|
|
@@ -173,6 +182,13 @@ regenerateRemoteIngressSecretAction(id) // New secret
|
|
|
173
182
|
toggleRemoteIngressAction(id, enabled) // Enable/disable
|
|
174
183
|
clearNewEdgeSecretAction() // Dismiss secret banner
|
|
175
184
|
fetchConnectionToken(edgeId) // Get connection token (standalone function)
|
|
185
|
+
|
|
186
|
+
// VPN
|
|
187
|
+
fetchVpnAction() // Clients + server status
|
|
188
|
+
createVpnClientAction(data) // Create new VPN client
|
|
189
|
+
deleteVpnClientAction(clientId) // Remove VPN client
|
|
190
|
+
toggleVpnClientAction(id, enabled) // Enable/disable
|
|
191
|
+
clearNewClientConfigAction() // Dismiss config banner
|
|
176
192
|
```
|
|
177
193
|
|
|
178
194
|
### Client-Side Routing
|
|
@@ -187,6 +203,7 @@ fetchConnectionToken(edgeId) // Get connection token (standalone function)
|
|
|
187
203
|
/emails/security → Security incidents
|
|
188
204
|
/certificates → Certificate management
|
|
189
205
|
/remoteingress → Remote ingress edge management
|
|
206
|
+
/vpn → VPN client management
|
|
190
207
|
/routes → Route & API token management
|
|
191
208
|
/logs → Log viewer
|
|
192
209
|
/configuration → System configuration
|
package/ts_web/router.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as appstate from './appstate.js';
|
|
|
3
3
|
|
|
4
4
|
const SmartRouter = plugins.domtools.plugins.smartrouter.SmartRouter;
|
|
5
5
|
|
|
6
|
-
export const validViews = ['overview', 'network', 'emails', 'logs', 'routes', 'apitokens', 'configuration', 'security', 'certificates', 'remoteingress'] as const;
|
|
6
|
+
export const validViews = ['overview', 'network', 'emails', 'logs', 'routes', 'apitokens', 'configuration', 'security', 'certificates', 'remoteingress', 'vpn'] as const;
|
|
7
7
|
|
|
8
8
|
export type TValidView = typeof validViews[number];
|
|
9
9
|
|