@serve.zone/dcrouter 13.17.0 → 13.17.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/dist_serve/bundle.js +3 -3
  2. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  3. package/dist_ts/00_commitinfo_data.js +9 -0
  4. package/dist_ts/acme/index.d.ts +1 -0
  5. package/dist_ts/acme/index.js +2 -0
  6. package/dist_ts/acme/manager.acme-config.d.ts +48 -0
  7. package/dist_ts/acme/manager.acme-config.js +156 -0
  8. package/dist_ts/classes.cert-provision-scheduler.d.ts +52 -0
  9. package/dist_ts/classes.cert-provision-scheduler.js +138 -0
  10. package/dist_ts/classes.dcrouter.d.ts +401 -0
  11. package/dist_ts/classes.dcrouter.js +1852 -0
  12. package/dist_ts/classes.storage-cert-manager.d.ts +15 -0
  13. package/dist_ts/classes.storage-cert-manager.js +53 -0
  14. package/dist_ts/config/classes.api-token-manager.d.ts +44 -0
  15. package/dist_ts/config/classes.api-token-manager.js +180 -0
  16. package/dist_ts/config/classes.db-seeder.d.ts +25 -0
  17. package/dist_ts/config/classes.db-seeder.js +69 -0
  18. package/dist_ts/config/classes.reference-resolver.d.ts +80 -0
  19. package/dist_ts/config/classes.reference-resolver.js +483 -0
  20. package/dist_ts/config/classes.route-config-manager.d.ts +54 -0
  21. package/dist_ts/config/classes.route-config-manager.js +370 -0
  22. package/dist_ts/config/classes.target-profile-manager.d.ts +82 -0
  23. package/dist_ts/config/classes.target-profile-manager.js +349 -0
  24. package/dist_ts/config/index.d.ts +6 -0
  25. package/dist_ts/config/index.js +8 -0
  26. package/dist_ts/config/validator.d.ts +104 -0
  27. package/dist_ts/config/validator.js +152 -0
  28. package/dist_ts/db/classes.cache.cleaner.d.ts +47 -0
  29. package/dist_ts/db/classes.cache.cleaner.js +130 -0
  30. package/dist_ts/db/classes.cached.document.d.ts +76 -0
  31. package/dist_ts/db/classes.cached.document.js +100 -0
  32. package/dist_ts/db/classes.dcrouter-db.d.ts +70 -0
  33. package/dist_ts/db/classes.dcrouter-db.js +146 -0
  34. package/dist_ts/db/documents/classes.accounting-session.doc.d.ts +32 -0
  35. package/dist_ts/db/documents/classes.accounting-session.doc.js +214 -0
  36. package/dist_ts/db/documents/classes.acme-cert.doc.d.ts +13 -0
  37. package/dist_ts/db/documents/classes.acme-cert.doc.js +109 -0
  38. package/dist_ts/db/documents/classes.acme-config.doc.d.ts +22 -0
  39. package/dist_ts/db/documents/classes.acme-config.doc.js +121 -0
  40. package/dist_ts/db/documents/classes.api-token.doc.d.ts +18 -0
  41. package/dist_ts/db/documents/classes.api-token.doc.js +127 -0
  42. package/dist_ts/db/documents/classes.cached.email.d.ts +125 -0
  43. package/dist_ts/db/documents/classes.cached.email.js +337 -0
  44. package/dist_ts/db/documents/classes.cached.ip.reputation.d.ts +119 -0
  45. package/dist_ts/db/documents/classes.cached.ip.reputation.js +323 -0
  46. package/dist_ts/db/documents/classes.cert-backoff.doc.d.ts +11 -0
  47. package/dist_ts/db/documents/classes.cert-backoff.doc.js +97 -0
  48. package/dist_ts/db/documents/classes.dns-provider.doc.d.ts +22 -0
  49. package/dist_ts/db/documents/classes.dns-provider.doc.js +134 -0
  50. package/dist_ts/db/documents/classes.dns-record.doc.d.ts +21 -0
  51. package/dist_ts/db/documents/classes.dns-record.doc.js +143 -0
  52. package/dist_ts/db/documents/classes.domain.doc.d.ts +22 -0
  53. package/dist_ts/db/documents/classes.domain.doc.js +146 -0
  54. package/dist_ts/db/documents/classes.email-domain.doc.d.ts +17 -0
  55. package/dist_ts/db/documents/classes.email-domain.doc.js +124 -0
  56. package/dist_ts/db/documents/classes.network-target.doc.d.ts +15 -0
  57. package/dist_ts/db/documents/classes.network-target.doc.js +118 -0
  58. package/dist_ts/db/documents/classes.proxy-cert.doc.d.ts +12 -0
  59. package/dist_ts/db/documents/classes.proxy-cert.doc.js +103 -0
  60. package/dist_ts/db/documents/classes.remote-ingress-edge.doc.d.ts +17 -0
  61. package/dist_ts/db/documents/classes.remote-ingress-edge.doc.js +130 -0
  62. package/dist_ts/db/documents/classes.route.doc.d.ts +18 -0
  63. package/dist_ts/db/documents/classes.route.doc.js +121 -0
  64. package/dist_ts/db/documents/classes.source-profile.doc.d.ts +15 -0
  65. package/dist_ts/db/documents/classes.source-profile.doc.js +115 -0
  66. package/dist_ts/db/documents/classes.target-profile.doc.d.ts +16 -0
  67. package/dist_ts/db/documents/classes.target-profile.doc.js +121 -0
  68. package/dist_ts/db/documents/classes.vlan-mappings.doc.d.ts +15 -0
  69. package/dist_ts/db/documents/classes.vlan-mappings.doc.js +77 -0
  70. package/dist_ts/db/documents/classes.vpn-client.doc.d.ts +23 -0
  71. package/dist_ts/db/documents/classes.vpn-client.doc.js +172 -0
  72. package/dist_ts/db/documents/classes.vpn-server-keys.doc.d.ts +10 -0
  73. package/dist_ts/db/documents/classes.vpn-server-keys.doc.js +94 -0
  74. package/dist_ts/db/documents/index.d.ts +20 -0
  75. package/dist_ts/db/documents/index.js +30 -0
  76. package/dist_ts/db/index.d.ts +4 -0
  77. package/dist_ts/db/index.js +9 -0
  78. package/dist_ts/dns/index.d.ts +2 -0
  79. package/dist_ts/dns/index.js +3 -0
  80. package/dist_ts/dns/manager.dns.d.ts +267 -0
  81. package/dist_ts/dns/manager.dns.js +906 -0
  82. package/dist_ts/dns/providers/cloudflare.provider.d.ts +21 -0
  83. package/dist_ts/dns/providers/cloudflare.provider.js +106 -0
  84. package/dist_ts/dns/providers/factory.d.ts +23 -0
  85. package/dist_ts/dns/providers/factory.js +47 -0
  86. package/dist_ts/dns/providers/index.d.ts +3 -0
  87. package/dist_ts/dns/providers/index.js +4 -0
  88. package/dist_ts/dns/providers/interfaces.d.ts +54 -0
  89. package/dist_ts/dns/providers/interfaces.js +2 -0
  90. package/dist_ts/email/classes.email-domain.manager.d.ts +46 -0
  91. package/dist_ts/email/classes.email-domain.manager.js +276 -0
  92. package/dist_ts/email/index.d.ts +1 -0
  93. package/dist_ts/email/index.js +2 -0
  94. package/dist_ts/errors/base.errors.d.ts +224 -0
  95. package/dist_ts/errors/base.errors.js +320 -0
  96. package/dist_ts/errors/error-handler.d.ts +98 -0
  97. package/dist_ts/errors/error-handler.js +282 -0
  98. package/dist_ts/errors/error.codes.d.ts +115 -0
  99. package/dist_ts/errors/error.codes.js +136 -0
  100. package/dist_ts/errors/index.d.ts +54 -0
  101. package/dist_ts/errors/index.js +136 -0
  102. package/dist_ts/errors/reputation.errors.d.ts +183 -0
  103. package/dist_ts/errors/reputation.errors.js +292 -0
  104. package/dist_ts/http3/http3-route-augmentation.d.ts +50 -0
  105. package/dist_ts/http3/http3-route-augmentation.js +98 -0
  106. package/dist_ts/http3/index.d.ts +1 -0
  107. package/dist_ts/http3/index.js +2 -0
  108. package/dist_ts/index.d.ts +8 -0
  109. package/dist_ts/index.js +29 -0
  110. package/dist_ts/logger.d.ts +21 -0
  111. package/dist_ts/logger.js +81 -0
  112. package/dist_ts/monitoring/classes.metricscache.d.ts +32 -0
  113. package/dist_ts/monitoring/classes.metricscache.js +63 -0
  114. package/dist_ts/monitoring/classes.metricsmanager.d.ts +235 -0
  115. package/dist_ts/monitoring/classes.metricsmanager.js +875 -0
  116. package/dist_ts/monitoring/index.d.ts +1 -0
  117. package/dist_ts/monitoring/index.js +2 -0
  118. package/dist_ts/opsserver/classes.opsserver.d.ts +47 -0
  119. package/dist_ts/opsserver/classes.opsserver.js +105 -0
  120. package/dist_ts/opsserver/handlers/acme-config.handler.d.ts +16 -0
  121. package/dist_ts/opsserver/handlers/acme-config.handler.js +77 -0
  122. package/dist_ts/opsserver/handlers/admin.handler.d.ts +40 -0
  123. package/dist_ts/opsserver/handlers/admin.handler.js +191 -0
  124. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +6 -0
  125. package/dist_ts/opsserver/handlers/api-token.handler.js +62 -0
  126. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +77 -0
  127. package/dist_ts/opsserver/handlers/certificate.handler.js +574 -0
  128. package/dist_ts/opsserver/handlers/config.handler.d.ts +7 -0
  129. package/dist_ts/opsserver/handlers/config.handler.js +200 -0
  130. package/dist_ts/opsserver/handlers/dns-provider.handler.d.ts +16 -0
  131. package/dist_ts/opsserver/handlers/dns-provider.handler.js +156 -0
  132. package/dist_ts/opsserver/handlers/dns-record.handler.d.ts +13 -0
  133. package/dist_ts/opsserver/handlers/dns-record.handler.js +98 -0
  134. package/dist_ts/opsserver/handlers/domain.handler.d.ts +13 -0
  135. package/dist_ts/opsserver/handlers/domain.handler.js +137 -0
  136. package/dist_ts/opsserver/handlers/email-domain.handler.d.ts +16 -0
  137. package/dist_ts/opsserver/handlers/email-domain.handler.js +150 -0
  138. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +30 -0
  139. package/dist_ts/opsserver/handlers/email-ops.handler.js +227 -0
  140. package/dist_ts/opsserver/handlers/index.d.ts +21 -0
  141. package/dist_ts/opsserver/handlers/index.js +22 -0
  142. package/dist_ts/opsserver/handlers/logs.handler.d.ts +25 -0
  143. package/dist_ts/opsserver/handlers/logs.handler.js +264 -0
  144. package/dist_ts/opsserver/handlers/network-target.handler.d.ts +10 -0
  145. package/dist_ts/opsserver/handlers/network-target.handler.js +117 -0
  146. package/dist_ts/opsserver/handlers/radius.handler.d.ts +6 -0
  147. package/dist_ts/opsserver/handlers/radius.handler.js +295 -0
  148. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +6 -0
  149. package/dist_ts/opsserver/handlers/remoteingress.handler.js +156 -0
  150. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +14 -0
  151. package/dist_ts/opsserver/handlers/route-management.handler.js +98 -0
  152. package/dist_ts/opsserver/handlers/security.handler.d.ts +9 -0
  153. package/dist_ts/opsserver/handlers/security.handler.js +237 -0
  154. package/dist_ts/opsserver/handlers/source-profile.handler.d.ts +10 -0
  155. package/dist_ts/opsserver/handlers/source-profile.handler.js +119 -0
  156. package/dist_ts/opsserver/handlers/stats.handler.d.ts +11 -0
  157. package/dist_ts/opsserver/handlers/stats.handler.js +461 -0
  158. package/dist_ts/opsserver/handlers/target-profile.handler.d.ts +10 -0
  159. package/dist_ts/opsserver/handlers/target-profile.handler.js +117 -0
  160. package/dist_ts/opsserver/handlers/users.handler.d.ts +12 -0
  161. package/dist_ts/opsserver/handlers/users.handler.js +24 -0
  162. package/dist_ts/opsserver/handlers/vpn.handler.d.ts +6 -0
  163. package/dist_ts/opsserver/handlers/vpn.handler.js +262 -0
  164. package/dist_ts/opsserver/helpers/guards.d.ts +27 -0
  165. package/dist_ts/opsserver/helpers/guards.js +43 -0
  166. package/dist_ts/opsserver/index.d.ts +1 -0
  167. package/dist_ts/opsserver/index.js +2 -0
  168. package/dist_ts/paths.d.ts +25 -0
  169. package/dist_ts/paths.js +44 -0
  170. package/dist_ts/plugins.d.ts +81 -0
  171. package/dist_ts/plugins.js +115 -0
  172. package/dist_ts/radius/classes.accounting.manager.d.ts +223 -0
  173. package/dist_ts/radius/classes.accounting.manager.js +449 -0
  174. package/dist_ts/radius/classes.radius.server.d.ts +169 -0
  175. package/dist_ts/radius/classes.radius.server.js +384 -0
  176. package/dist_ts/radius/classes.vlan.manager.d.ts +124 -0
  177. package/dist_ts/radius/classes.vlan.manager.js +272 -0
  178. package/dist_ts/radius/index.d.ts +13 -0
  179. package/dist_ts/radius/index.js +14 -0
  180. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +92 -0
  181. package/dist_ts/remoteingress/classes.remoteingress-manager.js +291 -0
  182. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +59 -0
  183. package/dist_ts/remoteingress/classes.tunnel-manager.js +165 -0
  184. package/dist_ts/remoteingress/index.d.ts +2 -0
  185. package/dist_ts/remoteingress/index.js +3 -0
  186. package/dist_ts/security/classes.contentscanner.d.ts +164 -0
  187. package/dist_ts/security/classes.contentscanner.js +642 -0
  188. package/dist_ts/security/classes.ipreputationchecker.d.ts +145 -0
  189. package/dist_ts/security/classes.ipreputationchecker.js +458 -0
  190. package/dist_ts/security/classes.securitylogger.d.ts +144 -0
  191. package/dist_ts/security/classes.securitylogger.js +235 -0
  192. package/dist_ts/security/index.d.ts +3 -0
  193. package/dist_ts/security/index.js +4 -0
  194. package/dist_ts/sms/classes.smsservice.d.ts +15 -0
  195. package/dist_ts/sms/classes.smsservice.js +72 -0
  196. package/dist_ts/sms/config/sms.config.d.ts +93 -0
  197. package/dist_ts/sms/config/sms.config.js +2 -0
  198. package/dist_ts/sms/config/sms.schema.d.ts +5 -0
  199. package/dist_ts/sms/config/sms.schema.js +121 -0
  200. package/dist_ts/sms/index.d.ts +1 -0
  201. package/dist_ts/sms/index.js +2 -0
  202. package/dist_ts/vpn/classes.vpn-manager.d.ts +159 -0
  203. package/dist_ts/vpn/classes.vpn-manager.js +459 -0
  204. package/dist_ts/vpn/index.d.ts +1 -0
  205. package/dist_ts/vpn/index.js +2 -0
  206. package/dist_ts_apiclient/classes.apitoken.d.ts +41 -0
  207. package/dist_ts_apiclient/classes.apitoken.js +115 -0
  208. package/dist_ts_apiclient/classes.certificate.d.ts +57 -0
  209. package/dist_ts_apiclient/classes.certificate.js +69 -0
  210. package/dist_ts_apiclient/classes.config.d.ts +7 -0
  211. package/dist_ts_apiclient/classes.config.js +11 -0
  212. package/dist_ts_apiclient/classes.dcrouterapiclient.d.ts +41 -0
  213. package/dist_ts_apiclient/classes.dcrouterapiclient.js +81 -0
  214. package/dist_ts_apiclient/classes.email.d.ts +30 -0
  215. package/dist_ts_apiclient/classes.email.js +52 -0
  216. package/dist_ts_apiclient/classes.logs.d.ts +21 -0
  217. package/dist_ts_apiclient/classes.logs.js +14 -0
  218. package/dist_ts_apiclient/classes.radius.d.ts +59 -0
  219. package/dist_ts_apiclient/classes.radius.js +95 -0
  220. package/dist_ts_apiclient/classes.remoteingress.d.ts +54 -0
  221. package/dist_ts_apiclient/classes.remoteingress.js +136 -0
  222. package/dist_ts_apiclient/classes.route.d.ts +39 -0
  223. package/dist_ts_apiclient/classes.route.js +125 -0
  224. package/dist_ts_apiclient/classes.stats.d.ts +47 -0
  225. package/dist_ts_apiclient/classes.stats.js +38 -0
  226. package/dist_ts_apiclient/index.d.ts +10 -0
  227. package/dist_ts_apiclient/index.js +14 -0
  228. package/dist_ts_apiclient/plugins.d.ts +3 -0
  229. package/dist_ts_apiclient/plugins.js +5 -0
  230. package/dist_ts_interfaces/data/acme-config.d.ts +25 -0
  231. package/dist_ts_interfaces/data/acme-config.js +2 -0
  232. package/dist_ts_interfaces/data/auth.d.ts +8 -0
  233. package/dist_ts_interfaces/data/auth.js +2 -0
  234. package/dist_ts_interfaces/data/dns-provider.d.ts +136 -0
  235. package/dist_ts_interfaces/data/dns-provider.js +41 -0
  236. package/dist_ts_interfaces/data/dns-record.d.ts +42 -0
  237. package/dist_ts_interfaces/data/dns-record.js +2 -0
  238. package/dist_ts_interfaces/data/domain.d.ts +35 -0
  239. package/dist_ts_interfaces/data/domain.js +2 -0
  240. package/dist_ts_interfaces/data/email-domain.d.ts +70 -0
  241. package/dist_ts_interfaces/data/email-domain.js +2 -0
  242. package/dist_ts_interfaces/data/index.d.ts +11 -0
  243. package/dist_ts_interfaces/data/index.js +12 -0
  244. package/dist_ts_interfaces/data/remoteingress.d.ts +60 -0
  245. package/dist_ts_interfaces/data/remoteingress.js +2 -0
  246. package/dist_ts_interfaces/data/route-management.d.ts +110 -0
  247. package/dist_ts_interfaces/data/route-management.js +2 -0
  248. package/dist_ts_interfaces/data/stats.d.ts +239 -0
  249. package/dist_ts_interfaces/data/stats.js +2 -0
  250. package/dist_ts_interfaces/data/target-profile.d.ts +28 -0
  251. package/dist_ts_interfaces/data/target-profile.js +2 -0
  252. package/dist_ts_interfaces/data/vpn.d.ts +61 -0
  253. package/dist_ts_interfaces/data/vpn.js +2 -0
  254. package/dist_ts_interfaces/index.d.ts +5 -0
  255. package/dist_ts_interfaces/index.js +8 -0
  256. package/dist_ts_interfaces/plugins.d.ts +2 -0
  257. package/dist_ts_interfaces/plugins.js +4 -0
  258. package/dist_ts_interfaces/requests/acme-config.d.ts +42 -0
  259. package/dist_ts_interfaces/requests/acme-config.js +2 -0
  260. package/dist_ts_interfaces/requests/admin.d.ts +31 -0
  261. package/dist_ts_interfaces/requests/admin.js +3 -0
  262. package/dist_ts_interfaces/requests/api-tokens.d.ts +79 -0
  263. package/dist_ts_interfaces/requests/api-tokens.js +2 -0
  264. package/dist_ts_interfaces/requests/certificate.d.ts +111 -0
  265. package/dist_ts_interfaces/requests/certificate.js +3 -0
  266. package/dist_ts_interfaces/requests/combined.stats.d.ts +28 -0
  267. package/dist_ts_interfaces/requests/combined.stats.js +2 -0
  268. package/dist_ts_interfaces/requests/config.d.ts +90 -0
  269. package/dist_ts_interfaces/requests/config.js +3 -0
  270. package/dist_ts_interfaces/requests/dns-providers.d.ts +117 -0
  271. package/dist_ts_interfaces/requests/dns-providers.js +2 -0
  272. package/dist_ts_interfaces/requests/dns-records.d.ts +89 -0
  273. package/dist_ts_interfaces/requests/dns-records.js +2 -0
  274. package/dist_ts_interfaces/requests/domains.d.ts +142 -0
  275. package/dist_ts_interfaces/requests/domains.js +2 -0
  276. package/dist_ts_interfaces/requests/email-domains.d.ts +142 -0
  277. package/dist_ts_interfaces/requests/email-domains.js +2 -0
  278. package/dist_ts_interfaces/requests/email-ops.d.ts +82 -0
  279. package/dist_ts_interfaces/requests/email-ops.js +3 -0
  280. package/dist_ts_interfaces/requests/index.d.ts +21 -0
  281. package/dist_ts_interfaces/requests/index.js +22 -0
  282. package/dist_ts_interfaces/requests/logs.d.ts +41 -0
  283. package/dist_ts_interfaces/requests/logs.js +4 -0
  284. package/dist_ts_interfaces/requests/network-targets.d.ts +102 -0
  285. package/dist_ts_interfaces/requests/network-targets.js +2 -0
  286. package/dist_ts_interfaces/requests/radius.d.ts +268 -0
  287. package/dist_ts_interfaces/requests/radius.js +3 -0
  288. package/dist_ts_interfaces/requests/remoteingress.d.ts +108 -0
  289. package/dist_ts_interfaces/requests/remoteingress.js +3 -0
  290. package/dist_ts_interfaces/requests/route-management.d.ts +85 -0
  291. package/dist_ts_interfaces/requests/route-management.js +2 -0
  292. package/dist_ts_interfaces/requests/source-profiles.d.ts +102 -0
  293. package/dist_ts_interfaces/requests/source-profiles.js +2 -0
  294. package/dist_ts_interfaces/requests/stats.d.ts +177 -0
  295. package/dist_ts_interfaces/requests/stats.js +4 -0
  296. package/dist_ts_interfaces/requests/target-profiles.d.ts +103 -0
  297. package/dist_ts_interfaces/requests/target-profiles.js +2 -0
  298. package/dist_ts_interfaces/requests/users.d.ts +19 -0
  299. package/dist_ts_interfaces/requests/users.js +3 -0
  300. package/dist_ts_interfaces/requests/vpn.d.ts +177 -0
  301. package/dist_ts_interfaces/requests/vpn.js +3 -0
  302. package/dist_ts_migrations/index.d.ts +28 -0
  303. package/dist_ts_migrations/index.js +82 -0
  304. package/dist_ts_oci_container/index.d.ts +8 -0
  305. package/dist_ts_oci_container/index.js +110 -0
  306. package/dist_ts_oci_container/plugins.d.ts +3 -0
  307. package/dist_ts_oci_container/plugins.js +4 -0
  308. package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
  309. package/dist_ts_web/00_commitinfo_data.js +9 -0
  310. package/dist_ts_web/appstate.d.ts +478 -0
  311. package/dist_ts_web/appstate.js +1968 -0
  312. package/dist_ts_web/elements/access/index.d.ts +2 -0
  313. package/dist_ts_web/elements/access/index.js +3 -0
  314. package/dist_ts_web/elements/access/ops-view-apitokens.d.ts +13 -0
  315. package/dist_ts_web/elements/access/ops-view-apitokens.js +372 -0
  316. package/dist_ts_web/elements/access/ops-view-users.d.ts +11 -0
  317. package/dist_ts_web/elements/access/ops-view-users.js +190 -0
  318. package/dist_ts_web/elements/domains/dns-provider-form.d.ts +60 -0
  319. package/dist_ts_web/elements/domains/dns-provider-form.js +259 -0
  320. package/dist_ts_web/elements/domains/index.d.ts +5 -0
  321. package/dist_ts_web/elements/domains/index.js +6 -0
  322. package/dist_ts_web/elements/domains/ops-view-certificates.d.ts +25 -0
  323. package/dist_ts_web/elements/domains/ops-view-certificates.js +669 -0
  324. package/dist_ts_web/elements/domains/ops-view-dns.d.ts +17 -0
  325. package/dist_ts_web/elements/domains/ops-view-dns.js +305 -0
  326. package/dist_ts_web/elements/domains/ops-view-domains.d.ts +19 -0
  327. package/dist_ts_web/elements/domains/ops-view-domains.js +456 -0
  328. package/dist_ts_web/elements/domains/ops-view-providers.d.ts +21 -0
  329. package/dist_ts_web/elements/domains/ops-view-providers.js +330 -0
  330. package/dist_ts_web/elements/email/index.d.ts +3 -0
  331. package/dist_ts_web/elements/email/index.js +4 -0
  332. package/dist_ts_web/elements/email/ops-view-email-domains.d.ts +19 -0
  333. package/dist_ts_web/elements/email/ops-view-email-domains.js +410 -0
  334. package/dist_ts_web/elements/email/ops-view-email-security.d.ts +14 -0
  335. package/dist_ts_web/elements/email/ops-view-email-security.js +178 -0
  336. package/dist_ts_web/elements/email/ops-view-emails.d.ts +21 -0
  337. package/dist_ts_web/elements/email/ops-view-emails.js +165 -0
  338. package/dist_ts_web/elements/index.d.ts +9 -0
  339. package/dist_ts_web/elements/index.js +10 -0
  340. package/dist_ts_web/elements/network/index.d.ts +7 -0
  341. package/dist_ts_web/elements/network/index.js +8 -0
  342. package/dist_ts_web/elements/network/ops-view-network-activity.d.ts +60 -0
  343. package/dist_ts_web/elements/network/ops-view-network-activity.js +754 -0
  344. package/dist_ts_web/elements/network/ops-view-networktargets.d.ts +17 -0
  345. package/dist_ts_web/elements/network/ops-view-networktargets.js +255 -0
  346. package/dist_ts_web/elements/network/ops-view-remoteingress.d.ts +20 -0
  347. package/dist_ts_web/elements/network/ops-view-remoteingress.js +497 -0
  348. package/dist_ts_web/elements/network/ops-view-routes.d.ts +17 -0
  349. package/dist_ts_web/elements/network/ops-view-routes.js +700 -0
  350. package/dist_ts_web/elements/network/ops-view-sourceprofiles.d.ts +17 -0
  351. package/dist_ts_web/elements/network/ops-view-sourceprofiles.js +278 -0
  352. package/dist_ts_web/elements/network/ops-view-targetprofiles.d.ts +21 -0
  353. package/dist_ts_web/elements/network/ops-view-targetprofiles.js +420 -0
  354. package/dist_ts_web/elements/network/ops-view-vpn.d.ts +31 -0
  355. package/dist_ts_web/elements/network/ops-view-vpn.js +873 -0
  356. package/dist_ts_web/elements/ops-dashboard.d.ts +31 -0
  357. package/dist_ts_web/elements/ops-dashboard.js +405 -0
  358. package/dist_ts_web/elements/ops-view-logs.d.ts +13 -0
  359. package/dist_ts_web/elements/ops-view-logs.js +159 -0
  360. package/dist_ts_web/elements/overview/index.d.ts +2 -0
  361. package/dist_ts_web/elements/overview/index.js +3 -0
  362. package/dist_ts_web/elements/overview/ops-view-config.d.ts +19 -0
  363. package/dist_ts_web/elements/overview/ops-view-config.js +339 -0
  364. package/dist_ts_web/elements/overview/ops-view-overview.d.ts +24 -0
  365. package/dist_ts_web/elements/overview/ops-view-overview.js +545 -0
  366. package/dist_ts_web/elements/security/index.d.ts +3 -0
  367. package/dist_ts_web/elements/security/index.js +4 -0
  368. package/dist_ts_web/elements/security/ops-view-security-authentication.d.ts +13 -0
  369. package/dist_ts_web/elements/security/ops-view-security-authentication.js +157 -0
  370. package/dist_ts_web/elements/security/ops-view-security-blocked.d.ts +15 -0
  371. package/dist_ts_web/elements/security/ops-view-security-blocked.js +153 -0
  372. package/dist_ts_web/elements/security/ops-view-security-overview.d.ts +16 -0
  373. package/dist_ts_web/elements/security/ops-view-security-overview.js +205 -0
  374. package/dist_ts_web/elements/shared/css.d.ts +1 -0
  375. package/dist_ts_web/elements/shared/css.js +10 -0
  376. package/dist_ts_web/elements/shared/index.d.ts +1 -0
  377. package/dist_ts_web/elements/shared/index.js +2 -0
  378. package/dist_ts_web/index.d.ts +1 -0
  379. package/dist_ts_web/index.js +10 -0
  380. package/dist_ts_web/plugins.d.ts +7 -0
  381. package/dist_ts_web/plugins.js +13 -0
  382. package/dist_ts_web/router.d.ts +21 -0
  383. package/dist_ts_web/router.js +151 -0
  384. package/package.json +1 -1
  385. package/ts/00_commitinfo_data.ts +1 -1
  386. package/ts/monitoring/classes.metricsmanager.ts +0 -25
  387. package/ts_web/00_commitinfo_data.ts +1 -1
  388. package/ts_web/elements/network/ops-view-routes.ts +9 -1
@@ -0,0 +1,545 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import * as plugins from '../../plugins.js';
36
+ import * as shared from '../shared/index.js';
37
+ import * as appstate from '../../appstate.js';
38
+ import { DeesElement, customElement, html, state, css, cssManager, } from '@design.estate/dees-element';
39
+ import {} from '@design.estate/dees-catalog';
40
+ let OpsViewOverview = (() => {
41
+ let _classDecorators = [customElement('ops-view-overview')];
42
+ let _classDescriptor;
43
+ let _classExtraInitializers = [];
44
+ let _classThis;
45
+ let _classSuper = DeesElement;
46
+ let _statsState_decorators;
47
+ let _statsState_initializers = [];
48
+ let _statsState_extraInitializers = [];
49
+ let _logState_decorators;
50
+ let _logState_initializers = [];
51
+ let _logState_extraInitializers = [];
52
+ var OpsViewOverview = class extends _classSuper {
53
+ static { _classThis = this; }
54
+ static {
55
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
56
+ _statsState_decorators = [state()];
57
+ _logState_decorators = [state()];
58
+ __esDecorate(this, null, _statsState_decorators, { kind: "accessor", name: "statsState", static: false, private: false, access: { has: obj => "statsState" in obj, get: obj => obj.statsState, set: (obj, value) => { obj.statsState = value; } }, metadata: _metadata }, _statsState_initializers, _statsState_extraInitializers);
59
+ __esDecorate(this, null, _logState_decorators, { kind: "accessor", name: "logState", static: false, private: false, access: { has: obj => "logState" in obj, get: obj => obj.logState, set: (obj, value) => { obj.logState = value; } }, metadata: _metadata }, _logState_initializers, _logState_extraInitializers);
60
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
61
+ OpsViewOverview = _classThis = _classDescriptor.value;
62
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
63
+ }
64
+ #statsState_accessor_storage = __runInitializers(this, _statsState_initializers, {
65
+ serverStats: null,
66
+ emailStats: null,
67
+ dnsStats: null,
68
+ securityMetrics: null,
69
+ radiusStats: null,
70
+ vpnStats: null,
71
+ lastUpdated: 0,
72
+ isLoading: false,
73
+ error: null,
74
+ });
75
+ get statsState() { return this.#statsState_accessor_storage; }
76
+ set statsState(value) { this.#statsState_accessor_storage = value; }
77
+ #logState_accessor_storage = (__runInitializers(this, _statsState_extraInitializers), __runInitializers(this, _logState_initializers, {
78
+ recentLogs: [],
79
+ isStreaming: false,
80
+ filters: {},
81
+ }));
82
+ get logState() { return this.#logState_accessor_storage; }
83
+ set logState(value) { this.#logState_accessor_storage = value; }
84
+ constructor() {
85
+ super();
86
+ __runInitializers(this, _logState_extraInitializers);
87
+ const statsSub = appstate.statsStatePart
88
+ .select((stateArg) => stateArg)
89
+ .subscribe((statsState) => {
90
+ this.statsState = statsState;
91
+ });
92
+ this.rxSubscriptions.push(statsSub);
93
+ const logSub = appstate.logStatePart
94
+ .select((stateArg) => stateArg)
95
+ .subscribe((logState) => {
96
+ this.logState = logState;
97
+ });
98
+ this.rxSubscriptions.push(logSub);
99
+ }
100
+ async connectedCallback() {
101
+ super.connectedCallback();
102
+ // Ensure logs are fetched for the overview charts
103
+ if (this.logState.recentLogs.length === 0) {
104
+ appstate.logStatePart.dispatchAction(appstate.fetchRecentLogsAction, { limit: 100 });
105
+ }
106
+ }
107
+ static styles = [
108
+ cssManager.defaultStyles,
109
+ shared.viewHostCss,
110
+ css `
111
+ .chartGrid {
112
+ display: grid;
113
+ grid-template-columns: repeat(2, 1fr);
114
+ grid-gap: 16px;
115
+ margin-top: 32px;
116
+ }
117
+
118
+ .loadingMessage {
119
+ text-align: center;
120
+ padding: 40px;
121
+ color: ${cssManager.bdTheme('#666', '#999')};
122
+ }
123
+
124
+ .errorMessage {
125
+ background-color: ${cssManager.bdTheme('#fee', '#4a1f1f')};
126
+ border: 1px solid ${cssManager.bdTheme('#fcc', '#6a2f2f')};
127
+ border-radius: 4px;
128
+ padding: 16px;
129
+ color: ${cssManager.bdTheme('#c00', '#ff6666')};
130
+ margin: 16px 0;
131
+ }
132
+
133
+ dees-statsgrid {
134
+ margin-bottom: 32px;
135
+ }
136
+ `,
137
+ ];
138
+ render() {
139
+ return html `
140
+ <dees-heading level="3">Stats</dees-heading>
141
+
142
+ ${this.statsState.isLoading ? html `
143
+ <div class="loadingMessage">
144
+ <dees-spinner></dees-spinner>
145
+ <p>Loading statistics...</p>
146
+ </div>
147
+ ` : this.statsState.error ? html `
148
+ <div class="errorMessage">
149
+ Error loading statistics: ${this.statsState.error}
150
+ </div>
151
+ ` : html `
152
+ ${this.renderServerStats()}
153
+
154
+ ${this.renderEmailStats()}
155
+
156
+ ${this.renderDnsStats()}
157
+
158
+ ${this.renderRadiusStats()}
159
+
160
+ ${this.renderVpnStats()}
161
+
162
+ <dees-heading level="hr">Activity Charts</dees-heading>
163
+ <div class="chartGrid">
164
+ <dees-chart-area
165
+ .label=${'Email Traffic (24h)'}
166
+ .series=${this.getEmailTrafficSeries()}
167
+ .realtimeMode=${true}
168
+ .rollingWindow=${86400000}
169
+ .yAxisFormatter=${(val) => `${val}`}
170
+ ></dees-chart-area>
171
+ <dees-chart-area
172
+ .label=${'DNS Queries (24h)'}
173
+ .series=${this.getDnsQuerySeries()}
174
+ .realtimeMode=${true}
175
+ .rollingWindow=${86400000}
176
+ .yAxisFormatter=${(val) => `${val}`}
177
+ ></dees-chart-area>
178
+ <dees-chart-log
179
+ .label=${'Recent Events'}
180
+ .logEntries=${this.getRecentEventEntries()}
181
+ ></dees-chart-log>
182
+ <dees-chart-log
183
+ .label=${'DNS Queries'}
184
+ .logEntries=${this.getDnsQueryEntries()}
185
+ ></dees-chart-log>
186
+ </div>
187
+ `}
188
+ `;
189
+ }
190
+ formatUptime(seconds) {
191
+ const days = Math.floor(seconds / 86400);
192
+ const hours = Math.floor((seconds % 86400) / 3600);
193
+ const minutes = Math.floor((seconds % 3600) / 60);
194
+ const secs = Math.floor(seconds % 60);
195
+ if (days > 0) {
196
+ return `${days}d ${hours}h ${minutes}m ${secs}s`;
197
+ }
198
+ else if (hours > 0) {
199
+ return `${hours}h ${minutes}m ${secs}s`;
200
+ }
201
+ else if (minutes > 0) {
202
+ return `${minutes}m ${secs}s`;
203
+ }
204
+ else {
205
+ return `${secs}s`;
206
+ }
207
+ }
208
+ formatBytes(bytes) {
209
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
210
+ let size = bytes;
211
+ let unitIndex = 0;
212
+ while (size >= 1024 && unitIndex < units.length - 1) {
213
+ size /= 1024;
214
+ unitIndex++;
215
+ }
216
+ return `${size.toFixed(1)} ${units[unitIndex]}`;
217
+ }
218
+ formatBitsPerSecond(bytesPerSecond) {
219
+ const bitsPerSecond = bytesPerSecond * 8;
220
+ const units = ['bit/s', 'kbit/s', 'Mbit/s', 'Gbit/s'];
221
+ let size = bitsPerSecond;
222
+ let unitIndex = 0;
223
+ while (size >= 1000 && unitIndex < units.length - 1) {
224
+ size /= 1000;
225
+ unitIndex++;
226
+ }
227
+ return `${size.toFixed(1)} ${units[unitIndex]}`;
228
+ }
229
+ renderServerStats() {
230
+ if (!this.statsState.serverStats)
231
+ return html ``;
232
+ const cpuUsage = Math.round(this.statsState.serverStats.cpuUsage.user);
233
+ const memoryUsage = this.statsState.serverStats.memoryUsage.actualUsagePercentage !== undefined
234
+ ? Math.round(this.statsState.serverStats.memoryUsage.actualUsagePercentage)
235
+ : Math.round((this.statsState.serverStats.memoryUsage.heapUsed / this.statsState.serverStats.memoryUsage.heapTotal) * 100);
236
+ const tiles = [
237
+ {
238
+ id: 'status',
239
+ title: 'Server Status',
240
+ value: this.statsState.serverStats.uptime ? 'Online' : 'Offline',
241
+ type: 'text',
242
+ icon: 'lucide:Server',
243
+ color: this.statsState.serverStats.uptime ? '#22c55e' : '#ef4444',
244
+ description: `Uptime: ${this.formatUptime(this.statsState.serverStats.uptime)}`,
245
+ },
246
+ {
247
+ id: 'connections',
248
+ title: 'Active Connections',
249
+ value: this.statsState.serverStats.activeConnections,
250
+ type: 'number',
251
+ icon: 'lucide:Network',
252
+ color: '#3b82f6',
253
+ description: `Total: ${this.statsState.serverStats.totalConnections}`,
254
+ },
255
+ {
256
+ id: 'throughputIn',
257
+ title: 'Throughput In',
258
+ value: this.formatBitsPerSecond(this.statsState.serverStats.throughput?.bytesInPerSecond || 0),
259
+ type: 'text',
260
+ icon: 'lucide:Download',
261
+ color: '#22c55e',
262
+ description: `Total: ${this.formatBytes(this.statsState.serverStats.throughput?.bytesIn || 0)}`,
263
+ },
264
+ {
265
+ id: 'throughputOut',
266
+ title: 'Throughput Out',
267
+ value: this.formatBitsPerSecond(this.statsState.serverStats.throughput?.bytesOutPerSecond || 0),
268
+ type: 'text',
269
+ icon: 'lucide:Upload',
270
+ color: '#8b5cf6',
271
+ description: `Total: ${this.formatBytes(this.statsState.serverStats.throughput?.bytesOut || 0)}`,
272
+ },
273
+ {
274
+ id: 'cpu',
275
+ title: 'CPU Usage',
276
+ value: cpuUsage,
277
+ type: 'gauge',
278
+ icon: 'lucide:Cpu',
279
+ gaugeOptions: {
280
+ min: 0,
281
+ max: 100,
282
+ thresholds: [
283
+ { value: 0, color: '#22c55e' },
284
+ { value: 60, color: '#f59e0b' },
285
+ { value: 80, color: '#ef4444' },
286
+ ],
287
+ },
288
+ },
289
+ {
290
+ id: 'memory',
291
+ title: 'Memory Usage',
292
+ value: memoryUsage,
293
+ type: 'percentage',
294
+ icon: 'lucide:MemoryStick',
295
+ color: memoryUsage > 80 ? '#ef4444' : memoryUsage > 60 ? '#f59e0b' : '#22c55e',
296
+ description: this.statsState.serverStats.memoryUsage.actualUsageBytes !== undefined && this.statsState.serverStats.memoryUsage.maxMemoryMB !== undefined
297
+ ? `${this.formatBytes(this.statsState.serverStats.memoryUsage.actualUsageBytes)} / ${this.formatBytes(this.statsState.serverStats.memoryUsage.maxMemoryMB * 1024 * 1024)}`
298
+ : `${this.formatBytes(this.statsState.serverStats.memoryUsage.rss)} / ${this.formatBytes(this.statsState.serverStats.memoryUsage.heapTotal)}`,
299
+ },
300
+ ];
301
+ return html `
302
+ <dees-statsgrid
303
+ .tiles=${tiles}
304
+ .gridActions=${[
305
+ {
306
+ name: 'Refresh',
307
+ iconName: 'lucide:RefreshCw',
308
+ action: async () => {
309
+ await appstate.statsStatePart.dispatchAction(appstate.fetchAllStatsAction, null);
310
+ },
311
+ },
312
+ ]}
313
+ ></dees-statsgrid>
314
+ `;
315
+ }
316
+ renderEmailStats() {
317
+ if (!this.statsState.emailStats)
318
+ return html ``;
319
+ const deliveryRate = this.statsState.emailStats.deliveryRate || 0;
320
+ const bounceRate = this.statsState.emailStats.bounceRate || 0;
321
+ const tiles = [
322
+ {
323
+ id: 'sent',
324
+ title: 'Emails Sent',
325
+ value: this.statsState.emailStats.sent,
326
+ type: 'number',
327
+ icon: 'lucide:Send',
328
+ color: '#22c55e',
329
+ description: `Delivery rate: ${(deliveryRate * 100).toFixed(1)}%`,
330
+ },
331
+ {
332
+ id: 'received',
333
+ title: 'Emails Received',
334
+ value: this.statsState.emailStats.received,
335
+ type: 'number',
336
+ icon: 'lucide:Mail',
337
+ color: '#3b82f6',
338
+ },
339
+ {
340
+ id: 'queued',
341
+ title: 'Queued',
342
+ value: this.statsState.emailStats.queued,
343
+ type: 'number',
344
+ icon: 'lucide:Clock',
345
+ color: '#f59e0b',
346
+ description: 'Pending delivery',
347
+ },
348
+ {
349
+ id: 'failed',
350
+ title: 'Failed',
351
+ value: this.statsState.emailStats.failed,
352
+ type: 'number',
353
+ icon: 'lucide:TriangleAlert',
354
+ color: '#ef4444',
355
+ description: `Bounce rate: ${(bounceRate * 100).toFixed(1)}%`,
356
+ },
357
+ ];
358
+ return html `
359
+ <dees-heading level="hr">Email Statistics</dees-heading>
360
+ <dees-statsgrid .tiles=${tiles}></dees-statsgrid>
361
+ `;
362
+ }
363
+ renderDnsStats() {
364
+ if (!this.statsState.dnsStats)
365
+ return html ``;
366
+ const cacheHitRate = Math.round(this.statsState.dnsStats.cacheHitRate * 100);
367
+ const tiles = [
368
+ {
369
+ id: 'queries',
370
+ title: 'DNS Queries',
371
+ value: this.statsState.dnsStats.totalQueries,
372
+ type: 'number',
373
+ icon: 'lucide:Globe',
374
+ color: '#3b82f6',
375
+ description: 'Total queries handled',
376
+ },
377
+ {
378
+ id: 'cacheRate',
379
+ title: 'Cache Hit Rate',
380
+ value: cacheHitRate,
381
+ type: 'percentage',
382
+ icon: 'lucide:Database',
383
+ color: cacheHitRate > 80 ? '#22c55e' : cacheHitRate > 60 ? '#f59e0b' : '#ef4444',
384
+ description: `${this.statsState.dnsStats.cacheHits} hits / ${this.statsState.dnsStats.cacheMisses} misses`,
385
+ },
386
+ {
387
+ id: 'domains',
388
+ title: 'Active Domains',
389
+ value: this.statsState.dnsStats.activeDomains,
390
+ type: 'number',
391
+ icon: 'lucide:Network',
392
+ color: '#8b5cf6',
393
+ },
394
+ {
395
+ id: 'responseTime',
396
+ title: 'Avg Response Time',
397
+ value: this.statsState.dnsStats.averageResponseTime.toFixed(1),
398
+ unit: 'ms',
399
+ type: 'number',
400
+ icon: 'lucide:History',
401
+ color: this.statsState.dnsStats.averageResponseTime < 50 ? '#22c55e' : '#f59e0b',
402
+ },
403
+ ];
404
+ return html `
405
+ <dees-heading level="hr">DNS Statistics</dees-heading>
406
+ <dees-statsgrid .tiles=${tiles}></dees-statsgrid>
407
+ `;
408
+ }
409
+ renderRadiusStats() {
410
+ if (!this.statsState.radiusStats)
411
+ return html ``;
412
+ const stats = this.statsState.radiusStats;
413
+ const authTotal = stats.authRequests || 0;
414
+ const acceptRate = authTotal > 0 ? ((stats.authAccepts / authTotal) * 100).toFixed(1) : '0.0';
415
+ const tiles = [
416
+ {
417
+ id: 'radiusStatus',
418
+ title: 'RADIUS Status',
419
+ value: stats.running ? 'Running' : 'Stopped',
420
+ type: 'text',
421
+ icon: 'lucide:ShieldCheck',
422
+ color: stats.running ? '#22c55e' : '#ef4444',
423
+ description: stats.running ? `Uptime: ${this.formatUptime(stats.uptime / 1000)}` : undefined,
424
+ },
425
+ {
426
+ id: 'authRequests',
427
+ title: 'Auth Requests',
428
+ value: stats.authRequests,
429
+ type: 'number',
430
+ icon: 'lucide:KeyRound',
431
+ color: '#3b82f6',
432
+ description: `Accept rate: ${acceptRate}% (${stats.authAccepts} / ${stats.authRejects} rejected)`,
433
+ },
434
+ {
435
+ id: 'activeSessions',
436
+ title: 'Active Sessions',
437
+ value: stats.activeSessions,
438
+ type: 'number',
439
+ icon: 'lucide:Users',
440
+ color: '#8b5cf6',
441
+ },
442
+ {
443
+ id: 'radiusTraffic',
444
+ title: 'Data Transfer',
445
+ value: this.formatBytes(stats.totalInputBytes + stats.totalOutputBytes),
446
+ type: 'text',
447
+ icon: 'lucide:ArrowLeftRight',
448
+ color: '#f59e0b',
449
+ description: `In: ${this.formatBytes(stats.totalInputBytes)} / Out: ${this.formatBytes(stats.totalOutputBytes)}`,
450
+ },
451
+ ];
452
+ return html `
453
+ <dees-heading level="hr">RADIUS Statistics</dees-heading>
454
+ <dees-statsgrid .tiles=${tiles}></dees-statsgrid>
455
+ `;
456
+ }
457
+ renderVpnStats() {
458
+ if (!this.statsState.vpnStats)
459
+ return html ``;
460
+ const stats = this.statsState.vpnStats;
461
+ const tiles = [
462
+ {
463
+ id: 'vpnStatus',
464
+ title: 'VPN Status',
465
+ value: stats.running ? 'Running' : 'Stopped',
466
+ type: 'text',
467
+ icon: 'lucide:Shield',
468
+ color: stats.running ? '#22c55e' : '#ef4444',
469
+ description: `Subnet: ${stats.subnet}`,
470
+ },
471
+ {
472
+ id: 'connectedClients',
473
+ title: 'Connected Clients',
474
+ value: stats.connectedClients,
475
+ type: 'number',
476
+ icon: 'lucide:Wifi',
477
+ color: '#3b82f6',
478
+ description: `${stats.registeredClients} registered`,
479
+ },
480
+ {
481
+ id: 'wgPort',
482
+ title: 'WireGuard Port',
483
+ value: stats.wgListenPort,
484
+ type: 'number',
485
+ icon: 'lucide:Network',
486
+ color: '#8b5cf6',
487
+ },
488
+ ];
489
+ return html `
490
+ <dees-heading level="hr">VPN Statistics</dees-heading>
491
+ <dees-statsgrid .tiles=${tiles}></dees-statsgrid>
492
+ `;
493
+ }
494
+ // --- Chart data helpers ---
495
+ getRecentEventEntries() {
496
+ return this.logState.recentLogs.map((log) => ({
497
+ timestamp: new Date(log.timestamp).toISOString(),
498
+ level: log.level,
499
+ message: log.message,
500
+ source: log.category,
501
+ }));
502
+ }
503
+ getSecurityAlertEntries() {
504
+ const events = this.statsState.securityMetrics?.recentEvents || [];
505
+ return events.map((evt) => ({
506
+ timestamp: new Date(evt.timestamp).toISOString(),
507
+ level: evt.level === 'critical' || evt.level === 'error' ? 'error' : evt.level === 'warn' ? 'warn' : 'info',
508
+ message: evt.message,
509
+ source: evt.type,
510
+ }));
511
+ }
512
+ getDnsQueryEntries() {
513
+ const queries = this.statsState.dnsStats?.recentQueries || [];
514
+ return queries.map((q) => ({
515
+ timestamp: new Date(q.timestamp).toISOString(),
516
+ level: q.answered ? 'info' : 'warn',
517
+ message: `${q.type} ${q.domain} (${q.responseTimeMs}ms)`,
518
+ source: 'dns',
519
+ }));
520
+ }
521
+ getEmailTrafficSeries() {
522
+ const ts = this.statsState.emailStats?.timeSeries;
523
+ if (!ts)
524
+ return [];
525
+ return [
526
+ { name: 'Sent', color: '#22c55e', data: (ts.sent || []).map((p) => ({ x: p.timestamp, y: p.value })) },
527
+ { name: 'Received', color: '#3b82f6', data: (ts.received || []).map((p) => ({ x: p.timestamp, y: p.value })) },
528
+ ];
529
+ }
530
+ getDnsQuerySeries() {
531
+ const ts = this.statsState.dnsStats?.timeSeries;
532
+ if (!ts)
533
+ return [];
534
+ return [
535
+ { name: 'Queries', color: '#8b5cf6', data: (ts.queries || []).map((p) => ({ x: p.timestamp, y: p.value })) },
536
+ ];
537
+ }
538
+ static {
539
+ __runInitializers(_classThis, _classExtraInitializers);
540
+ }
541
+ };
542
+ return OpsViewOverview = _classThis;
543
+ })();
544
+ export { OpsViewOverview };
545
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BzLXZpZXctb3ZlcnZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvb3ZlcnZpZXcvb3BzLXZpZXctb3ZlcnZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLElBQUksRUFDSixLQUFLLEVBQ0wsR0FBRyxFQUNILFVBQVUsR0FFWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBbUIsTUFBTSw2QkFBNkIsQ0FBQztJQUdqRCxlQUFlOzRCQUQzQixhQUFhLENBQUMsbUJBQW1CLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7OzsrQkFBbkIsU0FBUSxXQUFXOzs7O3NDQUM3QyxLQUFLLEVBQUU7b0NBYVAsS0FBSyxFQUFFO1lBWlIsbUxBQVMsVUFBVSw2QkFBVixVQUFVLCtGQVVqQjtZQUdGLDZLQUFTLFFBQVEsNkJBQVIsUUFBUSwyRkFJZjtZQW5CSiw2S0FzZkM7Ozs7UUFwZkMsaUZBQTRDO1lBQzFDLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsZUFBZSxFQUFFLElBQUk7WUFDckIsV0FBVyxFQUFFLElBQUk7WUFDakIsUUFBUSxFQUFFLElBQUk7WUFDZCxXQUFXLEVBQUUsQ0FBQztZQUNkLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1NBQ1osRUFBQztRQVZGLElBQVMsVUFBVSxnREFVakI7UUFWRixJQUFTLFVBQVUsc0RBVWpCO1FBR0Ysc0lBQXdDO1lBQ3RDLFVBQVUs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
@@ -0,0 +1,3 @@
1
+ export * from './ops-view-security-overview.js';
2
+ export * from './ops-view-security-blocked.js';
3
+ export * from './ops-view-security-authentication.js';
@@ -0,0 +1,4 @@
1
+ export * from './ops-view-security-overview.js';
2
+ export * from './ops-view-security-blocked.js';
3
+ export * from './ops-view-security-authentication.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvc2VjdXJpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsdUNBQXVDLENBQUMifQ==
@@ -0,0 +1,13 @@
1
+ import * as appstate from '../../appstate.js';
2
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ 'ops-view-security-authentication': OpsViewSecurityAuthentication;
6
+ }
7
+ }
8
+ export declare class OpsViewSecurityAuthentication extends DeesElement {
9
+ accessor statsState: appstate.IStatsState;
10
+ constructor();
11
+ static styles: import("@design.estate/dees-element").CSSResult[];
12
+ render(): TemplateResult;
13
+ }