ysk-server-core 1.0.0 → 1.1.9

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 (627) hide show
  1. package/README.md +23 -6
  2. package/dist/agents/probe.d.ts +2 -0
  3. package/dist/agents/probe.d.ts.map +1 -1
  4. package/dist/agents/probe.js +58 -1
  5. package/dist/agents/probe.js.map +1 -1
  6. package/dist/db/database.d.ts +1 -1
  7. package/dist/db/database.js +1 -1
  8. package/dist/db/document-store.d.ts +6 -2
  9. package/dist/db/document-store.d.ts.map +1 -1
  10. package/dist/db/document-store.js +5 -5
  11. package/dist/db/document-store.js.map +1 -1
  12. package/dist/db/store.d.ts +31 -2
  13. package/dist/db/store.d.ts.map +1 -1
  14. package/dist/db/store.js +286 -40
  15. package/dist/db/store.js.map +1 -1
  16. package/dist/email/autodiscover.d.ts +3 -0
  17. package/dist/email/autodiscover.d.ts.map +1 -1
  18. package/dist/email/autodiscover.js +57 -17
  19. package/dist/email/autodiscover.js.map +1 -1
  20. package/dist/email/dns-records.d.ts.map +1 -1
  21. package/dist/email/dns-records.js +3 -1
  22. package/dist/email/dns-records.js.map +1 -1
  23. package/dist/email/live-checks.d.ts.map +1 -1
  24. package/dist/email/live-checks.js +13 -4
  25. package/dist/email/live-checks.js.map +1 -1
  26. package/dist/email/mail-queue.d.ts +13 -4
  27. package/dist/email/mail-queue.d.ts.map +1 -1
  28. package/dist/email/mail-queue.js +69 -14
  29. package/dist/email/mail-queue.js.map +1 -1
  30. package/dist/email/mail-tls-apply.d.ts.map +1 -1
  31. package/dist/email/mail-tls-apply.js +22 -0
  32. package/dist/email/mail-tls-apply.js.map +1 -1
  33. package/dist/files/index.d.ts +1 -0
  34. package/dist/files/index.d.ts.map +1 -1
  35. package/dist/files/index.js +1 -0
  36. package/dist/files/index.js.map +1 -1
  37. package/dist/files/manager.d.ts +25 -6
  38. package/dist/files/manager.d.ts.map +1 -1
  39. package/dist/files/manager.js +166 -33
  40. package/dist/files/manager.js.map +1 -1
  41. package/dist/files/name-conflict.d.ts +9 -0
  42. package/dist/files/name-conflict.d.ts.map +1 -0
  43. package/dist/files/name-conflict.js +36 -0
  44. package/dist/files/name-conflict.js.map +1 -0
  45. package/dist/files/shares.d.ts.map +1 -1
  46. package/dist/files/shares.js +17 -1
  47. package/dist/files/shares.js.map +1 -1
  48. package/dist/host/executor.d.ts +3 -0
  49. package/dist/host/executor.d.ts.map +1 -1
  50. package/dist/host/executor.js +169 -7
  51. package/dist/host/executor.js.map +1 -1
  52. package/dist/host-browse/browser-engine.d.ts.map +1 -1
  53. package/dist/host-browse/browser-engine.js +2 -1
  54. package/dist/host-browse/browser-engine.js.map +1 -1
  55. package/dist/host-browse/chrome-as-user.d.ts.map +1 -1
  56. package/dist/host-browse/chrome-as-user.js +2 -1
  57. package/dist/host-browse/chrome-as-user.js.map +1 -1
  58. package/dist/host-browse/chrome-path.d.ts +13 -0
  59. package/dist/host-browse/chrome-path.d.ts.map +1 -0
  60. package/dist/host-browse/chrome-path.js +76 -0
  61. package/dist/host-browse/chrome-path.js.map +1 -0
  62. package/dist/host-browse/chrome-probe.d.ts.map +1 -1
  63. package/dist/host-browse/chrome-probe.js +3 -2
  64. package/dist/host-browse/chrome-probe.js.map +1 -1
  65. package/dist/host-browse/index.d.ts +1 -0
  66. package/dist/host-browse/index.d.ts.map +1 -1
  67. package/dist/host-browse/index.js +1 -0
  68. package/dist/host-browse/index.js.map +1 -1
  69. package/dist/host-browse/ssrf.d.ts.map +1 -1
  70. package/dist/host-browse/ssrf.js +2 -2
  71. package/dist/host-browse/ssrf.js.map +1 -1
  72. package/dist/host-browse/types.d.ts.map +1 -1
  73. package/dist/host-browse/types.js +4 -3
  74. package/dist/host-browse/types.js.map +1 -1
  75. package/dist/hosting/apache/render-site.d.ts.map +1 -1
  76. package/dist/hosting/apache/render-site.js +2 -1
  77. package/dist/hosting/apache/render-site.js.map +1 -1
  78. package/dist/hosting/apache/sync.d.ts +2 -0
  79. package/dist/hosting/apache/sync.d.ts.map +1 -1
  80. package/dist/hosting/apache/sync.js +25 -0
  81. package/dist/hosting/apache/sync.js.map +1 -1
  82. package/dist/hosting/app-templates.js +1 -1
  83. package/dist/hosting/app-templates.js.map +1 -1
  84. package/dist/hosting/backup-cron.d.ts +44 -1
  85. package/dist/hosting/backup-cron.d.ts.map +1 -1
  86. package/dist/hosting/backup-cron.js +432 -39
  87. package/dist/hosting/backup-cron.js.map +1 -1
  88. package/dist/hosting/backup-remote.d.ts +17 -0
  89. package/dist/hosting/backup-remote.d.ts.map +1 -1
  90. package/dist/hosting/backup-remote.js +341 -55
  91. package/dist/hosting/backup-remote.js.map +1 -1
  92. package/dist/hosting/bt-tracker/index.d.ts +3 -0
  93. package/dist/hosting/bt-tracker/index.d.ts.map +1 -1
  94. package/dist/hosting/bt-tracker/index.js +3 -0
  95. package/dist/hosting/bt-tracker/index.js.map +1 -1
  96. package/dist/hosting/bt-tracker/library-ops.d.ts +86 -0
  97. package/dist/hosting/bt-tracker/library-ops.d.ts.map +1 -0
  98. package/dist/hosting/bt-tracker/library-ops.js +481 -0
  99. package/dist/hosting/bt-tracker/library-ops.js.map +1 -0
  100. package/dist/hosting/bt-tracker/library.d.ts +12 -0
  101. package/dist/hosting/bt-tracker/library.d.ts.map +1 -0
  102. package/dist/hosting/bt-tracker/library.js +109 -0
  103. package/dist/hosting/bt-tracker/library.js.map +1 -0
  104. package/dist/hosting/bt-tracker/restore-library.d.ts +16 -0
  105. package/dist/hosting/bt-tracker/restore-library.d.ts.map +1 -0
  106. package/dist/hosting/bt-tracker/restore-library.js +67 -0
  107. package/dist/hosting/bt-tracker/restore-library.js.map +1 -0
  108. package/dist/hosting/bt-tracker/restore-shares.d.ts.map +1 -1
  109. package/dist/hosting/bt-tracker/restore-shares.js +8 -0
  110. package/dist/hosting/bt-tracker/restore-shares.js.map +1 -1
  111. package/dist/hosting/bt-tracker/seeder.d.ts +55 -16
  112. package/dist/hosting/bt-tracker/seeder.d.ts.map +1 -1
  113. package/dist/hosting/bt-tracker/seeder.js +103 -3
  114. package/dist/hosting/bt-tracker/seeder.js.map +1 -1
  115. package/dist/hosting/bt-tracker/service.d.ts.map +1 -1
  116. package/dist/hosting/bt-tracker/service.js +28 -4
  117. package/dist/hosting/bt-tracker/service.js.map +1 -1
  118. package/dist/hosting/bt-tracker/settings.d.ts +14 -1
  119. package/dist/hosting/bt-tracker/settings.d.ts.map +1 -1
  120. package/dist/hosting/bt-tracker/settings.js +102 -3
  121. package/dist/hosting/bt-tracker/settings.js.map +1 -1
  122. package/dist/hosting/cdn/fan-out.d.ts.map +1 -1
  123. package/dist/hosting/cdn/fan-out.js +64 -32
  124. package/dist/hosting/cdn/fan-out.js.map +1 -1
  125. package/dist/hosting/cdn/from-project.d.ts +6 -0
  126. package/dist/hosting/cdn/from-project.d.ts.map +1 -1
  127. package/dist/hosting/cdn/from-project.js +55 -1
  128. package/dist/hosting/cdn/from-project.js.map +1 -1
  129. package/dist/hosting/cdn/http-probe-error.d.ts +7 -0
  130. package/dist/hosting/cdn/http-probe-error.d.ts.map +1 -0
  131. package/dist/hosting/cdn/http-probe-error.js +44 -0
  132. package/dist/hosting/cdn/http-probe-error.js.map +1 -0
  133. package/dist/hosting/cdn/nodes.d.ts +8 -0
  134. package/dist/hosting/cdn/nodes.d.ts.map +1 -1
  135. package/dist/hosting/cdn/nodes.js +69 -1
  136. package/dist/hosting/cdn/nodes.js.map +1 -1
  137. package/dist/hosting/cdn/sites.d.ts +2 -0
  138. package/dist/hosting/cdn/sites.d.ts.map +1 -1
  139. package/dist/hosting/cdn/sites.js +5 -1
  140. package/dist/hosting/cdn/sites.js.map +1 -1
  141. package/dist/hosting/cdn/ssl.d.ts.map +1 -1
  142. package/dist/hosting/cdn/ssl.js +3 -25
  143. package/dist/hosting/cdn/ssl.js.map +1 -1
  144. package/dist/hosting/db-cluster/apply-local.d.ts +1 -1
  145. package/dist/hosting/db-cluster/apply-local.js +7 -7
  146. package/dist/hosting/db-cluster/apply-local.js.map +1 -1
  147. package/dist/hosting/db-cluster/probe.js +1 -1
  148. package/dist/hosting/db-cluster/probe.js.map +1 -1
  149. package/dist/hosting/db-cluster/push-peer.d.ts +3 -0
  150. package/dist/hosting/db-cluster/push-peer.d.ts.map +1 -1
  151. package/dist/hosting/db-cluster/push-peer.js +41 -21
  152. package/dist/hosting/db-cluster/push-peer.js.map +1 -1
  153. package/dist/hosting/db-cluster/store.d.ts +1 -0
  154. package/dist/hosting/db-cluster/store.d.ts.map +1 -1
  155. package/dist/hosting/db-cluster/store.js +11 -0
  156. package/dist/hosting/db-cluster/store.js.map +1 -1
  157. package/dist/hosting/db-cluster/types.d.ts +1 -1
  158. package/dist/hosting/db-cluster/types.d.ts.map +1 -1
  159. package/dist/hosting/db-service-config.d.ts +13 -0
  160. package/dist/hosting/db-service-config.d.ts.map +1 -1
  161. package/dist/hosting/db-service-config.js +51 -1
  162. package/dist/hosting/db-service-config.js.map +1 -1
  163. package/dist/hosting/defense/automation.js +1 -1
  164. package/dist/hosting/defense/automation.js.map +1 -1
  165. package/dist/hosting/defense/defense-service.d.ts.map +1 -1
  166. package/dist/hosting/defense/defense-service.js +62 -39
  167. package/dist/hosting/defense/defense-service.js.map +1 -1
  168. package/dist/hosting/defense/geoip/index.d.ts.map +1 -1
  169. package/dist/hosting/defense/geoip/index.js +9 -7
  170. package/dist/hosting/defense/geoip/index.js.map +1 -1
  171. package/dist/hosting/defense/presets.js +2 -2
  172. package/dist/hosting/defense/presets.js.map +1 -1
  173. package/dist/hosting/defense/signals.d.ts +5 -0
  174. package/dist/hosting/defense/signals.d.ts.map +1 -1
  175. package/dist/hosting/defense/signals.js +26 -10
  176. package/dist/hosting/defense/signals.js.map +1 -1
  177. package/dist/hosting/defense/types.d.ts +2 -0
  178. package/dist/hosting/defense/types.d.ts.map +1 -1
  179. package/dist/hosting/dns-health.d.ts.map +1 -1
  180. package/dist/hosting/dns-health.js +34 -26
  181. package/dist/hosting/dns-health.js.map +1 -1
  182. package/dist/hosting/dns-lookup.d.ts.map +1 -1
  183. package/dist/hosting/dns-lookup.js +11 -0
  184. package/dist/hosting/dns-lookup.js.map +1 -1
  185. package/dist/hosting/dns-zone.d.ts +18 -0
  186. package/dist/hosting/dns-zone.d.ts.map +1 -1
  187. package/dist/hosting/dns-zone.js +59 -0
  188. package/dist/hosting/dns-zone.js.map +1 -1
  189. package/dist/hosting/docker/argv.d.ts +10 -0
  190. package/dist/hosting/docker/argv.d.ts.map +1 -0
  191. package/dist/hosting/docker/argv.js +274 -0
  192. package/dist/hosting/docker/argv.js.map +1 -0
  193. package/dist/hosting/docker/daemon.d.ts +27 -0
  194. package/dist/hosting/docker/daemon.d.ts.map +1 -0
  195. package/dist/hosting/docker/daemon.js +125 -0
  196. package/dist/hosting/docker/daemon.js.map +1 -0
  197. package/dist/hosting/docker/honesty.d.ts +27 -0
  198. package/dist/hosting/docker/honesty.d.ts.map +1 -0
  199. package/dist/hosting/docker/honesty.js +50 -0
  200. package/dist/hosting/docker/honesty.js.map +1 -0
  201. package/dist/hosting/docker/index.d.ts +6 -0
  202. package/dist/hosting/docker/index.d.ts.map +1 -0
  203. package/dist/hosting/docker/index.js +6 -0
  204. package/dist/hosting/docker/index.js.map +1 -0
  205. package/dist/hosting/docker/manager.d.ts +131 -0
  206. package/dist/hosting/docker/manager.d.ts.map +1 -0
  207. package/dist/hosting/docker/manager.js +681 -0
  208. package/dist/hosting/docker/manager.js.map +1 -0
  209. package/dist/hosting/docker/parse.d.ts +22 -0
  210. package/dist/hosting/docker/parse.d.ts.map +1 -0
  211. package/dist/hosting/docker/parse.js +205 -0
  212. package/dist/hosting/docker/parse.js.map +1 -0
  213. package/dist/hosting/extras.d.ts.map +1 -1
  214. package/dist/hosting/extras.js +7 -1
  215. package/dist/hosting/extras.js.map +1 -1
  216. package/dist/hosting/fail2ban-ops.d.ts +2 -0
  217. package/dist/hosting/fail2ban-ops.d.ts.map +1 -1
  218. package/dist/hosting/fail2ban-ops.js +11 -9
  219. package/dist/hosting/fail2ban-ops.js.map +1 -1
  220. package/dist/hosting/firewall-ops.d.ts +4 -0
  221. package/dist/hosting/firewall-ops.d.ts.map +1 -1
  222. package/dist/hosting/firewall-ops.js +43 -2
  223. package/dist/hosting/firewall-ops.js.map +1 -1
  224. package/dist/hosting/ftps-service.d.ts +34 -0
  225. package/dist/hosting/ftps-service.d.ts.map +1 -1
  226. package/dist/hosting/ftps-service.js +141 -13
  227. package/dist/hosting/ftps-service.js.map +1 -1
  228. package/dist/hosting/git-auth.d.ts +77 -0
  229. package/dist/hosting/git-auth.d.ts.map +1 -0
  230. package/dist/hosting/git-auth.js +314 -0
  231. package/dist/hosting/git-auth.js.map +1 -0
  232. package/dist/hosting/git-control.d.ts +110 -0
  233. package/dist/hosting/git-control.d.ts.map +1 -0
  234. package/dist/hosting/git-control.js +333 -0
  235. package/dist/hosting/git-control.js.map +1 -0
  236. package/dist/hosting/git-deploy.d.ts +2 -0
  237. package/dist/hosting/git-deploy.d.ts.map +1 -1
  238. package/dist/hosting/git-deploy.js +50 -7
  239. package/dist/hosting/git-deploy.js.map +1 -1
  240. package/dist/hosting/git-errors.d.ts +7 -0
  241. package/dist/hosting/git-errors.d.ts.map +1 -0
  242. package/dist/hosting/git-errors.js +45 -0
  243. package/dist/hosting/git-errors.js.map +1 -0
  244. package/dist/hosting/git-hook.d.ts +33 -0
  245. package/dist/hosting/git-hook.d.ts.map +1 -0
  246. package/dist/hosting/git-hook.js +174 -0
  247. package/dist/hosting/git-hook.js.map +1 -0
  248. package/dist/hosting/global-search.d.ts.map +1 -1
  249. package/dist/hosting/global-search.js +22 -4
  250. package/dist/hosting/global-search.js.map +1 -1
  251. package/dist/hosting/host-migrate/bootstrap-target.d.ts +1 -1
  252. package/dist/hosting/host-migrate/bootstrap-target.js +6 -6
  253. package/dist/hosting/host-migrate/bootstrap-target.js.map +1 -1
  254. package/dist/hosting/host-migrate/index.d.ts +1 -0
  255. package/dist/hosting/host-migrate/index.d.ts.map +1 -1
  256. package/dist/hosting/host-migrate/index.js +1 -0
  257. package/dist/hosting/host-migrate/index.js.map +1 -1
  258. package/dist/hosting/host-migrate/inventory.d.ts.map +1 -1
  259. package/dist/hosting/host-migrate/inventory.js +20 -0
  260. package/dist/hosting/host-migrate/inventory.js.map +1 -1
  261. package/dist/hosting/host-migrate/orphan-homes.d.ts +19 -0
  262. package/dist/hosting/host-migrate/orphan-homes.d.ts.map +1 -0
  263. package/dist/hosting/host-migrate/orphan-homes.js +46 -0
  264. package/dist/hosting/host-migrate/orphan-homes.js.map +1 -0
  265. package/dist/hosting/host-migrate/temp-key.d.ts.map +1 -1
  266. package/dist/hosting/host-migrate/temp-key.js +7 -1
  267. package/dist/hosting/host-migrate/temp-key.js.map +1 -1
  268. package/dist/hosting/index.d.ts +9 -0
  269. package/dist/hosting/index.d.ts.map +1 -1
  270. package/dist/hosting/index.js +9 -0
  271. package/dist/hosting/index.js.map +1 -1
  272. package/dist/hosting/leftover-apply.d.ts +34 -0
  273. package/dist/hosting/leftover-apply.d.ts.map +1 -0
  274. package/dist/hosting/leftover-apply.js +187 -0
  275. package/dist/hosting/leftover-apply.js.map +1 -0
  276. package/dist/hosting/leftover-probe.d.ts +40 -0
  277. package/dist/hosting/leftover-probe.d.ts.map +1 -0
  278. package/dist/hosting/leftover-probe.js +181 -0
  279. package/dist/hosting/leftover-probe.js.map +1 -0
  280. package/dist/hosting/log-center/catalog.d.ts.map +1 -1
  281. package/dist/hosting/log-center/catalog.js +9 -0
  282. package/dist/hosting/log-center/catalog.js.map +1 -1
  283. package/dist/hosting/log-center/journal.d.ts.map +1 -1
  284. package/dist/hosting/log-center/journal.js +3 -0
  285. package/dist/hosting/log-center/journal.js.map +1 -1
  286. package/dist/hosting/managed-resources.d.ts.map +1 -1
  287. package/dist/hosting/managed-resources.js +18 -2
  288. package/dist/hosting/managed-resources.js.map +1 -1
  289. package/dist/hosting/nginx-sites-list.d.ts.map +1 -1
  290. package/dist/hosting/nginx-sites-list.js +39 -3
  291. package/dist/hosting/nginx-sites-list.js.map +1 -1
  292. package/dist/hosting/nginx-ssl.d.ts +4 -0
  293. package/dist/hosting/nginx-ssl.d.ts.map +1 -1
  294. package/dist/hosting/nginx-ssl.js +52 -7
  295. package/dist/hosting/nginx-ssl.js.map +1 -1
  296. package/dist/hosting/nginx-sync.d.ts +34 -0
  297. package/dist/hosting/nginx-sync.d.ts.map +1 -1
  298. package/dist/hosting/nginx-sync.js +258 -11
  299. package/dist/hosting/nginx-sync.js.map +1 -1
  300. package/dist/hosting/ops-log.d.ts +23 -0
  301. package/dist/hosting/ops-log.d.ts.map +1 -0
  302. package/dist/hosting/ops-log.js +15 -0
  303. package/dist/hosting/ops-log.js.map +1 -0
  304. package/dist/hosting/panel-tls.d.ts +9 -0
  305. package/dist/hosting/panel-tls.d.ts.map +1 -1
  306. package/dist/hosting/panel-tls.js +50 -2
  307. package/dist/hosting/panel-tls.js.map +1 -1
  308. package/dist/hosting/pm2-apply.d.ts.map +1 -1
  309. package/dist/hosting/pm2-apply.js +9 -2
  310. package/dist/hosting/pm2-apply.js.map +1 -1
  311. package/dist/hosting/postgres-provision.d.ts.map +1 -1
  312. package/dist/hosting/postgres-provision.js +43 -19
  313. package/dist/hosting/postgres-provision.js.map +1 -1
  314. package/dist/hosting/production-readiness.d.ts.map +1 -1
  315. package/dist/hosting/production-readiness.js +67 -10
  316. package/dist/hosting/production-readiness.js.map +1 -1
  317. package/dist/hosting/project-create-extras.d.ts +37 -0
  318. package/dist/hosting/project-create-extras.d.ts.map +1 -0
  319. package/dist/hosting/project-create-extras.js +47 -0
  320. package/dist/hosting/project-create-extras.js.map +1 -0
  321. package/dist/hosting/project-isolation-status.d.ts.map +1 -1
  322. package/dist/hosting/project-isolation-status.js +10 -2
  323. package/dist/hosting/project-isolation-status.js.map +1 -1
  324. package/dist/hosting/project-ops.d.ts +67 -0
  325. package/dist/hosting/project-ops.d.ts.map +1 -1
  326. package/dist/hosting/project-ops.js +377 -7
  327. package/dist/hosting/project-ops.js.map +1 -1
  328. package/dist/hosting/project-service.d.ts +3 -0
  329. package/dist/hosting/project-service.d.ts.map +1 -1
  330. package/dist/hosting/project-service.js +9 -0
  331. package/dist/hosting/project-service.js.map +1 -1
  332. package/dist/hosting/public-files.d.ts +4 -0
  333. package/dist/hosting/public-files.d.ts.map +1 -1
  334. package/dist/hosting/public-files.js +46 -7
  335. package/dist/hosting/public-files.js.map +1 -1
  336. package/dist/hosting/rebuild.d.ts +1 -0
  337. package/dist/hosting/rebuild.d.ts.map +1 -1
  338. package/dist/hosting/rebuild.js +14 -4
  339. package/dist/hosting/rebuild.js.map +1 -1
  340. package/dist/hosting/runtime-probe.d.ts +7 -0
  341. package/dist/hosting/runtime-probe.d.ts.map +1 -1
  342. package/dist/hosting/runtime-probe.js +74 -7
  343. package/dist/hosting/runtime-probe.js.map +1 -1
  344. package/dist/hosting/runtime.d.ts.map +1 -1
  345. package/dist/hosting/runtime.js +5 -3
  346. package/dist/hosting/runtime.js.map +1 -1
  347. package/dist/hosting/service-catalog/redis.d.ts.map +1 -1
  348. package/dist/hosting/service-catalog/redis.js +2 -1
  349. package/dist/hosting/service-catalog/redis.js.map +1 -1
  350. package/dist/hosting/service-console.d.ts +1 -1
  351. package/dist/hosting/service-console.d.ts.map +1 -1
  352. package/dist/hosting/service-console.js +4 -3
  353. package/dist/hosting/service-console.js.map +1 -1
  354. package/dist/hosting/service-matrix.d.ts +1 -1
  355. package/dist/hosting/service-matrix.d.ts.map +1 -1
  356. package/dist/hosting/service-matrix.js +24 -1
  357. package/dist/hosting/service-matrix.js.map +1 -1
  358. package/dist/hosting/sftp-keys.d.ts.map +1 -1
  359. package/dist/hosting/sftp-keys.js +2 -1
  360. package/dist/hosting/sftp-keys.js.map +1 -1
  361. package/dist/hosting/software-catalog.d.ts +2 -2
  362. package/dist/hosting/software-catalog.d.ts.map +1 -1
  363. package/dist/hosting/software-catalog.js +12 -2
  364. package/dist/hosting/software-catalog.js.map +1 -1
  365. package/dist/hosting/software-install.d.ts +4 -0
  366. package/dist/hosting/software-install.d.ts.map +1 -1
  367. package/dist/hosting/software-install.js +21 -0
  368. package/dist/hosting/software-install.js.map +1 -1
  369. package/dist/hosting/software-probe/HostSoftwareProbe.d.ts.map +1 -1
  370. package/dist/hosting/software-probe/HostSoftwareProbe.js +4 -0
  371. package/dist/hosting/software-probe/HostSoftwareProbe.js.map +1 -1
  372. package/dist/hosting/software-probe/registry.d.ts.map +1 -1
  373. package/dist/hosting/software-probe/registry.js +13 -0
  374. package/dist/hosting/software-probe/registry.js.map +1 -1
  375. package/dist/hosting/software-uninstall.d.ts.map +1 -1
  376. package/dist/hosting/software-uninstall.js +22 -0
  377. package/dist/hosting/software-uninstall.js.map +1 -1
  378. package/dist/hosting/sql-engine-switch/migrate.d.ts.map +1 -1
  379. package/dist/hosting/sql-engine-switch/migrate.js +62 -5
  380. package/dist/hosting/sql-engine-switch/migrate.js.map +1 -1
  381. package/dist/hosting/sql-engine-switch/preview.d.ts +9 -0
  382. package/dist/hosting/sql-engine-switch/preview.d.ts.map +1 -1
  383. package/dist/hosting/sql-engine-switch/preview.js +48 -0
  384. package/dist/hosting/sql-engine-switch/preview.js.map +1 -1
  385. package/dist/hosting/ssl-certs.js +1 -1
  386. package/dist/hosting/ssl-certs.js.map +1 -1
  387. package/dist/hosting/stack/definitions.js +1 -1
  388. package/dist/hosting/stack/definitions.js.map +1 -1
  389. package/dist/hosting/system-apply.d.ts.map +1 -1
  390. package/dist/hosting/system-apply.js +16 -6
  391. package/dist/hosting/system-apply.js.map +1 -1
  392. package/dist/hosting/temp-db-user.d.ts +10 -0
  393. package/dist/hosting/temp-db-user.d.ts.map +1 -1
  394. package/dist/hosting/temp-db-user.js +31 -0
  395. package/dist/hosting/temp-db-user.js.map +1 -1
  396. package/dist/hosting/validators/adapters/ada.d.ts +16 -0
  397. package/dist/hosting/validators/adapters/ada.d.ts.map +1 -0
  398. package/dist/hosting/validators/adapters/ada.js +72 -0
  399. package/dist/hosting/validators/adapters/ada.js.map +1 -0
  400. package/dist/hosting/validators/adapters/avax.d.ts +17 -0
  401. package/dist/hosting/validators/adapters/avax.d.ts.map +1 -0
  402. package/dist/hosting/validators/adapters/avax.js +66 -0
  403. package/dist/hosting/validators/adapters/avax.js.map +1 -0
  404. package/dist/hosting/validators/adapters/base.d.ts +61 -0
  405. package/dist/hosting/validators/adapters/base.d.ts.map +1 -0
  406. package/dist/hosting/validators/adapters/base.js +4 -0
  407. package/dist/hosting/validators/adapters/base.js.map +1 -0
  408. package/dist/hosting/validators/adapters/eth-clients.d.ts +16 -0
  409. package/dist/hosting/validators/adapters/eth-clients.d.ts.map +1 -0
  410. package/dist/hosting/validators/adapters/eth-clients.js +247 -0
  411. package/dist/hosting/validators/adapters/eth-clients.js.map +1 -0
  412. package/dist/hosting/validators/adapters/eth.d.ts +18 -0
  413. package/dist/hosting/validators/adapters/eth.d.ts.map +1 -0
  414. package/dist/hosting/validators/adapters/eth.js +102 -0
  415. package/dist/hosting/validators/adapters/eth.js.map +1 -0
  416. package/dist/hosting/validators/adapters/index.d.ts +5 -0
  417. package/dist/hosting/validators/adapters/index.d.ts.map +1 -0
  418. package/dist/hosting/validators/adapters/index.js +39 -0
  419. package/dist/hosting/validators/adapters/index.js.map +1 -0
  420. package/dist/hosting/validators/adapters/near.d.ts +15 -0
  421. package/dist/hosting/validators/adapters/near.d.ts.map +1 -0
  422. package/dist/hosting/validators/adapters/near.js +72 -0
  423. package/dist/hosting/validators/adapters/near.js.map +1 -0
  424. package/dist/hosting/validators/adapters/phase2.d.ts +33 -0
  425. package/dist/hosting/validators/adapters/phase2.d.ts.map +1 -0
  426. package/dist/hosting/validators/adapters/phase2.js +294 -0
  427. package/dist/hosting/validators/adapters/phase2.js.map +1 -0
  428. package/dist/hosting/validators/compose-runner.d.ts +88 -0
  429. package/dist/hosting/validators/compose-runner.d.ts.map +1 -0
  430. package/dist/hosting/validators/compose-runner.js +178 -0
  431. package/dist/hosting/validators/compose-runner.js.map +1 -0
  432. package/dist/hosting/validators/disk.d.ts +29 -0
  433. package/dist/hosting/validators/disk.d.ts.map +1 -0
  434. package/dist/hosting/validators/disk.js +208 -0
  435. package/dist/hosting/validators/disk.js.map +1 -0
  436. package/dist/hosting/validators/extras.d.ts +82 -0
  437. package/dist/hosting/validators/extras.d.ts.map +1 -0
  438. package/dist/hosting/validators/extras.js +391 -0
  439. package/dist/hosting/validators/extras.js.map +1 -0
  440. package/dist/hosting/validators/health.d.ts +21 -0
  441. package/dist/hosting/validators/health.d.ts.map +1 -0
  442. package/dist/hosting/validators/health.js +65 -0
  443. package/dist/hosting/validators/health.js.map +1 -0
  444. package/dist/hosting/validators/honesty.d.ts +33 -0
  445. package/dist/hosting/validators/honesty.d.ts.map +1 -0
  446. package/dist/hosting/validators/honesty.js +54 -0
  447. package/dist/hosting/validators/honesty.js.map +1 -0
  448. package/dist/hosting/validators/index.d.ts +26 -0
  449. package/dist/hosting/validators/index.d.ts.map +1 -0
  450. package/dist/hosting/validators/index.js +26 -0
  451. package/dist/hosting/validators/index.js.map +1 -0
  452. package/dist/hosting/validators/manager.d.ts +78 -0
  453. package/dist/hosting/validators/manager.d.ts.map +1 -0
  454. package/dist/hosting/validators/manager.js +455 -0
  455. package/dist/hosting/validators/manager.js.map +1 -0
  456. package/dist/hosting/validators/mithril.d.ts +30 -0
  457. package/dist/hosting/validators/mithril.d.ts.map +1 -0
  458. package/dist/hosting/validators/mithril.js +146 -0
  459. package/dist/hosting/validators/mithril.js.map +1 -0
  460. package/dist/hosting/validators/native-prune.d.ts +12 -0
  461. package/dist/hosting/validators/native-prune.d.ts.map +1 -0
  462. package/dist/hosting/validators/native-prune.js +40 -0
  463. package/dist/hosting/validators/native-prune.js.map +1 -0
  464. package/dist/hosting/validators/ports.d.ts +7 -0
  465. package/dist/hosting/validators/ports.d.ts.map +1 -0
  466. package/dist/hosting/validators/ports.js +75 -0
  467. package/dist/hosting/validators/ports.js.map +1 -0
  468. package/dist/hosting/validators/registry.d.ts +22 -0
  469. package/dist/hosting/validators/registry.d.ts.map +1 -0
  470. package/dist/hosting/validators/registry.js +311 -0
  471. package/dist/hosting/validators/registry.js.map +1 -0
  472. package/dist/hosting/validators/releases.d.ts +30 -0
  473. package/dist/hosting/validators/releases.d.ts.map +1 -0
  474. package/dist/hosting/validators/releases.js +149 -0
  475. package/dist/hosting/validators/releases.js.map +1 -0
  476. package/dist/hosting/validators/runtime-status.d.ts +13 -0
  477. package/dist/hosting/validators/runtime-status.d.ts.map +1 -0
  478. package/dist/hosting/validators/runtime-status.js +19 -0
  479. package/dist/hosting/validators/runtime-status.js.map +1 -0
  480. package/dist/hosting/validators/settings.d.ts +4 -0
  481. package/dist/hosting/validators/settings.d.ts.map +1 -0
  482. package/dist/hosting/validators/settings.js +28 -0
  483. package/dist/hosting/validators/settings.js.map +1 -0
  484. package/dist/hosting/validators/snapshots.d.ts +40 -0
  485. package/dist/hosting/validators/snapshots.d.ts.map +1 -0
  486. package/dist/hosting/validators/snapshots.js +221 -0
  487. package/dist/hosting/validators/snapshots.js.map +1 -0
  488. package/dist/hosting/validators/software-catalog.d.ts +24 -0
  489. package/dist/hosting/validators/software-catalog.d.ts.map +1 -0
  490. package/dist/hosting/validators/software-catalog.js +125 -0
  491. package/dist/hosting/validators/software-catalog.js.map +1 -0
  492. package/dist/hosting/validators/store.d.ts +29 -0
  493. package/dist/hosting/validators/store.d.ts.map +1 -0
  494. package/dist/hosting/validators/store.js +186 -0
  495. package/dist/hosting/validators/store.js.map +1 -0
  496. package/dist/hosting/validators/upgrade.d.ts +35 -0
  497. package/dist/hosting/validators/upgrade.d.ts.map +1 -0
  498. package/dist/hosting/validators/upgrade.js +251 -0
  499. package/dist/hosting/validators/upgrade.js.map +1 -0
  500. package/dist/hosting/validators/versions.d.ts +9 -0
  501. package/dist/hosting/validators/versions.d.ts.map +1 -0
  502. package/dist/hosting/validators/versions.js +20 -0
  503. package/dist/hosting/validators/versions.js.map +1 -0
  504. package/dist/hosting/version-discovery.d.ts.map +1 -1
  505. package/dist/hosting/version-discovery.js +15 -6
  506. package/dist/hosting/version-discovery.js.map +1 -1
  507. package/dist/hosting/vnc/client-profiles.d.ts.map +1 -1
  508. package/dist/hosting/vnc/client-profiles.js +12 -6
  509. package/dist/hosting/vnc/client-profiles.js.map +1 -1
  510. package/dist/hosting/vnc/hostname-hosts.d.ts +28 -0
  511. package/dist/hosting/vnc/hostname-hosts.d.ts.map +1 -0
  512. package/dist/hosting/vnc/hostname-hosts.js +177 -0
  513. package/dist/hosting/vnc/hostname-hosts.js.map +1 -0
  514. package/dist/hosting/vnc/index.d.ts +1 -0
  515. package/dist/hosting/vnc/index.d.ts.map +1 -1
  516. package/dist/hosting/vnc/index.js +1 -0
  517. package/dist/hosting/vnc/index.js.map +1 -1
  518. package/dist/hosting/vnc/passwd.d.ts.map +1 -1
  519. package/dist/hosting/vnc/passwd.js +14 -3
  520. package/dist/hosting/vnc/passwd.js.map +1 -1
  521. package/dist/hosting/vnc/server-session.d.ts.map +1 -1
  522. package/dist/hosting/vnc/server-session.js +5 -0
  523. package/dist/hosting/vnc/server-session.js.map +1 -1
  524. package/dist/hosting/vnc/service.d.ts +1 -0
  525. package/dist/hosting/vnc/service.d.ts.map +1 -1
  526. package/dist/hosting/vnc/service.js +80 -9
  527. package/dist/hosting/vnc/service.js.map +1 -1
  528. package/dist/hosting/vnc/types.d.ts +8 -0
  529. package/dist/hosting/vnc/types.d.ts.map +1 -1
  530. package/dist/hosting/vnc/types.js +22 -0
  531. package/dist/hosting/vnc/types.js.map +1 -1
  532. package/dist/hosting/vpn/client-conf-protect.d.ts +5 -0
  533. package/dist/hosting/vpn/client-conf-protect.d.ts.map +1 -1
  534. package/dist/hosting/vpn/client-conf-protect.js +15 -0
  535. package/dist/hosting/vpn/client-conf-protect.js.map +1 -1
  536. package/dist/hosting/vpn/openvpn-ops.d.ts.map +1 -1
  537. package/dist/hosting/vpn/openvpn-ops.js +13 -3
  538. package/dist/hosting/vpn/openvpn-ops.js.map +1 -1
  539. package/dist/hosting/vpn/outline-ops.d.ts.map +1 -1
  540. package/dist/hosting/vpn/outline-ops.js +7 -3
  541. package/dist/hosting/vpn/outline-ops.js.map +1 -1
  542. package/dist/hosting/vpn/ports.d.ts +3 -0
  543. package/dist/hosting/vpn/ports.d.ts.map +1 -1
  544. package/dist/hosting/vpn/ports.js +8 -0
  545. package/dist/hosting/vpn/ports.js.map +1 -1
  546. package/dist/hosting/vpn/service.d.ts +11 -0
  547. package/dist/hosting/vpn/service.d.ts.map +1 -1
  548. package/dist/hosting/vpn/service.js +102 -27
  549. package/dist/hosting/vpn/service.js.map +1 -1
  550. package/dist/hosting/web-stats.d.ts.map +1 -1
  551. package/dist/hosting/web-stats.js +0 -1
  552. package/dist/hosting/web-stats.js.map +1 -1
  553. package/dist/hosting/wizard.d.ts.map +1 -1
  554. package/dist/hosting/wizard.js +53 -63
  555. package/dist/hosting/wizard.js.map +1 -1
  556. package/dist/llm/http-transport.d.ts.map +1 -1
  557. package/dist/llm/http-transport.js +11 -3
  558. package/dist/llm/http-transport.js.map +1 -1
  559. package/dist/monitoring/notifications.d.ts.map +1 -1
  560. package/dist/monitoring/notifications.js +86 -0
  561. package/dist/monitoring/notifications.js.map +1 -1
  562. package/dist/monitoring/process-snapshot.d.ts +2 -0
  563. package/dist/monitoring/process-snapshot.d.ts.map +1 -1
  564. package/dist/monitoring/process-snapshot.js +14 -2
  565. package/dist/monitoring/process-snapshot.js.map +1 -1
  566. package/dist/net/ssrf.d.ts +6 -0
  567. package/dist/net/ssrf.d.ts.map +1 -1
  568. package/dist/net/ssrf.js +80 -15
  569. package/dist/net/ssrf.js.map +1 -1
  570. package/dist/repositories/project-repo.d.ts +1 -1
  571. package/dist/repositories/project-repo.d.ts.map +1 -1
  572. package/dist/repositories/project-repo.js +12 -0
  573. package/dist/repositories/project-repo.js.map +1 -1
  574. package/dist/repositories/settings-repo.d.ts.map +1 -1
  575. package/dist/repositories/settings-repo.js +6 -1
  576. package/dist/repositories/settings-repo.js.map +1 -1
  577. package/dist/security/mfa/rate-limit.d.ts +11 -0
  578. package/dist/security/mfa/rate-limit.d.ts.map +1 -1
  579. package/dist/security/mfa/rate-limit.js +18 -0
  580. package/dist/security/mfa/rate-limit.js.map +1 -1
  581. package/dist/security/mfa/webauthn.d.ts +5 -0
  582. package/dist/security/mfa/webauthn.d.ts.map +1 -1
  583. package/dist/security/mfa/webauthn.js +13 -4
  584. package/dist/security/mfa/webauthn.js.map +1 -1
  585. package/dist/security/ssh-identity/install.d.ts.map +1 -1
  586. package/dist/security/ssh-identity/install.js +12 -0
  587. package/dist/security/ssh-identity/install.js.map +1 -1
  588. package/dist/security/ssh-identity/ops.d.ts +16 -0
  589. package/dist/security/ssh-identity/ops.d.ts.map +1 -1
  590. package/dist/security/ssh-identity/ops.js +73 -3
  591. package/dist/security/ssh-identity/ops.js.map +1 -1
  592. package/dist/services/auth.d.ts +9 -0
  593. package/dist/services/auth.d.ts.map +1 -1
  594. package/dist/services/auth.js +27 -9
  595. package/dist/services/auth.js.map +1 -1
  596. package/dist/services/protection-probe.d.ts.map +1 -1
  597. package/dist/services/protection-probe.js +7 -5
  598. package/dist/services/protection-probe.js.map +1 -1
  599. package/dist/services/scheduler.d.ts +5 -0
  600. package/dist/services/scheduler.d.ts.map +1 -1
  601. package/dist/services/scheduler.js +11 -0
  602. package/dist/services/scheduler.js.map +1 -1
  603. package/dist/services/users-admin.d.ts +1 -0
  604. package/dist/services/users-admin.d.ts.map +1 -1
  605. package/dist/services/users-admin.js +42 -4
  606. package/dist/services/users-admin.js.map +1 -1
  607. package/dist/update/index.d.ts +2 -0
  608. package/dist/update/index.d.ts.map +1 -1
  609. package/dist/update/index.js +2 -0
  610. package/dist/update/index.js.map +1 -1
  611. package/dist/update/inventory.d.ts +2 -0
  612. package/dist/update/inventory.d.ts.map +1 -1
  613. package/dist/update/inventory.js +13 -5
  614. package/dist/update/inventory.js.map +1 -1
  615. package/dist/update/self-update-apply.d.ts +55 -0
  616. package/dist/update/self-update-apply.d.ts.map +1 -1
  617. package/dist/update/self-update-apply.js +238 -66
  618. package/dist/update/self-update-apply.js.map +1 -1
  619. package/dist/update/self-update-overlay.d.ts +54 -0
  620. package/dist/update/self-update-overlay.d.ts.map +1 -0
  621. package/dist/update/self-update-overlay.js +360 -0
  622. package/dist/update/self-update-overlay.js.map +1 -0
  623. package/dist/update/update-hub.d.ts +45 -0
  624. package/dist/update/update-hub.d.ts.map +1 -0
  625. package/dist/update/update-hub.js +217 -0
  626. package/dist/update/update-hub.js.map +1 -0
  627. package/package.json +10 -13
@@ -52,6 +52,24 @@ export function parseUfwNumbered(lines) {
52
52
  }
53
53
  return out;
54
54
  }
55
+ /** Parse `/etc/ufw/user.rules` DROP/REJECT source IPs (inactive UFW still stores these). */
56
+ export function parseUfwUserRulesDenyIps(body) {
57
+ const ips = [];
58
+ for (const line of String(body ?? '').split('\n')) {
59
+ const t = line.trim();
60
+ if (!t || t.startsWith('#'))
61
+ continue;
62
+ if (!/-j\s+(DROP|REJECT)\b/i.test(t))
63
+ continue;
64
+ const m = t.match(/-s\s+(\S+)/);
65
+ if (!m)
66
+ continue;
67
+ const n = normalizeIp(m[1].replace(/\/32$/, ''));
68
+ if (n && isValidIp(n))
69
+ ips.push(n);
70
+ }
71
+ return [...new Set(ips)];
72
+ }
55
73
  export function extractDenyFromIps(rules) {
56
74
  const ips = [];
57
75
  for (const r of rules) {
@@ -114,9 +132,26 @@ export async function probeFirewallDeep(host) {
114
132
  notes.push(tl('notes.auto.n0197'));
115
133
  }
116
134
  const rules = parseUfwNumbered(numberedRules);
117
- const denyFromIps = extractDenyFromIps(rules);
135
+ const liveDenyFromIps = extractDenyFromIps(rules);
118
136
  const allowCount = rules.filter((r) => /ALLOW/i.test(r.action)).length;
119
- const denyCount = rules.filter((r) => /DENY|REJECT/i.test(r.action)).length;
137
+ const liveDenyCount = rules.filter((r) => /DENY|REJECT/i.test(r.action)).length;
138
+ let configuredDenyFromIps = [];
139
+ if (installed) {
140
+ try {
141
+ if (host.pathExists('/etc/ufw/user.rules')) {
142
+ const body = await host.readFile('/etc/ufw/user.rules');
143
+ configuredDenyFromIps = parseUfwUserRulesDenyIps(body);
144
+ }
145
+ }
146
+ catch {
147
+ /* optional */
148
+ }
149
+ }
150
+ if (active !== 'active' && configuredDenyFromIps.length) {
151
+ notes.push(tl('notes.auto.n1611', { n: configuredDenyFromIps.length }));
152
+ }
153
+ const denyFromIps = active === 'active' ? liveDenyFromIps : [];
154
+ const denyCount = active === 'active' ? liveDenyCount : 0;
120
155
  return {
121
156
  installed,
122
157
  active,
@@ -127,6 +162,8 @@ export async function probeFirewallDeep(host) {
127
162
  denyFromIps,
128
163
  allowCount,
129
164
  denyCount,
165
+ configuredDenyFromIps,
166
+ configuredDenyCount: configuredDenyFromIps.length,
130
167
  defaultIncoming,
131
168
  defaultOutgoing,
132
169
  executeEnabled: host.executeEnabled(),
@@ -177,6 +214,10 @@ export async function firewallDenyIp(host, ip) {
177
214
  if (!safe || !isValidIp(safe)) {
178
215
  return { ok: false, notes: [tl('notes.invalidIp46')] };
179
216
  }
217
+ const fw = await probeFirewallDeep(host);
218
+ if (fw.active !== 'active') {
219
+ return { ok: false, notes: [tl('notes.auto.n1612')] };
220
+ }
180
221
  const r = await host.runCommand(['ufw', 'deny', 'from', safe], { timeoutMs: 12_000 });
181
222
  return {
182
223
  ok: r.exitCode === 0,
@@ -1 +1 @@
1
- {"version":3,"file":"firewall-ops.js","sourceRoot":"","sources":["../../src/hosting/firewall-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAOvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA8B9D,SAAS,WAAW,CAAC,MAAc,EAAE,SAAkB,EAAE,MAAe;IACtE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,CAAC;IAChD,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,UAAU;QAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,CAAC;IACtD,OAAO,MAAM,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,SAAS,CAAC;AACxB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,uDAAuD;QACvD,2DAA2D;QAC3D,8FAA8F;QAC9F,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CACf,wEAAwE,CACzE,CAAC;QACF,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC;YAC/C,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACf,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAC1B,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE;gBACvC,IAAI;gBACJ,OAAO;gBACP,GAAG,EAAE,CAAC;aACP,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IACjD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,SAAS;QACvC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,oDAAoD;QACpD,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAkB;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhF,IAAI,MAAM,GAAG,SAAS,CAAC;IACvB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,eAAmC,CAAC;IACxC,IAAI,eAAmC,CAAC;IAExC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YACtF,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAAE,MAAM,GAAG,UAAU,CAAC;iBAC/D,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAM,GAAG,QAAQ,CAAC;iBACrF,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;gBAChF,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;YAE9C,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3D,IAAI,EAAE;gBAAE,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,IAAI;gBAAE,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YACxF,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAE5E,OAAO;QACL,SAAS;QACT,MAAM;QACN,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1D,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QACrC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAC1B,WAAW;QACX,UAAU;QACV,SAAS;QACT,eAAe;QACf,eAAe;QACf,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QACrB,KAAK;KAAE,CAAC;AACZ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAkB;IAClC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;SAAE,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAkB,EAClB,OAAgB;IAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC;YACpB,KAAK,EAAE;gBACL,CAAC,CAAC,QAAQ,KAAK,CAAC;oBACd,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC;oBACxB,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;aACjF;SAAE,CAAC;IACR,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3E,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC;QACpB,KAAK,EAAE;YACL,CAAC,CAAC,QAAQ,KAAK,CAAC;gBACd,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC;gBACxB,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;SACjF;KAAE,CAAC;AACR,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAkB,EAClB,EAAU;IAEV,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC;QACpB,KAAK,EAAE;YACL,CAAC,CAAC,QAAQ,KAAK,CAAC;gBACd,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;SACjF;KAAE,CAAC;AACR,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAkB,EAClB,EAAU;IAEV,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QACvE,SAAS,EAAE,MAAM;KAAE,CAAC,CAAC;IACvB,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC;QACpB,KAAK,EAAE;YACL,CAAC,CAAC,QAAQ,KAAK,CAAC;gBACd,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;SACjF;KAAE,CAAC;AACR,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAkB,EAClB,GAAW;IAEX,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACnD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,4CAA4C;IAC5C,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAC7B,CAAC,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,EAAE,CAAC,EACzC,EAAE,SAAS,EAAE,MAAM,EAAE,CACtB,CAAC;IACF,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC;QACpB,KAAK,EAAE;YACL,CAAC,CAAC,QAAQ,KAAK,CAAC;gBACd,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;SAC5F;KAAE,CAAC;AACR,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAuB;IACjD,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;SAClB,IAAI,EAAE;SACN,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,SAAS,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAkB,EAClB,IAAqB,EACrB,QAAgC,KAAK,EACrC,IAAa,EACb,OAAgB;IAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChF,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,yDAAyD;IACzD,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;IACpF,MAAM,MAAM,GACV,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,8EAA8E;IAC9E,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ;YACnB,CAAC,CAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAc;YAC1F,CAAC,CAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAc,CAAC;QAC3C,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,QAAQ;YACxB,CAAC,CAAC,EAAE,CAAC,+BAA+B,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACzD,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,KAAK,CAAC,IAAI,CACR,EAAE,CAAC,6BAA6B,EAAE;oBAChC,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,SAAS;iBAChB,CAAC,CACH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,IAAI,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,OAAO,CACX,EAAE,CAAC,6BAA6B,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,SAAS,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAkB,EAClB,aAAqB;IAErB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,iDAAiD;IACjD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,gBAAgB,CAC5B,IAAI;aACD,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC9E,CAAC;QACF,MAAM,KAAK,GAAG,KAAK;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACtD,OAAO,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAI,IAAI,CAAC,CAAC;aACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAE/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAE9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAC/B,CAAC,MAAM,EAAE,IAAI,EAAE,oBAAoB,IAAI,CAAC,GAAG,EAAE,CAAC,EAC9C,EAAE,SAAS,EAAE,MAAM,EAAE,CACtB,CAAC;QACF,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CACR,EAAE,CAAC,kBAAkB,EAAE;gBACrB,EAAE,EAAE,IAAI,CAAC,GAAG;gBACZ,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aACnD,CAAC,CACH,CAAC;YACF,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,uCAAuC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,oCAAoC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChG,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC;QAC7B,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,EAAc;QAC7B,sDAAsD;QACtD,cAAc,EAAE,EAAc;KAAE;IAClC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC;QAC7B,KAAK,EAAE,uBAAuB;QAC9B,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,EAAc;QAC7B,cAAc,EAAE,EAAc;KAAE;IAClC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC;QAC7B,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,EAAc;QAC7B,yDAAyD;QACzD,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;KAAE;CAAW,CAAC"}
1
+ {"version":3,"file":"firewall-ops.js","sourceRoot":"","sources":["../../src/hosting/firewall-ops.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,11 @@ export interface FtpsSettings {
18
18
  */
19
19
  listenIpv6: boolean;
20
20
  listenPort: number;
21
+ /**
22
+ * New installs bind loopback. Missing stored field = public (do not
23
+ * silently shrink an existing public listener).
24
+ */
25
+ bindAddress?: 'localhost' | 'public';
21
26
  sslEnable: boolean;
22
27
  forceSsl: boolean;
23
28
  /** Domain used to locate cert under dataDir/certs or LE path */
@@ -48,7 +53,21 @@ export interface FtpsStatus {
48
53
  accountCount: number;
49
54
  settings: FtpsSettings;
50
55
  lastAppliedAt?: string;
56
+ /** Values currently in /etc/vsftpd.conf (not panel draft) */
57
+ liveListen?: boolean | null;
58
+ liveListenIpv6?: boolean | null;
59
+ listenConflict?: boolean;
51
60
  }
61
+ export declare function parseVsftpdListenFlags(conf: string): {
62
+ listen: boolean | null;
63
+ listenIpv6: boolean | null;
64
+ conflict: boolean;
65
+ };
66
+ /**
67
+ * FTP jail must sit under dataDir/ftps/homes or a registered project home.
68
+ * Rejects /etc, /root, and other host paths.
69
+ */
70
+ export declare function isFtpHomeAllowed(dataDir: string, db: JsonStore, homePath: string): boolean;
52
71
  /**
53
72
  * Create a jailed FTP account rooted at a project home (or home/app).
54
73
  * Virtual user maps to project linuxUser on apply (guest_username per user_conf).
@@ -69,6 +88,19 @@ export declare function createProjectFtpAccount(db: JsonStore, input: {
69
88
  notes: string[];
70
89
  written: string[];
71
90
  };
91
+ export declare function normalizeFtpBindAddress(raw: unknown, present: boolean): 'localhost' | 'public';
92
+ export declare function ftpBindIsPublic(settings: Pick<FtpsSettings, 'bindAddress'>): boolean;
93
+ /** Public plaintext start needs an explicit allow flag (UI types PLAINTEXT). */
94
+ export declare function assertFtpStartAllowed(input: {
95
+ settings: Pick<FtpsSettings, 'bindAddress' | 'sslEnable'>;
96
+ sslReady: boolean;
97
+ allowPlaintextPublic?: boolean;
98
+ }): {
99
+ ok: true;
100
+ } | {
101
+ ok: false;
102
+ blockMessage: string;
103
+ };
72
104
  export declare function loadFtpsSettings(db: JsonStore): FtpsSettings;
73
105
  export declare function saveFtpsSettings(db: JsonStore, patch: Partial<FtpsSettings>): FtpsSettings;
74
106
  export declare function ftpsPaths(dataDir: string): {
@@ -138,6 +170,8 @@ export declare function applyFtpsService(input: {
138
170
  /** Install packages + copy to system + enable (default true for panel) */
139
171
  applySystem?: boolean;
140
172
  settingsPatch?: Partial<FtpsSettings>;
173
+ /** One-shot: allow public bind without FTPS (operator typed PLAINTEXT). */
174
+ allowPlaintextPublic?: boolean;
141
175
  }): Promise<ApplyResult & {
142
176
  requiresExecute: boolean;
143
177
  requiresRoot: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ftps-service.d.ts","sourceRoot":"","sources":["../../src/hosting/ftps-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ftps-service.d.ts","sourceRoot":"","sources":["../../src/hosting/ftps-service.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { tl } from 'ysk-server-shared';
4
4
  * Panel-only execution — never asks the user to run CLI.
5
5
  */
6
6
  import { existsSync, mkdirSync, writeFileSync, chmodSync } from 'node:fs';
7
- import { join } from 'node:path';
7
+ import { join, resolve, sep } from 'node:path';
8
8
  import { execFileSync } from 'node:child_process';
9
9
  import { createHash, randomBytes } from 'node:crypto';
10
10
  import { panelBlockMessage } from './system-apply.js';
@@ -59,8 +59,9 @@ export const DEFAULT_FTPS_SETTINGS = {
59
59
  listen: true,
60
60
  listenIpv6: false,
61
61
  listenPort: 21,
62
- sslEnable: true,
63
- forceSsl: true,
62
+ bindAddress: 'localhost',
63
+ sslEnable: false,
64
+ forceSsl: false,
64
65
  sslDomain: '',
65
66
  pasvMin: 30000,
66
67
  pasvMax: 30100,
@@ -70,6 +71,42 @@ export const DEFAULT_FTPS_SETTINGS = {
70
71
  banner: 'YSK FTPS',
71
72
  guestUsername: 'ftp'
72
73
  };
74
+ export function parseVsftpdListenFlags(conf) {
75
+ const listen = /^\s*listen\s*=\s*(YES|NO)\b/im.exec(conf);
76
+ const v6 = /^\s*listen_ipv6\s*=\s*(YES|NO)\b/im.exec(conf);
77
+ const listenYes = listen ? listen[1].toUpperCase() === 'YES' : null;
78
+ const v6Yes = v6 ? v6[1].toUpperCase() === 'YES' : null;
79
+ return {
80
+ listen: listenYes,
81
+ listenIpv6: v6Yes,
82
+ conflict: listenYes === true && v6Yes === true,
83
+ };
84
+ }
85
+ /**
86
+ * FTP jail must sit under dataDir/ftps/homes or a registered project home.
87
+ * Rejects /etc, /root, and other host paths.
88
+ */
89
+ export function isFtpHomeAllowed(dataDir, db, homePath) {
90
+ const raw = String(homePath || '').trim();
91
+ if (!raw || raw.includes('\0'))
92
+ return false;
93
+ const abs = resolve(raw);
94
+ if (abs === '/' || abs === '/etc' || abs === '/root' || abs === '/home')
95
+ return false;
96
+ const under = (root) => {
97
+ const r = resolve(root);
98
+ return abs === r || abs.startsWith(r.endsWith(sep) ? r : r + sep);
99
+ };
100
+ if (under(dataDir))
101
+ return true;
102
+ const projects = (db.snapshot.projects ?? []);
103
+ for (const p of projects) {
104
+ const h = String(p.homeDir ?? p.home_dir ?? '').trim();
105
+ if (h && under(h))
106
+ return true;
107
+ }
108
+ return false;
109
+ }
73
110
  /**
74
111
  * Create a jailed FTP account rooted at a project home (or home/app).
75
112
  * Virtual user maps to project linuxUser on apply (guest_username per user_conf).
@@ -159,13 +196,38 @@ export function createProjectFtpAccount(db, input) {
159
196
  written: [homePath]
160
197
  };
161
198
  }
199
+ export function normalizeFtpBindAddress(raw, present) {
200
+ const s = String(raw ?? '').trim().toLowerCase();
201
+ if (s === 'localhost' || s === '127.0.0.1' || s === '::1')
202
+ return 'localhost';
203
+ if (s === 'public' || s === '0.0.0.0' || s === '*' || s === '::')
204
+ return 'public';
205
+ return present ? 'localhost' : 'public';
206
+ }
207
+ export function ftpBindIsPublic(settings) {
208
+ return normalizeFtpBindAddress(settings.bindAddress, settings.bindAddress != null) === 'public';
209
+ }
210
+ /** Public plaintext start needs an explicit allow flag (UI types PLAINTEXT). */
211
+ export function assertFtpStartAllowed(input) {
212
+ const ftpsOn = Boolean(input.settings.sslEnable && input.sslReady);
213
+ if (ftpsOn || !ftpBindIsPublic(input.settings))
214
+ return { ok: true };
215
+ if (input.allowPlaintextPublic)
216
+ return { ok: true };
217
+ return { ok: false, blockMessage: tl('notes.ftp.publicPlaintextBlocked') };
218
+ }
162
219
  export function loadFtpsSettings(db) {
163
220
  const raw = db.snapshot.settings?.[FTPS_SETTINGS_KEY];
164
221
  if (!raw)
165
222
  return { ...DEFAULT_FTPS_SETTINGS };
166
223
  try {
167
- const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;
168
- return { ...DEFAULT_FTPS_SETTINGS, ...parsed };
224
+ const parsed = (typeof raw === 'string' ? JSON.parse(raw) : raw);
225
+ const present = parsed != null && typeof parsed === 'object' && 'bindAddress' in parsed;
226
+ return {
227
+ ...DEFAULT_FTPS_SETTINGS,
228
+ ...parsed,
229
+ bindAddress: normalizeFtpBindAddress(parsed.bindAddress, present),
230
+ };
169
231
  }
170
232
  catch {
171
233
  return { ...DEFAULT_FTPS_SETTINGS };
@@ -182,6 +244,7 @@ export function saveFtpsSettings(db, patch) {
182
244
  next.sslDomain = String(next.sslDomain ?? '').trim().toLowerCase();
183
245
  next.guestUsername = String(next.guestUsername || 'ftp').replace(/[^a-z0-9_-]/gi, '') || 'ftp';
184
246
  next.banner = String(next.banner || 'YSK FTPS').slice(0, 120);
247
+ next.bindAddress = normalizeFtpBindAddress(next.bindAddress, true);
185
248
  db.snapshot.settings[FTPS_SETTINGS_KEY] = JSON.stringify(next);
186
249
  db.persist();
187
250
  return next;
@@ -236,8 +299,10 @@ export function resolveCertPaths(dataDir, settings) {
236
299
  }
237
300
  export function buildVsftpdConf(input) {
238
301
  const paths = ftpsPaths(input.dataDir);
239
- const { cert, key } = resolveCertPaths(input.dataDir, input.settings);
302
+ const resolved = resolveCertPaths(input.dataDir, input.settings);
303
+ const { cert, key } = resolved;
240
304
  const s = input.settings;
305
+ const sslOn = Boolean(s.sslEnable && resolved.ok && cert && key);
241
306
  // vsftpd: listen and listen_ipv6 are mutually exclusive on many builds.
242
307
  // dual: listen=NO + listen_ipv6=YES (IPv6 socket; v4-mapped if bindv6only=0)
243
308
  // ipv6-only: same as dual with listen flag false
@@ -252,6 +317,11 @@ export function buildVsftpdConf(input) {
252
317
  listenV4 ? 'listen=YES' : 'listen=NO',
253
318
  listenV6 ? 'listen_ipv6=YES' : 'listen_ipv6=NO',
254
319
  `listen_port=${s.listenPort}`,
320
+ ...(normalizeFtpBindAddress(s.bindAddress, s.bindAddress != null) === 'localhost'
321
+ ? listenV6
322
+ ? ['listen_address6=::1']
323
+ : ['listen_address=127.0.0.1']
324
+ : []),
255
325
  'anonymous_enable=NO',
256
326
  'local_enable=YES',
257
327
  s.writeEnable ? 'write_enable=YES' : 'write_enable=NO',
@@ -275,20 +345,20 @@ export function buildVsftpdConf(input) {
275
345
  `pasv_max_port=${s.pasvMax}`,
276
346
  s.pasvAddress ? `pasv_address=${s.pasvAddress}` : '# pasv_address=',
277
347
  `ftpd_banner=${s.banner.replace(/[\r\n]/g, ' ')}`,
278
- s.sslEnable ? 'ssl_enable=YES' : 'ssl_enable=NO',
279
- s.forceSsl && s.sslEnable ? 'force_local_data_ssl=YES' : 'force_local_data_ssl=NO',
280
- s.forceSsl && s.sslEnable ? 'force_local_logins_ssl=YES' : 'force_local_logins_ssl=NO',
348
+ sslOn ? 'ssl_enable=YES' : 'ssl_enable=NO',
349
+ s.forceSsl && sslOn ? 'force_local_data_ssl=YES' : 'force_local_data_ssl=NO',
350
+ s.forceSsl && sslOn ? 'force_local_logins_ssl=YES' : 'force_local_logins_ssl=NO',
281
351
  'ssl_tlsv1=YES',
282
352
  'ssl_sslv2=NO',
283
353
  'ssl_sslv3=NO',
284
354
  'require_ssl_reuse=NO',
285
355
  'ssl_ciphers=HIGH',
286
356
  ];
287
- if (s.sslEnable && cert && key) {
357
+ if (sslOn && cert && key) {
288
358
  lines.push(`rsa_cert_file=${cert}`, `rsa_private_key_file=${key}`);
289
359
  }
290
- else if (s.sslEnable) {
291
- lines.push(tl('notes.auto.n0054'), '# rsa_private_key_file=');
360
+ else if (s.sslEnable && !resolved.ok) {
361
+ lines.push('# ssl_enable skipped — no certificate for sslDomain');
292
362
  }
293
363
  return lines.join('\n') + '\n';
294
364
  }
@@ -365,6 +435,10 @@ export function writeManagedFtpAccounts(input) {
365
435
  continue;
366
436
  }
367
437
  const home = String(a.homePath || join(paths.homes, username));
438
+ if (!isFtpHomeAllowed(input.dataDir, input.db, home)) {
439
+ notes.push(tl('notes.auto.t0272'));
440
+ continue;
441
+ }
368
442
  mkdirSync(home, { recursive: true });
369
443
  // crypt hash for pam_userdb. Fresh password_plain wins (create / reset);
370
444
  // otherwise reuse stored password_hash. Never leave plaintext after write.
@@ -463,6 +537,21 @@ export async function probeFtpsStatus(input) {
463
537
  active = 'not_installed';
464
538
  }
465
539
  const meta = input.db.snapshot.settings?.['ftps_last_applied_at'];
540
+ let liveListen = null;
541
+ let liveListenIpv6 = null;
542
+ let listenConflict = false;
543
+ try {
544
+ const { readFileSync } = await import('node:fs');
545
+ if (existsSync('/etc/vsftpd.conf')) {
546
+ const flags = parseVsftpdListenFlags(readFileSync('/etc/vsftpd.conf', 'utf8'));
547
+ liveListen = flags.listen;
548
+ liveListenIpv6 = flags.listenIpv6;
549
+ listenConflict = flags.conflict;
550
+ }
551
+ }
552
+ catch {
553
+ /* optional */
554
+ }
466
555
  return {
467
556
  installed,
468
557
  active,
@@ -470,7 +559,10 @@ export async function probeFtpsStatus(input) {
470
559
  confSystemExists: existsSync('/etc/vsftpd.conf'),
471
560
  accountCount: listResources(input.db, 'ftp_accounts').length,
472
561
  settings,
473
- lastAppliedAt: typeof meta === 'string' ? meta : undefined
562
+ lastAppliedAt: typeof meta === 'string' ? meta : undefined,
563
+ liveListen,
564
+ liveListenIpv6,
565
+ listenConflict,
474
566
  };
475
567
  }
476
568
  /**
@@ -486,6 +578,10 @@ export async function applyFtpsService(input) {
486
578
  const written = [];
487
579
  const notes = [];
488
580
  const commandResults = [];
581
+ const certs = resolveCertPaths(input.dataDir, settings);
582
+ if (settings.sslEnable && !certs.ok) {
583
+ notes.push('TLS is on but no certificate was found (set sslDomain to an issued cert, or leave TLS off). Writing ssl_enable=NO so vsftpd can start.');
584
+ }
489
585
  // 1. conf
490
586
  const conf = buildVsftpdConf({ dataDir: input.dataDir, settings });
491
587
  writeFileSync(paths.conf, conf, 'utf8');
@@ -531,6 +627,35 @@ export async function applyFtpsService(input) {
531
627
  };
532
628
  }
533
629
  if (can) {
630
+ const startGate = assertFtpStartAllowed({
631
+ settings,
632
+ sslReady: Boolean(settings.sslEnable && certs.ok),
633
+ allowPlaintextPublic: input.allowPlaintextPublic === true,
634
+ });
635
+ if (!startGate.ok) {
636
+ notes.push(startGate.blockMessage);
637
+ steps.push({
638
+ name: tl('notes.ftp.startVsftpd'),
639
+ status: 'blocked',
640
+ detail: startGate.blockMessage,
641
+ });
642
+ return {
643
+ ok: false,
644
+ executed: false,
645
+ blocked: true,
646
+ blockReason: 'validation',
647
+ blockMessage: startGate.blockMessage,
648
+ written,
649
+ commands: [],
650
+ commandResults,
651
+ notes,
652
+ steps,
653
+ requiresExecute: false,
654
+ requiresRoot: false,
655
+ settings,
656
+ status: await probeFtpsStatus(input),
657
+ };
658
+ }
534
659
  // ensure guest user exists
535
660
  const gu = settings.guestUsername;
536
661
  const idr = await input.host.runCommand(['bash', '-c', `id -u ${gu} >/dev/null 2>&1 || useradd -r -d ${paths.homes} -s /usr/sbin/nologin ${gu}`], { timeoutMs: 30_000 });
@@ -742,6 +867,9 @@ export async function applyFtpAccountReal(input) {
742
867
  return { ok: false, notes: [tl('notes.auto.n0011')] };
743
868
  const paths = ftpsPaths(input.dataDir);
744
869
  const home = String(acc.homePath || join(paths.homes, String(acc.username)));
870
+ if (!isFtpHomeAllowed(input.dataDir, input.db, home)) {
871
+ return { ok: false, notes: [tl('notes.auto.n0878')] };
872
+ }
745
873
  mkdirSync(home, { recursive: true });
746
874
  updateResource(input.db, 'ftp_accounts', input.id, { homePath: home });
747
875
  // Always rewrite managed files for all accounts