@serve.zone/dcrouter 13.16.0 → 13.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_serve/bundle.js +729 -721
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/monitoring/classes.metricsmanager.ts +43 -34
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/network/ops-view-network-activity.ts +2 -1
- package/ts_web/elements/network/ops-view-routes.ts +24 -8
- package/dist_ts/00_commitinfo_data.d.ts +0 -8
- package/dist_ts/00_commitinfo_data.js +0 -9
- package/dist_ts/acme/index.d.ts +0 -1
- package/dist_ts/acme/index.js +0 -2
- package/dist_ts/acme/manager.acme-config.d.ts +0 -48
- package/dist_ts/acme/manager.acme-config.js +0 -156
- package/dist_ts/classes.cert-provision-scheduler.d.ts +0 -52
- package/dist_ts/classes.cert-provision-scheduler.js +0 -138
- package/dist_ts/classes.dcrouter.d.ts +0 -401
- package/dist_ts/classes.dcrouter.js +0 -1852
- package/dist_ts/classes.storage-cert-manager.d.ts +0 -15
- package/dist_ts/classes.storage-cert-manager.js +0 -53
- package/dist_ts/config/classes.api-token-manager.d.ts +0 -44
- package/dist_ts/config/classes.api-token-manager.js +0 -180
- package/dist_ts/config/classes.db-seeder.d.ts +0 -25
- package/dist_ts/config/classes.db-seeder.js +0 -69
- package/dist_ts/config/classes.reference-resolver.d.ts +0 -80
- package/dist_ts/config/classes.reference-resolver.js +0 -483
- package/dist_ts/config/classes.route-config-manager.d.ts +0 -54
- package/dist_ts/config/classes.route-config-manager.js +0 -370
- package/dist_ts/config/classes.target-profile-manager.d.ts +0 -82
- package/dist_ts/config/classes.target-profile-manager.js +0 -349
- package/dist_ts/config/index.d.ts +0 -6
- package/dist_ts/config/index.js +0 -8
- package/dist_ts/config/validator.d.ts +0 -104
- package/dist_ts/config/validator.js +0 -152
- package/dist_ts/db/classes.cache.cleaner.d.ts +0 -47
- package/dist_ts/db/classes.cache.cleaner.js +0 -130
- package/dist_ts/db/classes.cached.document.d.ts +0 -76
- package/dist_ts/db/classes.cached.document.js +0 -100
- package/dist_ts/db/classes.dcrouter-db.d.ts +0 -70
- package/dist_ts/db/classes.dcrouter-db.js +0 -146
- package/dist_ts/db/documents/classes.accounting-session.doc.d.ts +0 -32
- package/dist_ts/db/documents/classes.accounting-session.doc.js +0 -214
- package/dist_ts/db/documents/classes.acme-cert.doc.d.ts +0 -13
- package/dist_ts/db/documents/classes.acme-cert.doc.js +0 -109
- package/dist_ts/db/documents/classes.acme-config.doc.d.ts +0 -22
- package/dist_ts/db/documents/classes.acme-config.doc.js +0 -121
- package/dist_ts/db/documents/classes.api-token.doc.d.ts +0 -18
- package/dist_ts/db/documents/classes.api-token.doc.js +0 -127
- package/dist_ts/db/documents/classes.cached.email.d.ts +0 -125
- package/dist_ts/db/documents/classes.cached.email.js +0 -337
- package/dist_ts/db/documents/classes.cached.ip.reputation.d.ts +0 -119
- package/dist_ts/db/documents/classes.cached.ip.reputation.js +0 -323
- package/dist_ts/db/documents/classes.cert-backoff.doc.d.ts +0 -11
- package/dist_ts/db/documents/classes.cert-backoff.doc.js +0 -97
- package/dist_ts/db/documents/classes.dns-provider.doc.d.ts +0 -22
- package/dist_ts/db/documents/classes.dns-provider.doc.js +0 -134
- package/dist_ts/db/documents/classes.dns-record.doc.d.ts +0 -21
- package/dist_ts/db/documents/classes.dns-record.doc.js +0 -143
- package/dist_ts/db/documents/classes.domain.doc.d.ts +0 -22
- package/dist_ts/db/documents/classes.domain.doc.js +0 -146
- package/dist_ts/db/documents/classes.email-domain.doc.d.ts +0 -17
- package/dist_ts/db/documents/classes.email-domain.doc.js +0 -124
- package/dist_ts/db/documents/classes.network-target.doc.d.ts +0 -15
- package/dist_ts/db/documents/classes.network-target.doc.js +0 -118
- package/dist_ts/db/documents/classes.proxy-cert.doc.d.ts +0 -12
- package/dist_ts/db/documents/classes.proxy-cert.doc.js +0 -103
- package/dist_ts/db/documents/classes.remote-ingress-edge.doc.d.ts +0 -17
- package/dist_ts/db/documents/classes.remote-ingress-edge.doc.js +0 -130
- package/dist_ts/db/documents/classes.route.doc.d.ts +0 -18
- package/dist_ts/db/documents/classes.route.doc.js +0 -121
- package/dist_ts/db/documents/classes.source-profile.doc.d.ts +0 -15
- package/dist_ts/db/documents/classes.source-profile.doc.js +0 -115
- package/dist_ts/db/documents/classes.target-profile.doc.d.ts +0 -16
- package/dist_ts/db/documents/classes.target-profile.doc.js +0 -121
- package/dist_ts/db/documents/classes.vlan-mappings.doc.d.ts +0 -15
- package/dist_ts/db/documents/classes.vlan-mappings.doc.js +0 -77
- package/dist_ts/db/documents/classes.vpn-client.doc.d.ts +0 -23
- package/dist_ts/db/documents/classes.vpn-client.doc.js +0 -172
- package/dist_ts/db/documents/classes.vpn-server-keys.doc.d.ts +0 -10
- package/dist_ts/db/documents/classes.vpn-server-keys.doc.js +0 -94
- package/dist_ts/db/documents/index.d.ts +0 -20
- package/dist_ts/db/documents/index.js +0 -30
- package/dist_ts/db/index.d.ts +0 -4
- package/dist_ts/db/index.js +0 -9
- package/dist_ts/dns/index.d.ts +0 -2
- package/dist_ts/dns/index.js +0 -3
- package/dist_ts/dns/manager.dns.d.ts +0 -267
- package/dist_ts/dns/manager.dns.js +0 -906
- package/dist_ts/dns/providers/cloudflare.provider.d.ts +0 -21
- package/dist_ts/dns/providers/cloudflare.provider.js +0 -106
- package/dist_ts/dns/providers/factory.d.ts +0 -23
- package/dist_ts/dns/providers/factory.js +0 -47
- package/dist_ts/dns/providers/index.d.ts +0 -3
- package/dist_ts/dns/providers/index.js +0 -4
- package/dist_ts/dns/providers/interfaces.d.ts +0 -54
- package/dist_ts/dns/providers/interfaces.js +0 -2
- package/dist_ts/email/classes.email-domain.manager.d.ts +0 -46
- package/dist_ts/email/classes.email-domain.manager.js +0 -276
- package/dist_ts/email/index.d.ts +0 -1
- package/dist_ts/email/index.js +0 -2
- package/dist_ts/errors/base.errors.d.ts +0 -224
- package/dist_ts/errors/base.errors.js +0 -320
- package/dist_ts/errors/error-handler.d.ts +0 -98
- package/dist_ts/errors/error-handler.js +0 -282
- package/dist_ts/errors/error.codes.d.ts +0 -115
- package/dist_ts/errors/error.codes.js +0 -136
- package/dist_ts/errors/index.d.ts +0 -54
- package/dist_ts/errors/index.js +0 -136
- package/dist_ts/errors/reputation.errors.d.ts +0 -183
- package/dist_ts/errors/reputation.errors.js +0 -292
- package/dist_ts/http3/http3-route-augmentation.d.ts +0 -50
- package/dist_ts/http3/http3-route-augmentation.js +0 -98
- package/dist_ts/http3/index.d.ts +0 -1
- package/dist_ts/http3/index.js +0 -2
- package/dist_ts/index.d.ts +0 -8
- package/dist_ts/index.js +0 -29
- package/dist_ts/logger.d.ts +0 -21
- package/dist_ts/logger.js +0 -81
- package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
- package/dist_ts/monitoring/classes.metricscache.js +0 -63
- package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -233
- package/dist_ts/monitoring/classes.metricsmanager.js +0 -897
- package/dist_ts/monitoring/index.d.ts +0 -1
- package/dist_ts/monitoring/index.js +0 -2
- package/dist_ts/opsserver/classes.opsserver.d.ts +0 -47
- package/dist_ts/opsserver/classes.opsserver.js +0 -105
- package/dist_ts/opsserver/handlers/acme-config.handler.d.ts +0 -16
- package/dist_ts/opsserver/handlers/acme-config.handler.js +0 -77
- package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -40
- package/dist_ts/opsserver/handlers/admin.handler.js +0 -191
- package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
- package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -77
- package/dist_ts/opsserver/handlers/certificate.handler.js +0 -574
- package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
- package/dist_ts/opsserver/handlers/config.handler.js +0 -200
- package/dist_ts/opsserver/handlers/dns-provider.handler.d.ts +0 -16
- package/dist_ts/opsserver/handlers/dns-provider.handler.js +0 -156
- package/dist_ts/opsserver/handlers/dns-record.handler.d.ts +0 -13
- package/dist_ts/opsserver/handlers/dns-record.handler.js +0 -98
- package/dist_ts/opsserver/handlers/domain.handler.d.ts +0 -13
- package/dist_ts/opsserver/handlers/domain.handler.js +0 -137
- package/dist_ts/opsserver/handlers/email-domain.handler.d.ts +0 -16
- package/dist_ts/opsserver/handlers/email-domain.handler.js +0 -150
- package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
- package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
- package/dist_ts/opsserver/handlers/index.d.ts +0 -21
- package/dist_ts/opsserver/handlers/index.js +0 -22
- package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
- package/dist_ts/opsserver/handlers/logs.handler.js +0 -264
- package/dist_ts/opsserver/handlers/network-target.handler.d.ts +0 -10
- package/dist_ts/opsserver/handlers/network-target.handler.js +0 -117
- package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
- package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
- package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
- package/dist_ts/opsserver/handlers/route-management.handler.js +0 -98
- package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
- package/dist_ts/opsserver/handlers/security.handler.js +0 -237
- package/dist_ts/opsserver/handlers/source-profile.handler.d.ts +0 -10
- package/dist_ts/opsserver/handlers/source-profile.handler.js +0 -119
- package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
- package/dist_ts/opsserver/handlers/stats.handler.js +0 -461
- package/dist_ts/opsserver/handlers/target-profile.handler.d.ts +0 -10
- package/dist_ts/opsserver/handlers/target-profile.handler.js +0 -117
- package/dist_ts/opsserver/handlers/users.handler.d.ts +0 -12
- package/dist_ts/opsserver/handlers/users.handler.js +0 -24
- package/dist_ts/opsserver/handlers/vpn.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/vpn.handler.js +0 -262
- package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
- package/dist_ts/opsserver/helpers/guards.js +0 -43
- package/dist_ts/opsserver/index.d.ts +0 -1
- package/dist_ts/opsserver/index.js +0 -2
- package/dist_ts/paths.d.ts +0 -25
- package/dist_ts/paths.js +0 -44
- package/dist_ts/plugins.d.ts +0 -81
- package/dist_ts/plugins.js +0 -115
- package/dist_ts/radius/classes.accounting.manager.d.ts +0 -223
- package/dist_ts/radius/classes.accounting.manager.js +0 -449
- package/dist_ts/radius/classes.radius.server.d.ts +0 -169
- package/dist_ts/radius/classes.radius.server.js +0 -384
- package/dist_ts/radius/classes.vlan.manager.d.ts +0 -124
- package/dist_ts/radius/classes.vlan.manager.js +0 -272
- package/dist_ts/radius/index.d.ts +0 -13
- package/dist_ts/radius/index.js +0 -14
- package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -92
- package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -291
- package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
- package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
- package/dist_ts/remoteingress/index.d.ts +0 -2
- package/dist_ts/remoteingress/index.js +0 -3
- package/dist_ts/security/classes.contentscanner.d.ts +0 -164
- package/dist_ts/security/classes.contentscanner.js +0 -642
- package/dist_ts/security/classes.ipreputationchecker.d.ts +0 -145
- package/dist_ts/security/classes.ipreputationchecker.js +0 -458
- package/dist_ts/security/classes.securitylogger.d.ts +0 -144
- package/dist_ts/security/classes.securitylogger.js +0 -235
- package/dist_ts/security/index.d.ts +0 -3
- package/dist_ts/security/index.js +0 -4
- package/dist_ts/sms/classes.smsservice.d.ts +0 -15
- package/dist_ts/sms/classes.smsservice.js +0 -72
- package/dist_ts/sms/config/sms.config.d.ts +0 -93
- package/dist_ts/sms/config/sms.config.js +0 -2
- package/dist_ts/sms/config/sms.schema.d.ts +0 -5
- package/dist_ts/sms/config/sms.schema.js +0 -121
- package/dist_ts/sms/index.d.ts +0 -1
- package/dist_ts/sms/index.js +0 -2
- package/dist_ts/vpn/classes.vpn-manager.d.ts +0 -159
- package/dist_ts/vpn/classes.vpn-manager.js +0 -459
- package/dist_ts/vpn/index.d.ts +0 -1
- package/dist_ts/vpn/index.js +0 -2
- package/dist_ts_apiclient/classes.apitoken.d.ts +0 -41
- package/dist_ts_apiclient/classes.apitoken.js +0 -115
- package/dist_ts_apiclient/classes.certificate.d.ts +0 -57
- package/dist_ts_apiclient/classes.certificate.js +0 -69
- package/dist_ts_apiclient/classes.config.d.ts +0 -7
- package/dist_ts_apiclient/classes.config.js +0 -11
- package/dist_ts_apiclient/classes.dcrouterapiclient.d.ts +0 -41
- package/dist_ts_apiclient/classes.dcrouterapiclient.js +0 -81
- package/dist_ts_apiclient/classes.email.d.ts +0 -30
- package/dist_ts_apiclient/classes.email.js +0 -52
- package/dist_ts_apiclient/classes.logs.d.ts +0 -21
- package/dist_ts_apiclient/classes.logs.js +0 -14
- package/dist_ts_apiclient/classes.radius.d.ts +0 -59
- package/dist_ts_apiclient/classes.radius.js +0 -95
- package/dist_ts_apiclient/classes.remoteingress.d.ts +0 -54
- package/dist_ts_apiclient/classes.remoteingress.js +0 -136
- package/dist_ts_apiclient/classes.route.d.ts +0 -39
- package/dist_ts_apiclient/classes.route.js +0 -125
- package/dist_ts_apiclient/classes.stats.d.ts +0 -47
- package/dist_ts_apiclient/classes.stats.js +0 -38
- package/dist_ts_apiclient/index.d.ts +0 -10
- package/dist_ts_apiclient/index.js +0 -14
- package/dist_ts_apiclient/plugins.d.ts +0 -3
- package/dist_ts_apiclient/plugins.js +0 -5
- package/dist_ts_interfaces/data/acme-config.d.ts +0 -25
- package/dist_ts_interfaces/data/acme-config.js +0 -2
- package/dist_ts_interfaces/data/auth.d.ts +0 -8
- package/dist_ts_interfaces/data/auth.js +0 -2
- package/dist_ts_interfaces/data/dns-provider.d.ts +0 -136
- package/dist_ts_interfaces/data/dns-provider.js +0 -41
- package/dist_ts_interfaces/data/dns-record.d.ts +0 -42
- package/dist_ts_interfaces/data/dns-record.js +0 -2
- package/dist_ts_interfaces/data/domain.d.ts +0 -35
- package/dist_ts_interfaces/data/domain.js +0 -2
- package/dist_ts_interfaces/data/email-domain.d.ts +0 -70
- package/dist_ts_interfaces/data/email-domain.js +0 -2
- package/dist_ts_interfaces/data/index.d.ts +0 -11
- package/dist_ts_interfaces/data/index.js +0 -12
- package/dist_ts_interfaces/data/remoteingress.d.ts +0 -60
- package/dist_ts_interfaces/data/remoteingress.js +0 -2
- package/dist_ts_interfaces/data/route-management.d.ts +0 -110
- package/dist_ts_interfaces/data/route-management.js +0 -2
- package/dist_ts_interfaces/data/stats.d.ts +0 -238
- package/dist_ts_interfaces/data/stats.js +0 -2
- package/dist_ts_interfaces/data/target-profile.d.ts +0 -28
- package/dist_ts_interfaces/data/target-profile.js +0 -2
- package/dist_ts_interfaces/data/vpn.d.ts +0 -61
- package/dist_ts_interfaces/data/vpn.js +0 -2
- package/dist_ts_interfaces/index.d.ts +0 -5
- package/dist_ts_interfaces/index.js +0 -8
- package/dist_ts_interfaces/plugins.d.ts +0 -2
- package/dist_ts_interfaces/plugins.js +0 -4
- package/dist_ts_interfaces/requests/acme-config.d.ts +0 -42
- package/dist_ts_interfaces/requests/acme-config.js +0 -2
- package/dist_ts_interfaces/requests/admin.d.ts +0 -31
- package/dist_ts_interfaces/requests/admin.js +0 -3
- package/dist_ts_interfaces/requests/api-tokens.d.ts +0 -79
- package/dist_ts_interfaces/requests/api-tokens.js +0 -2
- package/dist_ts_interfaces/requests/certificate.d.ts +0 -111
- package/dist_ts_interfaces/requests/certificate.js +0 -3
- package/dist_ts_interfaces/requests/combined.stats.d.ts +0 -28
- package/dist_ts_interfaces/requests/combined.stats.js +0 -2
- package/dist_ts_interfaces/requests/config.d.ts +0 -90
- package/dist_ts_interfaces/requests/config.js +0 -3
- package/dist_ts_interfaces/requests/dns-providers.d.ts +0 -117
- package/dist_ts_interfaces/requests/dns-providers.js +0 -2
- package/dist_ts_interfaces/requests/dns-records.d.ts +0 -89
- package/dist_ts_interfaces/requests/dns-records.js +0 -2
- package/dist_ts_interfaces/requests/domains.d.ts +0 -142
- package/dist_ts_interfaces/requests/domains.js +0 -2
- package/dist_ts_interfaces/requests/email-domains.d.ts +0 -142
- package/dist_ts_interfaces/requests/email-domains.js +0 -2
- package/dist_ts_interfaces/requests/email-ops.d.ts +0 -82
- package/dist_ts_interfaces/requests/email-ops.js +0 -3
- package/dist_ts_interfaces/requests/index.d.ts +0 -21
- package/dist_ts_interfaces/requests/index.js +0 -22
- package/dist_ts_interfaces/requests/logs.d.ts +0 -41
- package/dist_ts_interfaces/requests/logs.js +0 -4
- package/dist_ts_interfaces/requests/network-targets.d.ts +0 -102
- package/dist_ts_interfaces/requests/network-targets.js +0 -2
- package/dist_ts_interfaces/requests/radius.d.ts +0 -268
- package/dist_ts_interfaces/requests/radius.js +0 -3
- package/dist_ts_interfaces/requests/remoteingress.d.ts +0 -108
- package/dist_ts_interfaces/requests/remoteingress.js +0 -3
- package/dist_ts_interfaces/requests/route-management.d.ts +0 -85
- package/dist_ts_interfaces/requests/route-management.js +0 -2
- package/dist_ts_interfaces/requests/source-profiles.d.ts +0 -102
- package/dist_ts_interfaces/requests/source-profiles.js +0 -2
- package/dist_ts_interfaces/requests/stats.d.ts +0 -177
- package/dist_ts_interfaces/requests/stats.js +0 -4
- package/dist_ts_interfaces/requests/target-profiles.d.ts +0 -103
- package/dist_ts_interfaces/requests/target-profiles.js +0 -2
- package/dist_ts_interfaces/requests/users.d.ts +0 -19
- package/dist_ts_interfaces/requests/users.js +0 -3
- package/dist_ts_interfaces/requests/vpn.d.ts +0 -177
- package/dist_ts_interfaces/requests/vpn.js +0 -3
- package/dist_ts_migrations/index.d.ts +0 -28
- package/dist_ts_migrations/index.js +0 -82
- package/dist_ts_oci_container/index.d.ts +0 -8
- package/dist_ts_oci_container/index.js +0 -110
- package/dist_ts_oci_container/plugins.d.ts +0 -3
- package/dist_ts_oci_container/plugins.js +0 -4
- package/dist_ts_web/00_commitinfo_data.d.ts +0 -8
- package/dist_ts_web/00_commitinfo_data.js +0 -9
- package/dist_ts_web/appstate.d.ts +0 -478
- package/dist_ts_web/appstate.js +0 -1968
- package/dist_ts_web/elements/access/index.d.ts +0 -2
- package/dist_ts_web/elements/access/index.js +0 -3
- package/dist_ts_web/elements/access/ops-view-apitokens.d.ts +0 -13
- package/dist_ts_web/elements/access/ops-view-apitokens.js +0 -372
- package/dist_ts_web/elements/access/ops-view-users.d.ts +0 -11
- package/dist_ts_web/elements/access/ops-view-users.js +0 -190
- package/dist_ts_web/elements/domains/dns-provider-form.d.ts +0 -60
- package/dist_ts_web/elements/domains/dns-provider-form.js +0 -259
- package/dist_ts_web/elements/domains/index.d.ts +0 -5
- package/dist_ts_web/elements/domains/index.js +0 -6
- package/dist_ts_web/elements/domains/ops-view-certificates.d.ts +0 -25
- package/dist_ts_web/elements/domains/ops-view-certificates.js +0 -669
- package/dist_ts_web/elements/domains/ops-view-dns.d.ts +0 -17
- package/dist_ts_web/elements/domains/ops-view-dns.js +0 -305
- package/dist_ts_web/elements/domains/ops-view-domains.d.ts +0 -19
- package/dist_ts_web/elements/domains/ops-view-domains.js +0 -456
- package/dist_ts_web/elements/domains/ops-view-providers.d.ts +0 -21
- package/dist_ts_web/elements/domains/ops-view-providers.js +0 -330
- package/dist_ts_web/elements/email/index.d.ts +0 -3
- package/dist_ts_web/elements/email/index.js +0 -4
- package/dist_ts_web/elements/email/ops-view-email-domains.d.ts +0 -19
- package/dist_ts_web/elements/email/ops-view-email-domains.js +0 -410
- package/dist_ts_web/elements/email/ops-view-email-security.d.ts +0 -14
- package/dist_ts_web/elements/email/ops-view-email-security.js +0 -178
- package/dist_ts_web/elements/email/ops-view-emails.d.ts +0 -21
- package/dist_ts_web/elements/email/ops-view-emails.js +0 -165
- package/dist_ts_web/elements/index.d.ts +0 -9
- package/dist_ts_web/elements/index.js +0 -10
- package/dist_ts_web/elements/network/index.d.ts +0 -7
- package/dist_ts_web/elements/network/index.js +0 -8
- package/dist_ts_web/elements/network/ops-view-network-activity.d.ts +0 -60
- package/dist_ts_web/elements/network/ops-view-network-activity.js +0 -753
- package/dist_ts_web/elements/network/ops-view-networktargets.d.ts +0 -17
- package/dist_ts_web/elements/network/ops-view-networktargets.js +0 -255
- package/dist_ts_web/elements/network/ops-view-remoteingress.d.ts +0 -20
- package/dist_ts_web/elements/network/ops-view-remoteingress.js +0 -497
- package/dist_ts_web/elements/network/ops-view-routes.d.ts +0 -16
- package/dist_ts_web/elements/network/ops-view-routes.js +0 -674
- package/dist_ts_web/elements/network/ops-view-sourceprofiles.d.ts +0 -17
- package/dist_ts_web/elements/network/ops-view-sourceprofiles.js +0 -278
- package/dist_ts_web/elements/network/ops-view-targetprofiles.d.ts +0 -21
- package/dist_ts_web/elements/network/ops-view-targetprofiles.js +0 -420
- package/dist_ts_web/elements/network/ops-view-vpn.d.ts +0 -31
- package/dist_ts_web/elements/network/ops-view-vpn.js +0 -873
- package/dist_ts_web/elements/ops-dashboard.d.ts +0 -31
- package/dist_ts_web/elements/ops-dashboard.js +0 -405
- package/dist_ts_web/elements/ops-view-logs.d.ts +0 -13
- package/dist_ts_web/elements/ops-view-logs.js +0 -159
- package/dist_ts_web/elements/overview/index.d.ts +0 -2
- package/dist_ts_web/elements/overview/index.js +0 -3
- package/dist_ts_web/elements/overview/ops-view-config.d.ts +0 -19
- package/dist_ts_web/elements/overview/ops-view-config.js +0 -339
- package/dist_ts_web/elements/overview/ops-view-overview.d.ts +0 -24
- package/dist_ts_web/elements/overview/ops-view-overview.js +0 -545
- package/dist_ts_web/elements/security/index.d.ts +0 -3
- package/dist_ts_web/elements/security/index.js +0 -4
- package/dist_ts_web/elements/security/ops-view-security-authentication.d.ts +0 -13
- package/dist_ts_web/elements/security/ops-view-security-authentication.js +0 -157
- package/dist_ts_web/elements/security/ops-view-security-blocked.d.ts +0 -15
- package/dist_ts_web/elements/security/ops-view-security-blocked.js +0 -153
- package/dist_ts_web/elements/security/ops-view-security-overview.d.ts +0 -16
- package/dist_ts_web/elements/security/ops-view-security-overview.js +0 -205
- package/dist_ts_web/elements/shared/css.d.ts +0 -1
- package/dist_ts_web/elements/shared/css.js +0 -10
- package/dist_ts_web/elements/shared/index.d.ts +0 -1
- package/dist_ts_web/elements/shared/index.js +0 -2
- package/dist_ts_web/index.d.ts +0 -1
- package/dist_ts_web/index.js +0 -10
- package/dist_ts_web/plugins.d.ts +0 -7
- package/dist_ts_web/plugins.js +0 -13
- package/dist_ts_web/router.d.ts +0 -21
- package/dist_ts_web/router.js +0 -151
|
@@ -1,449 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../plugins.js';
|
|
2
|
-
import { logger } from '../logger.js';
|
|
3
|
-
import { AccountingSessionDoc } from '../db/index.js';
|
|
4
|
-
/**
|
|
5
|
-
* Manages RADIUS accounting data including:
|
|
6
|
-
* - Session tracking (start/stop/interim)
|
|
7
|
-
* - Data usage tracking (bytes in/out)
|
|
8
|
-
* - Session history and retention
|
|
9
|
-
* - Billing reports and summaries
|
|
10
|
-
*/
|
|
11
|
-
export class AccountingManager {
|
|
12
|
-
activeSessions = new Map();
|
|
13
|
-
config;
|
|
14
|
-
staleSessionSweepTimer;
|
|
15
|
-
// Counters for statistics
|
|
16
|
-
stats = {
|
|
17
|
-
totalSessionsStarted: 0,
|
|
18
|
-
totalSessionsStopped: 0,
|
|
19
|
-
totalInputBytes: 0,
|
|
20
|
-
totalOutputBytes: 0,
|
|
21
|
-
interimUpdatesReceived: 0,
|
|
22
|
-
};
|
|
23
|
-
constructor(config) {
|
|
24
|
-
this.config = {
|
|
25
|
-
retentionDays: config?.retentionDays ?? 30,
|
|
26
|
-
detailedLogging: config?.detailedLogging ?? false,
|
|
27
|
-
maxActiveSessions: config?.maxActiveSessions ?? 10000,
|
|
28
|
-
staleSessionTimeoutHours: config?.staleSessionTimeoutHours ?? 24,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Initialize the accounting manager
|
|
33
|
-
*/
|
|
34
|
-
async initialize() {
|
|
35
|
-
await this.loadActiveSessions();
|
|
36
|
-
// Start periodic sweep to evict stale sessions (every 15 minutes)
|
|
37
|
-
this.staleSessionSweepTimer = setInterval(() => {
|
|
38
|
-
this.sweepStaleSessions();
|
|
39
|
-
}, 15 * 60 * 1000);
|
|
40
|
-
// Allow the process to exit even if the timer is pending
|
|
41
|
-
if (this.staleSessionSweepTimer.unref) {
|
|
42
|
-
this.staleSessionSweepTimer.unref();
|
|
43
|
-
}
|
|
44
|
-
logger.log('info', `AccountingManager initialized with ${this.activeSessions.size} active sessions`);
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Stop the accounting manager and clean up timers
|
|
48
|
-
*/
|
|
49
|
-
stop() {
|
|
50
|
-
if (this.staleSessionSweepTimer) {
|
|
51
|
-
clearInterval(this.staleSessionSweepTimer);
|
|
52
|
-
this.staleSessionSweepTimer = undefined;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Sweep stale active sessions that have not received any update
|
|
57
|
-
* within the configured timeout. These are orphaned sessions where
|
|
58
|
-
* the Stop packet was never received.
|
|
59
|
-
*/
|
|
60
|
-
sweepStaleSessions() {
|
|
61
|
-
const timeoutMs = this.config.staleSessionTimeoutHours * 60 * 60 * 1000;
|
|
62
|
-
const cutoff = Date.now() - timeoutMs;
|
|
63
|
-
let swept = 0;
|
|
64
|
-
for (const [sessionId, session] of this.activeSessions) {
|
|
65
|
-
if (session.lastUpdateTime < cutoff) {
|
|
66
|
-
session.status = 'terminated';
|
|
67
|
-
session.terminateCause = 'StaleSessionTimeout';
|
|
68
|
-
session.endTime = Date.now();
|
|
69
|
-
session.sessionTime = Math.floor((session.endTime - session.startTime) / 1000);
|
|
70
|
-
this.persistSession(session).catch(() => { });
|
|
71
|
-
this.activeSessions.delete(sessionId);
|
|
72
|
-
swept++;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (swept > 0) {
|
|
76
|
-
logger.log('info', `Swept ${swept} stale RADIUS sessions (no update for ${this.config.staleSessionTimeoutHours}h)`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Handle accounting start request
|
|
81
|
-
*/
|
|
82
|
-
async handleAccountingStart(data) {
|
|
83
|
-
const now = Date.now();
|
|
84
|
-
const session = {
|
|
85
|
-
sessionId: data.sessionId,
|
|
86
|
-
username: data.username,
|
|
87
|
-
macAddress: data.macAddress,
|
|
88
|
-
nasIpAddress: data.nasIpAddress,
|
|
89
|
-
nasPort: data.nasPort,
|
|
90
|
-
nasPortType: data.nasPortType,
|
|
91
|
-
nasIdentifier: data.nasIdentifier,
|
|
92
|
-
vlanId: data.vlanId,
|
|
93
|
-
framedIpAddress: data.framedIpAddress,
|
|
94
|
-
calledStationId: data.calledStationId,
|
|
95
|
-
callingStationId: data.callingStationId,
|
|
96
|
-
serviceType: data.serviceType,
|
|
97
|
-
startTime: now,
|
|
98
|
-
endTime: 0,
|
|
99
|
-
lastUpdateTime: now,
|
|
100
|
-
status: 'active',
|
|
101
|
-
inputOctets: 0,
|
|
102
|
-
outputOctets: 0,
|
|
103
|
-
inputPackets: 0,
|
|
104
|
-
outputPackets: 0,
|
|
105
|
-
sessionTime: 0,
|
|
106
|
-
};
|
|
107
|
-
// Check if we're at capacity
|
|
108
|
-
if (this.activeSessions.size >= this.config.maxActiveSessions) {
|
|
109
|
-
// Remove oldest session
|
|
110
|
-
const oldest = this.findOldestSession();
|
|
111
|
-
if (oldest) {
|
|
112
|
-
await this.evictSession(oldest);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
this.activeSessions.set(data.sessionId, session);
|
|
116
|
-
this.stats.totalSessionsStarted++;
|
|
117
|
-
if (this.config.detailedLogging) {
|
|
118
|
-
logger.log('info', `Accounting Start: session=${data.sessionId}, user=${data.username}, NAS=${data.nasIpAddress}`);
|
|
119
|
-
}
|
|
120
|
-
// Persist session
|
|
121
|
-
await this.persistSession(session);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Handle accounting interim update request
|
|
125
|
-
*/
|
|
126
|
-
async handleAccountingUpdate(data) {
|
|
127
|
-
const session = this.activeSessions.get(data.sessionId);
|
|
128
|
-
if (!session) {
|
|
129
|
-
logger.log('warn', `Interim update for unknown session: ${data.sessionId}`);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
// Update session metrics
|
|
133
|
-
if (data.inputOctets !== undefined) {
|
|
134
|
-
session.inputOctets = data.inputOctets;
|
|
135
|
-
}
|
|
136
|
-
if (data.outputOctets !== undefined) {
|
|
137
|
-
session.outputOctets = data.outputOctets;
|
|
138
|
-
}
|
|
139
|
-
if (data.inputPackets !== undefined) {
|
|
140
|
-
session.inputPackets = data.inputPackets;
|
|
141
|
-
}
|
|
142
|
-
if (data.outputPackets !== undefined) {
|
|
143
|
-
session.outputPackets = data.outputPackets;
|
|
144
|
-
}
|
|
145
|
-
if (data.sessionTime !== undefined) {
|
|
146
|
-
session.sessionTime = data.sessionTime;
|
|
147
|
-
}
|
|
148
|
-
session.lastUpdateTime = Date.now();
|
|
149
|
-
this.stats.interimUpdatesReceived++;
|
|
150
|
-
if (this.config.detailedLogging) {
|
|
151
|
-
logger.log('debug', `Accounting Interim: session=${data.sessionId}, in=${data.inputOctets}, out=${data.outputOctets}`);
|
|
152
|
-
}
|
|
153
|
-
// Update persisted session
|
|
154
|
-
await this.persistSession(session);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Handle accounting stop request
|
|
158
|
-
*/
|
|
159
|
-
async handleAccountingStop(data) {
|
|
160
|
-
const session = this.activeSessions.get(data.sessionId);
|
|
161
|
-
if (!session) {
|
|
162
|
-
logger.log('warn', `Stop for unknown session: ${data.sessionId}`);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
// Update final metrics
|
|
166
|
-
if (data.inputOctets !== undefined) {
|
|
167
|
-
session.inputOctets = data.inputOctets;
|
|
168
|
-
}
|
|
169
|
-
if (data.outputOctets !== undefined) {
|
|
170
|
-
session.outputOctets = data.outputOctets;
|
|
171
|
-
}
|
|
172
|
-
if (data.inputPackets !== undefined) {
|
|
173
|
-
session.inputPackets = data.inputPackets;
|
|
174
|
-
}
|
|
175
|
-
if (data.outputPackets !== undefined) {
|
|
176
|
-
session.outputPackets = data.outputPackets;
|
|
177
|
-
}
|
|
178
|
-
if (data.sessionTime !== undefined) {
|
|
179
|
-
session.sessionTime = data.sessionTime;
|
|
180
|
-
}
|
|
181
|
-
session.endTime = Date.now();
|
|
182
|
-
session.lastUpdateTime = session.endTime;
|
|
183
|
-
session.status = 'stopped';
|
|
184
|
-
session.terminateCause = data.terminateCause;
|
|
185
|
-
// Update global stats
|
|
186
|
-
this.stats.totalSessionsStopped++;
|
|
187
|
-
this.stats.totalInputBytes += session.inputOctets;
|
|
188
|
-
this.stats.totalOutputBytes += session.outputOctets;
|
|
189
|
-
if (this.config.detailedLogging) {
|
|
190
|
-
logger.log('info', `Accounting Stop: session=${data.sessionId}, duration=${session.sessionTime}s, in=${session.inputOctets}, out=${session.outputOctets}`);
|
|
191
|
-
}
|
|
192
|
-
// Update status in the database (single collection, no active->archive move needed)
|
|
193
|
-
await this.persistSession(session);
|
|
194
|
-
// Remove from active sessions
|
|
195
|
-
this.activeSessions.delete(data.sessionId);
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Get an active session by ID
|
|
199
|
-
*/
|
|
200
|
-
getSession(sessionId) {
|
|
201
|
-
return this.activeSessions.get(sessionId);
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Get all active sessions
|
|
205
|
-
*/
|
|
206
|
-
getActiveSessions() {
|
|
207
|
-
return Array.from(this.activeSessions.values());
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Get active sessions by username
|
|
211
|
-
*/
|
|
212
|
-
getSessionsByUsername(username) {
|
|
213
|
-
return Array.from(this.activeSessions.values()).filter(s => s.username === username);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Get active sessions by NAS IP
|
|
217
|
-
*/
|
|
218
|
-
getSessionsByNas(nasIpAddress) {
|
|
219
|
-
return Array.from(this.activeSessions.values()).filter(s => s.nasIpAddress === nasIpAddress);
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Get active sessions by VLAN
|
|
223
|
-
*/
|
|
224
|
-
getSessionsByVlan(vlanId) {
|
|
225
|
-
return Array.from(this.activeSessions.values()).filter(s => s.vlanId === vlanId);
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Get accounting summary for a time period
|
|
229
|
-
*/
|
|
230
|
-
async getSummary(startTime, endTime) {
|
|
231
|
-
// Get archived sessions for the time period
|
|
232
|
-
const archivedSessions = await this.getArchivedSessions(startTime, endTime);
|
|
233
|
-
// Combine with active sessions that started within the period
|
|
234
|
-
const activeSessions = Array.from(this.activeSessions.values()).filter(s => s.startTime >= startTime && s.startTime <= endTime);
|
|
235
|
-
const allSessions = [...archivedSessions, ...activeSessions];
|
|
236
|
-
// Calculate summary
|
|
237
|
-
let totalInputBytes = 0;
|
|
238
|
-
let totalOutputBytes = 0;
|
|
239
|
-
let totalSessionTime = 0;
|
|
240
|
-
const uniqueUsers = new Set();
|
|
241
|
-
const sessionsByVlan = {};
|
|
242
|
-
const userTraffic = {};
|
|
243
|
-
for (const session of allSessions) {
|
|
244
|
-
totalInputBytes += session.inputOctets;
|
|
245
|
-
totalOutputBytes += session.outputOctets;
|
|
246
|
-
totalSessionTime += session.sessionTime;
|
|
247
|
-
uniqueUsers.add(session.username);
|
|
248
|
-
if (session.vlanId !== undefined) {
|
|
249
|
-
sessionsByVlan[session.vlanId] = (sessionsByVlan[session.vlanId] || 0) + 1;
|
|
250
|
-
}
|
|
251
|
-
const userBytes = session.inputOctets + session.outputOctets;
|
|
252
|
-
userTraffic[session.username] = (userTraffic[session.username] || 0) + userBytes;
|
|
253
|
-
}
|
|
254
|
-
// Top users by traffic
|
|
255
|
-
const topUsersByTraffic = Object.entries(userTraffic)
|
|
256
|
-
.sort((a, b) => b[1] - a[1])
|
|
257
|
-
.slice(0, 10)
|
|
258
|
-
.map(([username, totalBytes]) => ({ username, totalBytes }));
|
|
259
|
-
return {
|
|
260
|
-
periodStart: startTime,
|
|
261
|
-
periodEnd: endTime,
|
|
262
|
-
totalSessions: allSessions.length,
|
|
263
|
-
activeSessions: activeSessions.length,
|
|
264
|
-
totalInputBytes,
|
|
265
|
-
totalOutputBytes,
|
|
266
|
-
totalSessionTime,
|
|
267
|
-
averageSessionDuration: allSessions.length > 0 ? totalSessionTime / allSessions.length : 0,
|
|
268
|
-
uniqueUsers: uniqueUsers.size,
|
|
269
|
-
sessionsByVlan,
|
|
270
|
-
topUsersByTraffic,
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Get statistics
|
|
275
|
-
*/
|
|
276
|
-
getStats() {
|
|
277
|
-
return {
|
|
278
|
-
activeSessions: this.activeSessions.size,
|
|
279
|
-
...this.stats,
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Disconnect a session (admin action)
|
|
284
|
-
*/
|
|
285
|
-
async disconnectSession(sessionId, reason = 'AdminReset') {
|
|
286
|
-
const session = this.activeSessions.get(sessionId);
|
|
287
|
-
if (!session) {
|
|
288
|
-
return false;
|
|
289
|
-
}
|
|
290
|
-
await this.handleAccountingStop({
|
|
291
|
-
sessionId,
|
|
292
|
-
terminateCause: reason,
|
|
293
|
-
sessionTime: Math.floor((Date.now() - session.startTime) / 1000),
|
|
294
|
-
});
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Clean up old archived sessions based on retention policy
|
|
299
|
-
*/
|
|
300
|
-
async cleanupOldSessions() {
|
|
301
|
-
const cutoffTime = Date.now() - this.config.retentionDays * 24 * 60 * 60 * 1000;
|
|
302
|
-
let deletedCount = 0;
|
|
303
|
-
try {
|
|
304
|
-
const oldDocs = await AccountingSessionDoc.findStoppedBefore(cutoffTime);
|
|
305
|
-
for (const doc of oldDocs) {
|
|
306
|
-
try {
|
|
307
|
-
await doc.delete();
|
|
308
|
-
deletedCount++;
|
|
309
|
-
}
|
|
310
|
-
catch (error) {
|
|
311
|
-
// Ignore individual errors
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
if (deletedCount > 0) {
|
|
315
|
-
logger.log('info', `Cleaned up ${deletedCount} old accounting sessions`);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
catch (error) {
|
|
319
|
-
logger.log('error', `Failed to cleanup old sessions: ${error.message}`);
|
|
320
|
-
}
|
|
321
|
-
return deletedCount;
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* Find the oldest active session
|
|
325
|
-
*/
|
|
326
|
-
findOldestSession() {
|
|
327
|
-
let oldestTime = Infinity;
|
|
328
|
-
let oldestSessionId = null;
|
|
329
|
-
for (const [sessionId, session] of this.activeSessions) {
|
|
330
|
-
if (session.lastUpdateTime < oldestTime) {
|
|
331
|
-
oldestTime = session.lastUpdateTime;
|
|
332
|
-
oldestSessionId = sessionId;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
return oldestSessionId;
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Evict a session from memory
|
|
339
|
-
*/
|
|
340
|
-
async evictSession(sessionId) {
|
|
341
|
-
const session = this.activeSessions.get(sessionId);
|
|
342
|
-
if (session) {
|
|
343
|
-
session.status = 'terminated';
|
|
344
|
-
session.terminateCause = 'SessionEvicted';
|
|
345
|
-
session.endTime = Date.now();
|
|
346
|
-
await this.persistSession(session);
|
|
347
|
-
this.activeSessions.delete(sessionId);
|
|
348
|
-
logger.log('warn', `Evicted session ${sessionId} due to capacity limit`);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Load active sessions from database
|
|
353
|
-
*/
|
|
354
|
-
async loadActiveSessions() {
|
|
355
|
-
try {
|
|
356
|
-
const docs = await AccountingSessionDoc.findActive();
|
|
357
|
-
for (const doc of docs) {
|
|
358
|
-
const session = {
|
|
359
|
-
sessionId: doc.sessionId,
|
|
360
|
-
username: doc.username,
|
|
361
|
-
macAddress: doc.macAddress,
|
|
362
|
-
nasIpAddress: doc.nasIpAddress,
|
|
363
|
-
nasPort: doc.nasPort,
|
|
364
|
-
nasPortType: doc.nasPortType,
|
|
365
|
-
nasIdentifier: doc.nasIdentifier,
|
|
366
|
-
vlanId: doc.vlanId,
|
|
367
|
-
framedIpAddress: doc.framedIpAddress,
|
|
368
|
-
calledStationId: doc.calledStationId,
|
|
369
|
-
callingStationId: doc.callingStationId,
|
|
370
|
-
startTime: doc.startTime,
|
|
371
|
-
endTime: doc.endTime,
|
|
372
|
-
lastUpdateTime: doc.lastUpdateTime,
|
|
373
|
-
status: doc.status,
|
|
374
|
-
terminateCause: doc.terminateCause,
|
|
375
|
-
inputOctets: doc.inputOctets,
|
|
376
|
-
outputOctets: doc.outputOctets,
|
|
377
|
-
inputPackets: doc.inputPackets,
|
|
378
|
-
outputPackets: doc.outputPackets,
|
|
379
|
-
sessionTime: doc.sessionTime,
|
|
380
|
-
serviceType: doc.serviceType,
|
|
381
|
-
};
|
|
382
|
-
this.activeSessions.set(session.sessionId, session);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
catch (error) {
|
|
386
|
-
logger.log('warn', `Failed to load active sessions: ${error.message}`);
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
/**
|
|
390
|
-
* Persist a session to the database (create or update)
|
|
391
|
-
*/
|
|
392
|
-
async persistSession(session) {
|
|
393
|
-
try {
|
|
394
|
-
let doc = await AccountingSessionDoc.findBySessionId(session.sessionId);
|
|
395
|
-
if (!doc) {
|
|
396
|
-
doc = new AccountingSessionDoc();
|
|
397
|
-
}
|
|
398
|
-
Object.assign(doc, session);
|
|
399
|
-
await doc.save();
|
|
400
|
-
}
|
|
401
|
-
catch (error) {
|
|
402
|
-
logger.log('error', `Failed to persist session ${session.sessionId}: ${error.message}`);
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
/**
|
|
406
|
-
* Get archived (stopped/terminated) sessions for a time period
|
|
407
|
-
*/
|
|
408
|
-
async getArchivedSessions(startTime, endTime) {
|
|
409
|
-
const sessions = [];
|
|
410
|
-
try {
|
|
411
|
-
const docs = await AccountingSessionDoc.getInstances({
|
|
412
|
-
status: { $in: ['stopped', 'terminated'] },
|
|
413
|
-
endTime: { $gt: 0, $gte: startTime },
|
|
414
|
-
startTime: { $lte: endTime },
|
|
415
|
-
});
|
|
416
|
-
for (const doc of docs) {
|
|
417
|
-
sessions.push({
|
|
418
|
-
sessionId: doc.sessionId,
|
|
419
|
-
username: doc.username,
|
|
420
|
-
macAddress: doc.macAddress,
|
|
421
|
-
nasIpAddress: doc.nasIpAddress,
|
|
422
|
-
nasPort: doc.nasPort,
|
|
423
|
-
nasPortType: doc.nasPortType,
|
|
424
|
-
nasIdentifier: doc.nasIdentifier,
|
|
425
|
-
vlanId: doc.vlanId,
|
|
426
|
-
framedIpAddress: doc.framedIpAddress,
|
|
427
|
-
calledStationId: doc.calledStationId,
|
|
428
|
-
callingStationId: doc.callingStationId,
|
|
429
|
-
startTime: doc.startTime,
|
|
430
|
-
endTime: doc.endTime,
|
|
431
|
-
lastUpdateTime: doc.lastUpdateTime,
|
|
432
|
-
status: doc.status,
|
|
433
|
-
terminateCause: doc.terminateCause,
|
|
434
|
-
inputOctets: doc.inputOctets,
|
|
435
|
-
outputOctets: doc.outputOctets,
|
|
436
|
-
inputPackets: doc.inputPackets,
|
|
437
|
-
outputPackets: doc.outputPackets,
|
|
438
|
-
sessionTime: doc.sessionTime,
|
|
439
|
-
serviceType: doc.serviceType,
|
|
440
|
-
});
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
catch (error) {
|
|
444
|
-
logger.log('warn', `Failed to get archived sessions: ${error.message}`);
|
|
445
|
-
}
|
|
446
|
-
return sessions;
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hY2NvdW50aW5nLm1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9yYWRpdXMvY2xhc3Nlcy5hY2NvdW50aW5nLm1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQThGdEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixjQUFjLEdBQW9DLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUQsTUFBTSxDQUFxQztJQUMzQyxzQkFBc0IsQ0FBa0M7SUFFaEUsMEJBQTBCO0lBQ2xCLEtBQUssR0FBRztRQUNkLG9CQUFvQixFQUFFLENBQUM7UUFDdkIsb0JBQW9CLEVBQUUsQ0FBQztRQUN2QixlQUFlLEVBQUUsQ0FBQztRQUNsQixnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLHNCQUFzQixFQUFFLENBQUM7S0FDMUIsQ0FBQztJQUVGLFlBQVksTUFBaUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxJQUFJLEVBQUU7WUFDMUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxlQUFlLElBQUksS0FBSztZQUNqRCxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLElBQUksS0FBSztZQUNyRCx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLElBQUksRUFBRTtTQUNqRSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRWhDLGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFB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
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { VlanManager, type IMacVlanMapping, type IVlanManagerConfig } from './classes.vlan.manager.js';
|
|
2
|
-
import { AccountingManager, type IAccountingManagerConfig } from './classes.accounting.manager.js';
|
|
3
|
-
/**
|
|
4
|
-
* RADIUS client (NAS) configuration
|
|
5
|
-
*/
|
|
6
|
-
export interface IRadiusClient {
|
|
7
|
-
/** Client name for identification */
|
|
8
|
-
name: string;
|
|
9
|
-
/** IP address or CIDR range */
|
|
10
|
-
ipRange: string;
|
|
11
|
-
/** Shared secret for this client */
|
|
12
|
-
secret: string;
|
|
13
|
-
/** Optional description */
|
|
14
|
-
description?: string;
|
|
15
|
-
/** Whether this client is enabled */
|
|
16
|
-
enabled: boolean;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* RADIUS server configuration
|
|
20
|
-
*/
|
|
21
|
-
export interface IRadiusServerConfig {
|
|
22
|
-
/** Authentication port (default: 1812) */
|
|
23
|
-
authPort?: number;
|
|
24
|
-
/** Accounting port (default: 1813) */
|
|
25
|
-
acctPort?: number;
|
|
26
|
-
/** Bind address (default: 0.0.0.0) */
|
|
27
|
-
bindAddress?: string;
|
|
28
|
-
/** NAS clients configuration */
|
|
29
|
-
clients: IRadiusClient[];
|
|
30
|
-
/** VLAN assignment configuration */
|
|
31
|
-
vlanAssignment?: IVlanManagerConfig & {
|
|
32
|
-
/** Static MAC to VLAN mappings */
|
|
33
|
-
mappings?: Array<Omit<IMacVlanMapping, 'createdAt' | 'updatedAt'>>;
|
|
34
|
-
};
|
|
35
|
-
/** Accounting configuration */
|
|
36
|
-
accounting?: IAccountingManagerConfig & {
|
|
37
|
-
/** Whether accounting is enabled */
|
|
38
|
-
enabled: boolean;
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* RADIUS authentication result
|
|
43
|
-
*/
|
|
44
|
-
export interface IRadiusAuthResult {
|
|
45
|
-
/** Whether authentication was successful */
|
|
46
|
-
success: boolean;
|
|
47
|
-
/** Reject reason (if not successful) */
|
|
48
|
-
rejectReason?: string;
|
|
49
|
-
/** Reply message to send to client */
|
|
50
|
-
replyMessage?: string;
|
|
51
|
-
/** Session timeout in seconds */
|
|
52
|
-
sessionTimeout?: number;
|
|
53
|
-
/** Idle timeout in seconds */
|
|
54
|
-
idleTimeout?: number;
|
|
55
|
-
/** VLAN to assign */
|
|
56
|
-
vlanId?: number;
|
|
57
|
-
/** Framed IP address to assign */
|
|
58
|
-
framedIpAddress?: string;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Authentication request data from RADIUS
|
|
62
|
-
*/
|
|
63
|
-
export interface IAuthRequestData {
|
|
64
|
-
username: string;
|
|
65
|
-
password?: string;
|
|
66
|
-
nasIpAddress: string;
|
|
67
|
-
nasPort?: number;
|
|
68
|
-
nasPortType?: string;
|
|
69
|
-
nasIdentifier?: string;
|
|
70
|
-
calledStationId?: string;
|
|
71
|
-
callingStationId?: string;
|
|
72
|
-
serviceType?: string;
|
|
73
|
-
framedMtu?: number;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* RADIUS Server wrapper that provides:
|
|
77
|
-
* - MAC Authentication Bypass (MAB) for network devices
|
|
78
|
-
* - VLAN assignment based on MAC address
|
|
79
|
-
* - Accounting for session tracking and billing
|
|
80
|
-
* - Integration with SmartProxy routing
|
|
81
|
-
*/
|
|
82
|
-
export declare class RadiusServer {
|
|
83
|
-
private radiusServer?;
|
|
84
|
-
private vlanManager;
|
|
85
|
-
private accountingManager;
|
|
86
|
-
private config;
|
|
87
|
-
private clientSecrets;
|
|
88
|
-
private running;
|
|
89
|
-
private stats;
|
|
90
|
-
constructor(config: IRadiusServerConfig);
|
|
91
|
-
/**
|
|
92
|
-
* Start the RADIUS server
|
|
93
|
-
*/
|
|
94
|
-
start(): Promise<void>;
|
|
95
|
-
/**
|
|
96
|
-
* Stop the RADIUS server
|
|
97
|
-
*/
|
|
98
|
-
stop(): Promise<void>;
|
|
99
|
-
/**
|
|
100
|
-
* Handle authentication request
|
|
101
|
-
*/
|
|
102
|
-
private handleAuthentication;
|
|
103
|
-
/**
|
|
104
|
-
* Handle accounting request
|
|
105
|
-
*/
|
|
106
|
-
private handleAccounting;
|
|
107
|
-
/**
|
|
108
|
-
* Perform MAC Authentication Bypass
|
|
109
|
-
*/
|
|
110
|
-
private performMabAuthentication;
|
|
111
|
-
/**
|
|
112
|
-
* Extract MAC address from authentication data
|
|
113
|
-
*/
|
|
114
|
-
private extractMacAddress;
|
|
115
|
-
/**
|
|
116
|
-
* Check if a string looks like a MAC address
|
|
117
|
-
*/
|
|
118
|
-
private looksLikeMac;
|
|
119
|
-
/**
|
|
120
|
-
* Normalize MAC address format
|
|
121
|
-
*/
|
|
122
|
-
private normalizeMac;
|
|
123
|
-
/**
|
|
124
|
-
* Build client secrets map from configuration
|
|
125
|
-
*/
|
|
126
|
-
private buildClientSecretsMap;
|
|
127
|
-
/**
|
|
128
|
-
* Get default secret for unknown clients
|
|
129
|
-
*/
|
|
130
|
-
private getDefaultSecret;
|
|
131
|
-
/**
|
|
132
|
-
* Add a RADIUS client
|
|
133
|
-
*/
|
|
134
|
-
addClient(client: IRadiusClient): Promise<void>;
|
|
135
|
-
/**
|
|
136
|
-
* Remove a RADIUS client
|
|
137
|
-
*/
|
|
138
|
-
removeClient(name: string): boolean;
|
|
139
|
-
/**
|
|
140
|
-
* Get configured clients
|
|
141
|
-
*/
|
|
142
|
-
getClients(): IRadiusClient[];
|
|
143
|
-
/**
|
|
144
|
-
* Get VLAN manager for direct access to VLAN operations
|
|
145
|
-
*/
|
|
146
|
-
getVlanManager(): VlanManager;
|
|
147
|
-
/**
|
|
148
|
-
* Get accounting manager for direct access to accounting operations
|
|
149
|
-
*/
|
|
150
|
-
getAccountingManager(): AccountingManager;
|
|
151
|
-
/**
|
|
152
|
-
* Get server statistics
|
|
153
|
-
*/
|
|
154
|
-
getStats(): {
|
|
155
|
-
running: boolean;
|
|
156
|
-
uptime: number;
|
|
157
|
-
authRequests: number;
|
|
158
|
-
authAccepts: number;
|
|
159
|
-
authRejects: number;
|
|
160
|
-
accountingRequests: number;
|
|
161
|
-
activeSessions: number;
|
|
162
|
-
vlanMappings: number;
|
|
163
|
-
clients: number;
|
|
164
|
-
};
|
|
165
|
-
/**
|
|
166
|
-
* Check if server is running
|
|
167
|
-
*/
|
|
168
|
-
isRunning(): boolean;
|
|
169
|
-
}
|