@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,200 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as paths from '../../paths.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ export class ConfigHandler {
5
+ opsServerRef;
6
+ constructor(opsServerRef) {
7
+ this.opsServerRef = opsServerRef;
8
+ this.registerHandlers();
9
+ }
10
+ registerHandlers() {
11
+ // Config endpoint registers directly on viewRouter (valid identity required via middleware)
12
+ const router = this.opsServerRef.viewRouter;
13
+ // Get Configuration Handler (read-only)
14
+ router.addTypedHandler(new plugins.typedrequest.TypedHandler('getConfiguration', async (dataArg, toolsArg) => {
15
+ const config = await this.getConfiguration();
16
+ return {
17
+ config,
18
+ section: dataArg.section,
19
+ };
20
+ }));
21
+ }
22
+ async getConfiguration() {
23
+ const dcRouter = this.opsServerRef.dcRouterRef;
24
+ const opts = dcRouter.options;
25
+ const resolvedPaths = dcRouter.resolvedPaths;
26
+ // --- System ---
27
+ const storageBackend = opts.dbConfig?.mongoDbUrl
28
+ ? 'custom'
29
+ : 'filesystem';
30
+ // Resolve proxy IPs: fall back to SmartProxy's runtime proxyIPs if not in opts
31
+ let proxyIps = opts.proxyIps || [];
32
+ if (proxyIps.length === 0 && dcRouter.smartProxy) {
33
+ const spSettings = dcRouter.smartProxy.settings;
34
+ if (spSettings?.proxyIPs?.length > 0) {
35
+ proxyIps = spSettings.proxyIPs;
36
+ }
37
+ }
38
+ const system = {
39
+ baseDir: resolvedPaths.dcrouterHomeDir,
40
+ dataDir: resolvedPaths.dataDir,
41
+ publicIp: opts.publicIp || dcRouter.detectedPublicIp || null,
42
+ proxyIps,
43
+ uptime: Math.floor(process.uptime()),
44
+ storageBackend,
45
+ storagePath: opts.dbConfig?.storagePath || resolvedPaths.defaultTsmDbPath,
46
+ };
47
+ // --- SmartProxy ---
48
+ let acmeInfo = null;
49
+ if (opts.smartProxyConfig?.acme) {
50
+ const acme = opts.smartProxyConfig.acme;
51
+ acmeInfo = {
52
+ enabled: acme.enabled !== false,
53
+ accountEmail: acme.accountEmail || '',
54
+ useProduction: acme.useProduction !== false,
55
+ autoRenew: acme.autoRenew !== false,
56
+ renewThresholdDays: acme.renewThresholdDays || 30,
57
+ };
58
+ }
59
+ let routeCount = 0;
60
+ if (dcRouter.routeConfigManager) {
61
+ try {
62
+ const merged = await dcRouter.routeConfigManager.getMergedRoutes();
63
+ routeCount = merged.routes.length;
64
+ }
65
+ catch {
66
+ routeCount = opts.smartProxyConfig?.routes?.length || 0;
67
+ }
68
+ }
69
+ else if (opts.smartProxyConfig?.routes) {
70
+ routeCount = opts.smartProxyConfig.routes.length;
71
+ }
72
+ const smartProxy = {
73
+ enabled: !!dcRouter.smartProxy,
74
+ routeCount,
75
+ acme: acmeInfo,
76
+ };
77
+ // --- Email ---
78
+ let emailDomains = [];
79
+ if (dcRouter.emailServer && dcRouter.emailServer.domainRegistry) {
80
+ emailDomains = dcRouter.emailServer.domainRegistry.getAllDomains();
81
+ }
82
+ else if (opts.emailConfig?.domains) {
83
+ emailDomains = opts.emailConfig.domains.map((d) => typeof d === 'string' ? d : d.domain);
84
+ }
85
+ let portMapping = null;
86
+ if (opts.emailPortConfig?.portMapping) {
87
+ portMapping = {};
88
+ for (const [ext, int] of Object.entries(opts.emailPortConfig.portMapping)) {
89
+ portMapping[String(ext)] = int;
90
+ }
91
+ }
92
+ const email = {
93
+ enabled: !!dcRouter.emailServer,
94
+ ports: opts.emailConfig?.ports || [],
95
+ portMapping,
96
+ hostname: opts.emailConfig?.hostname || null,
97
+ domains: emailDomains,
98
+ emailRouteCount: opts.emailConfig?.routes?.length || 0,
99
+ receivedEmailsPath: opts.emailPortConfig?.receivedEmailsPath || null,
100
+ };
101
+ // --- DNS ---
102
+ const dnsRecords = (opts.dnsRecords || []).map(r => ({
103
+ name: r.name,
104
+ type: r.type,
105
+ value: r.value,
106
+ ttl: r.ttl,
107
+ }));
108
+ // dnsChallenge: true when at least one DnsProviderDoc exists in the DB
109
+ // (replaces the legacy `dnsChallenge.cloudflareApiKey` constructor field).
110
+ let dnsChallengeEnabled = false;
111
+ try {
112
+ dnsChallengeEnabled = (await dcRouter.dnsManager?.hasAnyManagedDomain()) ?? false;
113
+ }
114
+ catch {
115
+ dnsChallengeEnabled = false;
116
+ }
117
+ const dns = {
118
+ enabled: !!dcRouter.dnsServer,
119
+ port: 53,
120
+ nsDomains: opts.dnsNsDomains || [],
121
+ scopes: opts.dnsScopes || [],
122
+ recordCount: dnsRecords.length,
123
+ records: dnsRecords,
124
+ dnsChallenge: dnsChallengeEnabled,
125
+ };
126
+ // --- TLS ---
127
+ let tlsSource = 'none';
128
+ if (opts.tls?.certPath && opts.tls?.keyPath) {
129
+ tlsSource = 'static';
130
+ }
131
+ else if (opts.smartProxyConfig?.acme?.enabled !== false && opts.smartProxyConfig?.acme) {
132
+ tlsSource = 'acme';
133
+ }
134
+ const tls = {
135
+ contactEmail: opts.tls?.contactEmail || opts.smartProxyConfig?.acme?.accountEmail || null,
136
+ domain: opts.tls?.domain || null,
137
+ source: tlsSource,
138
+ certPath: opts.tls?.certPath || null,
139
+ keyPath: opts.tls?.keyPath || null,
140
+ };
141
+ // --- Database ---
142
+ const dbConfig = opts.dbConfig;
143
+ const cache = {
144
+ enabled: dbConfig?.enabled !== false,
145
+ storagePath: dbConfig?.storagePath || resolvedPaths.defaultTsmDbPath,
146
+ dbName: dbConfig?.dbName || 'dcrouter',
147
+ defaultTTLDays: 30,
148
+ cleanupIntervalHours: dbConfig?.cleanupIntervalHours || 1,
149
+ ttlConfig: {},
150
+ };
151
+ // --- RADIUS ---
152
+ const radiusCfg = opts.radiusConfig;
153
+ const radius = {
154
+ enabled: !!dcRouter.radiusServer,
155
+ authPort: radiusCfg?.authPort || null,
156
+ acctPort: radiusCfg?.acctPort || null,
157
+ bindAddress: radiusCfg?.bindAddress || null,
158
+ clientCount: radiusCfg?.clients?.length || 0,
159
+ vlanDefaultVlan: radiusCfg?.vlanAssignment?.defaultVlan ?? null,
160
+ vlanAllowUnknownMacs: radiusCfg?.vlanAssignment?.allowUnknownMacs ?? null,
161
+ vlanMappingCount: radiusCfg?.vlanAssignment?.mappings?.length || 0,
162
+ };
163
+ // --- Remote Ingress ---
164
+ const riCfg = opts.remoteIngressConfig;
165
+ const connectedEdgeIps = dcRouter.tunnelManager?.getConnectedEdgeIps() || [];
166
+ // Determine TLS mode: custom certs > ACME from cert store > self-signed fallback
167
+ let tlsMode = 'self-signed';
168
+ if (riCfg?.tls?.certPath && riCfg?.tls?.keyPath) {
169
+ tlsMode = 'custom';
170
+ }
171
+ else if (riCfg?.hubDomain) {
172
+ try {
173
+ const { ProxyCertDoc } = await import('../../db/index.js');
174
+ const stored = await ProxyCertDoc.findByDomain(riCfg.hubDomain);
175
+ if (stored?.publicKey && stored?.privateKey) {
176
+ tlsMode = 'acme';
177
+ }
178
+ }
179
+ catch { /* no stored cert */ }
180
+ }
181
+ const remoteIngress = {
182
+ enabled: !!dcRouter.remoteIngressManager,
183
+ tunnelPort: riCfg?.tunnelPort || null,
184
+ hubDomain: riCfg?.hubDomain || null,
185
+ tlsMode,
186
+ connectedEdgeIps,
187
+ };
188
+ return {
189
+ system,
190
+ smartProxy,
191
+ email,
192
+ dns,
193
+ tls,
194
+ cache,
195
+ radius,
196
+ remoteIngress,
197
+ };
198
+ }
199
+ }
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvY29uZmlnLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sS0FBSyxVQUFVLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsTUFBTSxPQUFPLGFBQWE7SUFDSjtJQUFwQixZQUFvQixZQUF1QjtRQUF2QixpQkFBWSxHQUFaLFlBQVksQ0FBVztRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLDRGQUE0RjtRQUM1RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUU1Qyx3Q0FBd0M7UUFDeEMsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsa0JBQWtCLEVBQ2xCLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3QyxPQUFPO2dCQUNMLE1BQU07Z0JBQ04sT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2FBQ3pCLENBQUM7UUFDSixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxnQkFBZ0I7UUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM5QixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBRTdDLGlCQUFpQjtRQUNqQixN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
@@ -0,0 +1,16 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { OpsServer } from '../classes.opsserver.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ /**
5
+ * CRUD + connection-test handlers for DnsProviderDoc.
6
+ *
7
+ * Auth: same dual-mode pattern as TargetProfileHandler — admin JWT or
8
+ * API token with the appropriate `dns-providers:read|write` scope.
9
+ */
10
+ export declare class DnsProviderHandler {
11
+ private opsServerRef;
12
+ typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
13
+ constructor(opsServerRef: OpsServer);
14
+ private requireAuth;
15
+ private registerHandlers;
16
+ }
@@ -0,0 +1,156 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ /**
4
+ * CRUD + connection-test handlers for DnsProviderDoc.
5
+ *
6
+ * Auth: same dual-mode pattern as TargetProfileHandler — admin JWT or
7
+ * API token with the appropriate `dns-providers:read|write` scope.
8
+ */
9
+ export class DnsProviderHandler {
10
+ opsServerRef;
11
+ typedrouter = new plugins.typedrequest.TypedRouter();
12
+ constructor(opsServerRef) {
13
+ this.opsServerRef = opsServerRef;
14
+ this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
15
+ this.registerHandlers();
16
+ }
17
+ async requireAuth(request, requiredScope) {
18
+ if (request.identity?.jwt) {
19
+ try {
20
+ const isAdmin = await this.opsServerRef.adminHandler.adminIdentityGuard.exec({
21
+ identity: request.identity,
22
+ });
23
+ if (isAdmin)
24
+ return request.identity.userId;
25
+ }
26
+ catch { /* fall through */ }
27
+ }
28
+ if (request.apiToken) {
29
+ const tokenManager = this.opsServerRef.dcRouterRef.apiTokenManager;
30
+ if (tokenManager) {
31
+ const token = await tokenManager.validateToken(request.apiToken);
32
+ if (token) {
33
+ if (!requiredScope || tokenManager.hasScope(token, requiredScope)) {
34
+ return token.createdBy;
35
+ }
36
+ throw new plugins.typedrequest.TypedResponseError('insufficient scope');
37
+ }
38
+ }
39
+ }
40
+ throw new plugins.typedrequest.TypedResponseError('unauthorized');
41
+ }
42
+ registerHandlers() {
43
+ // Get all providers — prepends the built-in DcRouter pseudo-provider
44
+ // so operators see a uniform "who serves this?" list that includes the
45
+ // authoritative dcrouter alongside external accounts.
46
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getDnsProviders', async (dataArg) => {
47
+ await this.requireAuth(dataArg, 'dns-providers:read');
48
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
49
+ const synthetic = {
50
+ id: interfaces.data.DCROUTER_BUILTIN_PROVIDER_ID,
51
+ name: 'DcRouter',
52
+ type: 'dcrouter',
53
+ status: 'ok',
54
+ createdAt: 0,
55
+ updatedAt: 0,
56
+ createdBy: 'system',
57
+ hasCredentials: false,
58
+ builtIn: true,
59
+ };
60
+ const real = dnsManager ? await dnsManager.listProviders() : [];
61
+ return { providers: [synthetic, ...real] };
62
+ }));
63
+ // Get single provider
64
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getDnsProvider', async (dataArg) => {
65
+ await this.requireAuth(dataArg, 'dns-providers:read');
66
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
67
+ if (!dnsManager)
68
+ return { provider: null };
69
+ return { provider: await dnsManager.getProvider(dataArg.id) };
70
+ }));
71
+ // Create provider
72
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('createDnsProvider', async (dataArg) => {
73
+ const userId = await this.requireAuth(dataArg, 'dns-providers:write');
74
+ if (dataArg.type === 'dcrouter') {
75
+ return {
76
+ success: false,
77
+ message: 'cannot create built-in provider',
78
+ };
79
+ }
80
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
81
+ if (!dnsManager) {
82
+ return { success: false, message: 'DnsManager not initialized (DB disabled?)' };
83
+ }
84
+ const id = await dnsManager.createProvider({
85
+ name: dataArg.name,
86
+ type: dataArg.type,
87
+ credentials: dataArg.credentials,
88
+ createdBy: userId,
89
+ });
90
+ return { success: true, id };
91
+ }));
92
+ // Update provider
93
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('updateDnsProvider', async (dataArg) => {
94
+ await this.requireAuth(dataArg, 'dns-providers:write');
95
+ if (dataArg.id === interfaces.data.DCROUTER_BUILTIN_PROVIDER_ID) {
96
+ return { success: false, message: 'cannot edit built-in provider' };
97
+ }
98
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
99
+ if (!dnsManager)
100
+ return { success: false, message: 'DnsManager not initialized' };
101
+ const ok = await dnsManager.updateProvider(dataArg.id, {
102
+ name: dataArg.name,
103
+ credentials: dataArg.credentials,
104
+ });
105
+ return ok ? { success: true } : { success: false, message: 'Provider not found' };
106
+ }));
107
+ // Delete provider
108
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('deleteDnsProvider', async (dataArg) => {
109
+ await this.requireAuth(dataArg, 'dns-providers:write');
110
+ if (dataArg.id === interfaces.data.DCROUTER_BUILTIN_PROVIDER_ID) {
111
+ return { success: false, message: 'cannot delete built-in provider' };
112
+ }
113
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
114
+ if (!dnsManager)
115
+ return { success: false, message: 'DnsManager not initialized' };
116
+ return await dnsManager.deleteProvider(dataArg.id, dataArg.force ?? false);
117
+ }));
118
+ // Test provider connection
119
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('testDnsProvider', async (dataArg) => {
120
+ await this.requireAuth(dataArg, 'dns-providers:read');
121
+ if (dataArg.id === interfaces.data.DCROUTER_BUILTIN_PROVIDER_ID) {
122
+ return {
123
+ ok: false,
124
+ error: 'built-in provider has no external connection to test',
125
+ testedAt: Date.now(),
126
+ };
127
+ }
128
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
129
+ if (!dnsManager) {
130
+ return { ok: false, error: 'DnsManager not initialized', testedAt: Date.now() };
131
+ }
132
+ return await dnsManager.testProvider(dataArg.id);
133
+ }));
134
+ // List domains visible to a provider's account (without importing them)
135
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('listProviderDomains', async (dataArg) => {
136
+ await this.requireAuth(dataArg, 'dns-providers:read');
137
+ if (dataArg.providerId === interfaces.data.DCROUTER_BUILTIN_PROVIDER_ID) {
138
+ return {
139
+ success: false,
140
+ message: 'built-in provider has no external domain listing — use "Add DcRouter Domain" instead',
141
+ };
142
+ }
143
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
144
+ if (!dnsManager)
145
+ return { success: false, message: 'DnsManager not initialized' };
146
+ try {
147
+ const domains = await dnsManager.listProviderDomains(dataArg.providerId);
148
+ return { success: true, domains };
149
+ }
150
+ catch (err) {
151
+ return { success: false, message: err.message };
152
+ }
153
+ }));
154
+ }
155
+ }
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXByb3ZpZGVyLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvZG5zLXByb3ZpZGVyLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssVUFBVSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUdUO0lBRmIsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU1RCxZQUFvQixZQUF1QjtRQUF2QixpQkFBWSxHQUFaLFlBQVksQ0FBVztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVyxDQUN2QixPQUFvRSxFQUNwRSxhQUE4QztRQUU5QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDO2dCQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO29CQUMzRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7aUJBQzNCLENBQUMsQ0FBQztnQkFDSCxJQUFJLE9BQU87b0JBQUUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxDQUFDO1lBQUMsTUFBTSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxD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
@@ -0,0 +1,13 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { OpsServer } from '../classes.opsserver.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ /**
5
+ * CRUD handlers for DnsRecordDoc.
6
+ */
7
+ export declare class DnsRecordHandler {
8
+ private opsServerRef;
9
+ typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
10
+ constructor(opsServerRef: OpsServer);
11
+ private requireAuth;
12
+ private registerHandlers;
13
+ }
@@ -0,0 +1,98 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ /**
4
+ * CRUD handlers for DnsRecordDoc.
5
+ */
6
+ export class DnsRecordHandler {
7
+ opsServerRef;
8
+ typedrouter = new plugins.typedrequest.TypedRouter();
9
+ constructor(opsServerRef) {
10
+ this.opsServerRef = opsServerRef;
11
+ this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
12
+ this.registerHandlers();
13
+ }
14
+ async requireAuth(request, requiredScope) {
15
+ if (request.identity?.jwt) {
16
+ try {
17
+ const isAdmin = await this.opsServerRef.adminHandler.adminIdentityGuard.exec({
18
+ identity: request.identity,
19
+ });
20
+ if (isAdmin)
21
+ return request.identity.userId;
22
+ }
23
+ catch { /* fall through */ }
24
+ }
25
+ if (request.apiToken) {
26
+ const tokenManager = this.opsServerRef.dcRouterRef.apiTokenManager;
27
+ if (tokenManager) {
28
+ const token = await tokenManager.validateToken(request.apiToken);
29
+ if (token) {
30
+ if (!requiredScope || tokenManager.hasScope(token, requiredScope)) {
31
+ return token.createdBy;
32
+ }
33
+ throw new plugins.typedrequest.TypedResponseError('insufficient scope');
34
+ }
35
+ }
36
+ }
37
+ throw new plugins.typedrequest.TypedResponseError('unauthorized');
38
+ }
39
+ registerHandlers() {
40
+ // Get records by domain
41
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getDnsRecords', async (dataArg) => {
42
+ await this.requireAuth(dataArg, 'dns-records:read');
43
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
44
+ if (!dnsManager)
45
+ return { records: [] };
46
+ const docs = await dnsManager.listRecordsForDomain(dataArg.domainId);
47
+ return { records: docs.map((d) => dnsManager.toPublicRecord(d)) };
48
+ }));
49
+ // Get single record
50
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getDnsRecord', async (dataArg) => {
51
+ await this.requireAuth(dataArg, 'dns-records:read');
52
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
53
+ if (!dnsManager)
54
+ return { record: null };
55
+ const doc = await dnsManager.getRecord(dataArg.id);
56
+ return { record: doc ? dnsManager.toPublicRecord(doc) : null };
57
+ }));
58
+ // Create record
59
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('createDnsRecord', async (dataArg) => {
60
+ const userId = await this.requireAuth(dataArg, 'dns-records:write');
61
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
62
+ if (!dnsManager)
63
+ return { success: false, message: 'DnsManager not initialized' };
64
+ return await dnsManager.createRecord({
65
+ domainId: dataArg.domainId,
66
+ name: dataArg.name,
67
+ type: dataArg.type,
68
+ value: dataArg.value,
69
+ ttl: dataArg.ttl,
70
+ proxied: dataArg.proxied,
71
+ createdBy: userId,
72
+ });
73
+ }));
74
+ // Update record
75
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('updateDnsRecord', async (dataArg) => {
76
+ await this.requireAuth(dataArg, 'dns-records:write');
77
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
78
+ if (!dnsManager)
79
+ return { success: false, message: 'DnsManager not initialized' };
80
+ return await dnsManager.updateRecord({
81
+ id: dataArg.id,
82
+ name: dataArg.name,
83
+ value: dataArg.value,
84
+ ttl: dataArg.ttl,
85
+ proxied: dataArg.proxied,
86
+ });
87
+ }));
88
+ // Delete record
89
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('deleteDnsRecord', async (dataArg) => {
90
+ await this.requireAuth(dataArg, 'dns-records:write');
91
+ const dnsManager = this.opsServerRef.dcRouterRef.dnsManager;
92
+ if (!dnsManager)
93
+ return { success: false, message: 'DnsManager not initialized' };
94
+ return await dnsManager.deleteRecord(dataArg.id);
95
+ }));
96
+ }
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXJlY29yZC5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHMvb3Bzc2VydmVyL2hhbmRsZXJzL2Rucy1yZWNvcmQuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sS0FBSyxVQUFVLE1BQU0saUNBQWlDLENBQUM7QUFFOUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBR1A7SUFGYixXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTVELFlBQW9CLFlBQXVCO1FBQXZCLGlCQUFZLEdBQVosWUFBWSxDQUFXO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQ3ZCLE9BQW9FLEVBQ3BFLGFBQThDO1FBRTlDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7b0JBQzNFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtpQkFDM0IsQ0FBQyxDQUFDO2dCQUNILElBQUksT0FBTztvQkFBRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzlDLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7WUFDbkUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakUsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsYUFBYSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7d0JBQ2xFLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQztvQkFDekIsQ0FBQztvQkFDRCxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsZUFBZSxFQUNmLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxVQUFVLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUVGLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsY0FBYyxFQUNkLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDekMsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakUsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUVGLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsaUJBQWlCLEVBQ2pCLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxDQUFDO1lBQ2xGLE9BQU8sTUFBTSxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUNuQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7Z0JBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDbEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUNsQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztnQkFDaEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2dCQUN4QixTQUFTLEVBQUUsTUFBTTthQUNsQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQ0YsQ0FDRixDQUFDO1FBRUYsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUM5QixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUNuQyxpQkFBaUIsRUFDakIsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUNyRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDNUQsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLENBQUM7WUFDbEYsT0FBTyxNQUFNLFVBQVUsQ0FBQyxZQUFZLENBQUM7Z0JBQ25DLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtnQkFDZCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO2dCQUNoQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUVGLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsaUJBQWlCLEVBQ2pCLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDckQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxDQUFDO1lBQ2xGLE9BQU8sTUFBTSxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
@@ -0,0 +1,13 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { OpsServer } from '../classes.opsserver.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ /**
5
+ * CRUD handlers for DomainDoc.
6
+ */
7
+ export declare class DomainHandler {
8
+ private opsServerRef;
9
+ typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
10
+ constructor(opsServerRef: OpsServer);
11
+ private requireAuth;
12
+ private registerHandlers;
13
+ }