@serve.zone/dcrouter 13.17.0 → 13.17.2
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 +1 -1
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/acme/index.d.ts +1 -0
- package/dist_ts/acme/index.js +2 -0
- package/dist_ts/acme/manager.acme-config.d.ts +48 -0
- package/dist_ts/acme/manager.acme-config.js +156 -0
- package/dist_ts/classes.cert-provision-scheduler.d.ts +52 -0
- package/dist_ts/classes.cert-provision-scheduler.js +138 -0
- package/dist_ts/classes.dcrouter.d.ts +401 -0
- package/dist_ts/classes.dcrouter.js +1852 -0
- package/dist_ts/classes.storage-cert-manager.d.ts +15 -0
- package/dist_ts/classes.storage-cert-manager.js +53 -0
- package/dist_ts/config/classes.api-token-manager.d.ts +44 -0
- package/dist_ts/config/classes.api-token-manager.js +180 -0
- package/dist_ts/config/classes.db-seeder.d.ts +25 -0
- package/dist_ts/config/classes.db-seeder.js +69 -0
- package/dist_ts/config/classes.reference-resolver.d.ts +80 -0
- package/dist_ts/config/classes.reference-resolver.js +483 -0
- package/dist_ts/config/classes.route-config-manager.d.ts +54 -0
- package/dist_ts/config/classes.route-config-manager.js +370 -0
- package/dist_ts/config/classes.target-profile-manager.d.ts +82 -0
- package/dist_ts/config/classes.target-profile-manager.js +349 -0
- package/dist_ts/config/index.d.ts +6 -0
- package/dist_ts/config/index.js +8 -0
- package/dist_ts/config/validator.d.ts +104 -0
- package/dist_ts/config/validator.js +152 -0
- package/dist_ts/db/classes.cache.cleaner.d.ts +47 -0
- package/dist_ts/db/classes.cache.cleaner.js +130 -0
- package/dist_ts/db/classes.cached.document.d.ts +76 -0
- package/dist_ts/db/classes.cached.document.js +100 -0
- package/dist_ts/db/classes.dcrouter-db.d.ts +70 -0
- package/dist_ts/db/classes.dcrouter-db.js +146 -0
- package/dist_ts/db/documents/classes.accounting-session.doc.d.ts +32 -0
- package/dist_ts/db/documents/classes.accounting-session.doc.js +214 -0
- package/dist_ts/db/documents/classes.acme-cert.doc.d.ts +13 -0
- package/dist_ts/db/documents/classes.acme-cert.doc.js +109 -0
- package/dist_ts/db/documents/classes.acme-config.doc.d.ts +22 -0
- package/dist_ts/db/documents/classes.acme-config.doc.js +121 -0
- package/dist_ts/db/documents/classes.api-token.doc.d.ts +18 -0
- package/dist_ts/db/documents/classes.api-token.doc.js +127 -0
- package/dist_ts/db/documents/classes.cached.email.d.ts +125 -0
- package/dist_ts/db/documents/classes.cached.email.js +337 -0
- package/dist_ts/db/documents/classes.cached.ip.reputation.d.ts +119 -0
- package/dist_ts/db/documents/classes.cached.ip.reputation.js +323 -0
- package/dist_ts/db/documents/classes.cert-backoff.doc.d.ts +11 -0
- package/dist_ts/db/documents/classes.cert-backoff.doc.js +97 -0
- package/dist_ts/db/documents/classes.dns-provider.doc.d.ts +22 -0
- package/dist_ts/db/documents/classes.dns-provider.doc.js +134 -0
- package/dist_ts/db/documents/classes.dns-record.doc.d.ts +21 -0
- package/dist_ts/db/documents/classes.dns-record.doc.js +143 -0
- package/dist_ts/db/documents/classes.domain.doc.d.ts +22 -0
- package/dist_ts/db/documents/classes.domain.doc.js +146 -0
- package/dist_ts/db/documents/classes.email-domain.doc.d.ts +17 -0
- package/dist_ts/db/documents/classes.email-domain.doc.js +124 -0
- package/dist_ts/db/documents/classes.network-target.doc.d.ts +15 -0
- package/dist_ts/db/documents/classes.network-target.doc.js +118 -0
- package/dist_ts/db/documents/classes.proxy-cert.doc.d.ts +12 -0
- package/dist_ts/db/documents/classes.proxy-cert.doc.js +103 -0
- package/dist_ts/db/documents/classes.remote-ingress-edge.doc.d.ts +17 -0
- package/dist_ts/db/documents/classes.remote-ingress-edge.doc.js +130 -0
- package/dist_ts/db/documents/classes.route.doc.d.ts +18 -0
- package/dist_ts/db/documents/classes.route.doc.js +121 -0
- package/dist_ts/db/documents/classes.source-profile.doc.d.ts +15 -0
- package/dist_ts/db/documents/classes.source-profile.doc.js +115 -0
- package/dist_ts/db/documents/classes.target-profile.doc.d.ts +16 -0
- package/dist_ts/db/documents/classes.target-profile.doc.js +121 -0
- package/dist_ts/db/documents/classes.vlan-mappings.doc.d.ts +15 -0
- package/dist_ts/db/documents/classes.vlan-mappings.doc.js +77 -0
- package/dist_ts/db/documents/classes.vpn-client.doc.d.ts +23 -0
- package/dist_ts/db/documents/classes.vpn-client.doc.js +172 -0
- package/dist_ts/db/documents/classes.vpn-server-keys.doc.d.ts +10 -0
- package/dist_ts/db/documents/classes.vpn-server-keys.doc.js +94 -0
- package/dist_ts/db/documents/index.d.ts +20 -0
- package/dist_ts/db/documents/index.js +30 -0
- package/dist_ts/db/index.d.ts +4 -0
- package/dist_ts/db/index.js +9 -0
- package/dist_ts/dns/index.d.ts +2 -0
- package/dist_ts/dns/index.js +3 -0
- package/dist_ts/dns/manager.dns.d.ts +267 -0
- package/dist_ts/dns/manager.dns.js +906 -0
- package/dist_ts/dns/providers/cloudflare.provider.d.ts +21 -0
- package/dist_ts/dns/providers/cloudflare.provider.js +106 -0
- package/dist_ts/dns/providers/factory.d.ts +23 -0
- package/dist_ts/dns/providers/factory.js +47 -0
- package/dist_ts/dns/providers/index.d.ts +3 -0
- package/dist_ts/dns/providers/index.js +4 -0
- package/dist_ts/dns/providers/interfaces.d.ts +54 -0
- package/dist_ts/dns/providers/interfaces.js +2 -0
- package/dist_ts/email/classes.email-domain.manager.d.ts +46 -0
- package/dist_ts/email/classes.email-domain.manager.js +276 -0
- package/dist_ts/email/index.d.ts +1 -0
- package/dist_ts/email/index.js +2 -0
- package/dist_ts/errors/base.errors.d.ts +224 -0
- package/dist_ts/errors/base.errors.js +320 -0
- package/dist_ts/errors/error-handler.d.ts +98 -0
- package/dist_ts/errors/error-handler.js +282 -0
- package/dist_ts/errors/error.codes.d.ts +115 -0
- package/dist_ts/errors/error.codes.js +136 -0
- package/dist_ts/errors/index.d.ts +54 -0
- package/dist_ts/errors/index.js +136 -0
- package/dist_ts/errors/reputation.errors.d.ts +183 -0
- package/dist_ts/errors/reputation.errors.js +292 -0
- package/dist_ts/http3/http3-route-augmentation.d.ts +50 -0
- package/dist_ts/http3/http3-route-augmentation.js +98 -0
- package/dist_ts/http3/index.d.ts +1 -0
- package/dist_ts/http3/index.js +2 -0
- package/dist_ts/index.d.ts +8 -0
- package/dist_ts/index.js +29 -0
- package/dist_ts/logger.d.ts +21 -0
- package/dist_ts/logger.js +81 -0
- package/dist_ts/monitoring/classes.metricscache.d.ts +32 -0
- package/dist_ts/monitoring/classes.metricscache.js +63 -0
- package/dist_ts/monitoring/classes.metricsmanager.d.ts +235 -0
- package/dist_ts/monitoring/classes.metricsmanager.js +875 -0
- package/dist_ts/monitoring/index.d.ts +1 -0
- package/dist_ts/monitoring/index.js +2 -0
- package/dist_ts/opsserver/classes.opsserver.d.ts +47 -0
- package/dist_ts/opsserver/classes.opsserver.js +105 -0
- package/dist_ts/opsserver/handlers/acme-config.handler.d.ts +16 -0
- package/dist_ts/opsserver/handlers/acme-config.handler.js +77 -0
- package/dist_ts/opsserver/handlers/admin.handler.d.ts +40 -0
- package/dist_ts/opsserver/handlers/admin.handler.js +191 -0
- package/dist_ts/opsserver/handlers/api-token.handler.d.ts +6 -0
- package/dist_ts/opsserver/handlers/api-token.handler.js +62 -0
- package/dist_ts/opsserver/handlers/certificate.handler.d.ts +77 -0
- package/dist_ts/opsserver/handlers/certificate.handler.js +574 -0
- package/dist_ts/opsserver/handlers/config.handler.d.ts +7 -0
- package/dist_ts/opsserver/handlers/config.handler.js +200 -0
- package/dist_ts/opsserver/handlers/dns-provider.handler.d.ts +16 -0
- package/dist_ts/opsserver/handlers/dns-provider.handler.js +156 -0
- package/dist_ts/opsserver/handlers/dns-record.handler.d.ts +13 -0
- package/dist_ts/opsserver/handlers/dns-record.handler.js +98 -0
- package/dist_ts/opsserver/handlers/domain.handler.d.ts +13 -0
- package/dist_ts/opsserver/handlers/domain.handler.js +137 -0
- package/dist_ts/opsserver/handlers/email-domain.handler.d.ts +16 -0
- package/dist_ts/opsserver/handlers/email-domain.handler.js +150 -0
- package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +30 -0
- package/dist_ts/opsserver/handlers/email-ops.handler.js +227 -0
- package/dist_ts/opsserver/handlers/index.d.ts +21 -0
- package/dist_ts/opsserver/handlers/index.js +22 -0
- package/dist_ts/opsserver/handlers/logs.handler.d.ts +25 -0
- package/dist_ts/opsserver/handlers/logs.handler.js +264 -0
- package/dist_ts/opsserver/handlers/network-target.handler.d.ts +10 -0
- package/dist_ts/opsserver/handlers/network-target.handler.js +117 -0
- package/dist_ts/opsserver/handlers/radius.handler.d.ts +6 -0
- package/dist_ts/opsserver/handlers/radius.handler.js +295 -0
- package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +6 -0
- package/dist_ts/opsserver/handlers/remoteingress.handler.js +156 -0
- package/dist_ts/opsserver/handlers/route-management.handler.d.ts +14 -0
- package/dist_ts/opsserver/handlers/route-management.handler.js +98 -0
- package/dist_ts/opsserver/handlers/security.handler.d.ts +9 -0
- package/dist_ts/opsserver/handlers/security.handler.js +237 -0
- package/dist_ts/opsserver/handlers/source-profile.handler.d.ts +10 -0
- package/dist_ts/opsserver/handlers/source-profile.handler.js +119 -0
- package/dist_ts/opsserver/handlers/stats.handler.d.ts +11 -0
- package/dist_ts/opsserver/handlers/stats.handler.js +461 -0
- package/dist_ts/opsserver/handlers/target-profile.handler.d.ts +10 -0
- package/dist_ts/opsserver/handlers/target-profile.handler.js +117 -0
- package/dist_ts/opsserver/handlers/users.handler.d.ts +12 -0
- package/dist_ts/opsserver/handlers/users.handler.js +24 -0
- package/dist_ts/opsserver/handlers/vpn.handler.d.ts +6 -0
- package/dist_ts/opsserver/handlers/vpn.handler.js +262 -0
- package/dist_ts/opsserver/helpers/guards.d.ts +27 -0
- package/dist_ts/opsserver/helpers/guards.js +43 -0
- package/dist_ts/opsserver/index.d.ts +1 -0
- package/dist_ts/opsserver/index.js +2 -0
- package/dist_ts/paths.d.ts +25 -0
- package/dist_ts/paths.js +44 -0
- package/dist_ts/plugins.d.ts +81 -0
- package/dist_ts/plugins.js +115 -0
- package/dist_ts/radius/classes.accounting.manager.d.ts +223 -0
- package/dist_ts/radius/classes.accounting.manager.js +449 -0
- package/dist_ts/radius/classes.radius.server.d.ts +169 -0
- package/dist_ts/radius/classes.radius.server.js +384 -0
- package/dist_ts/radius/classes.vlan.manager.d.ts +124 -0
- package/dist_ts/radius/classes.vlan.manager.js +272 -0
- package/dist_ts/radius/index.d.ts +13 -0
- package/dist_ts/radius/index.js +14 -0
- package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +92 -0
- package/dist_ts/remoteingress/classes.remoteingress-manager.js +291 -0
- package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +59 -0
- package/dist_ts/remoteingress/classes.tunnel-manager.js +165 -0
- package/dist_ts/remoteingress/index.d.ts +2 -0
- package/dist_ts/remoteingress/index.js +3 -0
- package/dist_ts/security/classes.contentscanner.d.ts +164 -0
- package/dist_ts/security/classes.contentscanner.js +642 -0
- package/dist_ts/security/classes.ipreputationchecker.d.ts +145 -0
- package/dist_ts/security/classes.ipreputationchecker.js +458 -0
- package/dist_ts/security/classes.securitylogger.d.ts +144 -0
- package/dist_ts/security/classes.securitylogger.js +235 -0
- package/dist_ts/security/index.d.ts +3 -0
- package/dist_ts/security/index.js +4 -0
- package/dist_ts/sms/classes.smsservice.d.ts +15 -0
- package/dist_ts/sms/classes.smsservice.js +72 -0
- package/dist_ts/sms/config/sms.config.d.ts +93 -0
- package/dist_ts/sms/config/sms.config.js +2 -0
- package/dist_ts/sms/config/sms.schema.d.ts +5 -0
- package/dist_ts/sms/config/sms.schema.js +121 -0
- package/dist_ts/sms/index.d.ts +1 -0
- package/dist_ts/sms/index.js +2 -0
- package/dist_ts/vpn/classes.vpn-manager.d.ts +159 -0
- package/dist_ts/vpn/classes.vpn-manager.js +459 -0
- package/dist_ts/vpn/index.d.ts +1 -0
- package/dist_ts/vpn/index.js +2 -0
- package/dist_ts_apiclient/classes.apitoken.d.ts +41 -0
- package/dist_ts_apiclient/classes.apitoken.js +115 -0
- package/dist_ts_apiclient/classes.certificate.d.ts +57 -0
- package/dist_ts_apiclient/classes.certificate.js +69 -0
- package/dist_ts_apiclient/classes.config.d.ts +7 -0
- package/dist_ts_apiclient/classes.config.js +11 -0
- package/dist_ts_apiclient/classes.dcrouterapiclient.d.ts +41 -0
- package/dist_ts_apiclient/classes.dcrouterapiclient.js +81 -0
- package/dist_ts_apiclient/classes.email.d.ts +30 -0
- package/dist_ts_apiclient/classes.email.js +52 -0
- package/dist_ts_apiclient/classes.logs.d.ts +21 -0
- package/dist_ts_apiclient/classes.logs.js +14 -0
- package/dist_ts_apiclient/classes.radius.d.ts +59 -0
- package/dist_ts_apiclient/classes.radius.js +95 -0
- package/dist_ts_apiclient/classes.remoteingress.d.ts +54 -0
- package/dist_ts_apiclient/classes.remoteingress.js +136 -0
- package/dist_ts_apiclient/classes.route.d.ts +39 -0
- package/dist_ts_apiclient/classes.route.js +125 -0
- package/dist_ts_apiclient/classes.stats.d.ts +47 -0
- package/dist_ts_apiclient/classes.stats.js +38 -0
- package/dist_ts_apiclient/index.d.ts +10 -0
- package/dist_ts_apiclient/index.js +14 -0
- package/dist_ts_apiclient/plugins.d.ts +3 -0
- package/dist_ts_apiclient/plugins.js +5 -0
- package/dist_ts_interfaces/data/acme-config.d.ts +25 -0
- package/dist_ts_interfaces/data/acme-config.js +2 -0
- package/dist_ts_interfaces/data/auth.d.ts +8 -0
- package/dist_ts_interfaces/data/auth.js +2 -0
- package/dist_ts_interfaces/data/dns-provider.d.ts +136 -0
- package/dist_ts_interfaces/data/dns-provider.js +41 -0
- package/dist_ts_interfaces/data/dns-record.d.ts +42 -0
- package/dist_ts_interfaces/data/dns-record.js +2 -0
- package/dist_ts_interfaces/data/domain.d.ts +35 -0
- package/dist_ts_interfaces/data/domain.js +2 -0
- package/dist_ts_interfaces/data/email-domain.d.ts +70 -0
- package/dist_ts_interfaces/data/email-domain.js +2 -0
- package/dist_ts_interfaces/data/index.d.ts +11 -0
- package/dist_ts_interfaces/data/index.js +12 -0
- package/dist_ts_interfaces/data/remoteingress.d.ts +60 -0
- package/dist_ts_interfaces/data/remoteingress.js +2 -0
- package/dist_ts_interfaces/data/route-management.d.ts +110 -0
- package/dist_ts_interfaces/data/route-management.js +2 -0
- package/dist_ts_interfaces/data/stats.d.ts +239 -0
- package/dist_ts_interfaces/data/stats.js +2 -0
- package/dist_ts_interfaces/data/target-profile.d.ts +28 -0
- package/dist_ts_interfaces/data/target-profile.js +2 -0
- package/dist_ts_interfaces/data/vpn.d.ts +61 -0
- package/dist_ts_interfaces/data/vpn.js +2 -0
- package/dist_ts_interfaces/index.d.ts +5 -0
- package/dist_ts_interfaces/index.js +8 -0
- package/dist_ts_interfaces/plugins.d.ts +2 -0
- package/dist_ts_interfaces/plugins.js +4 -0
- package/dist_ts_interfaces/requests/acme-config.d.ts +42 -0
- package/dist_ts_interfaces/requests/acme-config.js +2 -0
- package/dist_ts_interfaces/requests/admin.d.ts +31 -0
- package/dist_ts_interfaces/requests/admin.js +3 -0
- package/dist_ts_interfaces/requests/api-tokens.d.ts +79 -0
- package/dist_ts_interfaces/requests/api-tokens.js +2 -0
- package/dist_ts_interfaces/requests/certificate.d.ts +111 -0
- package/dist_ts_interfaces/requests/certificate.js +3 -0
- package/dist_ts_interfaces/requests/combined.stats.d.ts +28 -0
- package/dist_ts_interfaces/requests/combined.stats.js +2 -0
- package/dist_ts_interfaces/requests/config.d.ts +90 -0
- package/dist_ts_interfaces/requests/config.js +3 -0
- package/dist_ts_interfaces/requests/dns-providers.d.ts +117 -0
- package/dist_ts_interfaces/requests/dns-providers.js +2 -0
- package/dist_ts_interfaces/requests/dns-records.d.ts +89 -0
- package/dist_ts_interfaces/requests/dns-records.js +2 -0
- package/dist_ts_interfaces/requests/domains.d.ts +142 -0
- package/dist_ts_interfaces/requests/domains.js +2 -0
- package/dist_ts_interfaces/requests/email-domains.d.ts +142 -0
- package/dist_ts_interfaces/requests/email-domains.js +2 -0
- package/dist_ts_interfaces/requests/email-ops.d.ts +82 -0
- package/dist_ts_interfaces/requests/email-ops.js +3 -0
- package/dist_ts_interfaces/requests/index.d.ts +21 -0
- package/dist_ts_interfaces/requests/index.js +22 -0
- package/dist_ts_interfaces/requests/logs.d.ts +41 -0
- package/dist_ts_interfaces/requests/logs.js +4 -0
- package/dist_ts_interfaces/requests/network-targets.d.ts +102 -0
- package/dist_ts_interfaces/requests/network-targets.js +2 -0
- package/dist_ts_interfaces/requests/radius.d.ts +268 -0
- package/dist_ts_interfaces/requests/radius.js +3 -0
- package/dist_ts_interfaces/requests/remoteingress.d.ts +108 -0
- package/dist_ts_interfaces/requests/remoteingress.js +3 -0
- package/dist_ts_interfaces/requests/route-management.d.ts +85 -0
- package/dist_ts_interfaces/requests/route-management.js +2 -0
- package/dist_ts_interfaces/requests/source-profiles.d.ts +102 -0
- package/dist_ts_interfaces/requests/source-profiles.js +2 -0
- package/dist_ts_interfaces/requests/stats.d.ts +177 -0
- package/dist_ts_interfaces/requests/stats.js +4 -0
- package/dist_ts_interfaces/requests/target-profiles.d.ts +103 -0
- package/dist_ts_interfaces/requests/target-profiles.js +2 -0
- package/dist_ts_interfaces/requests/users.d.ts +19 -0
- package/dist_ts_interfaces/requests/users.js +3 -0
- package/dist_ts_interfaces/requests/vpn.d.ts +177 -0
- package/dist_ts_interfaces/requests/vpn.js +3 -0
- package/dist_ts_migrations/index.d.ts +28 -0
- package/dist_ts_migrations/index.js +82 -0
- package/dist_ts_oci_container/index.d.ts +8 -0
- package/dist_ts_oci_container/index.js +110 -0
- package/dist_ts_oci_container/plugins.d.ts +3 -0
- package/dist_ts_oci_container/plugins.js +4 -0
- package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
- package/dist_ts_web/00_commitinfo_data.js +9 -0
- package/dist_ts_web/appstate.d.ts +478 -0
- package/dist_ts_web/appstate.js +1968 -0
- package/dist_ts_web/elements/access/index.d.ts +2 -0
- package/dist_ts_web/elements/access/index.js +3 -0
- package/dist_ts_web/elements/access/ops-view-apitokens.d.ts +13 -0
- package/dist_ts_web/elements/access/ops-view-apitokens.js +372 -0
- package/dist_ts_web/elements/access/ops-view-users.d.ts +11 -0
- package/dist_ts_web/elements/access/ops-view-users.js +190 -0
- package/dist_ts_web/elements/domains/dns-provider-form.d.ts +60 -0
- package/dist_ts_web/elements/domains/dns-provider-form.js +259 -0
- package/dist_ts_web/elements/domains/index.d.ts +5 -0
- package/dist_ts_web/elements/domains/index.js +6 -0
- package/dist_ts_web/elements/domains/ops-view-certificates.d.ts +25 -0
- package/dist_ts_web/elements/domains/ops-view-certificates.js +669 -0
- package/dist_ts_web/elements/domains/ops-view-dns.d.ts +17 -0
- package/dist_ts_web/elements/domains/ops-view-dns.js +305 -0
- package/dist_ts_web/elements/domains/ops-view-domains.d.ts +19 -0
- package/dist_ts_web/elements/domains/ops-view-domains.js +456 -0
- package/dist_ts_web/elements/domains/ops-view-providers.d.ts +21 -0
- package/dist_ts_web/elements/domains/ops-view-providers.js +330 -0
- package/dist_ts_web/elements/email/index.d.ts +3 -0
- package/dist_ts_web/elements/email/index.js +4 -0
- package/dist_ts_web/elements/email/ops-view-email-domains.d.ts +19 -0
- package/dist_ts_web/elements/email/ops-view-email-domains.js +410 -0
- package/dist_ts_web/elements/email/ops-view-email-security.d.ts +14 -0
- package/dist_ts_web/elements/email/ops-view-email-security.js +178 -0
- package/dist_ts_web/elements/email/ops-view-emails.d.ts +21 -0
- package/dist_ts_web/elements/email/ops-view-emails.js +165 -0
- package/dist_ts_web/elements/index.d.ts +9 -0
- package/dist_ts_web/elements/index.js +10 -0
- package/dist_ts_web/elements/network/index.d.ts +7 -0
- package/dist_ts_web/elements/network/index.js +8 -0
- package/dist_ts_web/elements/network/ops-view-network-activity.d.ts +60 -0
- package/dist_ts_web/elements/network/ops-view-network-activity.js +754 -0
- package/dist_ts_web/elements/network/ops-view-networktargets.d.ts +17 -0
- package/dist_ts_web/elements/network/ops-view-networktargets.js +255 -0
- package/dist_ts_web/elements/network/ops-view-remoteingress.d.ts +20 -0
- package/dist_ts_web/elements/network/ops-view-remoteingress.js +497 -0
- package/dist_ts_web/elements/network/ops-view-routes.d.ts +17 -0
- package/dist_ts_web/elements/network/ops-view-routes.js +693 -0
- package/dist_ts_web/elements/network/ops-view-sourceprofiles.d.ts +17 -0
- package/dist_ts_web/elements/network/ops-view-sourceprofiles.js +278 -0
- package/dist_ts_web/elements/network/ops-view-targetprofiles.d.ts +21 -0
- package/dist_ts_web/elements/network/ops-view-targetprofiles.js +420 -0
- package/dist_ts_web/elements/network/ops-view-vpn.d.ts +31 -0
- package/dist_ts_web/elements/network/ops-view-vpn.js +873 -0
- package/dist_ts_web/elements/ops-dashboard.d.ts +31 -0
- package/dist_ts_web/elements/ops-dashboard.js +405 -0
- package/dist_ts_web/elements/ops-view-logs.d.ts +13 -0
- package/dist_ts_web/elements/ops-view-logs.js +159 -0
- package/dist_ts_web/elements/overview/index.d.ts +2 -0
- package/dist_ts_web/elements/overview/index.js +3 -0
- package/dist_ts_web/elements/overview/ops-view-config.d.ts +19 -0
- package/dist_ts_web/elements/overview/ops-view-config.js +339 -0
- package/dist_ts_web/elements/overview/ops-view-overview.d.ts +24 -0
- package/dist_ts_web/elements/overview/ops-view-overview.js +545 -0
- package/dist_ts_web/elements/security/index.d.ts +3 -0
- package/dist_ts_web/elements/security/index.js +4 -0
- package/dist_ts_web/elements/security/ops-view-security-authentication.d.ts +13 -0
- package/dist_ts_web/elements/security/ops-view-security-authentication.js +157 -0
- package/dist_ts_web/elements/security/ops-view-security-blocked.d.ts +15 -0
- package/dist_ts_web/elements/security/ops-view-security-blocked.js +153 -0
- package/dist_ts_web/elements/security/ops-view-security-overview.d.ts +16 -0
- package/dist_ts_web/elements/security/ops-view-security-overview.js +205 -0
- package/dist_ts_web/elements/shared/css.d.ts +1 -0
- package/dist_ts_web/elements/shared/css.js +10 -0
- package/dist_ts_web/elements/shared/index.d.ts +1 -0
- package/dist_ts_web/elements/shared/index.js +2 -0
- package/dist_ts_web/index.d.ts +1 -0
- package/dist_ts_web/index.js +10 -0
- package/dist_ts_web/plugins.d.ts +7 -0
- package/dist_ts_web/plugins.js +13 -0
- package/dist_ts_web/router.d.ts +21 -0
- package/dist_ts_web/router.js +151 -0
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/monitoring/classes.metricsmanager.ts +0 -25
- package/ts_web/00_commitinfo_data.ts +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DcRouterDb } from './classes.dcrouter-db.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the cache cleaner
|
|
4
|
+
*/
|
|
5
|
+
export interface ICacheCleanerOptions {
|
|
6
|
+
/** Cleanup interval in milliseconds (default: 1 hour) */
|
|
7
|
+
intervalMs?: number;
|
|
8
|
+
/** Enable verbose logging */
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* CacheCleaner - Periodically removes expired documents from the cache
|
|
13
|
+
*
|
|
14
|
+
* Runs on a configurable interval (default: hourly) and queries each
|
|
15
|
+
* collection for documents where expiresAt < now(), then deletes them.
|
|
16
|
+
*/
|
|
17
|
+
export declare class CacheCleaner {
|
|
18
|
+
private cleanupInterval;
|
|
19
|
+
private isRunning;
|
|
20
|
+
private options;
|
|
21
|
+
private dcRouterDb;
|
|
22
|
+
constructor(dcRouterDb: DcRouterDb, options?: ICacheCleanerOptions);
|
|
23
|
+
/**
|
|
24
|
+
* Start the periodic cleanup process
|
|
25
|
+
*/
|
|
26
|
+
start(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Stop the periodic cleanup process
|
|
29
|
+
*/
|
|
30
|
+
stop(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Run a single cleanup cycle
|
|
33
|
+
*/
|
|
34
|
+
runCleanup(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Clean expired documents from a specific collection using smartdata API
|
|
37
|
+
*/
|
|
38
|
+
private cleanExpiredDocuments;
|
|
39
|
+
/**
|
|
40
|
+
* Check if the cleaner is running
|
|
41
|
+
*/
|
|
42
|
+
isActive(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get the cleanup interval in milliseconds
|
|
45
|
+
*/
|
|
46
|
+
getIntervalMs(): number;
|
|
47
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import { logger } from '../logger.js';
|
|
3
|
+
import { DcRouterDb } from './classes.dcrouter-db.js';
|
|
4
|
+
// Import document classes for cleanup
|
|
5
|
+
import { CachedEmail } from './documents/classes.cached.email.js';
|
|
6
|
+
import { CachedIPReputation } from './documents/classes.cached.ip.reputation.js';
|
|
7
|
+
/**
|
|
8
|
+
* CacheCleaner - Periodically removes expired documents from the cache
|
|
9
|
+
*
|
|
10
|
+
* Runs on a configurable interval (default: hourly) and queries each
|
|
11
|
+
* collection for documents where expiresAt < now(), then deletes them.
|
|
12
|
+
*/
|
|
13
|
+
export class CacheCleaner {
|
|
14
|
+
cleanupInterval = null;
|
|
15
|
+
isRunning = false;
|
|
16
|
+
options;
|
|
17
|
+
dcRouterDb;
|
|
18
|
+
constructor(dcRouterDb, options = {}) {
|
|
19
|
+
this.dcRouterDb = dcRouterDb;
|
|
20
|
+
this.options = {
|
|
21
|
+
intervalMs: options.intervalMs || 60 * 60 * 1000, // 1 hour default
|
|
22
|
+
verbose: options.verbose || false,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Start the periodic cleanup process
|
|
27
|
+
*/
|
|
28
|
+
start() {
|
|
29
|
+
if (this.isRunning) {
|
|
30
|
+
logger.log('warn', 'CacheCleaner already running');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.isRunning = true;
|
|
34
|
+
// Run cleanup immediately on start
|
|
35
|
+
this.runCleanup().catch((error) => {
|
|
36
|
+
logger.log('error', `Initial cache cleanup failed: ${error.message}`);
|
|
37
|
+
});
|
|
38
|
+
// Schedule periodic cleanup
|
|
39
|
+
this.cleanupInterval = setInterval(() => {
|
|
40
|
+
this.runCleanup().catch((error) => {
|
|
41
|
+
logger.log('error', `Cache cleanup failed: ${error.message}`);
|
|
42
|
+
});
|
|
43
|
+
}, this.options.intervalMs);
|
|
44
|
+
logger.log('info', `CacheCleaner started with interval: ${this.options.intervalMs / 1000 / 60} minutes`);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Stop the periodic cleanup process
|
|
48
|
+
*/
|
|
49
|
+
stop() {
|
|
50
|
+
if (!this.isRunning) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (this.cleanupInterval) {
|
|
54
|
+
clearInterval(this.cleanupInterval);
|
|
55
|
+
this.cleanupInterval = null;
|
|
56
|
+
}
|
|
57
|
+
this.isRunning = false;
|
|
58
|
+
logger.log('info', 'CacheCleaner stopped');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Run a single cleanup cycle
|
|
62
|
+
*/
|
|
63
|
+
async runCleanup() {
|
|
64
|
+
if (!this.dcRouterDb.isReady()) {
|
|
65
|
+
logger.log('warn', 'DcRouterDb not ready, skipping cleanup');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const now = new Date();
|
|
69
|
+
const results = [];
|
|
70
|
+
try {
|
|
71
|
+
const emailsDeleted = await this.cleanExpiredDocuments(CachedEmail, now);
|
|
72
|
+
results.push({ collection: 'CachedEmail', deleted: emailsDeleted });
|
|
73
|
+
const ipReputationDeleted = await this.cleanExpiredDocuments(CachedIPReputation, now);
|
|
74
|
+
results.push({ collection: 'CachedIPReputation', deleted: ipReputationDeleted });
|
|
75
|
+
// Log results
|
|
76
|
+
const totalDeleted = results.reduce((sum, r) => sum + r.deleted, 0);
|
|
77
|
+
if (totalDeleted > 0 || this.options.verbose) {
|
|
78
|
+
const summary = results
|
|
79
|
+
.filter((r) => r.deleted > 0)
|
|
80
|
+
.map((r) => `${r.collection}: ${r.deleted}`)
|
|
81
|
+
.join(', ');
|
|
82
|
+
logger.log('info', `Cache cleanup completed. Deleted ${totalDeleted} expired documents. ${summary || 'No deletions.'}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
logger.log('error', `Cache cleanup error: ${error.message}`);
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Clean expired documents from a specific collection using smartdata API
|
|
92
|
+
*/
|
|
93
|
+
async cleanExpiredDocuments(documentClass, now) {
|
|
94
|
+
try {
|
|
95
|
+
// Find all expired documents
|
|
96
|
+
const expiredDocs = await documentClass.getInstances({
|
|
97
|
+
expiresAt: { $lt: now },
|
|
98
|
+
});
|
|
99
|
+
// Delete each expired document
|
|
100
|
+
let deletedCount = 0;
|
|
101
|
+
for (const doc of expiredDocs) {
|
|
102
|
+
try {
|
|
103
|
+
await doc.delete();
|
|
104
|
+
deletedCount++;
|
|
105
|
+
}
|
|
106
|
+
catch (deleteError) {
|
|
107
|
+
logger.log('warn', `Failed to delete expired document: ${deleteError.message}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return deletedCount;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
logger.log('error', `Error cleaning collection: ${error.message}`);
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Check if the cleaner is running
|
|
119
|
+
*/
|
|
120
|
+
isActive() {
|
|
121
|
+
return this.isRunning;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get the cleanup interval in milliseconds
|
|
125
|
+
*/
|
|
126
|
+
getIntervalMs() {
|
|
127
|
+
return this.options.intervalMs;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZS5jbGVhbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZGIvY2xhc3Nlcy5jYWNoZS5jbGVhbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFZakY7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNmLGVBQWUsR0FBMEMsSUFBSSxDQUFDO0lBQzlELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsT0FBTyxDQUFpQztJQUN4QyxVQUFVLENBQWE7SUFFL0IsWUFBWSxVQUFzQixFQUFFLFVBQWdDLEVBQUU7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLGlCQUFpQjtZQUNuRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLG1DQUFtQztRQUNuQyxJQUFJLENB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
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for all cached documents with TTL support
|
|
4
|
+
*
|
|
5
|
+
* Extends smartdata's SmartDataDbDoc to add:
|
|
6
|
+
* - Automatic timestamps (createdAt, lastAccessedAt)
|
|
7
|
+
* - TTL/expiration support (expiresAt)
|
|
8
|
+
* - Helper methods for TTL management
|
|
9
|
+
*
|
|
10
|
+
* NOTE: Subclasses MUST add @svDb() decorators to createdAt, expiresAt, and lastAccessedAt
|
|
11
|
+
* since decorators on abstract classes don't propagate correctly.
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class CachedDocument<T extends CachedDocument<T>> extends plugins.smartdata.SmartDataDbDoc<T, T> {
|
|
14
|
+
/**
|
|
15
|
+
* Timestamp when the document was created
|
|
16
|
+
* NOTE: Subclasses must add @svDb() decorator
|
|
17
|
+
*/
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
/**
|
|
20
|
+
* Timestamp when the document expires and should be cleaned up
|
|
21
|
+
* NOTE: Subclasses must add @svDb() decorator
|
|
22
|
+
*/
|
|
23
|
+
expiresAt: Date;
|
|
24
|
+
/**
|
|
25
|
+
* Timestamp of last access (for LRU-style eviction if needed)
|
|
26
|
+
* NOTE: Subclasses must add @svDb() decorator
|
|
27
|
+
*/
|
|
28
|
+
lastAccessedAt: Date;
|
|
29
|
+
/**
|
|
30
|
+
* Set the TTL (time to live) for this document
|
|
31
|
+
* @param ttlMs Time to live in milliseconds
|
|
32
|
+
*/
|
|
33
|
+
setTTL(ttlMs: number): void;
|
|
34
|
+
/**
|
|
35
|
+
* Set TTL using days
|
|
36
|
+
* @param days Number of days until expiration
|
|
37
|
+
*/
|
|
38
|
+
setTTLDays(days: number): void;
|
|
39
|
+
/**
|
|
40
|
+
* Set TTL using hours
|
|
41
|
+
* @param hours Number of hours until expiration
|
|
42
|
+
*/
|
|
43
|
+
setTTLHours(hours: number): void;
|
|
44
|
+
/**
|
|
45
|
+
* Check if this document has expired
|
|
46
|
+
*/
|
|
47
|
+
isExpired(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Update the lastAccessedAt timestamp
|
|
50
|
+
*/
|
|
51
|
+
touch(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Get remaining TTL in milliseconds
|
|
54
|
+
* Returns 0 if expired, -1 if no expiration set
|
|
55
|
+
*/
|
|
56
|
+
getRemainingTTL(): number;
|
|
57
|
+
/**
|
|
58
|
+
* Extend the TTL by the specified milliseconds from now
|
|
59
|
+
* @param ttlMs Additional time to live in milliseconds
|
|
60
|
+
*/
|
|
61
|
+
extendTTL(ttlMs: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* Set the document to never expire (100 years in the future)
|
|
64
|
+
*/
|
|
65
|
+
setNeverExpires(): void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* TTL constants in milliseconds
|
|
69
|
+
*/
|
|
70
|
+
export declare const TTL: {
|
|
71
|
+
readonly HOURS_1: number;
|
|
72
|
+
readonly HOURS_24: number;
|
|
73
|
+
readonly DAYS_7: number;
|
|
74
|
+
readonly DAYS_30: number;
|
|
75
|
+
readonly DAYS_90: number;
|
|
76
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for all cached documents with TTL support
|
|
4
|
+
*
|
|
5
|
+
* Extends smartdata's SmartDataDbDoc to add:
|
|
6
|
+
* - Automatic timestamps (createdAt, lastAccessedAt)
|
|
7
|
+
* - TTL/expiration support (expiresAt)
|
|
8
|
+
* - Helper methods for TTL management
|
|
9
|
+
*
|
|
10
|
+
* NOTE: Subclasses MUST add @svDb() decorators to createdAt, expiresAt, and lastAccessedAt
|
|
11
|
+
* since decorators on abstract classes don't propagate correctly.
|
|
12
|
+
*/
|
|
13
|
+
export class CachedDocument extends plugins.smartdata.SmartDataDbDoc {
|
|
14
|
+
/**
|
|
15
|
+
* Timestamp when the document was created
|
|
16
|
+
* NOTE: Subclasses must add @svDb() decorator
|
|
17
|
+
*/
|
|
18
|
+
createdAt = new Date();
|
|
19
|
+
/**
|
|
20
|
+
* Timestamp when the document expires and should be cleaned up
|
|
21
|
+
* NOTE: Subclasses must add @svDb() decorator
|
|
22
|
+
*/
|
|
23
|
+
expiresAt;
|
|
24
|
+
/**
|
|
25
|
+
* Timestamp of last access (for LRU-style eviction if needed)
|
|
26
|
+
* NOTE: Subclasses must add @svDb() decorator
|
|
27
|
+
*/
|
|
28
|
+
lastAccessedAt = new Date();
|
|
29
|
+
/**
|
|
30
|
+
* Set the TTL (time to live) for this document
|
|
31
|
+
* @param ttlMs Time to live in milliseconds
|
|
32
|
+
*/
|
|
33
|
+
setTTL(ttlMs) {
|
|
34
|
+
this.expiresAt = new Date(Date.now() + ttlMs);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Set TTL using days
|
|
38
|
+
* @param days Number of days until expiration
|
|
39
|
+
*/
|
|
40
|
+
setTTLDays(days) {
|
|
41
|
+
this.setTTL(days * 24 * 60 * 60 * 1000);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Set TTL using hours
|
|
45
|
+
* @param hours Number of hours until expiration
|
|
46
|
+
*/
|
|
47
|
+
setTTLHours(hours) {
|
|
48
|
+
this.setTTL(hours * 60 * 60 * 1000);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if this document has expired
|
|
52
|
+
*/
|
|
53
|
+
isExpired() {
|
|
54
|
+
if (!this.expiresAt) {
|
|
55
|
+
return false; // No expiration set
|
|
56
|
+
}
|
|
57
|
+
return new Date() > this.expiresAt;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Update the lastAccessedAt timestamp
|
|
61
|
+
*/
|
|
62
|
+
touch() {
|
|
63
|
+
this.lastAccessedAt = new Date();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get remaining TTL in milliseconds
|
|
67
|
+
* Returns 0 if expired, -1 if no expiration set
|
|
68
|
+
*/
|
|
69
|
+
getRemainingTTL() {
|
|
70
|
+
if (!this.expiresAt) {
|
|
71
|
+
return -1;
|
|
72
|
+
}
|
|
73
|
+
const remaining = this.expiresAt.getTime() - Date.now();
|
|
74
|
+
return remaining > 0 ? remaining : 0;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extend the TTL by the specified milliseconds from now
|
|
78
|
+
* @param ttlMs Additional time to live in milliseconds
|
|
79
|
+
*/
|
|
80
|
+
extendTTL(ttlMs) {
|
|
81
|
+
this.expiresAt = new Date(Date.now() + ttlMs);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Set the document to never expire (100 years in the future)
|
|
85
|
+
*/
|
|
86
|
+
setNeverExpires() {
|
|
87
|
+
this.expiresAt = new Date(Date.now() + 100 * 365 * 24 * 60 * 60 * 1000);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* TTL constants in milliseconds
|
|
92
|
+
*/
|
|
93
|
+
export const TTL = {
|
|
94
|
+
HOURS_1: 1 * 60 * 60 * 1000,
|
|
95
|
+
HOURS_24: 24 * 60 * 60 * 1000,
|
|
96
|
+
DAYS_7: 7 * 24 * 60 * 60 * 1000,
|
|
97
|
+
DAYS_30: 30 * 24 * 60 * 60 * 1000,
|
|
98
|
+
DAYS_90: 90 * 24 * 60 * 60 * 1000,
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZWQuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9kYi9jbGFzc2VzLmNhY2hlZC5kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxPQUFnQixjQUE0QyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBb0I7SUFDOUc7OztPQUdHO0lBQ0ksU0FBUyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFFcEM7OztPQUdHO0lBQ0ksU0FBUyxDQUFRO0lBRXhCOzs7T0FHRztJQUNJLGNBQWMsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRXpDOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDLG9CQUFvQjtRQUNwQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZUFBZTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEQsT0FBTyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzNCLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzdCLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSTtJQUMvQixPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUk7SUFDakMsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0NBQ3pCLENBQUMifQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration options for the unified DCRouter database
|
|
4
|
+
*/
|
|
5
|
+
export interface IDcRouterDbConfig {
|
|
6
|
+
/** External MongoDB connection URL. If absent, uses embedded LocalSmartDb. */
|
|
7
|
+
mongoDbUrl?: string;
|
|
8
|
+
/** Storage path for embedded LocalSmartDb data (default: ~/.serve.zone/dcrouter/tsmdb) */
|
|
9
|
+
storagePath?: string;
|
|
10
|
+
/** Database name (default: dcrouter) */
|
|
11
|
+
dbName?: string;
|
|
12
|
+
/** Enable debug logging */
|
|
13
|
+
debug?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* DcRouterDb - Unified database layer for DCRouter
|
|
17
|
+
*
|
|
18
|
+
* Replaces both StorageManager (flat-file key-value) and CacheDb (embedded MongoDB).
|
|
19
|
+
* All data is stored as smartdata document classes in a single database.
|
|
20
|
+
*
|
|
21
|
+
* Two modes:
|
|
22
|
+
* - **Embedded** (default): Spawns a LocalSmartDb (Rust-based MongoDB-compatible engine)
|
|
23
|
+
* - **External**: Connects to a provided MongoDB URL
|
|
24
|
+
*/
|
|
25
|
+
export declare class DcRouterDb {
|
|
26
|
+
private static instance;
|
|
27
|
+
private localSmartDb;
|
|
28
|
+
private smartdataDb;
|
|
29
|
+
private options;
|
|
30
|
+
private isStarted;
|
|
31
|
+
constructor(options?: IDcRouterDbConfig);
|
|
32
|
+
/**
|
|
33
|
+
* Get or create the singleton instance
|
|
34
|
+
*/
|
|
35
|
+
static getInstance(options?: IDcRouterDbConfig): DcRouterDb;
|
|
36
|
+
/**
|
|
37
|
+
* Reset the singleton instance (useful for testing)
|
|
38
|
+
*/
|
|
39
|
+
static resetInstance(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Start the database
|
|
42
|
+
* - If mongoDbUrl is provided, connects directly to external MongoDB
|
|
43
|
+
* - Otherwise, starts an embedded LocalSmartDb instance
|
|
44
|
+
*/
|
|
45
|
+
start(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Stop the database
|
|
48
|
+
*/
|
|
49
|
+
stop(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Get the smartdata database instance for @Collection decorators
|
|
52
|
+
*/
|
|
53
|
+
getDb(): plugins.smartdata.SmartdataDb;
|
|
54
|
+
/**
|
|
55
|
+
* Check if the database is ready
|
|
56
|
+
*/
|
|
57
|
+
isReady(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Whether running in embedded mode (LocalSmartDb) vs external MongoDB
|
|
60
|
+
*/
|
|
61
|
+
isEmbedded(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get the storage path (only relevant for embedded mode)
|
|
64
|
+
*/
|
|
65
|
+
getStoragePath(): string;
|
|
66
|
+
/**
|
|
67
|
+
* Get the database name
|
|
68
|
+
*/
|
|
69
|
+
getDbName(): string;
|
|
70
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import { logger } from '../logger.js';
|
|
3
|
+
import { defaultTsmDbPath } from '../paths.js';
|
|
4
|
+
/**
|
|
5
|
+
* DcRouterDb - Unified database layer for DCRouter
|
|
6
|
+
*
|
|
7
|
+
* Replaces both StorageManager (flat-file key-value) and CacheDb (embedded MongoDB).
|
|
8
|
+
* All data is stored as smartdata document classes in a single database.
|
|
9
|
+
*
|
|
10
|
+
* Two modes:
|
|
11
|
+
* - **Embedded** (default): Spawns a LocalSmartDb (Rust-based MongoDB-compatible engine)
|
|
12
|
+
* - **External**: Connects to a provided MongoDB URL
|
|
13
|
+
*/
|
|
14
|
+
export class DcRouterDb {
|
|
15
|
+
static instance = null;
|
|
16
|
+
localSmartDb = null;
|
|
17
|
+
smartdataDb;
|
|
18
|
+
options;
|
|
19
|
+
isStarted = false;
|
|
20
|
+
constructor(options = {}) {
|
|
21
|
+
this.options = {
|
|
22
|
+
mongoDbUrl: options.mongoDbUrl || '',
|
|
23
|
+
storagePath: options.storagePath || defaultTsmDbPath,
|
|
24
|
+
dbName: options.dbName || 'dcrouter',
|
|
25
|
+
debug: options.debug || false,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get or create the singleton instance
|
|
30
|
+
*/
|
|
31
|
+
static getInstance(options) {
|
|
32
|
+
if (!DcRouterDb.instance) {
|
|
33
|
+
DcRouterDb.instance = new DcRouterDb(options);
|
|
34
|
+
}
|
|
35
|
+
return DcRouterDb.instance;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Reset the singleton instance (useful for testing)
|
|
39
|
+
*/
|
|
40
|
+
static resetInstance() {
|
|
41
|
+
DcRouterDb.instance = null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Start the database
|
|
45
|
+
* - If mongoDbUrl is provided, connects directly to external MongoDB
|
|
46
|
+
* - Otherwise, starts an embedded LocalSmartDb instance
|
|
47
|
+
*/
|
|
48
|
+
async start() {
|
|
49
|
+
if (this.isStarted) {
|
|
50
|
+
logger.log('warn', 'DcRouterDb already started');
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
let connectionUri;
|
|
55
|
+
if (this.options.mongoDbUrl) {
|
|
56
|
+
// External MongoDB mode
|
|
57
|
+
connectionUri = this.options.mongoDbUrl;
|
|
58
|
+
logger.log('info', `DcRouterDb connecting to external MongoDB`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Embedded LocalSmartDb mode
|
|
62
|
+
await plugins.fsUtils.ensureDir(this.options.storagePath);
|
|
63
|
+
this.localSmartDb = new plugins.smartdb.LocalSmartDb({
|
|
64
|
+
folderPath: this.options.storagePath,
|
|
65
|
+
});
|
|
66
|
+
const connectionInfo = await this.localSmartDb.start();
|
|
67
|
+
connectionUri = connectionInfo.connectionUri;
|
|
68
|
+
if (this.options.debug) {
|
|
69
|
+
logger.log('debug', `LocalSmartDb started with URI: ${connectionUri}`);
|
|
70
|
+
}
|
|
71
|
+
logger.log('info', `DcRouterDb started embedded instance at ${this.options.storagePath}`);
|
|
72
|
+
}
|
|
73
|
+
// Initialize smartdata ORM
|
|
74
|
+
this.smartdataDb = new plugins.smartdata.SmartdataDb({
|
|
75
|
+
mongoDbUrl: connectionUri,
|
|
76
|
+
mongoDbName: this.options.dbName,
|
|
77
|
+
});
|
|
78
|
+
await this.smartdataDb.init();
|
|
79
|
+
this.isStarted = true;
|
|
80
|
+
logger.log('info', `DcRouterDb ready (db: ${this.options.dbName})`);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
logger.log('error', `Failed to start DcRouterDb: ${error.message}`);
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Stop the database
|
|
89
|
+
*/
|
|
90
|
+
async stop() {
|
|
91
|
+
if (!this.isStarted) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
// Close smartdata connection
|
|
96
|
+
if (this.smartdataDb) {
|
|
97
|
+
await this.smartdataDb.close();
|
|
98
|
+
}
|
|
99
|
+
// Stop embedded LocalSmartDb if running
|
|
100
|
+
if (this.localSmartDb) {
|
|
101
|
+
await this.localSmartDb.stop();
|
|
102
|
+
this.localSmartDb = null;
|
|
103
|
+
}
|
|
104
|
+
this.isStarted = false;
|
|
105
|
+
logger.log('info', 'DcRouterDb stopped');
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
logger.log('error', `Error stopping DcRouterDb: ${error.message}`);
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get the smartdata database instance for @Collection decorators
|
|
114
|
+
*/
|
|
115
|
+
getDb() {
|
|
116
|
+
if (!this.isStarted) {
|
|
117
|
+
throw new Error('DcRouterDb not started. Call start() first.');
|
|
118
|
+
}
|
|
119
|
+
return this.smartdataDb;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if the database is ready
|
|
123
|
+
*/
|
|
124
|
+
isReady() {
|
|
125
|
+
return this.isStarted;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Whether running in embedded mode (LocalSmartDb) vs external MongoDB
|
|
129
|
+
*/
|
|
130
|
+
isEmbedded() {
|
|
131
|
+
return !this.options.mongoDbUrl;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get the storage path (only relevant for embedded mode)
|
|
135
|
+
*/
|
|
136
|
+
getStoragePath() {
|
|
137
|
+
return this.options.storagePath;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get the database name
|
|
141
|
+
*/
|
|
142
|
+
getDbName() {
|
|
143
|
+
return this.options.dbName;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kY3JvdXRlci1kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2RiL2NsYXNzZXMuZGNyb3V0ZXItZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFnQi9DOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBQ2IsTUFBTSxDQUFDLFFBQVEsR0FBc0IsSUFBSSxDQUFDO0lBRTFDLFlBQVksR0FBd0MsSUFBSSxDQUFDO0lBQ3pELFdBQVcsQ0FBaUM7SUFDNUMsT0FBTyxDQUE4QjtJQUNyQyxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRW5DLFlBQVksVUFBNkIsRUFBRTtRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRTtZQUNwQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxnQkFBZ0I7WUFDcEQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksVUFBVTtZQUNwQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQTJCO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxhQUFhO1FBQ3pCLFVBQVUsQ0FBQyxRQUFRLEdBQUcs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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
export declare class AccountingSessionDoc extends plugins.smartdata.SmartDataDbDoc<AccountingSessionDoc, AccountingSessionDoc> {
|
|
3
|
+
sessionId: string;
|
|
4
|
+
username: string;
|
|
5
|
+
macAddress: string;
|
|
6
|
+
nasIpAddress: string;
|
|
7
|
+
nasPort: number;
|
|
8
|
+
nasPortType: string;
|
|
9
|
+
nasIdentifier: string;
|
|
10
|
+
vlanId: number;
|
|
11
|
+
framedIpAddress: string;
|
|
12
|
+
calledStationId: string;
|
|
13
|
+
callingStationId: string;
|
|
14
|
+
startTime: number;
|
|
15
|
+
endTime: number;
|
|
16
|
+
lastUpdateTime: number;
|
|
17
|
+
status: 'active' | 'stopped' | 'terminated';
|
|
18
|
+
terminateCause: string;
|
|
19
|
+
inputOctets: number;
|
|
20
|
+
outputOctets: number;
|
|
21
|
+
inputPackets: number;
|
|
22
|
+
outputPackets: number;
|
|
23
|
+
sessionTime: number;
|
|
24
|
+
serviceType: string;
|
|
25
|
+
constructor();
|
|
26
|
+
static findBySessionId(sessionId: string): Promise<AccountingSessionDoc | null>;
|
|
27
|
+
static findActive(): Promise<AccountingSessionDoc[]>;
|
|
28
|
+
static findByUsername(username: string): Promise<AccountingSessionDoc[]>;
|
|
29
|
+
static findByNas(nasIpAddress: string): Promise<AccountingSessionDoc[]>;
|
|
30
|
+
static findByVlan(vlanId: number): Promise<AccountingSessionDoc[]>;
|
|
31
|
+
static findStoppedBefore(cutoffTime: number): Promise<AccountingSessionDoc[]>;
|
|
32
|
+
}
|