@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,15 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* ICertManager implementation backed by smartdata document classes.
|
|
4
|
+
* Persists SmartAcme certificates via AcmeCertDoc so they
|
|
5
|
+
* survive process restarts without re-hitting ACME.
|
|
6
|
+
*/
|
|
7
|
+
export declare class StorageBackedCertManager implements plugins.smartacme.ICertManager {
|
|
8
|
+
constructor();
|
|
9
|
+
init(): Promise<void>;
|
|
10
|
+
retrieveCertificate(domainName: string): Promise<plugins.smartacme.Cert | null>;
|
|
11
|
+
storeCertificate(cert: plugins.smartacme.Cert): Promise<void>;
|
|
12
|
+
deleteCertificate(domainName: string): Promise<void>;
|
|
13
|
+
close(): Promise<void>;
|
|
14
|
+
wipe(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import { AcmeCertDoc } from './db/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* ICertManager implementation backed by smartdata document classes.
|
|
5
|
+
* Persists SmartAcme certificates via AcmeCertDoc so they
|
|
6
|
+
* survive process restarts without re-hitting ACME.
|
|
7
|
+
*/
|
|
8
|
+
export class StorageBackedCertManager {
|
|
9
|
+
constructor() { }
|
|
10
|
+
async init() { }
|
|
11
|
+
async retrieveCertificate(domainName) {
|
|
12
|
+
const doc = await AcmeCertDoc.findByDomain(domainName);
|
|
13
|
+
if (!doc)
|
|
14
|
+
return null;
|
|
15
|
+
return new plugins.smartacme.Cert({
|
|
16
|
+
id: doc.id,
|
|
17
|
+
domainName: doc.domainName,
|
|
18
|
+
created: doc.created,
|
|
19
|
+
privateKey: doc.privateKey,
|
|
20
|
+
publicKey: doc.publicKey,
|
|
21
|
+
csr: doc.csr,
|
|
22
|
+
validUntil: doc.validUntil,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async storeCertificate(cert) {
|
|
26
|
+
let doc = await AcmeCertDoc.findByDomain(cert.domainName);
|
|
27
|
+
if (!doc) {
|
|
28
|
+
doc = new AcmeCertDoc();
|
|
29
|
+
doc.id = cert.id;
|
|
30
|
+
doc.domainName = cert.domainName;
|
|
31
|
+
}
|
|
32
|
+
doc.created = cert.created;
|
|
33
|
+
doc.privateKey = cert.privateKey;
|
|
34
|
+
doc.publicKey = cert.publicKey;
|
|
35
|
+
doc.csr = cert.csr;
|
|
36
|
+
doc.validUntil = cert.validUntil;
|
|
37
|
+
await doc.save();
|
|
38
|
+
}
|
|
39
|
+
async deleteCertificate(domainName) {
|
|
40
|
+
const doc = await AcmeCertDoc.findByDomain(domainName);
|
|
41
|
+
if (doc) {
|
|
42
|
+
await doc.delete();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async close() { }
|
|
46
|
+
async wipe() {
|
|
47
|
+
const docs = await AcmeCertDoc.findAll();
|
|
48
|
+
for (const doc of docs) {
|
|
49
|
+
await doc.delete();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zdG9yYWdlLWNlcnQtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2NsYXNzZXMuc3RvcmFnZS1jZXJ0LW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1Qzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBQyxJQUFJLEtBQW1CLENBQUM7SUFFOUIsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFVBQWtCO1FBQzFDLE1BQU0sR0FBRyxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNoQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDVixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVU7WUFDMUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1lBQ3BCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTtZQUMxQixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7WUFDeEIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1lBQ1osVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBNEI7UUFDakQsSUFBSSxHQUFHLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxHQUFHLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakIsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLENBQUM7UUFDRCxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQixHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBa0I7UUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLEtBQW1CLENBQUM7SUFFL0IsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { IStoredApiToken, IApiTokenInfo, TApiTokenScope } from '../../dist_ts_interfaces/data/route-management.js';
|
|
2
|
+
export declare class ApiTokenManager {
|
|
3
|
+
private tokens;
|
|
4
|
+
constructor();
|
|
5
|
+
initialize(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Create a new API token. Returns the raw token value (shown once).
|
|
8
|
+
*/
|
|
9
|
+
createToken(name: string, scopes: TApiTokenScope[], expiresInDays: number | null, createdBy: string): Promise<{
|
|
10
|
+
id: string;
|
|
11
|
+
rawToken: string;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Validate a raw token string. Returns the stored token if valid, null otherwise.
|
|
15
|
+
* Also updates lastUsedAt.
|
|
16
|
+
*/
|
|
17
|
+
validateToken(rawToken: string): Promise<IStoredApiToken | null>;
|
|
18
|
+
/**
|
|
19
|
+
* Check if a token has a specific scope.
|
|
20
|
+
*/
|
|
21
|
+
hasScope(token: IStoredApiToken, scope: TApiTokenScope): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* List all tokens (safe info only, no hashes).
|
|
24
|
+
*/
|
|
25
|
+
listTokens(): IApiTokenInfo[];
|
|
26
|
+
/**
|
|
27
|
+
* Revoke (delete) a token.
|
|
28
|
+
*/
|
|
29
|
+
revokeToken(id: string): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Roll (regenerate) a token's secret while keeping its identity.
|
|
32
|
+
* Returns the new raw token value (shown once).
|
|
33
|
+
*/
|
|
34
|
+
rollToken(id: string): Promise<{
|
|
35
|
+
id: string;
|
|
36
|
+
rawToken: string;
|
|
37
|
+
} | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Enable or disable a token.
|
|
40
|
+
*/
|
|
41
|
+
toggleToken(id: string, enabled: boolean): Promise<boolean>;
|
|
42
|
+
private loadTokens;
|
|
43
|
+
private persistToken;
|
|
44
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import { logger } from '../logger.js';
|
|
3
|
+
import { ApiTokenDoc } from '../db/index.js';
|
|
4
|
+
const TOKEN_PREFIX_STR = 'dcr_';
|
|
5
|
+
export class ApiTokenManager {
|
|
6
|
+
tokens = new Map();
|
|
7
|
+
constructor() { }
|
|
8
|
+
async initialize() {
|
|
9
|
+
await this.loadTokens();
|
|
10
|
+
if (this.tokens.size > 0) {
|
|
11
|
+
logger.log('info', `Loaded ${this.tokens.size} API token(s) from storage`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// =========================================================================
|
|
15
|
+
// Token lifecycle
|
|
16
|
+
// =========================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Create a new API token. Returns the raw token value (shown once).
|
|
19
|
+
*/
|
|
20
|
+
async createToken(name, scopes, expiresInDays, createdBy) {
|
|
21
|
+
const id = plugins.uuid.v4();
|
|
22
|
+
const randomBytes = plugins.crypto.randomBytes(32);
|
|
23
|
+
const rawPayload = `${id}:${randomBytes.toString('base64url')}`;
|
|
24
|
+
const rawToken = `${TOKEN_PREFIX_STR}${rawPayload}`;
|
|
25
|
+
const tokenHash = plugins.crypto.createHash('sha256').update(rawToken).digest('hex');
|
|
26
|
+
const now = Date.now();
|
|
27
|
+
const stored = {
|
|
28
|
+
id,
|
|
29
|
+
name,
|
|
30
|
+
tokenHash,
|
|
31
|
+
scopes,
|
|
32
|
+
createdAt: now,
|
|
33
|
+
expiresAt: expiresInDays != null ? now + expiresInDays * 86400000 : null,
|
|
34
|
+
lastUsedAt: null,
|
|
35
|
+
createdBy,
|
|
36
|
+
enabled: true,
|
|
37
|
+
};
|
|
38
|
+
this.tokens.set(id, stored);
|
|
39
|
+
await this.persistToken(stored);
|
|
40
|
+
logger.log('info', `API token '${name}' created (id: ${id})`);
|
|
41
|
+
return { id, rawToken };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validate a raw token string. Returns the stored token if valid, null otherwise.
|
|
45
|
+
* Also updates lastUsedAt.
|
|
46
|
+
*/
|
|
47
|
+
async validateToken(rawToken) {
|
|
48
|
+
if (!rawToken.startsWith(TOKEN_PREFIX_STR))
|
|
49
|
+
return null;
|
|
50
|
+
const hash = plugins.crypto.createHash('sha256').update(rawToken).digest('hex');
|
|
51
|
+
for (const stored of this.tokens.values()) {
|
|
52
|
+
if (stored.tokenHash === hash) {
|
|
53
|
+
if (!stored.enabled)
|
|
54
|
+
return null;
|
|
55
|
+
if (stored.expiresAt !== null && stored.expiresAt < Date.now())
|
|
56
|
+
return null;
|
|
57
|
+
// Update lastUsedAt (fire and forget)
|
|
58
|
+
stored.lastUsedAt = Date.now();
|
|
59
|
+
this.persistToken(stored).catch(() => { });
|
|
60
|
+
return stored;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if a token has a specific scope.
|
|
67
|
+
*/
|
|
68
|
+
hasScope(token, scope) {
|
|
69
|
+
return token.scopes.includes(scope);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* List all tokens (safe info only, no hashes).
|
|
73
|
+
*/
|
|
74
|
+
listTokens() {
|
|
75
|
+
const result = [];
|
|
76
|
+
for (const stored of this.tokens.values()) {
|
|
77
|
+
result.push({
|
|
78
|
+
id: stored.id,
|
|
79
|
+
name: stored.name,
|
|
80
|
+
scopes: stored.scopes,
|
|
81
|
+
createdAt: stored.createdAt,
|
|
82
|
+
expiresAt: stored.expiresAt,
|
|
83
|
+
lastUsedAt: stored.lastUsedAt,
|
|
84
|
+
enabled: stored.enabled,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Revoke (delete) a token.
|
|
91
|
+
*/
|
|
92
|
+
async revokeToken(id) {
|
|
93
|
+
if (!this.tokens.has(id))
|
|
94
|
+
return false;
|
|
95
|
+
const token = this.tokens.get(id);
|
|
96
|
+
this.tokens.delete(id);
|
|
97
|
+
const doc = await ApiTokenDoc.findById(id);
|
|
98
|
+
if (doc)
|
|
99
|
+
await doc.delete();
|
|
100
|
+
logger.log('info', `API token '${token.name}' revoked (id: ${id})`);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Roll (regenerate) a token's secret while keeping its identity.
|
|
105
|
+
* Returns the new raw token value (shown once).
|
|
106
|
+
*/
|
|
107
|
+
async rollToken(id) {
|
|
108
|
+
const stored = this.tokens.get(id);
|
|
109
|
+
if (!stored)
|
|
110
|
+
return null;
|
|
111
|
+
const randomBytes = plugins.crypto.randomBytes(32);
|
|
112
|
+
const rawPayload = `${id}:${randomBytes.toString('base64url')}`;
|
|
113
|
+
const rawToken = `${TOKEN_PREFIX_STR}${rawPayload}`;
|
|
114
|
+
stored.tokenHash = plugins.crypto.createHash('sha256').update(rawToken).digest('hex');
|
|
115
|
+
await this.persistToken(stored);
|
|
116
|
+
logger.log('info', `API token '${stored.name}' rolled (id: ${id})`);
|
|
117
|
+
return { id, rawToken };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Enable or disable a token.
|
|
121
|
+
*/
|
|
122
|
+
async toggleToken(id, enabled) {
|
|
123
|
+
const stored = this.tokens.get(id);
|
|
124
|
+
if (!stored)
|
|
125
|
+
return false;
|
|
126
|
+
stored.enabled = enabled;
|
|
127
|
+
await this.persistToken(stored);
|
|
128
|
+
logger.log('info', `API token '${stored.name}' ${enabled ? 'enabled' : 'disabled'} (id: ${id})`);
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
// =========================================================================
|
|
132
|
+
// Private
|
|
133
|
+
// =========================================================================
|
|
134
|
+
async loadTokens() {
|
|
135
|
+
const docs = await ApiTokenDoc.findAll();
|
|
136
|
+
for (const doc of docs) {
|
|
137
|
+
if (doc.id) {
|
|
138
|
+
this.tokens.set(doc.id, {
|
|
139
|
+
id: doc.id,
|
|
140
|
+
name: doc.name,
|
|
141
|
+
tokenHash: doc.tokenHash,
|
|
142
|
+
scopes: doc.scopes,
|
|
143
|
+
createdAt: doc.createdAt,
|
|
144
|
+
expiresAt: doc.expiresAt,
|
|
145
|
+
lastUsedAt: doc.lastUsedAt,
|
|
146
|
+
createdBy: doc.createdBy,
|
|
147
|
+
enabled: doc.enabled,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async persistToken(stored) {
|
|
153
|
+
const existing = await ApiTokenDoc.findById(stored.id);
|
|
154
|
+
if (existing) {
|
|
155
|
+
existing.name = stored.name;
|
|
156
|
+
existing.tokenHash = stored.tokenHash;
|
|
157
|
+
existing.scopes = stored.scopes;
|
|
158
|
+
existing.createdAt = stored.createdAt;
|
|
159
|
+
existing.expiresAt = stored.expiresAt;
|
|
160
|
+
existing.lastUsedAt = stored.lastUsedAt;
|
|
161
|
+
existing.createdBy = stored.createdBy;
|
|
162
|
+
existing.enabled = stored.enabled;
|
|
163
|
+
await existing.save();
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
const doc = new ApiTokenDoc();
|
|
167
|
+
doc.id = stored.id;
|
|
168
|
+
doc.name = stored.name;
|
|
169
|
+
doc.tokenHash = stored.tokenHash;
|
|
170
|
+
doc.scopes = stored.scopes;
|
|
171
|
+
doc.createdAt = stored.createdAt;
|
|
172
|
+
doc.expiresAt = stored.expiresAt;
|
|
173
|
+
doc.lastUsedAt = stored.lastUsedAt;
|
|
174
|
+
doc.createdBy = stored.createdBy;
|
|
175
|
+
doc.enabled = stored.enabled;
|
|
176
|
+
await doc.save();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hcGktdG9rZW4tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2NvbmZpZy9jbGFzc2VzLmFwaS10b2tlbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzdDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO0FBRWhDLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUVwRCxnQkFBZSxDQUFDO0lBRVQsS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDSCxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLGtCQUFrQjtJQUNsQiw0RUFBNEU7SUFFNUU7O09BRUc7SUFDSSxLQUFLLENBQUMsV0FBVyxDQUN0QixJQUFZLEVBQ1osTUFBd0IsRUFDeEIsYUFBNEIsRUFDNUIsU0FBaUI7UUFFakIsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUUsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxF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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ReferenceResolver } from './classes.reference-resolver.js';
|
|
2
|
+
import type { IRouteSecurity } from '../../dist_ts_interfaces/data/route-management.js';
|
|
3
|
+
export interface ISeedData {
|
|
4
|
+
profiles?: Array<{
|
|
5
|
+
name: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
security: IRouteSecurity;
|
|
8
|
+
extendsProfiles?: string[];
|
|
9
|
+
}>;
|
|
10
|
+
targets?: Array<{
|
|
11
|
+
name: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
host: string | string[];
|
|
14
|
+
port: number;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export declare class DbSeeder {
|
|
18
|
+
private referenceResolver;
|
|
19
|
+
constructor(referenceResolver: ReferenceResolver);
|
|
20
|
+
/**
|
|
21
|
+
* Check if DB is empty and seed if configured.
|
|
22
|
+
* Called once during ConfigManagers service startup, after initialize().
|
|
23
|
+
*/
|
|
24
|
+
seedIfEmpty(seedOnEmpty?: boolean, seedData?: ISeedData): Promise<void>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { logger } from '../logger.js';
|
|
2
|
+
export class DbSeeder {
|
|
3
|
+
referenceResolver;
|
|
4
|
+
constructor(referenceResolver) {
|
|
5
|
+
this.referenceResolver = referenceResolver;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Check if DB is empty and seed if configured.
|
|
9
|
+
* Called once during ConfigManagers service startup, after initialize().
|
|
10
|
+
*/
|
|
11
|
+
async seedIfEmpty(seedOnEmpty, seedData) {
|
|
12
|
+
if (!seedOnEmpty)
|
|
13
|
+
return;
|
|
14
|
+
const existingProfiles = this.referenceResolver.listProfiles();
|
|
15
|
+
const existingTargets = this.referenceResolver.listTargets();
|
|
16
|
+
if (existingProfiles.length > 0 || existingTargets.length > 0) {
|
|
17
|
+
logger.log('info', 'DB already contains profiles/targets, skipping seed');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
logger.log('info', 'Seeding database with initial profiles and targets...');
|
|
21
|
+
const profilesToSeed = seedData?.profiles ?? DEFAULT_PROFILES;
|
|
22
|
+
const targetsToSeed = seedData?.targets ?? DEFAULT_TARGETS;
|
|
23
|
+
for (const p of profilesToSeed) {
|
|
24
|
+
await this.referenceResolver.createProfile({
|
|
25
|
+
name: p.name,
|
|
26
|
+
description: p.description,
|
|
27
|
+
security: p.security,
|
|
28
|
+
extendsProfiles: p.extendsProfiles,
|
|
29
|
+
createdBy: 'system-seed',
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
for (const t of targetsToSeed) {
|
|
33
|
+
await this.referenceResolver.createTarget({
|
|
34
|
+
name: t.name,
|
|
35
|
+
description: t.description,
|
|
36
|
+
host: t.host,
|
|
37
|
+
port: t.port,
|
|
38
|
+
createdBy: 'system-seed',
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
logger.log('info', `Seeded ${profilesToSeed.length} profile(s) and ${targetsToSeed.length} target(s)`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const DEFAULT_PROFILES = [
|
|
45
|
+
{
|
|
46
|
+
name: 'PUBLIC',
|
|
47
|
+
description: 'Allow all traffic — no IP restrictions',
|
|
48
|
+
security: {
|
|
49
|
+
ipAllowList: ['*'],
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'STANDARD',
|
|
54
|
+
description: 'Standard internal access with common private subnets',
|
|
55
|
+
security: {
|
|
56
|
+
ipAllowList: ['192.168.0.0/16', '10.0.0.0/8', '127.0.0.1', '::1'],
|
|
57
|
+
maxConnections: 1000,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
const DEFAULT_TARGETS = [
|
|
62
|
+
{
|
|
63
|
+
name: 'LOCALHOST',
|
|
64
|
+
description: 'Local machine on port 443',
|
|
65
|
+
host: '127.0.0.1',
|
|
66
|
+
port: 443,
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kYi1zZWVkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jb25maWcvY2xhc3Nlcy5kYi1zZWVkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQW1CdEMsTUFBTSxPQUFPLFFBQVE7SUFDQztJQUFwQixZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFNUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FDdEIsV0FBcUIsRUFDckIsUUFBb0I7UUFFcEIsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBRXpCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9ELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU3RCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5RCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxxREFBcUQsQ0FBQyxDQUFDO1lBQzFFLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsdURBQXVELENBQUMsQ0FBQztRQUU1RSxNQUFNLGNBQWMsR0FBdUMsUUFBUSxFQUFFLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQztRQUNsRyxNQUFNLGFBQWEsR0FBc0MsUUFBUSxFQUFFLE9BQU8sSUFBSSxlQUFlLENBQUM7UUFFOUYsS0FBSyxNQUFNLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7Z0JBQzFCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtnQkFDcEIsZUFBZSxFQUFFLENBQUMsQ0FBQyxlQUFlO2dCQUNsQyxTQUFTLEVBQUUsYUFBYTthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsS0FBSyxNQUFNLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7Z0JBQ3hDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7Z0JBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osU0FBUyxFQUFFLGFBQWE7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsY0FBYyxDQUFDLE1BQU0sbUJBQW1CLGFBQWEsQ0FBQyxNQUFNLFlBQVksQ0FBQyxDQUFDO0lBQ3pHLENBQUM7Q0FDRjtBQUVELE1BQU0sZ0JBQWdCLEdBQXNEO0lBQzFFO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsd0NBQXdDO1FBQ3JELFFBQVEsRUFBRTtZQUNSLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNuQjtLQUNGO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLFFBQVEsRUFBRTtZQUNSLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDO1lBQ2pFLGNBQWMsRUFBRSxJQUFJO1NBQ3JCO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQXFEO0lBQ3hFO1FBQ0UsSUFBSSxFQUFFLFdBQVc7UUFDakIsV0FBVyxFQUFFLDJCQUEyQjtRQUN4QyxJQUFJLEVBQUUsV0FBVztRQUNqQixJQUFJLEVBQUUsR0FBRztLQUNWO0NBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import type { ISourceProfile, INetworkTarget, IRouteMetadata, IRoute, IRouteSecurity } from '../../dist_ts_interfaces/data/route-management.js';
|
|
3
|
+
export declare class ReferenceResolver {
|
|
4
|
+
private profiles;
|
|
5
|
+
private targets;
|
|
6
|
+
initialize(): Promise<void>;
|
|
7
|
+
createProfile(data: {
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
security: IRouteSecurity;
|
|
11
|
+
extendsProfiles?: string[];
|
|
12
|
+
createdBy: string;
|
|
13
|
+
}): Promise<string>;
|
|
14
|
+
updateProfile(id: string, patch: Partial<Omit<ISourceProfile, 'id' | 'createdAt' | 'createdBy'>>): Promise<{
|
|
15
|
+
affectedRouteIds: string[];
|
|
16
|
+
}>;
|
|
17
|
+
deleteProfile(id: string, force: boolean, storedRoutes?: Map<string, IRoute>): Promise<{
|
|
18
|
+
success: boolean;
|
|
19
|
+
message?: string;
|
|
20
|
+
}>;
|
|
21
|
+
getProfile(id: string): ISourceProfile | undefined;
|
|
22
|
+
getProfileByName(name: string): ISourceProfile | undefined;
|
|
23
|
+
listProfiles(): ISourceProfile[];
|
|
24
|
+
getProfileUsage(storedRoutes: Map<string, IRoute>): Map<string, Array<{
|
|
25
|
+
id: string;
|
|
26
|
+
routeName: string;
|
|
27
|
+
}>>;
|
|
28
|
+
getProfileUsageForId(profileId: string, storedRoutes: Map<string, IRoute>): Array<{
|
|
29
|
+
id: string;
|
|
30
|
+
routeName: string;
|
|
31
|
+
}>;
|
|
32
|
+
createTarget(data: {
|
|
33
|
+
name: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
host: string | string[];
|
|
36
|
+
port: number;
|
|
37
|
+
createdBy: string;
|
|
38
|
+
}): Promise<string>;
|
|
39
|
+
updateTarget(id: string, patch: Partial<Omit<INetworkTarget, 'id' | 'createdAt' | 'createdBy'>>): Promise<{
|
|
40
|
+
affectedRouteIds: string[];
|
|
41
|
+
}>;
|
|
42
|
+
deleteTarget(id: string, force: boolean, storedRoutes?: Map<string, IRoute>): Promise<{
|
|
43
|
+
success: boolean;
|
|
44
|
+
message?: string;
|
|
45
|
+
}>;
|
|
46
|
+
getTarget(id: string): INetworkTarget | undefined;
|
|
47
|
+
getTargetByName(name: string): INetworkTarget | undefined;
|
|
48
|
+
listTargets(): INetworkTarget[];
|
|
49
|
+
getTargetUsageForId(targetId: string, storedRoutes: Map<string, IRoute>): Array<{
|
|
50
|
+
id: string;
|
|
51
|
+
routeName: string;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Resolve references for a single route.
|
|
55
|
+
* Materializes source profile and/or network target into the route's fields.
|
|
56
|
+
* Returns the resolved route and updated metadata.
|
|
57
|
+
*/
|
|
58
|
+
resolveRoute(route: plugins.smartproxy.IRouteConfig, metadata?: IRouteMetadata): {
|
|
59
|
+
route: plugins.smartproxy.IRouteConfig;
|
|
60
|
+
metadata: IRouteMetadata;
|
|
61
|
+
};
|
|
62
|
+
findRoutesByProfileRef(profileId: string): Promise<string[]>;
|
|
63
|
+
findRoutesByTargetRef(targetId: string): Promise<string[]>;
|
|
64
|
+
findRoutesByProfileRefSync(profileId: string, storedRoutes: Map<string, IRoute>): string[];
|
|
65
|
+
findRoutesByTargetRefSync(targetId: string, storedRoutes: Map<string, IRoute>): string[];
|
|
66
|
+
private resolveSourceProfile;
|
|
67
|
+
/**
|
|
68
|
+
* Merge two IRouteSecurity objects.
|
|
69
|
+
* `override` values take precedence over `base` values.
|
|
70
|
+
* For ipAllowList/ipBlockList: union arrays and deduplicate.
|
|
71
|
+
* For scalar/object fields: override wins if present.
|
|
72
|
+
*/
|
|
73
|
+
private mergeSecurityFields;
|
|
74
|
+
private loadProfiles;
|
|
75
|
+
private loadTargets;
|
|
76
|
+
private persistProfile;
|
|
77
|
+
private persistTarget;
|
|
78
|
+
private clearProfileRefsOnRoutes;
|
|
79
|
+
private clearTargetRefsOnRoutes;
|
|
80
|
+
}
|