@rakay-technology/kraft 0.7.4

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 (504) hide show
  1. package/README.md +263 -0
  2. package/dist/bare-HL2GUYE2.js +27 -0
  3. package/dist/bowser-HNOTPGJO.js +2825 -0
  4. package/dist/chunk-3CJLKL6E.js +124 -0
  5. package/dist/chunk-3NQQXMDR.js +2098 -0
  6. package/dist/chunk-42WQABXM.js +439 -0
  7. package/dist/chunk-5GPXMTE4.js +25 -0
  8. package/dist/chunk-AJ4QZLZ2.js +1069 -0
  9. package/dist/chunk-AO252K7Z.js +137 -0
  10. package/dist/chunk-BQMFIXHI.js +975 -0
  11. package/dist/chunk-DM3PKWDC.js +2453 -0
  12. package/dist/chunk-DOD2BXHQ.js +1364 -0
  13. package/dist/chunk-DRK3MEDS.js +2870 -0
  14. package/dist/chunk-EW4PHKB2.js +13914 -0
  15. package/dist/chunk-HMJUFZK7.js +340 -0
  16. package/dist/chunk-I2TOOF2A.js +517 -0
  17. package/dist/chunk-I3DPMTSF.js +29 -0
  18. package/dist/chunk-JSCZT76F.js +2588 -0
  19. package/dist/chunk-MNV2QFHW.js +138 -0
  20. package/dist/chunk-MOLPYPVH.js +2529 -0
  21. package/dist/chunk-N4OALTFK.js +295 -0
  22. package/dist/chunk-OFXBNFNL.js +458 -0
  23. package/dist/chunk-ONKEYSMY.js +1388 -0
  24. package/dist/chunk-PDW4L3NV.js +17 -0
  25. package/dist/chunk-PNNXWA2A.js +1947 -0
  26. package/dist/chunk-PNRPKRJU.js +11105 -0
  27. package/dist/chunk-PVOWHIND.js +26781 -0
  28. package/dist/chunk-PXKCZB2I.js +46 -0
  29. package/dist/chunk-PZVKPCKE.js +475 -0
  30. package/dist/chunk-QWHBRY2K.js +4945 -0
  31. package/dist/chunk-RFOBMHQ7.js +338 -0
  32. package/dist/chunk-RHLNVZMS.js +28 -0
  33. package/dist/chunk-RVER2EOO.js +577 -0
  34. package/dist/chunk-S3QBGGVP.js +81 -0
  35. package/dist/chunk-TAML5WMA.js +198 -0
  36. package/dist/chunk-THTEUDBC.js +3188 -0
  37. package/dist/chunk-WYNM7L22.js +329 -0
  38. package/dist/chunk-XGCG4MD5.js +102 -0
  39. package/dist/chunk-XVKUFMIB.js +148 -0
  40. package/dist/chunk-XZYFZ6A5.js +50 -0
  41. package/dist/chunk-Y7PVJUXJ.js +2275 -0
  42. package/dist/chunk-YRSZPVMB.js +306 -0
  43. package/dist/chunk-YZUKHG3S.js +362 -0
  44. package/dist/chunk-ZVFS4LUA.js +116 -0
  45. package/dist/chunk-ZWLDLTJP.js +1417 -0
  46. package/dist/detect-676SNZK4.js +48 -0
  47. package/dist/dist-es-2YRDXMUU.js +73 -0
  48. package/dist/dist-es-CCVZEFRZ.js +91 -0
  49. package/dist/dist-es-EDUSMF6Q.js +488 -0
  50. package/dist/dist-es-IOH6G4GM.js +380 -0
  51. package/dist/dist-es-KWSMDPIP.js +26 -0
  52. package/dist/dist-es-UYDDOVZ3.js +173 -0
  53. package/dist/dist-es-XUOR4NQN.js +321 -0
  54. package/dist/docker-GOT3Q7DJ.js +41 -0
  55. package/dist/docker-edge-executor-VO6JHHW2.js +19 -0
  56. package/dist/edge-import-NFCHIW7G.js +50 -0
  57. package/dist/edge-preflight-QUJ757C6.js +45 -0
  58. package/dist/ensure-container-edge-Q7IZXHGM.js +38 -0
  59. package/dist/event-streams-TR4GAC53.js +46 -0
  60. package/dist/executor-GKXKN52K.js +42 -0
  61. package/dist/host-channel-preflight-Z6HYSPKO.js +48 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +9469 -0
  64. package/dist/loadSso-UGF4JMRK.js +581 -0
  65. package/dist/local-executor-OMMDKXCM.js +13 -0
  66. package/dist/nginx-VITTWZZU.js +42 -0
  67. package/dist/node-bootstrap.js +277 -0
  68. package/dist/node-entry.js +55 -0
  69. package/dist/noop-CLLJHCPL.js +11 -0
  70. package/dist/openresty-lua-6I3Z6PEQ.js +90 -0
  71. package/dist/privilege-UQAI2HV4.js +20 -0
  72. package/dist/server/engine/ChangeLog +2289 -0
  73. package/dist/server/engine/Documentations +5 -0
  74. package/dist/server/engine/LICENSE +674 -0
  75. package/dist/server/engine/README.md +34 -0
  76. package/dist/server/engine/conf/amavisd +150 -0
  77. package/dist/server/engine/conf/clamav +71 -0
  78. package/dist/server/engine/conf/core +632 -0
  79. package/dist/server/engine/conf/dovecot +151 -0
  80. package/dist/server/engine/conf/fail2ban +72 -0
  81. package/dist/server/engine/conf/global +698 -0
  82. package/dist/server/engine/conf/iredapd +52 -0
  83. package/dist/server/engine/conf/logwatch +28 -0
  84. package/dist/server/engine/conf/postfix +97 -0
  85. package/dist/server/engine/conf/postgresql +93 -0
  86. package/dist/server/engine/conf/spamassassin +39 -0
  87. package/dist/server/engine/dialog/config_via_dialog.sh +258 -0
  88. package/dist/server/engine/dialog/optional_components.sh +122 -0
  89. package/dist/server/engine/dialog/pgsql_config.sh +52 -0
  90. package/dist/server/engine/dialog/virtual_domain_config.sh +94 -0
  91. package/dist/server/engine/functions/amavisd.sh +267 -0
  92. package/dist/server/engine/functions/backend.sh +85 -0
  93. package/dist/server/engine/functions/clamav.sh +100 -0
  94. package/dist/server/engine/functions/cleanup.sh +393 -0
  95. package/dist/server/engine/functions/dovecot.sh +583 -0
  96. package/dist/server/engine/functions/fail2ban.sh +209 -0
  97. package/dist/server/engine/functions/iredapd.sh +356 -0
  98. package/dist/server/engine/functions/optional_components.sh +24 -0
  99. package/dist/server/engine/functions/packages.sh +522 -0
  100. package/dist/server/engine/functions/packages_freebsd.sh +179 -0
  101. package/dist/server/engine/functions/postfix.sh +457 -0
  102. package/dist/server/engine/functions/postgresql.sh +239 -0
  103. package/dist/server/engine/functions/spamassassin.sh +49 -0
  104. package/dist/server/engine/functions/system_accounts.sh +128 -0
  105. package/dist/server/engine/iRedMail.sh +144 -0
  106. package/dist/server/engine/pkgs/get_all.sh +338 -0
  107. package/dist/server/engine/pkgs/pkgs.freebsd.sha256 +3 -0
  108. package/dist/server/engine/pkgs/pkgs.openbsd.sha256 +6 -0
  109. package/dist/server/engine/pkgs/pkgs.sha256 +1 -0
  110. package/dist/server/engine/samples/amavisd/amavisd.conf +702 -0
  111. package/dist/server/engine/samples/amavisd/amavisd.mysql +278 -0
  112. package/dist/server/engine/samples/amavisd/amavisd.pgsql +253 -0
  113. package/dist/server/engine/samples/amavisd/amavisd.schema +942 -0
  114. package/dist/server/engine/samples/amavisd/default_spam_policy.sql +46 -0
  115. package/dist/server/engine/samples/dovecot/dovecot-2.4-mariadb.conf +758 -0
  116. package/dist/server/engine/samples/dovecot/dovecot-2.4-openldap.conf +767 -0
  117. package/dist/server/engine/samples/dovecot/dovecot-2.4-pgsql.conf +762 -0
  118. package/dist/server/engine/samples/dovecot/dovecot-last-login.conf +50 -0
  119. package/dist/server/engine/samples/dovecot/dovecot-ldap.conf +21 -0
  120. package/dist/server/engine/samples/dovecot/dovecot-share-folder.conf +22 -0
  121. package/dist/server/engine/samples/dovecot/dovecot-sql.conf +28 -0
  122. package/dist/server/engine/samples/dovecot/dovecot-used-quota.conf +13 -0
  123. package/dist/server/engine/samples/dovecot/dovecot.conf +484 -0
  124. package/dist/server/engine/samples/dovecot/dovecot.sieve +7 -0
  125. package/dist/server/engine/samples/dovecot/dovecot2-quota-warning.sh +38 -0
  126. package/dist/server/engine/samples/dovecot/sql/imap_share_folder.mysql +16 -0
  127. package/dist/server/engine/samples/dovecot/sql/last_login.mysql +12 -0
  128. package/dist/server/engine/samples/dovecot/sql/used_quota.mysql +26 -0
  129. package/dist/server/engine/samples/dovecot/systemd/override.conf +3 -0
  130. package/dist/server/engine/samples/fail2ban/action.d/banned_db.conf +9 -0
  131. package/dist/server/engine/samples/fail2ban/bin/fail2ban_banned_db +268 -0
  132. package/dist/server/engine/samples/fail2ban/fail2ban.local +17 -0
  133. package/dist/server/engine/samples/fail2ban/filter.d/dovecot.iredmail.conf +5 -0
  134. package/dist/server/engine/samples/fail2ban/filter.d/postfix-pregreet.iredmail.conf +16 -0
  135. package/dist/server/engine/samples/fail2ban/filter.d/postfix.iredmail.conf +18 -0
  136. package/dist/server/engine/samples/fail2ban/filter.d/roundcube.iredmail.conf +9 -0
  137. package/dist/server/engine/samples/fail2ban/jail.d/dovecot.local +8 -0
  138. package/dist/server/engine/samples/fail2ban/jail.d/nginx-http-auth.local +8 -0
  139. package/dist/server/engine/samples/fail2ban/jail.d/postfix-pregreet.local +9 -0
  140. package/dist/server/engine/samples/fail2ban/jail.d/postfix.local +8 -0
  141. package/dist/server/engine/samples/fail2ban/jail.d/roundcube.local +9 -0
  142. package/dist/server/engine/samples/fail2ban/jail.d/sogo.local +8 -0
  143. package/dist/server/engine/samples/fail2ban/jail.d/sshd.local +11 -0
  144. package/dist/server/engine/samples/fail2ban/jail.local +6 -0
  145. package/dist/server/engine/samples/fail2ban/openbsd/rc +27 -0
  146. package/dist/server/engine/samples/fail2ban/sql/fail2ban.mysql +49 -0
  147. package/dist/server/engine/samples/fail2ban/sql/fail2ban.pgsql +48 -0
  148. package/dist/server/engine/samples/firewall/firewalld/services/ssh.xml +6 -0
  149. package/dist/server/engine/samples/firewall/firewalld/zones/iredmail.xml +15 -0
  150. package/dist/server/engine/samples/firewall/iptables/ip6tables.init.debian +362 -0
  151. package/dist/server/engine/samples/firewall/iptables/ip6tables.rules +53 -0
  152. package/dist/server/engine/samples/firewall/iptables/iptables.init.debian +363 -0
  153. package/dist/server/engine/samples/firewall/iptables/iptables.rules +54 -0
  154. package/dist/server/engine/samples/firewall/nftables.conf +58 -0
  155. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/dovecot.conf +3 -0
  156. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/iredapd.conf +1 -0
  157. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/mlmmjadmin.conf +1 -0
  158. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/php-fpm.conf +2 -0
  159. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/slapd.conf +1 -0
  160. package/dist/server/engine/samples/freebsd/syslog.d/dovecot.conf +2 -0
  161. package/dist/server/engine/samples/freebsd/syslog.d/fail2ban.conf +2 -0
  162. package/dist/server/engine/samples/freebsd/syslog.d/iredapd.conf +2 -0
  163. package/dist/server/engine/samples/freebsd/syslog.d/mlmmjadmin.conf +2 -0
  164. package/dist/server/engine/samples/freebsd/syslog.d/php-fpm.conf +2 -0
  165. package/dist/server/engine/samples/freebsd/syslog.d/slapd.conf +2 -0
  166. package/dist/server/engine/samples/iredmail/iredmail.mysql +491 -0
  167. package/dist/server/engine/samples/iredmail/iredmail.pgsql +465 -0
  168. package/dist/server/engine/samples/iredmail/iredmail.schema +456 -0
  169. package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.3.pgsql +40 -0
  170. package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.4.pgsql +18 -0
  171. package/dist/server/engine/samples/logrotate/dovecot +13 -0
  172. package/dist/server/engine/samples/logrotate/iredapd +13 -0
  173. package/dist/server/engine/samples/logrotate/mlmmjadmin +13 -0
  174. package/dist/server/engine/samples/logrotate/openldap +19 -0
  175. package/dist/server/engine/samples/logrotate/php-fpm +13 -0
  176. package/dist/server/engine/samples/openbsd/ldapd.conf +58 -0
  177. package/dist/server/engine/samples/openbsd/pf.conf +28 -0
  178. package/dist/server/engine/samples/postfix/command_filter.pcre +3 -0
  179. package/dist/server/engine/samples/postfix/freebsd/mailer.conf +9 -0
  180. package/dist/server/engine/samples/postfix/helo_access.pcre +180 -0
  181. package/dist/server/engine/samples/postfix/ldap/catchall_maps.cf +11 -0
  182. package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_domain.cf +11 -0
  183. package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_user.cf +11 -0
  184. package/dist/server/engine/samples/postfix/ldap/relay_domains.cf +11 -0
  185. package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_domain.cf +11 -0
  186. package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_user.cf +11 -0
  187. package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_domain.cf +11 -0
  188. package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_user.cf +11 -0
  189. package/dist/server/engine/samples/postfix/ldap/sender_login_maps.cf +11 -0
  190. package/dist/server/engine/samples/postfix/ldap/transport_maps_domain.cf +11 -0
  191. package/dist/server/engine/samples/postfix/ldap/transport_maps_user.cf +11 -0
  192. package/dist/server/engine/samples/postfix/ldap/virtual_alias_maps.cf +11 -0
  193. package/dist/server/engine/samples/postfix/ldap/virtual_group_maps.cf +11 -0
  194. package/dist/server/engine/samples/postfix/ldap/virtual_group_members_maps.cf +11 -0
  195. package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_domains.cf +11 -0
  196. package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_maps.cf +12 -0
  197. package/dist/server/engine/samples/postfix/main.cf +282 -0
  198. package/dist/server/engine/samples/postfix/main.cf.amavisd +7 -0
  199. package/dist/server/engine/samples/postfix/main.cf.dovecot +8 -0
  200. package/dist/server/engine/samples/postfix/main.cf.ldap +39 -0
  201. package/dist/server/engine/samples/postfix/main.cf.mlmmj +5 -0
  202. package/dist/server/engine/samples/postfix/main.cf.mysql +39 -0
  203. package/dist/server/engine/samples/postfix/main.cf.pgsql +39 -0
  204. package/dist/server/engine/samples/postfix/main.cf.postscreen +30 -0
  205. package/dist/server/engine/samples/postfix/master.cf +101 -0
  206. package/dist/server/engine/samples/postfix/mysql/catchall_maps.cf +5 -0
  207. package/dist/server/engine/samples/postfix/mysql/domain_alias_catchall_maps.cf +5 -0
  208. package/dist/server/engine/samples/postfix/mysql/domain_alias_maps.cf +5 -0
  209. package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_domain.cf +5 -0
  210. package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_user.cf +5 -0
  211. package/dist/server/engine/samples/postfix/mysql/relay_domains.cf +5 -0
  212. package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_domain.cf +5 -0
  213. package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_user.cf +5 -0
  214. package/dist/server/engine/samples/postfix/mysql/sender_dependent_relayhost_maps.cf +6 -0
  215. package/dist/server/engine/samples/postfix/mysql/sender_login_maps.cf +5 -0
  216. package/dist/server/engine/samples/postfix/mysql/transport_maps_domain.cf +5 -0
  217. package/dist/server/engine/samples/postfix/mysql/transport_maps_maillist.cf +5 -0
  218. package/dist/server/engine/samples/postfix/mysql/transport_maps_user.cf +5 -0
  219. package/dist/server/engine/samples/postfix/mysql/virtual_alias_maps.cf +5 -0
  220. package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_domains.cf +5 -0
  221. package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_maps.cf +5 -0
  222. package/dist/server/engine/samples/postfix/pgsql/catchall_maps.cf +5 -0
  223. package/dist/server/engine/samples/postfix/pgsql/domain_alias_catchall_maps.cf +5 -0
  224. package/dist/server/engine/samples/postfix/pgsql/domain_alias_maps.cf +5 -0
  225. package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_domain.cf +5 -0
  226. package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_user.cf +5 -0
  227. package/dist/server/engine/samples/postfix/pgsql/relay_domains.cf +5 -0
  228. package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_domain.cf +5 -0
  229. package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_user.cf +5 -0
  230. package/dist/server/engine/samples/postfix/pgsql/sender_dependent_relayhost_maps.cf +6 -0
  231. package/dist/server/engine/samples/postfix/pgsql/sender_login_maps.cf +5 -0
  232. package/dist/server/engine/samples/postfix/pgsql/transport_maps_domain.cf +5 -0
  233. package/dist/server/engine/samples/postfix/pgsql/transport_maps_maillist.cf +5 -0
  234. package/dist/server/engine/samples/postfix/pgsql/transport_maps_user.cf +5 -0
  235. package/dist/server/engine/samples/postfix/pgsql/virtual_alias_maps.cf +5 -0
  236. package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_domains.cf +5 -0
  237. package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_maps.cf +5 -0
  238. package/dist/server/engine/samples/postfix/postscreen_access.cidr +6 -0
  239. package/dist/server/engine/samples/postgresql/sql/add_first_domain_and_user.sql +34 -0
  240. package/dist/server/engine/samples/postgresql/sql/grant_permissions.sql +14 -0
  241. package/dist/server/engine/samples/postgresql/sql/init_vmail_db.sql +15 -0
  242. package/dist/server/engine/samples/rsyslog.d/1-iredmail-dovecot.conf +23 -0
  243. package/dist/server/engine/samples/rsyslog.d/1-iredmail-fail2ban.conf +2 -0
  244. package/dist/server/engine/samples/rsyslog.d/1-iredmail-iredapd.conf +12 -0
  245. package/dist/server/engine/samples/rsyslog.d/1-iredmail-mlmmjadmin.conf +12 -0
  246. package/dist/server/engine/samples/rsyslog.d/1-iredmail-openldap.conf +2 -0
  247. package/dist/server/engine/samples/rsyslog.d/1-iredmail-phpfpm.conf +3 -0
  248. package/dist/server/engine/samples/spamassassin/local.cf +186 -0
  249. package/dist/server/engine/samples/spamassassin/razor.conf +1 -0
  250. package/dist/server/engine/samples/systemd/clamd.service.d/override.conf +2 -0
  251. package/dist/server/engine/samples/systemd/mariadb.service.d/override.conf +3 -0
  252. package/dist/server/engine/samples/systemd/slapd.service.d/override.conf +6 -0
  253. package/dist/server/engine/samples/yum/CentOS-Linux-AppStream.repo +6 -0
  254. package/dist/server/engine/samples/yum/CentOS-Linux-PowerTools.repo +6 -0
  255. package/dist/server/engine/samples/yum/CentOS-Stream-AppStream.repo +7 -0
  256. package/dist/server/engine/samples/yum/CentOS-Stream-PowerTools.repo +7 -0
  257. package/dist/server/engine/samples/yum/symas-openldap.repo +6 -0
  258. package/dist/server/engine/tools/add_enabled_service.py +60 -0
  259. package/dist/server/engine/tools/backup_mysql.sh +238 -0
  260. package/dist/server/engine/tools/backup_openldap.sh +230 -0
  261. package/dist/server/engine/tools/backup_pgsql.sh +217 -0
  262. package/dist/server/engine/tools/backup_sogo.sh +156 -0
  263. package/dist/server/engine/tools/create_mail_user_OpenLDAP.py +335 -0
  264. package/dist/server/engine/tools/create_mail_user_OpenLDAP.sh +287 -0
  265. package/dist/server/engine/tools/create_mail_user_SQL.sh +127 -0
  266. package/dist/server/engine/tools/enable_postscreen.sh +144 -0
  267. package/dist/server/engine/tools/fail2ban_unban_ip.sh +39 -0
  268. package/dist/server/engine/tools/find_sasl_login_ip.sh +20 -0
  269. package/dist/server/engine/tools/find_top_sasl_usernames.sh +28 -0
  270. package/dist/server/engine/tools/generate_ssl_keys.sh +85 -0
  271. package/dist/server/engine/tools/kill_high_cpu_sogo_process.sh +32 -0
  272. package/dist/server/engine/tools/ldap_assign_user_to_groups.py +151 -0
  273. package/dist/server/engine/tools/ldap_move_members_to_another_group.py +129 -0
  274. package/dist/server/engine/tools/migrate_sql_alias_table.py +177 -0
  275. package/dist/server/engine/update/0.9.8/amavisd.mysql +29 -0
  276. package/dist/server/engine/update/0.9.8/amavisd.pgsql +39 -0
  277. package/dist/server/engine/update/0.9.8/iredmail.mysql +53 -0
  278. package/dist/server/engine/update/0.9.8/iredmail.pgsql +61 -0
  279. package/dist/server/engine/update/0.9.9/iredmail.mysql +2 -0
  280. package/dist/server/engine/update/0.9.9/iredmail.pgsql +2 -0
  281. package/dist/server/engine/update/1.0/iredmail.mysql +2 -0
  282. package/dist/server/engine/update/1.0/iredmail.pgsql +2 -0
  283. package/dist/server/engine/update/1.2/last_login.mysql +16 -0
  284. package/dist/server/engine/update/1.4.0/iredmail.mysql +22 -0
  285. package/dist/server/engine/update/1.4.0/iredmail.pgsql +20 -0
  286. package/dist/server/engine/update/1.4.1/iredmail.mysql +3 -0
  287. package/dist/server/engine/update/1.4.1/iredmail.pgsql +3 -0
  288. package/dist/server/engine/update/1.4.1/sogo.mysql +11 -0
  289. package/dist/server/engine/update/1.4.1/sogo.pgsql +30 -0
  290. package/dist/server/engine/update/1.4.1/update-ldap.py +66 -0
  291. package/dist/server/engine/update/1.4.2/iredmail.mysql +9 -0
  292. package/dist/server/engine/update/1.4.2/iredmail.pgsql +9 -0
  293. package/dist/server/engine/update/1.4.2/sogo.pgsql +30 -0
  294. package/dist/server/engine/update/1.6.0/sogo_view.pgsql +27 -0
  295. package/dist/server/engine/update/1.6.3/iredmail.mysql +1 -0
  296. package/dist/server/engine/update/1.7.0/fail2ban.mysql +11 -0
  297. package/dist/server/engine/update/1.7.0/fail2ban.pgsql +12 -0
  298. package/dist/server/engine/update/1.7.1/amavisd.mysql +1 -0
  299. package/dist/server/engine/update/1.7.2/vmail.mysql +30 -0
  300. package/dist/server/engine/update/1.7.3/deleted_mailboxes.mysql +43 -0
  301. package/dist/server/engine/update/1.7.3/iredadmin.mysql +26 -0
  302. package/dist/server/engine/update/1.7.3/vmail.mysql +79 -0
  303. package/dist/server/engine/update/1.7.3/vmail.pgsql +9 -0
  304. package/dist/server/engine/update/README.md +1 -0
  305. package/dist/server/engine/update/ldap/README.md +39 -0
  306. package/dist/server/engine/update/ldap/update-ldap-dovecot-2.3.py +69 -0
  307. package/dist/server/index.js +349016 -0
  308. package/dist/server/lua/geo_country.lua +127 -0
  309. package/dist/server/lua/maxminddb.lua +403 -0
  310. package/dist/server/lua/mgmt_api.lua +654 -0
  311. package/dist/server/lua/pipe_stream.lua +103 -0
  312. package/dist/server/lua/rules_guard.lua +132 -0
  313. package/dist/server/lua/rules_lib.lua +176 -0
  314. package/dist/server/lua/site_logger.lua +405 -0
  315. package/dist/server/lua/webhook_handler.lua +126 -0
  316. package/dist/server/migrations/0000_init.sql +666 -0
  317. package/dist/server/migrations/0001_brief_tomorrow_man.sql +47 -0
  318. package/dist/server/migrations/0002_funny_dazzler.sql +2 -0
  319. package/dist/server/migrations/0003_third_killer_shrike.sql +1 -0
  320. package/dist/server/migrations/0004_session_active_org_not_null.sql +10 -0
  321. package/dist/server/migrations/0005_warm_amazoness.sql +3 -0
  322. package/dist/server/migrations/0006_lumpy_joystick.sql +1 -0
  323. package/dist/server/migrations/0007_outgoing_maginty.sql +2 -0
  324. package/dist/server/migrations/0008_frozen_cutover.sql +3 -0
  325. package/dist/server/migrations/0009_credits_billing.sql +142 -0
  326. package/dist/server/migrations/0010_credit_grant_dedupe.sql +14 -0
  327. package/dist/server/migrations/0011_remove_credit_ledger.sql +23 -0
  328. package/dist/server/migrations/0012_smart_deploys_and_git_rollback.sql +81 -0
  329. package/dist/server/migrations/0013_fix_check_run_rollup_unique.sql +38 -0
  330. package/dist/server/migrations/0014_default_rollback_git.sql +9 -0
  331. package/dist/server/migrations/0015_billing_idempotency_grants.sql +41 -0
  332. package/dist/server/migrations/0016_github_auth_high_findings.sql +30 -0
  333. package/dist/server/migrations/0017_spooky_rumiko_fujikawa.sql +6 -0
  334. package/dist/server/migrations/0018_calm_shatterstar.sql +1 -0
  335. package/dist/server/migrations/0019_rename_workspace_install_to_prepare.sql +1 -0
  336. package/dist/server/migrations/0020_uneven_the_renegades.sql +13 -0
  337. package/dist/server/migrations/0021_shiny_firestar.sql +2 -0
  338. package/dist/server/migrations/0022_version_on_success_backfill.sql +6 -0
  339. package/dist/server/migrations/0023_productive_gorilla_man.sql +17 -0
  340. package/dist/server/migrations/0024_sleepy_peter_quill.sql +2 -0
  341. package/dist/server/migrations/0025_smooth_blue_shield.sql +1 -0
  342. package/dist/server/migrations/0026_mail_backup_source.sql +11 -0
  343. package/dist/server/migrations/0027_opposite_anthem.sql +6 -0
  344. package/dist/server/migrations/0028_stale_rogue.sql +18 -0
  345. package/dist/server/migrations/0029_bouncy_loners.sql +16 -0
  346. package/dist/server/migrations/0030_bright_darkstar.sql +6 -0
  347. package/dist/server/migrations/0031_conscious_catseye.sql +13 -0
  348. package/dist/server/migrations/0032_wet_mimic.sql +51 -0
  349. package/dist/server/migrations/0033_eminent_molly_hayes.sql +2 -0
  350. package/dist/server/migrations/0034_nervous_surge.sql +1 -0
  351. package/dist/server/migrations/0035_thankful_morgan_stark.sql +1 -0
  352. package/dist/server/migrations/0036_gorgeous_scalphunter.sql +17 -0
  353. package/dist/server/migrations/0037_clever_makkari.sql +28 -0
  354. package/dist/server/migrations/0038_young_magneto.sql +1 -0
  355. package/dist/server/migrations/0039_secret_lady_ursula.sql +15 -0
  356. package/dist/server/migrations/0040_sharp_red_wolf.sql +16 -0
  357. package/dist/server/migrations/0041_round_spyke.sql +4 -0
  358. package/dist/server/migrations/0042_dapper_havok.sql +1 -0
  359. package/dist/server/migrations/0043_fast_sharon_ventura.sql +15 -0
  360. package/dist/server/migrations/0044_amused_shape.sql +8 -0
  361. package/dist/server/migrations/0045_amusing_korath.sql +1 -0
  362. package/dist/server/migrations/0046_white_harrier.sql +35 -0
  363. package/dist/server/migrations/0047_sloppy_strong_guy.sql +2 -0
  364. package/dist/server/migrations/0048_funny_emma_frost.sql +2 -0
  365. package/dist/server/migrations/0049_nappy_piledriver.sql +3 -0
  366. package/dist/server/migrations/0050_add_service_deployment_image_digest.sql +1 -0
  367. package/dist/server/migrations/0051_add_update_status.sql +19 -0
  368. package/dist/server/migrations/0052_add_notice_target.sql +2 -0
  369. package/dist/server/migrations/0053_colossal_sandman.sql +14 -0
  370. package/dist/server/migrations/0054_add_instance_smtp.sql +5 -0
  371. package/dist/server/migrations/0055_rainy_klaw.sql +22 -0
  372. package/dist/server/migrations/0056_moaning_daredevil.sql +2 -0
  373. package/dist/server/migrations/0057_complete_prism.sql +18 -0
  374. package/dist/server/migrations/0058_add_server_is_local.sql +1 -0
  375. package/dist/server/migrations/0059_legal_fixer.sql +18 -0
  376. package/dist/server/migrations/0060_add_route_strategy_host_port.sql +3 -0
  377. package/dist/server/migrations/0061_notification_default_multi_kind.sql +3 -0
  378. package/dist/server/migrations/0062_add_incoming_webhook.sql +21 -0
  379. package/dist/server/migrations/0063_add_migration_logs.sql +1 -0
  380. package/dist/server/migrations/0064_add_migration_partial.sql +2 -0
  381. package/dist/server/migrations/0065_custom_app_template.sql +14 -0
  382. package/dist/server/migrations/0066_ensure_migration_partial_columns.sql +2 -0
  383. package/dist/server/migrations/0067_webhook_delivery.sql +28 -0
  384. package/dist/server/migrations/0068_add_migration_target_volumes.sql +1 -0
  385. package/dist/server/migrations/0069_add_project_composite_routes.sql +1 -0
  386. package/dist/server/migrations/0070_forward_git_to_server.sql +1 -0
  387. package/dist/server/migrations/0071_gh_device_token.sql +3 -0
  388. package/dist/server/migrations/0072_gh_device_token_method.sql +1 -0
  389. package/dist/server/migrations/0073_project_volumes_object_storage.sql +3 -0
  390. package/dist/server/migrations/0074_project_compose_path.sql +1 -0
  391. package/dist/server/migrations/0075_service_command_argv.sql +1 -0
  392. package/dist/server/migrations/0076_rollback_retention.sql +17 -0
  393. package/dist/server/migrations/0077_domain_redirect.sql +13 -0
  394. package/dist/server/migrations/0078_grant_source_scope.sql +30 -0
  395. package/dist/server/migrations/0079_project_readiness.sql +18 -0
  396. package/dist/server/migrations/0080_deployment_error_classification.sql +26 -0
  397. package/dist/server/migrations/0081_project_readiness_repair.sql +34 -0
  398. package/dist/server/migrations/0082_edge_target_verification.sql +39 -0
  399. package/dist/server/migrations/0083_service_incident.sql +84 -0
  400. package/dist/server/migrations/0084_analytics_daily_rollup.sql +72 -0
  401. package/dist/server/migrations/0085_resource_usage.sql +68 -0
  402. package/dist/server/migrations/0086_remote_infra_updates.sql +41 -0
  403. package/dist/server/migrations/0087_server_container_version_columns.sql +17 -0
  404. package/dist/server/migrations/0088_audit_source_and_settings.sql +27 -0
  405. package/dist/server/migrations/0089_auto_scan_infra.sql +7 -0
  406. package/dist/server/migrations/0090_project_collect_paths.sql +18 -0
  407. package/dist/server/migrations/0091_project_server_id.sql +26 -0
  408. package/dist/server/migrations/0092_project_internal_alias.sql +13 -0
  409. package/dist/server/migrations/0093_service_incident_org_index.sql +13 -0
  410. package/dist/server/migrations/0094_backup_restore_meta.sql +15 -0
  411. package/dist/server/migrations/0095_backup_restore_cancel.sql +19 -0
  412. package/dist/server/migrations/0096_backup_policy_retention_defaults.sql +20 -0
  413. package/dist/server/migrations/0097_update_status_upstream_only.sql +35 -0
  414. package/dist/server/migrations/0098_instance_product_mode.sql +12 -0
  415. package/dist/server/migrations/0099_mail_webmail_project.sql +24 -0
  416. package/dist/server/migrations/0100_server_ssh_private_key.sql +11 -0
  417. package/dist/server/migrations/0101_mail_resume_step.sql +12 -0
  418. package/dist/server/migrations/0102_project_workload_axes.sql +19 -0
  419. package/dist/server/migrations/0103_dns_credential.sql +41 -0
  420. package/dist/server/migrations/0104_instance_host_control.sql +15 -0
  421. package/dist/server/migrations/0105_mail_inbound_rules.sql +80 -0
  422. package/dist/server/migrations/0106_mcp_call_tracking.sql +23 -0
  423. package/dist/server/migrations/0107_build_minute_metering_indexes.sql +20 -0
  424. package/dist/server/migrations/0108_credential.sql +68 -0
  425. package/dist/server/migrations/0109_service_build_args.sql +9 -0
  426. package/dist/server/migrations/0110_service_deployment_host_ports.sql +18 -0
  427. package/dist/server/migrations/0111_host_port_claim.sql +381 -0
  428. package/dist/server/migrations/0112_backup_run_execution_lease.sql +12 -0
  429. package/dist/server/migrations/0113_docker_migration_execution_lease.sql +11 -0
  430. package/dist/server/migrations/0114_build_session_execution_lease_index.sql +6 -0
  431. package/dist/server/migrations/0115_orphan_target_key.sql +3 -0
  432. package/dist/server/migrations/0116_domain_ssl_challenge.sql +2 -0
  433. package/dist/server/migrations/0117_github_installation_workspace_scope.sql +24 -0
  434. package/dist/server/migrations/0118_git_sources.sql +66 -0
  435. package/dist/server/migrations/0119_backup_run_batch.sql +8 -0
  436. package/dist/server/migrations/0120_domain_primary_unique.sql +24 -0
  437. package/dist/server/migrations/0121_host_port_claim_overlap.sql +14 -0
  438. package/dist/server/migrations/0122_data_transfer_staging.sql +45 -0
  439. package/dist/server/migrations/0123_drop_cloud_infra.sql +7 -0
  440. package/dist/server/migrations/0124_mail_dmarc_report.sql +23 -0
  441. package/dist/server/migrations/0125_server_security_snapshot.sql +22 -0
  442. package/dist/server/migrations/meta/0000_snapshot.json +4848 -0
  443. package/dist/server/migrations/meta/0001_snapshot.json +4991 -0
  444. package/dist/server/migrations/meta/0002_snapshot.json +5013 -0
  445. package/dist/server/migrations/meta/0003_snapshot.json +5020 -0
  446. package/dist/server/migrations/meta/0004_snapshot.json +5020 -0
  447. package/dist/server/migrations/meta/0005_snapshot.json +5039 -0
  448. package/dist/server/migrations/meta/0006_snapshot.json +5045 -0
  449. package/dist/server/migrations/meta/0007_snapshot.json +5057 -0
  450. package/dist/server/migrations/meta/0016_snapshot.json +6053 -0
  451. package/dist/server/migrations/meta/0017_snapshot.json +6091 -0
  452. package/dist/server/migrations/meta/0018_snapshot.json +6098 -0
  453. package/dist/server/migrations/meta/0019_snapshot.json +6098 -0
  454. package/dist/server/migrations/meta/0020_snapshot.json +6201 -0
  455. package/dist/server/migrations/meta/0021_snapshot.json +6213 -0
  456. package/dist/server/migrations/meta/0022_snapshot.json +6213 -0
  457. package/dist/server/migrations/meta/0023_snapshot.json +6331 -0
  458. package/dist/server/migrations/meta/0024_snapshot.json +6343 -0
  459. package/dist/server/migrations/meta/0025_snapshot.json +6350 -0
  460. package/dist/server/migrations/meta/0026_snapshot.json +6440 -0
  461. package/dist/server/migrations/meta/0027_snapshot.json +6447 -0
  462. package/dist/server/migrations/meta/0028_snapshot.json +6581 -0
  463. package/dist/server/migrations/meta/0029_snapshot.json +6710 -0
  464. package/dist/server/migrations/meta/0030_snapshot.json +6748 -0
  465. package/dist/server/migrations/meta/0031_snapshot.json +6859 -0
  466. package/dist/server/migrations/meta/0032_snapshot.json +7222 -0
  467. package/dist/server/migrations/meta/0033_snapshot.json +7249 -0
  468. package/dist/server/migrations/meta/0034_snapshot.json +7255 -0
  469. package/dist/server/migrations/meta/0035_snapshot.json +7262 -0
  470. package/dist/server/migrations/meta/0036_snapshot.json +7392 -0
  471. package/dist/server/migrations/meta/0037_snapshot.json +7602 -0
  472. package/dist/server/migrations/meta/0038_snapshot.json +7609 -0
  473. package/dist/server/migrations/meta/0039_snapshot.json +7714 -0
  474. package/dist/server/migrations/meta/0040_snapshot.json +7820 -0
  475. package/dist/server/migrations/meta/0041_snapshot.json +7833 -0
  476. package/dist/server/migrations/meta/0042_snapshot.json +7839 -0
  477. package/dist/server/migrations/meta/0043_snapshot.json +7938 -0
  478. package/dist/server/migrations/meta/0044_snapshot.json +7982 -0
  479. package/dist/server/migrations/meta/0045_snapshot.json +7989 -0
  480. package/dist/server/migrations/meta/0046_snapshot.json +8263 -0
  481. package/dist/server/migrations/meta/0047_snapshot.json +8275 -0
  482. package/dist/server/migrations/meta/0048_snapshot.json +8289 -0
  483. package/dist/server/migrations/meta/0049_snapshot.json +8308 -0
  484. package/dist/server/migrations/meta/0050_snapshot.json +8314 -0
  485. package/dist/server/migrations/meta/0051_snapshot.json +8460 -0
  486. package/dist/server/migrations/meta/0052_snapshot.json +8472 -0
  487. package/dist/server/migrations/meta/0053_snapshot.json +8556 -0
  488. package/dist/server/migrations/meta/0054_snapshot.json +8586 -0
  489. package/dist/server/migrations/meta/0055_snapshot.json +8756 -0
  490. package/dist/server/migrations/meta/0056_snapshot.json +8777 -0
  491. package/dist/server/migrations/meta/0057_snapshot.json +8904 -0
  492. package/dist/server/migrations/meta/0058_snapshot.json +8911 -0
  493. package/dist/server/migrations/meta/0059_snapshot.json +9061 -0
  494. package/dist/server/migrations/meta/0060_snapshot.json +9081 -0
  495. package/dist/server/migrations/meta/_journal.json +888 -0
  496. package/dist/server/pglite/pglite.data +0 -0
  497. package/dist/server/pglite/pglite.wasm +0 -0
  498. package/dist/setup-JWKZIECM.js +25 -0
  499. package/dist/signin-3M3UPB6K.js +667 -0
  500. package/dist/ssh-client-NWQVRCV7.js +29 -0
  501. package/dist/sso-oidc-3VDIYOEJ.js +834 -0
  502. package/dist/sts-B3WIYLXR.js +1426 -0
  503. package/dist/up-P5DMQ5YO.js +55 -0
  504. package/package.json +58 -0
@@ -0,0 +1,458 @@
1
+ #!/usr/bin/env sh
2
+ ":" //# ; exec "$(command -v node || command -v bun)" "$0" "$@"
3
+ import { createRequire as __ospCreateRequire } from "node:module";
4
+ const require = __ospCreateRequire(import.meta.url);
5
+ import {
6
+ formatDuration,
7
+ isRemoteConnectionError,
8
+ systemDebug
9
+ } from "./chunk-3CJLKL6E.js";
10
+ import {
11
+ sq
12
+ } from "./chunk-MNV2QFHW.js";
13
+ import {
14
+ assessHostSupport,
15
+ classifyDistro,
16
+ parseOsRelease,
17
+ parseSystemArch,
18
+ parseSystemOs,
19
+ safeErrorMessage
20
+ } from "./chunk-PVOWHIND.js";
21
+
22
+ // ../../packages/adapters/src/system/elevated-executor.ts
23
+ import { randomBytes } from "crypto";
24
+ var INSTALL_ENV = "DEBIAN_FRONTEND=noninteractive DPKG_FORCE=confnew";
25
+ function elevateCommand(command) {
26
+ return `sudo -n sh -c ${sq(`export ${INSTALL_ENV}; ${command}`)}`;
27
+ }
28
+ var EXECUTOR_DELEGATE = /* @__PURE__ */ Symbol.for("kraft.executor.delegate");
29
+ function dirOf(path) {
30
+ const idx = path.lastIndexOf("/");
31
+ if (idx < 0) return ".";
32
+ return idx === 0 ? "/" : path.slice(0, idx);
33
+ }
34
+ function elevatedExecutor(inner) {
35
+ const readFileElevated = async (path) => {
36
+ try {
37
+ return await inner.readFile(path);
38
+ } catch (err) {
39
+ try {
40
+ return await inner.exec(elevateCommand(`cat ${sq(path)}`));
41
+ } catch {
42
+ throw err;
43
+ }
44
+ }
45
+ };
46
+ const existsElevated = async (path) => {
47
+ if (await inner.exists(path).catch(() => false)) return true;
48
+ return await inner.exec(elevateCommand(`test -e ${sq(path)}`)).then(() => true).catch(() => false);
49
+ };
50
+ const writeFileElevated = async (path, content, opts) => {
51
+ const stage = `/tmp/.kraft-elev-${randomBytes(12).toString("hex")}`;
52
+ await inner.exec(`mkdir -m 700 ${sq(stage)}`);
53
+ try {
54
+ const staged = `${stage}/payload`;
55
+ if (opts === void 0) await inner.writeFile(staged, content);
56
+ else await inner.writeFile(staged, content, opts);
57
+ await inner.exec(
58
+ elevateCommand(
59
+ `mkdir -p ${sq(dirOf(path))} && chown 0:0 ${sq(staged)} && mv -f ${sq(staged)} ${sq(path)}`
60
+ )
61
+ );
62
+ } finally {
63
+ await inner.exec(`rm -rf ${sq(stage)}`).catch(() => void 0);
64
+ }
65
+ };
66
+ const overrides = {
67
+ exec: (command, opts) => inner.exec(elevateCommand(command), opts),
68
+ streamExec: (command, onLog, opts) => inner.streamExec(elevateCommand(command), onLog, opts),
69
+ writeFile: writeFileElevated,
70
+ readFile: readFileElevated,
71
+ exists: existsElevated,
72
+ // Elevated for the same reason as writeFile: the vhost/conf dirs are root-owned,
73
+ // and the Proxy would otherwise forward this to the inner executor unelevated —
74
+ // EACCES immediately after an elevated write succeeded.
75
+ rename: async (from, to) => {
76
+ await inner.exec(elevateCommand(`mv -f ${sq(from)} ${sq(to)}`));
77
+ },
78
+ mkdir: async (path) => {
79
+ await inner.exec(elevateCommand(`mkdir -p ${sq(path)}`));
80
+ },
81
+ rm: async (path) => {
82
+ await inner.exec(elevateCommand(`rm -rf ${sq(path)}`));
83
+ }
84
+ };
85
+ return new Proxy(inner, {
86
+ get(target, prop) {
87
+ if (prop === EXECUTOR_DELEGATE) return target;
88
+ if (Object.prototype.hasOwnProperty.call(overrides, prop)) {
89
+ return overrides[prop];
90
+ }
91
+ const value = Reflect.get(target, prop, target);
92
+ return typeof value === "function" ? value.bind(target) : value;
93
+ }
94
+ });
95
+ }
96
+ async function ensureOwnedDir(executor, path) {
97
+ const quoted = sq(path);
98
+ try {
99
+ await executor.exec(`mkdir -p ${quoted} && [ -w ${quoted} ]`);
100
+ return;
101
+ } catch {
102
+ }
103
+ const { isRoot, canSudo } = await resolveEnvironment(executor);
104
+ if (isRoot) {
105
+ await executor.exec(`mkdir -p ${quoted}`);
106
+ return;
107
+ }
108
+ if (!canSudo) {
109
+ throw new Error(
110
+ `Cannot create ${path} on the target server: the deploy user cannot write there and has no passwordless sudo. Run these once on the server, then redeploy:
111
+ sudo mkdir -p ${path}
112
+ sudo chown -R "$(id -un)" ${path}`
113
+ );
114
+ }
115
+ const loginUser = await executor.exec("id -un").then((out) => out.trim()).catch(() => "");
116
+ const owner = loginUser ? sq(loginUser) : '"$SUDO_USER"';
117
+ await executor.exec(
118
+ elevateCommand(
119
+ [
120
+ // Without it the `;`-joined steps fall through a failed mkdir, and the
121
+ // chown's exit status — not the mkdir's — is what the caller sees. That
122
+ // reported a permission failure as success.
123
+ "set -e",
124
+ `p=${quoted}`,
125
+ "d=$p",
126
+ "top=",
127
+ 'while [ ! -d "$d" ]; do top=$d; d=$(dirname "$d"); done',
128
+ 'mkdir -p "$p"',
129
+ // Expansion, not `[ -z "$top" ] && top=…`: that AND-list returns 1 whenever
130
+ // $top is already set, which under `set -e` would exit before the chown.
131
+ `chown -R ${owner} "\${top:-$p}"`
132
+ ].join("; ")
133
+ )
134
+ );
135
+ }
136
+
137
+ // ../../packages/adapters/src/system/environment.ts
138
+ var ENVIRONMENT_PROBE_SCRIPT = `echo "opsh_begin=1"
139
+ # Appended, never replaced: \`ufw\`, \`nft\` and \`iptables\` live in /usr/sbin, which is off
140
+ # a non-root user's PATH on Debian \u2014 so "no firewall installed" was sometimes just "not on
141
+ # this user's PATH", and the box came back \`unknown\`.
142
+ PATH="$PATH:/usr/sbin:/sbin"
143
+ echo "opsh_os=$(uname -s 2>/dev/null || true)"
144
+ echo "opsh_arch=$(uname -m 2>/dev/null || true)"
145
+ echo "opsh_uid=$(id -u 2>/dev/null || true)"
146
+ echo "opsh_user=$(id -un 2>/dev/null || true)"
147
+ echo "opsh_home=$HOME"
148
+
149
+ OSR=/etc/os-release
150
+ [ -r "$OSR" ] || OSR=/usr/lib/os-release
151
+ # awk and not sed: \`print\` always terminates its record, while sed reproduces the input
152
+ # byte for byte \u2014 and an os-release with no trailing newline glued the next \`echo\` onto
153
+ # the last forwarded line, so \`opsh_pm\` vanished and a working apt host was refused for
154
+ # having no package manager, brackets intact and nothing to flag it.
155
+ [ -r "$OSR" ] && awk '{ print "opsh_osr:" $0 }' "$OSR" 2>/dev/null || true
156
+
157
+ PM=none
158
+ if command -v apt-get >/dev/null 2>&1; then PM=apt
159
+ elif command -v dnf >/dev/null 2>&1; then PM=dnf
160
+ elif command -v yum >/dev/null 2>&1; then PM=yum
161
+ elif command -v apk >/dev/null 2>&1; then PM=apk
162
+ elif command -v brew >/dev/null 2>&1; then PM=brew
163
+ fi
164
+ echo "opsh_pm=$PM"
165
+
166
+ SM=none
167
+ if [ -d /run/systemd/system ] && command -v systemctl >/dev/null 2>&1; then SM=systemd
168
+ elif command -v rc-service >/dev/null 2>&1; then SM=openrc
169
+ elif command -v launchctl >/dev/null 2>&1; then SM=launchd
170
+ fi
171
+ echo "opsh_sm=$SM"
172
+
173
+ SUDO=n
174
+ if [ "$(id -u 2>/dev/null)" != 0 ]; then
175
+ sudo -n true >/dev/null 2>&1 && SUDO=y
176
+ fi
177
+ echo "opsh_sudo=$SUDO"
178
+
179
+ # Established BEFORE the firewall probes, because reading a ruleset is privileged:
180
+ # \`iptables -S\` and \`firewall-cmd --state\` refuse outright for an unprivileged user, and a
181
+ # refused read used to come back as "no firewall" \u2014 the one answer that makes us skip
182
+ # opening a port. \`-n\` so a box without passwordless sudo fails instead of waiting for a
183
+ # password on a channel with no TTY, and every elevated command below is a READ.
184
+ PRIV=
185
+ [ "$SUDO" = y ] && PRIV="sudo -n"
186
+
187
+ HAS_UFW=n; HAS_FWD=n; HAS_NFT=n; HAS_IPT=n
188
+ command -v ufw >/dev/null 2>&1 && HAS_UFW=y
189
+ command -v firewall-cmd >/dev/null 2>&1 && HAS_FWD=y
190
+ command -v nft >/dev/null 2>&1 && HAS_NFT=y
191
+ command -v iptables >/dev/null 2>&1 && HAS_IPT=y
192
+ FW=unknown
193
+ if [ "$HAS_UFW" = y ]; then
194
+ case "$($PRIV ufw status 2>/dev/null || true)" in *"Status: active"*) FW=ufw ;; esac
195
+ if [ "$FW" = unknown ] && grep -qiE "^[[:space:]]*ENABLED[[:space:]]*=[[:space:]]*yes" /etc/ufw/ufw.conf 2>/dev/null; then FW=ufw; fi
196
+ fi
197
+ if [ "$FW" = unknown ] && [ "$HAS_FWD" = y ]; then
198
+ case "$($PRIV firewall-cmd --state 2>/dev/null || true)" in *running*) FW=firewalld ;; esac
199
+ fi
200
+ if [ "$FW" = unknown ] && [ "$HAS_NFT" = y ]; then
201
+ case "$($PRIV nft list tables 2>/dev/null || true)" in *"table inet filter"*) FW=nftables ;; esac
202
+ fi
203
+ if [ "$FW" = unknown ] && [ "$HAS_IPT" = y ]; then
204
+ IPT="$($PRIV iptables -S INPUT 2>/dev/null || true)"
205
+ case "$IPT" in
206
+ *"-P INPUT DROP"*) FW=iptables ;;
207
+ # A permissive POLICY does not mean a permissive CHAIN. RHEL's stock ruleset and every
208
+ # hand-written iptables-persistent file end INPUT in a catch-all reject with the policy
209
+ # left at ACCEPT, and reading the policy alone reported those hosts as unfirewalled \u2014
210
+ # so nothing opened a port and the service came up unreachable. Any terminal drop counts:
211
+ # a single banned IP over-reports slightly, and over-reporting only costs a warning
212
+ # while under-reporting costs the port. (There is deliberately no \`-P INPUT REJECT\`
213
+ # arm: netfilter has no such built-in policy, so the old one was unreachable.)
214
+ *"-P INPUT "*)
215
+ if printf '%s\\n' "$IPT" | grep -qE '^-A INPUT .*-j (DROP|REJECT)'; then FW=iptables; else FW=none; fi
216
+ ;;
217
+ esac
218
+ fi
219
+ if [ "$FW" = unknown ] && [ "$HAS_UFW$HAS_FWD$HAS_NFT$HAS_IPT" = nnnn ]; then FW=none; fi
220
+ echo "opsh_fw=$FW"
221
+
222
+ LIBC=unknown
223
+ if command -v ldd >/dev/null 2>&1; then
224
+ case "$(ldd --version 2>&1 || true)" in
225
+ *musl*) LIBC=musl ;;
226
+ *GNU*|*GLIBC*|*glibc*) LIBC=glibc ;;
227
+ esac
228
+ fi
229
+ echo "opsh_libc=$LIBC"
230
+
231
+ SEL=absent
232
+ if command -v getenforce >/dev/null 2>&1; then
233
+ SEL=disabled
234
+ case "$(getenforce 2>/dev/null || true)" in
235
+ Enforcing*) SEL=enforcing ;;
236
+ Permissive*) SEL=permissive ;;
237
+ esac
238
+ fi
239
+ echo "opsh_selinux=$SEL"
240
+
241
+ CT=n
242
+ [ -f /.dockerenv ] && CT=y
243
+ [ -f /run/.containerenv ] && CT=y
244
+ if [ "$CT" = n ] && grep -qaE "(docker|lxc|containerd|kubepods|libpod)" /proc/1/cgroup 2>/dev/null; then CT=y; fi
245
+ if [ "$CT" = n ] && command -v systemd-detect-virt >/dev/null 2>&1; then
246
+ systemd-detect-virt --container --quiet >/dev/null 2>&1 && CT=y
247
+ fi
248
+ echo "opsh_container=$CT"
249
+
250
+ echo "opsh_end=1"
251
+ exit 0`;
252
+ var ENVIRONMENT_PROBE_TIMEOUT_MS = 2e4;
253
+ var MAX_INTERCEPT_CHARS = 400;
254
+ var ENVIRONMENT_PROFILE_TTL_MS = 5 * 6e4;
255
+ function profileIsFresh(measuredAt) {
256
+ return Date.now() - measuredAt < ENVIRONMENT_PROFILE_TTL_MS;
257
+ }
258
+ var profileCache = /* @__PURE__ */ new WeakMap();
259
+ function isUnansweredProbe(message) {
260
+ const text = message.trim().toLowerCase();
261
+ if (text.includes("timed out") || text.includes("without an exit status"))
262
+ return true;
263
+ return EXIT_STATUS_ONLY.test(text);
264
+ }
265
+ var EXIT_STATUS_ONLY = /^exit code (?:-?\d+|null|undefined)$/;
266
+ var SILENT_PROBE = "the probe produced no output at all";
267
+ async function runProbe(executor) {
268
+ const startedAt = Date.now();
269
+ systemDebug("environment", "probe:start");
270
+ try {
271
+ const text = await executor.exec(ENVIRONMENT_PROBE_SCRIPT, {
272
+ timeout: ENVIRONMENT_PROBE_TIMEOUT_MS
273
+ });
274
+ systemDebug(
275
+ "environment",
276
+ `probe:ok (${formatDuration(startedAt)}) ${text.length}b`
277
+ );
278
+ return { text, failed: false, unanswered: false };
279
+ } catch (err) {
280
+ if (isRemoteConnectionError(err)) {
281
+ systemDebug(
282
+ "environment",
283
+ `probe:abort (${formatDuration(startedAt)}) ${safeErrorMessage(err)}`
284
+ );
285
+ throw err;
286
+ }
287
+ const message = safeErrorMessage(err);
288
+ systemDebug(
289
+ "environment",
290
+ `probe:fail (${formatDuration(startedAt)}) ${message}`
291
+ );
292
+ return {
293
+ text: message,
294
+ failed: true,
295
+ unanswered: isUnansweredProbe(message)
296
+ };
297
+ }
298
+ }
299
+ function members(all) {
300
+ return Object.keys(all);
301
+ }
302
+ var PACKAGE_MANAGERS = members({
303
+ apt: true,
304
+ dnf: true,
305
+ yum: true,
306
+ apk: true,
307
+ brew: true,
308
+ none: true
309
+ });
310
+ var SERVICE_MANAGERS = members({
311
+ systemd: true,
312
+ openrc: true,
313
+ launchd: true,
314
+ none: true
315
+ });
316
+ var FIREWALLS = members({
317
+ ufw: true,
318
+ firewalld: true,
319
+ nftables: true,
320
+ iptables: true,
321
+ none: true,
322
+ unknown: true
323
+ });
324
+ var LIBCS = members({ glibc: true, musl: true, unknown: true });
325
+ var SELINUX_STATES = members({
326
+ enforcing: true,
327
+ permissive: true,
328
+ disabled: true,
329
+ absent: true
330
+ });
331
+ function oneOf(value, allowed, fallback) {
332
+ const found = allowed.find((member) => member === value?.trim());
333
+ return found ?? fallback;
334
+ }
335
+ function splitProbeOutput(text) {
336
+ const keys = {};
337
+ const osReleaseLines = [];
338
+ for (const line of text.split("\n")) {
339
+ if (line.startsWith("opsh_osr:")) {
340
+ osReleaseLines.push(line.slice("opsh_osr:".length));
341
+ continue;
342
+ }
343
+ if (!line.startsWith("opsh_")) continue;
344
+ const eq = line.indexOf("=");
345
+ if (eq <= 0) continue;
346
+ keys[line.slice(0, eq)] = line.slice(eq + 1).trimEnd();
347
+ }
348
+ return { keys, osRelease: osReleaseLines.join("\n") };
349
+ }
350
+ function summarizeInterception(text) {
351
+ const collapsed = text.split("\n").map((line) => line.trim()).filter(Boolean).join(" ");
352
+ if (!collapsed) return null;
353
+ return collapsed.length > MAX_INTERCEPT_CHARS ? `${collapsed.slice(0, MAX_INTERCEPT_CHARS)}\u2026` : collapsed;
354
+ }
355
+ function parseEnvironmentProbe(probe) {
356
+ const { keys, osRelease } = splitProbeOutput(probe.text);
357
+ const complete = keys.opsh_begin === "1" && keys.opsh_end === "1";
358
+ const said = complete ? null : summarizeInterception(probe.text);
359
+ const unanswered = !complete && (probe.unanswered || said === null);
360
+ const forcedCommand = unanswered ? null : said;
361
+ const probeError = unanswered ? said ?? SILENT_PROBE : null;
362
+ const os = complete ? parseSystemOs(keys.opsh_os) : "unknown";
363
+ const osRaw = complete ? keys.opsh_os?.trim() || null : null;
364
+ const archRaw = complete ? keys.opsh_arch?.trim() || null : null;
365
+ const arch = complete ? parseSystemArch(keys.opsh_arch) : "unknown";
366
+ const osReleaseFields = parseOsRelease(osRelease);
367
+ const distroId = osReleaseFields.ID ?? null;
368
+ const { distro, family } = classifyDistro(distroId, osReleaseFields.ID_LIKE);
369
+ const isRoot = keys.opsh_uid?.trim() === "0";
370
+ const loginUser = keys.opsh_user?.trim() || (isRoot ? "root" : "");
371
+ const home = keys.opsh_home?.trim() || (isRoot ? "/root" : loginUser ? `/home/${loginUser}` : "");
372
+ const packageManager = oneOf(keys.opsh_pm, PACKAGE_MANAGERS, "none");
373
+ const profile = {
374
+ os,
375
+ osRaw,
376
+ arch,
377
+ archRaw,
378
+ // `distro` stays null off Linux, where the concept doesn't apply — the existing
379
+ // contract every call site was written against.
380
+ distro: os === "linux" ? distro : null,
381
+ distroFamily: os === "linux" ? family : "unknown",
382
+ distroId,
383
+ versionId: osReleaseFields.VERSION_ID ?? null,
384
+ prettyName: osReleaseFields.PRETTY_NAME ?? null,
385
+ packageManager,
386
+ serviceManager: oneOf(keys.opsh_sm, SERVICE_MANAGERS, "none"),
387
+ firewall: oneOf(keys.opsh_fw, FIREWALLS, "unknown"),
388
+ libc: oneOf(keys.opsh_libc, LIBCS, "unknown"),
389
+ selinux: oneOf(keys.opsh_selinux, SELINUX_STATES, "absent"),
390
+ isContainer: keys.opsh_container?.trim() === "y",
391
+ isRoot,
392
+ // Meaningless when root, and the script never probes sudo in that case — the
393
+ // deliberate `false` the previous detector also returned.
394
+ canSudo: !isRoot && keys.opsh_sudo?.trim() === "y",
395
+ loginUser,
396
+ home,
397
+ forcedCommand,
398
+ probeError,
399
+ supported: false,
400
+ unsupportedReason: null
401
+ };
402
+ return { ...profile, ...assessHostSupport(profile) };
403
+ }
404
+ function cacheKeyFor(executor) {
405
+ let root = executor;
406
+ for (let hops = 0; hops < 8; hops += 1) {
407
+ const delegate = root[EXECUTOR_DELEGATE];
408
+ if (!delegate || delegate === root) break;
409
+ root = delegate;
410
+ }
411
+ return root;
412
+ }
413
+ async function resolveEnvironment(executor) {
414
+ const key = cacheKeyFor(executor);
415
+ const cached = profileCache.get(key);
416
+ if (cached && profileIsFresh(cached.measuredAt)) {
417
+ systemDebug("environment", "cache:hit");
418
+ return cached.profile;
419
+ }
420
+ systemDebug("environment", cached ? "cache:stale" : "cache:miss");
421
+ const promise = (async () => {
422
+ const profile = parseEnvironmentProbe(await runProbe(key));
423
+ if (profile.probeError && cached) {
424
+ systemDebug("environment", `detect:keep-previous ${profile.probeError}`);
425
+ return cached.profile;
426
+ }
427
+ systemDebug("environment", `detect:done ${JSON.stringify(profile)}`);
428
+ return profile;
429
+ })();
430
+ const entry = { measuredAt: Date.now(), profile: promise };
431
+ const forget = () => {
432
+ if (profileCache.get(key) === entry) profileCache.delete(key);
433
+ };
434
+ profileCache.set(key, entry);
435
+ promise.then((profile) => {
436
+ if (profile.probeError) forget();
437
+ }, forget);
438
+ return promise;
439
+ }
440
+ function cacheEnvironment(executor, profile) {
441
+ profileCache.set(cacheKeyFor(executor), {
442
+ measuredAt: Date.now(),
443
+ profile: Promise.resolve(profile)
444
+ });
445
+ }
446
+
447
+ export {
448
+ ENVIRONMENT_PROBE_SCRIPT,
449
+ ENVIRONMENT_PROBE_TIMEOUT_MS,
450
+ profileIsFresh,
451
+ parseEnvironmentProbe,
452
+ resolveEnvironment,
453
+ cacheEnvironment,
454
+ EXECUTOR_DELEGATE,
455
+ dirOf,
456
+ elevatedExecutor,
457
+ ensureOwnedDir
458
+ };