@serve.zone/dcrouter 13.33.0 → 13.34.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 +12 -5
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.dcrouter.js +9 -4
- package/dist_ts/config/classes.target-profile-manager.d.ts +16 -3
- package/dist_ts/config/classes.target-profile-manager.js +197 -6
- package/dist_ts/db/documents/classes.target-profile.doc.d.ts +1 -0
- package/dist_ts/db/documents/classes.target-profile.doc.js +8 -2
- package/dist_ts/opsserver/handlers/target-profile.handler.js +3 -1
- package/dist_ts/opsserver/handlers/vpn.handler.js +3 -1
- package/dist_ts/vpn/classes.vpn-manager.d.ts +15 -1
- package/dist_ts/vpn/classes.vpn-manager.js +138 -6
- package/dist_ts_interfaces/data/target-profile.d.ts +2 -0
- package/dist_ts_interfaces/data/vpn.d.ts +4 -0
- package/dist_ts_interfaces/requests/target-profiles.d.ts +2 -0
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/appstate.d.ts +2 -0
- package/dist_ts_web/appstate.js +3 -1
- package/dist_ts_web/elements/network/ops-view-targetprofiles.js +10 -1
- package/dist_ts_web/elements/network/ops-view-vpn.js +3 -1
- package/package.json +1 -1
- package/readme.md +13 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.dcrouter.ts +10 -2
- package/ts/config/classes.target-profile-manager.ts +229 -5
- package/ts/db/documents/classes.target-profile.doc.ts +3 -0
- package/ts/opsserver/handlers/target-profile.handler.ts +2 -0
- package/ts/opsserver/handlers/vpn.handler.ts +2 -0
- package/ts/vpn/classes.vpn-manager.ts +158 -3
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/appstate.ts +4 -0
- package/ts_web/elements/network/ops-view-targetprofiles.ts +9 -0
- package/ts_web/elements/network/ops-view-vpn.ts +2 -0
|
@@ -97,6 +97,7 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
97
97
|
'Route Refs': profile.routeRefs?.length
|
|
98
98
|
? html`${profile.routeRefs.map(r => html`<span class="tagBadge">${this.formatRouteRef(r)}</span>`)}`
|
|
99
99
|
: '-',
|
|
100
|
+
'Client Source IP Routes': profile.allowRoutesByClientSourceIp ? 'Yes' : 'No',
|
|
100
101
|
Created: new Date(profile.createdAt).toLocaleDateString(),
|
|
101
102
|
})}
|
|
102
103
|
.dataActions=${[
|
|
@@ -223,6 +224,7 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
223
224
|
<dees-input-list .key=${'domains'} .label=${'Domains'} .placeholder=${'e.g. *.example.com'} .allowFreeform=${true}></dees-input-list>
|
|
224
225
|
<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>
|
|
225
226
|
<dees-input-list .key=${'routeRefs'} .label=${'Route Refs'} .placeholder=${'Type to search routes...'} .candidates=${routeCandidates} .allowFreeform=${true}></dees-input-list>
|
|
227
|
+
<dees-input-checkbox .key=${'allowRoutesByClientSourceIp'} .label=${'Allow routes by VPN client source IP'} .description=${'Also grant access to non-VPN-only routes that would allow the client\'s real connecting IP'} .value=${false}></dees-input-checkbox>
|
|
226
228
|
</dees-form>
|
|
227
229
|
`,
|
|
228
230
|
menuOptions: [
|
|
@@ -258,6 +260,7 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
258
260
|
domains: domains.length > 0 ? domains : undefined,
|
|
259
261
|
targets: targets.length > 0 ? targets : undefined,
|
|
260
262
|
routeRefs: routeRefs.length > 0 ? routeRefs : undefined,
|
|
263
|
+
allowRoutesByClientSourceIp: data.allowRoutesByClientSourceIp === true,
|
|
261
264
|
});
|
|
262
265
|
modalArg.destroy();
|
|
263
266
|
},
|
|
@@ -284,6 +287,7 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
284
287
|
<dees-input-list .key=${'domains'} .label=${'Domains'} .placeholder=${'e.g. *.example.com'} .allowFreeform=${true} .value=${currentDomains}></dees-input-list>
|
|
285
288
|
<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>
|
|
286
289
|
<dees-input-list .key=${'routeRefs'} .label=${'Route Refs'} .placeholder=${'Type to search routes...'} .candidates=${routeCandidates} .allowFreeform=${true} .value=${currentRouteRefs}></dees-input-list>
|
|
290
|
+
<dees-input-checkbox .key=${'allowRoutesByClientSourceIp'} .label=${'Allow routes by VPN client source IP'} .description=${'Also grant access to non-VPN-only routes that would allow the client\'s real connecting IP'} .value=${profile.allowRoutesByClientSourceIp === true}></dees-input-checkbox>
|
|
287
291
|
</dees-form>
|
|
288
292
|
`,
|
|
289
293
|
menuOptions: [
|
|
@@ -319,6 +323,7 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
319
323
|
domains,
|
|
320
324
|
targets,
|
|
321
325
|
routeRefs,
|
|
326
|
+
allowRoutesByClientSourceIp: data.allowRoutesByClientSourceIp === true,
|
|
322
327
|
});
|
|
323
328
|
modalArg.destroy();
|
|
324
329
|
},
|
|
@@ -389,6 +394,10 @@ export class OpsViewTargetProfiles extends DeesElement {
|
|
|
389
394
|
: '-'}
|
|
390
395
|
</div>
|
|
391
396
|
</div>
|
|
397
|
+
<div>
|
|
398
|
+
<div style="font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: ${cssManager.bdTheme('#6b7280', '#9ca3af')};">Client Source IP Routes</div>
|
|
399
|
+
<div style="font-size: 14px; margin-top: 4px;">${profile.allowRoutesByClientSourceIp ? 'Enabled' : 'Disabled'}</div>
|
|
400
|
+
</div>
|
|
392
401
|
<div>
|
|
393
402
|
<div style="font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: ${cssManager.bdTheme('#6b7280', '#9ca3af')};">Created</div>
|
|
394
403
|
<div style="font-size: 14px; margin-top: 4px;">${new Date(profile.createdAt).toLocaleString()} by ${profile.createdBy}</div>
|
|
@@ -339,6 +339,7 @@ export class OpsViewVpn extends DeesElement {
|
|
|
339
339
|
'Status': statusHtml,
|
|
340
340
|
'Routing': routingHtml,
|
|
341
341
|
'VPN IP': client.assignedIp || '-',
|
|
342
|
+
'Source IP': conn?.sourceIp || '-',
|
|
342
343
|
'Target Profiles': this.renderTargetProfileBadges(client.targetProfileIds),
|
|
343
344
|
'Description': client.description || '-',
|
|
344
345
|
'Created': new Date(client.createdAt).toLocaleDateString(),
|
|
@@ -487,6 +488,7 @@ export class OpsViewVpn extends DeesElement {
|
|
|
487
488
|
${conn ? html`
|
|
488
489
|
<div class="infoItem"><span class="infoLabel">Connected Since</span><span class="infoValue">${new Date(conn.connectedSince).toLocaleString()}</span></div>
|
|
489
490
|
<div class="infoItem"><span class="infoLabel">Transport</span><span class="infoValue">${conn.transport}</span></div>
|
|
491
|
+
<div class="infoItem"><span class="infoLabel">Source IP</span><span class="infoValue">${conn.sourceIp || '-'}</span></div>
|
|
490
492
|
` : ''}
|
|
491
493
|
<div class="infoItem"><span class="infoLabel">Description</span><span class="infoValue">${client.description || '-'}</span></div>
|
|
492
494
|
<div class="infoItem"><span class="infoLabel">Target Profiles</span><span class="infoValue">${this.resolveProfileIdsToLabels(client.targetProfileIds)?.join(', ') || '-'}</span></div>
|