@serve.zone/dcrouter 18.9.2 → 18.9.4

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 (42) hide show
  1. package/deno.json +1 -1
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/classes.dcrouter.js +5 -4
  4. package/dist_ts/db/documents/classes.authentication-event.doc.d.ts +0 -1
  5. package/dist_ts/db/documents/classes.authentication-event.doc.js +176 -259
  6. package/dist_ts/db/documents/classes.email-traffic-bucket.doc.js +110 -188
  7. package/dist_ts/dns/manager.dns-authority.d.ts +5 -0
  8. package/dist_ts/dns/manager.dns-authority.js +97 -53
  9. package/dist_ts/dns/manager.dns.js +23 -5
  10. package/dist_ts/email/classes.email-domain.manager.js +14 -3
  11. package/dist_ts/email/classes.email-settings.manager.js +26 -6
  12. package/dist_ts/email/classes.mail-dns-sync.js +22 -2
  13. package/dist_ts/monitoring/classes.metricscache.d.ts +28 -19
  14. package/dist_ts/monitoring/classes.metricscache.js +133 -62
  15. package/dist_ts/monitoring/classes.metricsmanager.js +7 -5
  16. package/dist_ts/plugins.d.ts +2 -1
  17. package/dist_ts/plugins.js +3 -2
  18. package/dist_ts/remoteingress/classes.remoteingress-manager.js +46 -9
  19. package/dist_ts/security/classes.authentication-event-manager.d.ts +5 -1
  20. package/dist_ts/security/classes.authentication-event-manager.js +32 -22
  21. package/dist_ts/vpn/classes.vpn-manager.js +34 -2
  22. package/dist_ts_migrations/index.d.ts +4 -1
  23. package/dist_ts_migrations/index.js +18 -3
  24. package/dist_ts_web/00_commitinfo_data.js +1 -1
  25. package/package.json +9 -8
  26. package/readme.hints.md +72 -0
  27. package/ts/00_commitinfo_data.ts +1 -1
  28. package/ts/classes.dcrouter.ts +4 -3
  29. package/ts/db/documents/classes.authentication-event.doc.ts +64 -87
  30. package/ts/db/documents/classes.email-traffic-bucket.doc.ts +10 -9
  31. package/ts/dns/manager.dns-authority.ts +92 -54
  32. package/ts/dns/manager.dns.ts +20 -4
  33. package/ts/email/classes.email-domain.manager.ts +12 -2
  34. package/ts/email/classes.email-settings.manager.ts +23 -5
  35. package/ts/email/classes.mail-dns-sync.ts +23 -1
  36. package/ts/monitoring/classes.metricscache.ts +133 -79
  37. package/ts/monitoring/classes.metricsmanager.ts +6 -4
  38. package/ts/plugins.ts +2 -0
  39. package/ts/remoteingress/classes.remoteingress-manager.ts +42 -8
  40. package/ts/security/classes.authentication-event-manager.ts +31 -20
  41. package/ts/vpn/classes.vpn-manager.ts +32 -1
  42. package/ts_web/00_commitinfo_data.ts +1 -1
@@ -811,6 +811,8 @@ export class VpnManager {
811
811
  client: Pick<VpnClientDoc, 'useHostIp' | 'useDhcp' | 'staticIp' | 'forceVlan' | 'vlanId'>,
812
812
  ): void {
813
813
  client.useHostIp = client.useHostIp === true;
814
+ client.staticIp = client.staticIp ?? undefined;
815
+ client.vlanId = client.vlanId ?? undefined;
814
816
 
815
817
  if (!client.useHostIp) {
816
818
  client.useDhcp = false;
@@ -883,6 +885,35 @@ export class VpnManager {
883
885
  }
884
886
 
885
887
  private async persistClient(client: VpnClientDoc): Promise<void> {
886
- await client.save();
888
+ if (client.creationStatus === 'new') {
889
+ await client.save();
890
+ return;
891
+ }
892
+ const persisted = await VpnClientDoc.atomicUpdate({ clientId: client.clientId }, {
893
+ $set: {
894
+ enabled: client.enabled,
895
+ noisePublicKey: client.noisePublicKey,
896
+ wgPublicKey: client.wgPublicKey,
897
+ createdAt: client.createdAt,
898
+ updatedAt: client.updatedAt,
899
+ ...(client.targetProfileIds !== undefined ? { targetProfileIds: client.targetProfileIds } : {}),
900
+ ...(client.description !== undefined ? { description: client.description } : {}),
901
+ ...(client.assignedIp !== undefined ? { assignedIp: client.assignedIp } : {}),
902
+ ...(client.wgPrivateKey !== undefined ? { wgPrivateKey: client.wgPrivateKey } : {}),
903
+ ...(client.expiresAt !== undefined ? { expiresAt: client.expiresAt } : {}),
904
+ ...(client.destinationAllowList !== undefined ? { destinationAllowList: client.destinationAllowList } : {}),
905
+ ...(client.destinationBlockList !== undefined ? { destinationBlockList: client.destinationBlockList } : {}),
906
+ ...(client.useHostIp !== undefined ? { useHostIp: client.useHostIp } : {}),
907
+ ...(client.useDhcp !== undefined ? { useDhcp: client.useDhcp } : {}),
908
+ ...(client.staticIp !== undefined ? { staticIp: client.staticIp } : {}),
909
+ ...(client.forceVlan !== undefined ? { forceVlan: client.forceVlan } : {}),
910
+ ...(client.vlanId !== undefined ? { vlanId: client.vlanId } : {}),
911
+ },
912
+ $unset: {
913
+ ...(client.staticIp === undefined ? { staticIp: true } : {}),
914
+ ...(client.vlanId === undefined ? { vlanId: true } : {}),
915
+ },
916
+ });
917
+ if (persisted.matchedCount !== 1) throw new Error('VPN client disappeared during update');
887
918
  }
888
919
  }
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '18.9.2',
6
+ version: '18.9.4',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }