openship 0.4.5 → 0.4.7

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 (314) hide show
  1. package/README.md +2 -24
  2. package/dist/bare-2HYDXQEH.js +23 -0
  3. package/dist/{bowser-L6PVH37V.js → bowser-O3AEA6AN.js} +3 -1
  4. package/dist/{chunk-YFLQGDN2.js → chunk-4TJC4JZQ.js} +18 -9
  5. package/dist/{chunk-JXQCFTDV.js → chunk-4Z5QO7N6.js} +4 -2
  6. package/dist/{chunk-JJVSOE4I.js → chunk-5MZ624VX.js} +2 -0
  7. package/dist/{chunk-TDFK6ISF.js → chunk-6APIPIJY.js} +6 -4
  8. package/dist/{chunk-3LCRNQ2C.js → chunk-6APULWSU.js} +151 -133
  9. package/dist/{chunk-FTBXJ2VA.js → chunk-6B5YCFFV.js} +6 -4
  10. package/dist/{chunk-MDFYN2QH.js → chunk-AVIB7CT7.js} +3 -1
  11. package/dist/{chunk-W7KGHYLV.js → chunk-DYPH4HCI.js} +2 -0
  12. package/dist/{chunk-5WI7ZXOC.js → chunk-EI575GHN.js} +4 -2
  13. package/dist/{chunk-Z6EKX6CX.js → chunk-FPRHYBY2.js} +2 -0
  14. package/dist/{chunk-FZJX6XP7.js → chunk-FRNAR33O.js} +4 -2
  15. package/dist/{chunk-XRWV5ZNR.js → chunk-FXTBHTWY.js} +360 -42
  16. package/dist/chunk-ILFETZOM.js +131 -0
  17. package/dist/{chunk-E3ZPCNPU.js → chunk-IMBD5PZ5.js} +251 -105
  18. package/dist/{chunk-VJTXRCTT.js → chunk-IPYPMI3S.js} +10 -6
  19. package/dist/{chunk-PARRPUXN.js → chunk-IXCHURVK.js} +5 -3
  20. package/dist/{chunk-YJAS5RQX.js → chunk-JYGD5WSN.js} +2 -0
  21. package/dist/{chunk-JWBXYO24.js → chunk-KI2EY3WB.js} +2 -0
  22. package/dist/{chunk-YVXF6GGR.js → chunk-L2VOGB2X.js} +5 -104
  23. package/dist/{chunk-K5OH5U7N.js → chunk-MZ2WEHHY.js} +5 -3
  24. package/dist/{chunk-SJBR527P.js → chunk-O6ZZF52V.js} +3 -1
  25. package/dist/{chunk-VLPJLXXB.js → chunk-OWED2GRM.js} +3 -1
  26. package/dist/{chunk-C4FOQJ63.js → chunk-OXWDY22G.js} +4 -2
  27. package/dist/{chunk-NPVJYR7M.js → chunk-Q2CIRAOK.js} +2 -0
  28. package/dist/chunk-R5BHFFAV.js +282 -0
  29. package/dist/{chunk-JYAGTMSJ.js → chunk-RPHRPFEH.js} +2 -0
  30. package/dist/{chunk-R74UB4X4.js → chunk-SJIFLLX4.js} +397 -85
  31. package/dist/{chunk-HYL4QYZM.js → chunk-TGIINPVM.js} +13 -2
  32. package/dist/{chunk-SYCZE6FQ.js → chunk-TYVME3XD.js} +7 -1
  33. package/dist/{chunk-UMYQALBH.js → chunk-UXWAVM4C.js} +1788 -1484
  34. package/dist/{chunk-HDV4NSA3.js → chunk-V6AN6XLZ.js} +16 -6
  35. package/dist/{chunk-3YCMJRDZ.js → chunk-VDMQJHPI.js} +36 -15
  36. package/dist/{chunk-RZPDJC2J.js → chunk-VFINNTUL.js} +20 -1
  37. package/dist/{chunk-65KKUJBR.js → chunk-VWPEKOH6.js} +4 -2
  38. package/dist/{chunk-GHXGCANU.js → chunk-W73X43R7.js} +4 -2
  39. package/dist/{chunk-7EYFCKZX.js → chunk-XFCDYZUQ.js} +8 -6
  40. package/dist/cloud-2KXREXMO.js +30 -0
  41. package/dist/{cloud-7IGG45CF.js → cloud-7QYOGF7F.js} +4 -2
  42. package/dist/detect-2XSCFFTF.js +44 -0
  43. package/dist/{dist-NQB6QGX3.js → dist-IQJ6H6UZ.js} +4 -2
  44. package/dist/{dist-es-DCR6UJMP.js → dist-es-5DY7K32L.js} +7 -5
  45. package/dist/{dist-es-TYYZ5KEF.js → dist-es-JSTDUS7Q.js} +7 -5
  46. package/dist/{dist-es-7EZIM4JU.js → dist-es-OSNJBLXB.js} +6 -4
  47. package/dist/{dist-es-6RSPR56Q.js → dist-es-RYHIPOTN.js} +15 -13
  48. package/dist/{dist-es-33Z3Y6VE.js → dist-es-VNKHQVIB.js} +5 -3
  49. package/dist/{dist-es-D6QQVWRZ.js → dist-es-WV4AMOII.js} +9 -7
  50. package/dist/{dist-es-GMEQINIE.js → dist-es-X3B5QYKB.js} +7 -5
  51. package/dist/docker-LODK5Y2S.js +16 -0
  52. package/dist/docker-edge-executor-VHW3JPJS.js +13 -0
  53. package/dist/edge-import-ZQ4Y5HEA.js +45 -0
  54. package/dist/ensure-container-edge-ED25XL3Z.js +31 -0
  55. package/dist/{event-streams-G7F6Q7QY.js → event-streams-EHRAKL75.js} +5 -3
  56. package/dist/{executor-O5NR7LMP.js → executor-YPT6RH6O.js} +9 -7
  57. package/dist/index.d.ts +2 -1
  58. package/dist/index.js +279 -245
  59. package/dist/{loadSso-LH753OSJ.js → loadSso-46FQRIZS.js} +11 -9
  60. package/dist/local-executor-V7U5VOZW.js +12 -0
  61. package/dist/nginx-XWJAOGS4.js +24 -0
  62. package/dist/{noop-6KC6HRDB.js → noop-FMMFG2EZ.js} +4 -2
  63. package/dist/{openresty-lua-KFCOJAG4.js → openresty-lua-4WLGDSER.js} +11 -3
  64. package/dist/server/engine/ChangeLog +2289 -0
  65. package/dist/server/engine/Documentations +5 -0
  66. package/dist/server/engine/LICENSE +674 -0
  67. package/dist/server/engine/README.md +34 -0
  68. package/dist/server/engine/conf/amavisd +150 -0
  69. package/dist/server/engine/conf/clamav +71 -0
  70. package/dist/server/engine/conf/core +632 -0
  71. package/dist/server/engine/conf/dovecot +151 -0
  72. package/dist/server/engine/conf/fail2ban +72 -0
  73. package/dist/server/engine/conf/global +698 -0
  74. package/dist/server/engine/conf/iredapd +52 -0
  75. package/dist/server/engine/conf/logwatch +28 -0
  76. package/dist/server/engine/conf/postfix +97 -0
  77. package/dist/server/engine/conf/postgresql +93 -0
  78. package/dist/server/engine/conf/spamassassin +39 -0
  79. package/dist/server/engine/dialog/config_via_dialog.sh +258 -0
  80. package/dist/server/engine/dialog/optional_components.sh +122 -0
  81. package/dist/server/engine/dialog/pgsql_config.sh +52 -0
  82. package/dist/server/engine/dialog/virtual_domain_config.sh +94 -0
  83. package/dist/server/engine/functions/amavisd.sh +267 -0
  84. package/dist/server/engine/functions/backend.sh +85 -0
  85. package/dist/server/engine/functions/clamav.sh +100 -0
  86. package/dist/server/engine/functions/cleanup.sh +393 -0
  87. package/dist/server/engine/functions/dovecot.sh +583 -0
  88. package/dist/server/engine/functions/fail2ban.sh +209 -0
  89. package/dist/server/engine/functions/iredapd.sh +356 -0
  90. package/dist/server/engine/functions/optional_components.sh +24 -0
  91. package/dist/server/engine/functions/packages.sh +522 -0
  92. package/dist/server/engine/functions/packages_freebsd.sh +179 -0
  93. package/dist/server/engine/functions/postfix.sh +457 -0
  94. package/dist/server/engine/functions/postgresql.sh +239 -0
  95. package/dist/server/engine/functions/spamassassin.sh +49 -0
  96. package/dist/server/engine/functions/system_accounts.sh +128 -0
  97. package/dist/server/engine/iRedMail.sh +144 -0
  98. package/dist/server/engine/pkgs/get_all.sh +338 -0
  99. package/dist/server/engine/pkgs/pkgs.freebsd.sha256 +3 -0
  100. package/dist/server/engine/pkgs/pkgs.openbsd.sha256 +6 -0
  101. package/dist/server/engine/pkgs/pkgs.sha256 +1 -0
  102. package/dist/server/engine/samples/amavisd/amavisd.conf +677 -0
  103. package/dist/server/engine/samples/amavisd/amavisd.mysql +278 -0
  104. package/dist/server/engine/samples/amavisd/amavisd.pgsql +253 -0
  105. package/dist/server/engine/samples/amavisd/amavisd.schema +942 -0
  106. package/dist/server/engine/samples/amavisd/default_spam_policy.sql +46 -0
  107. package/dist/server/engine/samples/dovecot/dovecot-2.4-mariadb.conf +758 -0
  108. package/dist/server/engine/samples/dovecot/dovecot-2.4-openldap.conf +767 -0
  109. package/dist/server/engine/samples/dovecot/dovecot-2.4-pgsql.conf +762 -0
  110. package/dist/server/engine/samples/dovecot/dovecot-last-login.conf +50 -0
  111. package/dist/server/engine/samples/dovecot/dovecot-ldap.conf +21 -0
  112. package/dist/server/engine/samples/dovecot/dovecot-share-folder.conf +22 -0
  113. package/dist/server/engine/samples/dovecot/dovecot-sql.conf +28 -0
  114. package/dist/server/engine/samples/dovecot/dovecot-used-quota.conf +13 -0
  115. package/dist/server/engine/samples/dovecot/dovecot.conf +484 -0
  116. package/dist/server/engine/samples/dovecot/dovecot.sieve +7 -0
  117. package/dist/server/engine/samples/dovecot/dovecot2-quota-warning.sh +38 -0
  118. package/dist/server/engine/samples/dovecot/sql/imap_share_folder.mysql +16 -0
  119. package/dist/server/engine/samples/dovecot/sql/last_login.mysql +12 -0
  120. package/dist/server/engine/samples/dovecot/sql/used_quota.mysql +26 -0
  121. package/dist/server/engine/samples/dovecot/systemd/override.conf +3 -0
  122. package/dist/server/engine/samples/fail2ban/action.d/banned_db.conf +9 -0
  123. package/dist/server/engine/samples/fail2ban/bin/fail2ban_banned_db +268 -0
  124. package/dist/server/engine/samples/fail2ban/fail2ban.local +17 -0
  125. package/dist/server/engine/samples/fail2ban/filter.d/dovecot.iredmail.conf +5 -0
  126. package/dist/server/engine/samples/fail2ban/filter.d/postfix-pregreet.iredmail.conf +16 -0
  127. package/dist/server/engine/samples/fail2ban/filter.d/postfix.iredmail.conf +18 -0
  128. package/dist/server/engine/samples/fail2ban/filter.d/roundcube.iredmail.conf +9 -0
  129. package/dist/server/engine/samples/fail2ban/jail.d/dovecot.local +8 -0
  130. package/dist/server/engine/samples/fail2ban/jail.d/nginx-http-auth.local +8 -0
  131. package/dist/server/engine/samples/fail2ban/jail.d/postfix-pregreet.local +9 -0
  132. package/dist/server/engine/samples/fail2ban/jail.d/postfix.local +8 -0
  133. package/dist/server/engine/samples/fail2ban/jail.d/roundcube.local +9 -0
  134. package/dist/server/engine/samples/fail2ban/jail.d/sogo.local +8 -0
  135. package/dist/server/engine/samples/fail2ban/jail.d/sshd.local +8 -0
  136. package/dist/server/engine/samples/fail2ban/jail.local +6 -0
  137. package/dist/server/engine/samples/fail2ban/openbsd/rc +27 -0
  138. package/dist/server/engine/samples/fail2ban/sql/fail2ban.mysql +49 -0
  139. package/dist/server/engine/samples/fail2ban/sql/fail2ban.pgsql +48 -0
  140. package/dist/server/engine/samples/firewall/firewalld/services/ssh.xml +6 -0
  141. package/dist/server/engine/samples/firewall/firewalld/zones/iredmail.xml +15 -0
  142. package/dist/server/engine/samples/firewall/iptables/ip6tables.init.debian +362 -0
  143. package/dist/server/engine/samples/firewall/iptables/ip6tables.rules +53 -0
  144. package/dist/server/engine/samples/firewall/iptables/iptables.init.debian +363 -0
  145. package/dist/server/engine/samples/firewall/iptables/iptables.rules +54 -0
  146. package/dist/server/engine/samples/firewall/nftables.conf +58 -0
  147. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/dovecot.conf +3 -0
  148. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/iredapd.conf +1 -0
  149. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/mlmmjadmin.conf +1 -0
  150. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/php-fpm.conf +2 -0
  151. package/dist/server/engine/samples/freebsd/newsyslog.conf.d/slapd.conf +1 -0
  152. package/dist/server/engine/samples/freebsd/syslog.d/dovecot.conf +2 -0
  153. package/dist/server/engine/samples/freebsd/syslog.d/fail2ban.conf +2 -0
  154. package/dist/server/engine/samples/freebsd/syslog.d/iredapd.conf +2 -0
  155. package/dist/server/engine/samples/freebsd/syslog.d/mlmmjadmin.conf +2 -0
  156. package/dist/server/engine/samples/freebsd/syslog.d/php-fpm.conf +2 -0
  157. package/dist/server/engine/samples/freebsd/syslog.d/slapd.conf +2 -0
  158. package/dist/server/engine/samples/iredmail/iredmail.mysql +491 -0
  159. package/dist/server/engine/samples/iredmail/iredmail.pgsql +465 -0
  160. package/dist/server/engine/samples/iredmail/iredmail.schema +456 -0
  161. package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.3.pgsql +40 -0
  162. package/dist/server/engine/samples/iredmail/used_quota_triggers_dovecot_2.4.pgsql +18 -0
  163. package/dist/server/engine/samples/logrotate/dovecot +13 -0
  164. package/dist/server/engine/samples/logrotate/iredapd +13 -0
  165. package/dist/server/engine/samples/logrotate/mlmmjadmin +13 -0
  166. package/dist/server/engine/samples/logrotate/openldap +19 -0
  167. package/dist/server/engine/samples/logrotate/php-fpm +13 -0
  168. package/dist/server/engine/samples/openbsd/ldapd.conf +58 -0
  169. package/dist/server/engine/samples/openbsd/pf.conf +28 -0
  170. package/dist/server/engine/samples/postfix/command_filter.pcre +3 -0
  171. package/dist/server/engine/samples/postfix/freebsd/mailer.conf +9 -0
  172. package/dist/server/engine/samples/postfix/helo_access.pcre +180 -0
  173. package/dist/server/engine/samples/postfix/ldap/catchall_maps.cf +11 -0
  174. package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_domain.cf +11 -0
  175. package/dist/server/engine/samples/postfix/ldap/recipient_bcc_maps_user.cf +11 -0
  176. package/dist/server/engine/samples/postfix/ldap/relay_domains.cf +11 -0
  177. package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_domain.cf +11 -0
  178. package/dist/server/engine/samples/postfix/ldap/sender_bcc_maps_user.cf +11 -0
  179. package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_domain.cf +11 -0
  180. package/dist/server/engine/samples/postfix/ldap/sender_dependent_relayhost_maps_user.cf +11 -0
  181. package/dist/server/engine/samples/postfix/ldap/sender_login_maps.cf +11 -0
  182. package/dist/server/engine/samples/postfix/ldap/transport_maps_domain.cf +11 -0
  183. package/dist/server/engine/samples/postfix/ldap/transport_maps_user.cf +11 -0
  184. package/dist/server/engine/samples/postfix/ldap/virtual_alias_maps.cf +11 -0
  185. package/dist/server/engine/samples/postfix/ldap/virtual_group_maps.cf +11 -0
  186. package/dist/server/engine/samples/postfix/ldap/virtual_group_members_maps.cf +11 -0
  187. package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_domains.cf +11 -0
  188. package/dist/server/engine/samples/postfix/ldap/virtual_mailbox_maps.cf +12 -0
  189. package/dist/server/engine/samples/postfix/main.cf +282 -0
  190. package/dist/server/engine/samples/postfix/main.cf.amavisd +7 -0
  191. package/dist/server/engine/samples/postfix/main.cf.dovecot +8 -0
  192. package/dist/server/engine/samples/postfix/main.cf.ldap +39 -0
  193. package/dist/server/engine/samples/postfix/main.cf.mlmmj +5 -0
  194. package/dist/server/engine/samples/postfix/main.cf.mysql +39 -0
  195. package/dist/server/engine/samples/postfix/main.cf.pgsql +39 -0
  196. package/dist/server/engine/samples/postfix/main.cf.postscreen +30 -0
  197. package/dist/server/engine/samples/postfix/master.cf +87 -0
  198. package/dist/server/engine/samples/postfix/mysql/catchall_maps.cf +5 -0
  199. package/dist/server/engine/samples/postfix/mysql/domain_alias_catchall_maps.cf +5 -0
  200. package/dist/server/engine/samples/postfix/mysql/domain_alias_maps.cf +5 -0
  201. package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_domain.cf +5 -0
  202. package/dist/server/engine/samples/postfix/mysql/recipient_bcc_maps_user.cf +5 -0
  203. package/dist/server/engine/samples/postfix/mysql/relay_domains.cf +5 -0
  204. package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_domain.cf +5 -0
  205. package/dist/server/engine/samples/postfix/mysql/sender_bcc_maps_user.cf +5 -0
  206. package/dist/server/engine/samples/postfix/mysql/sender_dependent_relayhost_maps.cf +6 -0
  207. package/dist/server/engine/samples/postfix/mysql/sender_login_maps.cf +5 -0
  208. package/dist/server/engine/samples/postfix/mysql/transport_maps_domain.cf +5 -0
  209. package/dist/server/engine/samples/postfix/mysql/transport_maps_maillist.cf +5 -0
  210. package/dist/server/engine/samples/postfix/mysql/transport_maps_user.cf +5 -0
  211. package/dist/server/engine/samples/postfix/mysql/virtual_alias_maps.cf +5 -0
  212. package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_domains.cf +5 -0
  213. package/dist/server/engine/samples/postfix/mysql/virtual_mailbox_maps.cf +5 -0
  214. package/dist/server/engine/samples/postfix/pgsql/catchall_maps.cf +5 -0
  215. package/dist/server/engine/samples/postfix/pgsql/domain_alias_catchall_maps.cf +5 -0
  216. package/dist/server/engine/samples/postfix/pgsql/domain_alias_maps.cf +5 -0
  217. package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_domain.cf +5 -0
  218. package/dist/server/engine/samples/postfix/pgsql/recipient_bcc_maps_user.cf +5 -0
  219. package/dist/server/engine/samples/postfix/pgsql/relay_domains.cf +5 -0
  220. package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_domain.cf +5 -0
  221. package/dist/server/engine/samples/postfix/pgsql/sender_bcc_maps_user.cf +5 -0
  222. package/dist/server/engine/samples/postfix/pgsql/sender_dependent_relayhost_maps.cf +6 -0
  223. package/dist/server/engine/samples/postfix/pgsql/sender_login_maps.cf +5 -0
  224. package/dist/server/engine/samples/postfix/pgsql/transport_maps_domain.cf +5 -0
  225. package/dist/server/engine/samples/postfix/pgsql/transport_maps_maillist.cf +5 -0
  226. package/dist/server/engine/samples/postfix/pgsql/transport_maps_user.cf +5 -0
  227. package/dist/server/engine/samples/postfix/pgsql/virtual_alias_maps.cf +5 -0
  228. package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_domains.cf +5 -0
  229. package/dist/server/engine/samples/postfix/pgsql/virtual_mailbox_maps.cf +5 -0
  230. package/dist/server/engine/samples/postfix/postscreen_access.cidr +6 -0
  231. package/dist/server/engine/samples/postgresql/sql/add_first_domain_and_user.sql +34 -0
  232. package/dist/server/engine/samples/postgresql/sql/grant_permissions.sql +14 -0
  233. package/dist/server/engine/samples/postgresql/sql/init_vmail_db.sql +15 -0
  234. package/dist/server/engine/samples/rsyslog.d/1-iredmail-dovecot.conf +23 -0
  235. package/dist/server/engine/samples/rsyslog.d/1-iredmail-fail2ban.conf +2 -0
  236. package/dist/server/engine/samples/rsyslog.d/1-iredmail-iredapd.conf +12 -0
  237. package/dist/server/engine/samples/rsyslog.d/1-iredmail-mlmmjadmin.conf +12 -0
  238. package/dist/server/engine/samples/rsyslog.d/1-iredmail-openldap.conf +2 -0
  239. package/dist/server/engine/samples/rsyslog.d/1-iredmail-phpfpm.conf +3 -0
  240. package/dist/server/engine/samples/spamassassin/local.cf +186 -0
  241. package/dist/server/engine/samples/spamassassin/razor.conf +1 -0
  242. package/dist/server/engine/samples/systemd/clamd.service.d/override.conf +2 -0
  243. package/dist/server/engine/samples/systemd/mariadb.service.d/override.conf +3 -0
  244. package/dist/server/engine/samples/systemd/slapd.service.d/override.conf +6 -0
  245. package/dist/server/engine/samples/yum/CentOS-Linux-AppStream.repo +6 -0
  246. package/dist/server/engine/samples/yum/CentOS-Linux-PowerTools.repo +6 -0
  247. package/dist/server/engine/samples/yum/CentOS-Stream-AppStream.repo +7 -0
  248. package/dist/server/engine/samples/yum/CentOS-Stream-PowerTools.repo +7 -0
  249. package/dist/server/engine/samples/yum/symas-openldap.repo +6 -0
  250. package/dist/server/engine/tools/add_enabled_service.py +60 -0
  251. package/dist/server/engine/tools/backup_mysql.sh +238 -0
  252. package/dist/server/engine/tools/backup_openldap.sh +230 -0
  253. package/dist/server/engine/tools/backup_pgsql.sh +217 -0
  254. package/dist/server/engine/tools/backup_sogo.sh +156 -0
  255. package/dist/server/engine/tools/create_mail_user_OpenLDAP.py +335 -0
  256. package/dist/server/engine/tools/create_mail_user_OpenLDAP.sh +287 -0
  257. package/dist/server/engine/tools/create_mail_user_SQL.sh +127 -0
  258. package/dist/server/engine/tools/enable_postscreen.sh +144 -0
  259. package/dist/server/engine/tools/fail2ban_unban_ip.sh +39 -0
  260. package/dist/server/engine/tools/find_sasl_login_ip.sh +20 -0
  261. package/dist/server/engine/tools/find_top_sasl_usernames.sh +28 -0
  262. package/dist/server/engine/tools/generate_ssl_keys.sh +85 -0
  263. package/dist/server/engine/tools/kill_high_cpu_sogo_process.sh +32 -0
  264. package/dist/server/engine/tools/ldap_assign_user_to_groups.py +151 -0
  265. package/dist/server/engine/tools/ldap_move_members_to_another_group.py +129 -0
  266. package/dist/server/engine/tools/migrate_sql_alias_table.py +177 -0
  267. package/dist/server/engine/update/0.9.8/amavisd.mysql +29 -0
  268. package/dist/server/engine/update/0.9.8/amavisd.pgsql +39 -0
  269. package/dist/server/engine/update/0.9.8/iredmail.mysql +53 -0
  270. package/dist/server/engine/update/0.9.8/iredmail.pgsql +61 -0
  271. package/dist/server/engine/update/0.9.9/iredmail.mysql +2 -0
  272. package/dist/server/engine/update/0.9.9/iredmail.pgsql +2 -0
  273. package/dist/server/engine/update/1.0/iredmail.mysql +2 -0
  274. package/dist/server/engine/update/1.0/iredmail.pgsql +2 -0
  275. package/dist/server/engine/update/1.2/last_login.mysql +16 -0
  276. package/dist/server/engine/update/1.4.0/iredmail.mysql +22 -0
  277. package/dist/server/engine/update/1.4.0/iredmail.pgsql +20 -0
  278. package/dist/server/engine/update/1.4.1/iredmail.mysql +3 -0
  279. package/dist/server/engine/update/1.4.1/iredmail.pgsql +3 -0
  280. package/dist/server/engine/update/1.4.1/sogo.mysql +11 -0
  281. package/dist/server/engine/update/1.4.1/sogo.pgsql +30 -0
  282. package/dist/server/engine/update/1.4.1/update-ldap.py +66 -0
  283. package/dist/server/engine/update/1.4.2/iredmail.mysql +9 -0
  284. package/dist/server/engine/update/1.4.2/iredmail.pgsql +9 -0
  285. package/dist/server/engine/update/1.4.2/sogo.pgsql +30 -0
  286. package/dist/server/engine/update/1.6.0/sogo_view.pgsql +27 -0
  287. package/dist/server/engine/update/1.6.3/iredmail.mysql +1 -0
  288. package/dist/server/engine/update/1.7.0/fail2ban.mysql +11 -0
  289. package/dist/server/engine/update/1.7.0/fail2ban.pgsql +12 -0
  290. package/dist/server/engine/update/1.7.1/amavisd.mysql +1 -0
  291. package/dist/server/engine/update/1.7.2/vmail.mysql +30 -0
  292. package/dist/server/engine/update/1.7.3/deleted_mailboxes.mysql +43 -0
  293. package/dist/server/engine/update/1.7.3/iredadmin.mysql +26 -0
  294. package/dist/server/engine/update/1.7.3/vmail.mysql +79 -0
  295. package/dist/server/engine/update/1.7.3/vmail.pgsql +9 -0
  296. package/dist/server/engine/update/README.md +1 -0
  297. package/dist/server/engine/update/ldap/README.md +40 -0
  298. package/dist/server/engine/update/ldap/update-ldap-dovecot-2.3.py +69 -0
  299. package/dist/server/index.js +55793 -53701
  300. package/dist/server/migrations/0071_gh_device_token.sql +3 -0
  301. package/dist/server/migrations/0072_gh_device_token_method.sql +1 -0
  302. package/dist/server/migrations/meta/_journal.json +14 -0
  303. package/dist/setup-2DMFIA74.js +20 -0
  304. package/dist/{signin-PVC7MBZJ.js → signin-ITOPKKUB.js} +11 -9
  305. package/dist/{sso-oidc-ZXY77BSL.js → sso-oidc-NON2PD7Y.js} +11 -9
  306. package/dist/{sts-LX5L4UU3.js → sts-HHFFSAY2.js} +10 -8
  307. package/package.json +1 -1
  308. package/dist/bare-CNSFDNSZ.js +0 -20
  309. package/dist/cloud-655YYCEW.js +0 -26
  310. package/dist/docker-UWQPDEGW.js +0 -14
  311. package/dist/docker-edge-executor-ZLAYE5FE.js +0 -11
  312. package/dist/edge-import-AFID2EN3.js +0 -41
  313. package/dist/nginx-M36GDYL7.js +0 -18
  314. package/dist/setup-ZXXB5S22.js +0 -16
@@ -0,0 +1,632 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Author: Zhang Huangbin (zhb _at_ iredmail.org)
4
+
5
+ #---------------------------------------------------------------------
6
+ # This file is part of iRedMail, which is an open source mail server
7
+ # solution for Red Hat(R) Enterprise Linux, CentOS, Debian and Ubuntu.
8
+ #
9
+ # iRedMail is free software: you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation, either version 3 of the License, or
12
+ # (at your option) any later version.
13
+ #
14
+ # iRedMail is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with iRedMail. If not, see <http://www.gnu.org/licenses/>.
21
+ #---------------------------------------------------------------------
22
+
23
+ ECHO_INFO()
24
+ {
25
+ if [ X"$1" == X"-n" ]; then
26
+ shift 1
27
+ echo -ne "${_INFO_FLAG} $@"
28
+ else
29
+ echo -e "${_INFO_FLAG} $@"
30
+ fi
31
+ echo -e "${_INFO_FLAG} $@" >> ${INSTALL_LOG}
32
+ }
33
+
34
+ ECHO_SKIP()
35
+ {
36
+ echo -e "${_SKIP_FLAG} $@"
37
+ echo -e "${_SKIP_FLAG} $@" >> ${INSTALL_LOG}
38
+ }
39
+
40
+ ECHO_QUESTION()
41
+ {
42
+ if [ X"$1" == X"-n" ]; then
43
+ shift 1
44
+ echo -ne "${_QUESTION_FLAG} $@"
45
+ else
46
+ echo -e "${_QUESTION_FLAG} $@"
47
+ fi
48
+ }
49
+
50
+ ECHO_ERROR()
51
+ {
52
+ echo -e "${_ERROR_FLAG} $@"
53
+ echo -e "${_ERROR_FLAG} $@" >> ${INSTALL_LOG}
54
+ }
55
+
56
+ ECHO_DEBUG()
57
+ {
58
+ echo -e "${_DEBUG_FLAG} $@" >> ${INSTALL_LOG}
59
+ }
60
+
61
+ read_setting()
62
+ {
63
+ answer="${1}"
64
+ if [ ! -z "${answer}" ]; then
65
+ ANSWER="${answer}"
66
+ echo ${ANSWER}
67
+ else
68
+ read ANSWER
69
+ fi
70
+ }
71
+
72
+ backup_file()
73
+ {
74
+ # Usage: backup_file file1 [file2 file3 ... fileN]
75
+ if [ X"$#" != X"0" ]; then
76
+ for f in $@; do
77
+ if [ -f ${f} ]; then
78
+ if [ X"${IREDMAIL_DEBUG}" == X'YES' ]; then
79
+ echo -e "${_BACKUP_FLAG} ${f} -> ${f}.${DATE}."
80
+ fi
81
+ cp -f ${f} ${f}.${DATE}
82
+ fi
83
+ done
84
+ fi
85
+ }
86
+
87
+ check_user()
88
+ {
89
+ # Check special user privilege to execute this script.
90
+ if [ X"$(id -u)" != X"$(id -u ${1})" ]; then
91
+ ECHO_ERROR "Please run this script as user: ${1}."
92
+ exit 255
93
+ else
94
+ if [ X"$(id -u)" == X"0" ]; then
95
+ export PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
96
+ else
97
+ :
98
+ fi
99
+ fi
100
+ }
101
+
102
+ check_hostname()
103
+ {
104
+ echo ${HOSTNAME} | grep '.\..*' &>/dev/null
105
+ [ X"$?" != X'0' ] && \
106
+ ECHO_ERROR "Please configure a fully qualified domain name (FQDN) in /etc/hosts before we go further.\n\nExample:\n\n127.0.0.1 mail.iredmail.org mail localhost\n" && \
107
+ exit 255
108
+ }
109
+
110
+ check_openbsd_install_url()
111
+ {
112
+ touch /etc/installurl
113
+
114
+ # Make sure it contains a http/ftp/scp URL
115
+ if ! grep -Ei '^(ftp|http|https|scp)://' /etc/installurl &>/dev/null; then
116
+ ECHO_INFO "No valid OpenBSD mirror server URL found in file /etc/installurl."
117
+ ECHO_INFO "We will use the fastly CDN for this iRedMail installation:"
118
+ ECHO_INFO ''
119
+ ECHO_INFO " - https://fastly.cdn.openbsd.org/pub/OpenBSD"
120
+ ECHO_INFO ''
121
+ ECHO_INFO "If you prefer a nearest mirror site, please check links below:"
122
+ ECHO_INFO ''
123
+ ECHO_INFO " - Mirror sites: http://www.openbsd.org/ftp.html"
124
+ ECHO_INFO " - installurl(5): http://man.openbsd.org/installurl.5"
125
+ ECHO_INFO ''
126
+ echo 'https://fastly.cdn.openbsd.org/pub/OpenBSD' >> /etc/installurl
127
+ fi
128
+ }
129
+
130
+ check_pkg() {
131
+ # Usage: check_pkg <command> <package>
132
+ # It means: <package> owns <command>
133
+ cmd="$1"
134
+ pkg="$2"
135
+
136
+ for i in $(echo $PATH|sed 's/:/ /g'); do
137
+ [ -x $i/${cmd} ] && export HAS_CMD='YES' && break
138
+ done
139
+
140
+ if [ X"${HAS_CMD}" != X'YES' ]; then
141
+ export MISSING_PKGS="${MISSING_PKGS} ${pkg}"
142
+ fi
143
+
144
+ unset HAS_CMD
145
+ }
146
+
147
+ install_missing_pkg() {
148
+ if [ X"${MISSING_PKGS}" != X"" ]; then
149
+ eval ${install_pkg} ${MISSING_PKGS}
150
+ if [ X"$?" != X"0" ]; then
151
+ ECHO_ERROR "Please install missing package(s) ${MISSING_PKGS} first." && exit 255
152
+ fi
153
+ fi
154
+ }
155
+
156
+ check_runtime_dir() {
157
+ [ -d ${RUNTIME_DIR} ] || mkdir -p ${RUNTIME_DIR}
158
+
159
+ # Cleanup
160
+ rm -f ${RUNTIME_DIR}/.pkg_install_failed &>/dev/null
161
+ }
162
+
163
+ check_required_os_dirs() {
164
+ if [ X"${DISTRO}" == X'FREEBSD' ]; then
165
+ [ -d ${LOGROTATE_DIR} ] || mkdir -p ${LOGROTATE_DIR}
166
+ fi
167
+ }
168
+
169
+ # Check necessery privileges/files/dirs.
170
+ check_env()
171
+ {
172
+ check_runtime_dir
173
+ check_required_os_dirs
174
+
175
+ # Check user privilege.
176
+ check_user root
177
+
178
+ # Check FQDN hostname.
179
+ check_hostname
180
+
181
+ [ X"${DISTRO}" == X'OPENBSD' ] && check_openbsd_install_url
182
+
183
+ # Check config tool: dialog.
184
+ check_pkg ${BIN_DIALOG} ${PKG_DIALOG}
185
+
186
+ ECHO_INFO -n "Checking configuration file: ${IREDMAIL_CONFIG_FILE} ..."
187
+ if [ -f ${IREDMAIL_CONFIG_FILE} ]; then
188
+ if grep '^#EOF$' ${IREDMAIL_CONFIG_FILE} >/dev/null; then
189
+ echo -e " [FOUND]"
190
+ ECHO_QUESTION -n "Use it for mail server setting? [y|N]"
191
+ read_setting ${AUTO_USE_EXISTING_CONFIG_FILE}
192
+ case ${ANSWER} in
193
+ Y|y|[Yy][Ee][Ss] )
194
+ ECHO_INFO "Use config file: ${IREDMAIL_CONFIG_FILE} for mail server setting."
195
+ . ${IREDMAIL_CONFIG_FILE}
196
+
197
+ # Check installation status.
198
+ # After each component installation was completed, there
199
+ # should be a variable in ${STATUS_FILE}, e.g.
200
+ #
201
+ # export STATUS_PHP_INSTALLATION='DONE'
202
+ # export STATUS_PHP_CONFIGURATION='DONE'
203
+ #
204
+ if [ -f ${STATUS_FILE} ]; then
205
+ ECHO_INFO "Import installation process status from file: ${STATUS_FILE}."
206
+ . ${STATUS_FILE}
207
+ else
208
+ echo '' > ${STATUS_FILE}
209
+ fi
210
+
211
+ # Initialize tip file.
212
+ if [ ! -f ${TIP_FILE} ]; then
213
+ cat > ${TIP_FILE} <<EOF
214
+ ${CONF_MSG}
215
+ EOF
216
+
217
+ chown ${SYS_USER_ROOT}:${SYS_GROUP_ROOT} ${TIP_FILE}
218
+ chmod 0400 ${TIP_FILE}
219
+ fi
220
+ ;;
221
+ N|n|* )
222
+ ECHO_INFO "Skip configuration file: ${IREDMAIL_CONFIG_FILE}."
223
+ backup_file ${IREDMAIL_CONFIG_FILE}
224
+ . ${CONFIG_VIA_DIALOG}
225
+ ;;
226
+ esac
227
+ else
228
+ ECHO_INFO "Found, but not finished. Launching installation wizard."
229
+ . ${CONFIG_VIA_DIALOG}
230
+ fi
231
+ else
232
+ ECHO_INFO "NOT FOUND. Launching installation wizard."
233
+ . ${CONFIG_VIA_DIALOG}
234
+ fi
235
+ }
236
+
237
+ extract_pkg()
238
+ {
239
+ if [ X"$2" = X"" ]; then
240
+ DST='.'
241
+ else
242
+ DST="$2"
243
+ fi
244
+
245
+ if echo $1 | grep '.tar.gz$' &>/dev/null; then
246
+ ECHO_DEBUG "Extracting: $1 -> ${DST}"
247
+ tar zxf $1 -C $DST
248
+ elif echo $1 | grep '.tgz$' &>/dev/null; then
249
+ ECHO_DEBUG "Extracting: $1 -> ${DST}"
250
+ tar zxf $1 -C $DST
251
+ elif echo $1 | grep '.tar.bz2$' &>/dev/null; then
252
+ # Install bzip2 first.
253
+ check_pkg ${BIN_BZIP2} ${PKG_BZIP2}
254
+
255
+ ECHO_DEBUG "Extracting: $1 -> ${DST}"
256
+ tar xjf $1 -C $DST
257
+ else
258
+ ECHO_ERROR "Unknown archive format."
259
+ fi
260
+ }
261
+
262
+ check_status_before_run()
263
+ {
264
+ # If function was successfully executed, this function will write one line
265
+ # in $STATUS_FILE:
266
+ #
267
+ # export status_[function_name]='DONE'
268
+ #
269
+ function_name="${1}"
270
+ function_status_name="status_${function_name}"
271
+ function_status_value="$(eval echo \$${function_status_name})"
272
+ if [ X"${function_status_value}" == X"DONE" ]; then
273
+ ECHO_SKIP "Function: $1."
274
+ else
275
+ $function_name
276
+ fi
277
+ }
278
+
279
+ # Hash maildir string.
280
+ hash_maildir()
281
+ {
282
+ # Usage:
283
+ #
284
+ # hash_maildir username
285
+ # hash_maildir --no-timestamp username
286
+ #
287
+ # With '--no-timestamp', the maildir path will not contain timestamp string
288
+ if [ X"$1" == X'--no-timestamp' ]; then
289
+ _timestamp=''
290
+ shift 1
291
+ else
292
+ _timestamp="-${DATE}"
293
+ fi
294
+
295
+ username="$( echo $1 | tr '[A-Z]' '[a-z]' )"
296
+
297
+ # Different maildir style: hashed, normal.
298
+ if [ X"${MAILDIR_STYLE}" == X"hashed" ]; then
299
+ str1="$(echo ${username} | cut -c1)"
300
+ str2="$(echo ${username} | cut -c2)"
301
+ str3="$(echo ${username} | cut -c3)"
302
+
303
+ if [ X"${username}" == X"${str1}" ]; then
304
+ # Username has only one character
305
+ str2="${str1}"
306
+ str3="${str1}"
307
+ elif [ X"${username}" == X"${str1}${str2}" ]; then
308
+ str3="${str2}"
309
+ else
310
+ :
311
+ fi
312
+
313
+ maildir="${str1}/${str2}/${str3}/${username}${_timestamp}/"
314
+ else
315
+ maildir="${username}${_timestamp}/"
316
+ fi
317
+
318
+ echo ${maildir}
319
+ }
320
+
321
+ # All Linux/BSD distributions: for one service:
322
+ # service_control [enable|disable|start|stop|restart] <service>
323
+ # Linux: for multiple services:
324
+ # service_control [enable|disable|start|stop|restart] <service1> <service2> <service3> ...
325
+ # FreeBSD: for one service:
326
+ # service_control enable '<service>_enable' 'YES'
327
+ service_control()
328
+ {
329
+ action="$1" # enable, disable, start, stop, restart
330
+ shift 1
331
+ service="$1" # first service name
332
+ services="$@" # all service names
333
+
334
+ if [ X"${KERNEL_NAME}" == X'LINUX' ]; then
335
+ ECHO_DEBUG "Service control: ${action} ${services}."
336
+
337
+ if [ X"${USE_SYSTEMD}" == X'YES' ]; then
338
+ # Perform action one by one instead of all in one, to prevent
339
+ # non-zero exit status caused by not existing one.
340
+ for srv in ${services}; do
341
+ systemctl ${action} ${srv} >> ${INSTALL_LOG} 2>&1
342
+ done
343
+ else
344
+ for srv in ${services}; do
345
+ rc_script="${DIR_RC_SCRIPTS}/$srv"
346
+ ${rc_script} $action >> ${INSTALL_LOG} 2>&1
347
+ done
348
+ fi
349
+ elif [ X"${KERNEL_NAME}" == X'FREEBSD' ]; then
350
+ if [ X"${action}" == X'enable' ]; then
351
+ if [ X"$#" == X'2' ]; then
352
+ ${SYSRC} -f ${RC_CONF_LOCAL} ${1}="${2}" >> ${INSTALL_LOG} 2>&1
353
+ fi
354
+ elif [ X"${action}" == X'disable' ]; then
355
+ # Already handled in functions/*.sh.
356
+ :
357
+ else
358
+ ${DIR_RC_SCRIPTS}/${service} $action >> ${INSTALL_LOG} 2>&1
359
+ fi
360
+ elif [ X"${KERNEL_NAME}" == X'OPENBSD' ]; then
361
+ for srv in ${services}; do
362
+ rcctl ${action} ${srv} >> ${INSTALL_LOG} 2>&1
363
+ done
364
+ fi
365
+ }
366
+
367
+ generate_password_hash()
368
+ {
369
+ _scheme="${1}"
370
+ _password="${2}"
371
+
372
+ if [ X"${_scheme}" == X'BCRYPT' ]; then
373
+ _scheme='BLF-CRYPT'
374
+ fi
375
+
376
+ doveadm pw -s "${_scheme}" -p "${_password}"
377
+ }
378
+
379
+ # Create SSL certs/private files.
380
+ generate_ssl_keys()
381
+ {
382
+ ECHO_INFO "Generate self-signed SSL cert (${SSL_KEY_SIZE} bits, expire in 10 years)."
383
+
384
+ # Create necessary directories.
385
+ mkdir -p ${SSL_KEY_DIR} ${SSL_CERT_DIR} &>/dev/null
386
+
387
+ openssl req \
388
+ -x509 \
389
+ -nodes \
390
+ -days 3650 \
391
+ -sha256 \
392
+ -subj "/C=${TLS_COUNTRY}/ST=${TLS_STATE}/L=${TLS_CITY}/O=${TLS_COMPANY}/OU=${TLS_DEPARTMENT}/CN=${TLS_HOSTNAME}/emailAddress=${TLS_ADMIN}/" \
393
+ -newkey rsa:${SSL_KEY_SIZE} \
394
+ -out ${SSL_CERT_FILE} \
395
+ -keyout ${SSL_KEY_FILE} &>/dev/null
396
+
397
+ # Set correct file permission.
398
+ chmod +r ${SSL_CERT_FILE}
399
+ chmod +r ${SSL_KEY_FILE}
400
+
401
+ # Fix 'The Logjam Attack'. References:
402
+ # - https://weakdh.org/
403
+ # - https://weakdh.org/sysadmin.html
404
+ ECHO_INFO "Generate Diffie Hellman Group with openssl, please wait."
405
+ openssl dhparam -out ${SSL_DH512_PARAM_FILE} 512 5>&1 &>/dev/null
406
+ openssl dhparam -out ${SSL_DH1024_PARAM_FILE} 2048 5>&1 &>/dev/null
407
+
408
+ cat >> ${TIP_FILE} <<EOF
409
+
410
+ SSL cert keys (size: ${SSL_KEY_SIZE}):
411
+ - ${SSL_CERT_FILE}
412
+ - ${SSL_KEY_FILE}
413
+
414
+ EOF
415
+
416
+ echo 'export status_generate_ssl_keys="DONE"' >> ${STATUS_FILE}
417
+ }
418
+
419
+ # Add alias entry in Postfix /etc/postfix/aliases.
420
+ add_postfix_alias()
421
+ {
422
+ # Usage: add_postfix_alias [src_username] [dest_username or email address]
423
+ # File ${POSTFIX_FILE_ALIASES} will be created if not exist.
424
+ export alias_src="${1}"
425
+ export alias_dest="${2}"
426
+
427
+ if [ ! -f ${POSTFIX_FILE_ALIASES} ]; then
428
+ if [ -f /etc/aliases ]; then
429
+ cp -f /etc/aliases ${POSTFIX_FILE_ALIASES}
430
+ else
431
+ # Create an empty file
432
+ touch ${POSTFIX_FILE_ALIASES}
433
+ fi
434
+ fi
435
+
436
+ # If alias_src exists, comment it out
437
+ if grep "^${alias_src}:" ${POSTFIX_FILE_ALIASES} &>/dev/null; then
438
+ perl -pi -e 's/^($ENV{alias_src}:.*)/#${1}/' ${POSTFIX_FILE_ALIASES}
439
+ fi
440
+
441
+ # Add new alias
442
+ echo "${alias_src}: ${alias_dest}" >> ${POSTFIX_FILE_ALIASES}
443
+
444
+ postalias ${POSTFIX_DEFAULT_DB_TYPE}:${POSTFIX_FILE_ALIASES} &>/dev/null
445
+ unset alias_src
446
+ unset alias_dest
447
+ }
448
+
449
+ # Install/Remove binary packages on RHEL/CentOS.
450
+ install_pkg_rhel()
451
+ {
452
+ ECHO_INFO "Installing package(s): $@"
453
+ ${YUM} -y --disablerepo=rpmforge,ius,remi,remi-php74,remi-safe,atrpms,epel-next install $@
454
+
455
+ # Leave a mark if package installation failed.
456
+ if [ X"$?" != X'0' ]; then
457
+ echo '' > ${RUNTIME_DIR}/.pkg_install_failed
458
+ fi
459
+ }
460
+
461
+ remove_pkg_rhel()
462
+ {
463
+ ECHO_INFO "Removing package(s): $@"
464
+ ${YUM} remove -y $@
465
+ if [ X"$?" != X"0" ]; then
466
+ ECHO_ERROR "Package removed failed, please check the terminal output."
467
+ echo '' > ${RUNTIME_DIR}/.pkg_remove_failed
468
+ fi
469
+ }
470
+
471
+ # Install/Remove binary packages on Debian/Ubuntu.
472
+ install_pkg_debian()
473
+ {
474
+ ECHO_INFO "Installing package(s): $@"
475
+ ${APTGET} install -y $@
476
+
477
+ # Leave a mark if package installation failed.
478
+ if [ X"$?" != X"0" ]; then
479
+ echo '' > ${RUNTIME_DIR}/.pkg_install_failed
480
+ fi
481
+ }
482
+
483
+ remove_pkg_debian()
484
+ {
485
+ ECHO_INFO "Removing package(s): $@"
486
+ ${APTGET} purge -y $@
487
+ if [ X"$?" != X"0" ]; then
488
+ ECHO_ERROR "Package removed failed, please check the terminal output."
489
+ echo '' > ${RUNTIME_DIR}/.pkg_remove_failed
490
+ fi
491
+ }
492
+
493
+ install_pkg_openbsd()
494
+ {
495
+ ECHO_INFO "Installing packages (pkg_add -i -m): $@"
496
+
497
+ pkg_add -i -m $@
498
+
499
+ # Leave a mark if package installation failed.
500
+ if [ X"$?" != X"0" ]; then
501
+ echo '' > ${RUNTIME_DIR}/.pkg_install_failed
502
+ fi
503
+ }
504
+
505
+ freebsd_make_conf_add()
506
+ {
507
+ # USAGE: freebsd_make_conf_add VAR VALUE
508
+ [ -f ${FREEBSD_MAKE_CONF} ] || touch ${FREEBSD_MAKE_CONF}
509
+ if [ X"$#" == X'2' ]; then
510
+ var="${1}"
511
+ value="${2}"
512
+ final_option="${1}=${2}"
513
+ comment_mark="# ${PROG_NAME}-${var}"
514
+ if ! grep "^${comment_mark}$" ${FREEBSD_MAKE_CONF} &>/dev/null; then
515
+ ECHO_DEBUG "Update ${FREEBSD_MAKE_CONF}: ${final_option}"
516
+ echo "${comment_mark}" >> ${FREEBSD_MAKE_CONF}
517
+ echo "${final_option}" >> ${FREEBSD_MAKE_CONF}
518
+ else
519
+ ECHO_DEBUG "Skip adding option in ${FREEBSD_MAKE_CONF}: ${final_option}"
520
+ fi
521
+ fi
522
+ }
523
+
524
+ freebsd_make_conf_plus_option()
525
+ {
526
+ # USAGE: freebsd_make_conf_plus_option VAR VALUE
527
+ [ -f ${FREEBSD_MAKE_CONF} ] || touch ${FREEBSD_MAKE_CONF}
528
+ if [ X"$#" == X'2' ]; then
529
+ var="${1}"
530
+ value="${2}"
531
+ final_option="${1}+=${2}"
532
+ comment_mark="# ${PROG_NAME}-${var}-${value}"
533
+ if ! grep "^${comment_mark}$" ${FREEBSD_MAKE_CONF} &>/dev/null; then
534
+ ECHO_DEBUG "Update ${FREEBSD_MAKE_CONF}: ${final_option}"
535
+ echo "${comment_mark}" >> ${FREEBSD_MAKE_CONF}
536
+ echo "${final_option}" >> ${FREEBSD_MAKE_CONF}
537
+ else
538
+ ECHO_DEBUG "Skip adding option in ${FREEBSD_MAKE_CONF}: ${final_option}"
539
+ fi
540
+ fi
541
+ }
542
+
543
+ ask_confirm()
544
+ {
545
+ # Usage: ask_confirm 'prompt text'
546
+ prompt_text="${1}"
547
+ echo -ne "${prompt_text} [y|N]"
548
+ read ANSWER
549
+ case ${ANSWER} in
550
+ Y|y ) : ;;
551
+ N|n|* ) echo "Exit." && exit ;;
552
+ esac
553
+ }
554
+
555
+ add_sys_user_group()
556
+ {
557
+ _user="$1"
558
+ _group="$2"
559
+ _uid="$3"
560
+ _gid="$4"
561
+
562
+ _home="$5"
563
+ _shell="$6"
564
+
565
+ _args_u="-m -g ${_group}"
566
+ _args_g=''
567
+ if [ X"${_uid}" != X'' ]; then
568
+ _args_u="${_args_u} -u ${_uid}"
569
+ fi
570
+
571
+ if [ X"${_gid}" != X'' ]; then
572
+ _args_g="${_args_g} -g ${_gid}"
573
+ fi
574
+
575
+ if [ X"${_home}" != X'' ]; then
576
+ _args_u="${_args_u} -d ${_home}"
577
+ fi
578
+
579
+ if [ X"${_shell}" == X'' ]; then
580
+ _shell="${SHELL_NOLOGIN}"
581
+ fi
582
+ _args_u="${_args_u} -s ${_shell}"
583
+
584
+ ECHO_DEBUG "Create system account: ${_user}:${_group}."
585
+
586
+ if [ X"${DISTRO}" == X'FREEBSD' ]; then
587
+ pw groupadd ${_args_g} -n ${_group} >> ${INSTALL_LOG} 2>&1
588
+ pw useradd ${_args_u} -n ${_user} >> ${INSTALL_LOG} 2>&1
589
+ elif [ X"${DISTRO}" == X'OPENBSD' ]; then
590
+ groupadd ${_args_g} ${_group} >> ${INSTALL_LOG} 2>&1
591
+ useradd \
592
+ -u ${_uid} \
593
+ -g ${_group} \
594
+ -s ${_shell} \
595
+ ${_user} >> ${INSTALL_LOG} 2>&1
596
+ else
597
+ groupadd ${_args_g} ${_group} >> ${INSTALL_LOG} 2>&1
598
+ useradd ${_args_u} ${_user} >> ${INSTALL_LOG} 2>&1
599
+ fi
600
+ }
601
+
602
+ update_sysctl_param()
603
+ {
604
+ export _param="$1"
605
+ export _value="$2"
606
+
607
+ if grep "^${_param}\>" ${SYSCTL_CONF} &>/dev/null; then
608
+ # param exists, updating it.
609
+ perl -pi -e 's#^($ENV{_param})[ =].*#${1}=$ENV{_value}#' ${SYSCTL_CONF}
610
+ else
611
+ # param doesn't exist. add a new one.
612
+ echo "${_param}=${_value}" >> ${SYSCTL_CONF}
613
+ fi
614
+
615
+ unset _param _value
616
+ }
617
+
618
+ write_iredmail_kv()
619
+ {
620
+ # usage: write_iredmail_kv <param> <value>
621
+ # Storage value to file /root/.iredmail/kv/<param>.
622
+ param="$1"
623
+ value="$2"
624
+
625
+ [[ -f ${IREDMAIL_KV_DIR} ]] || mkdir -p ${IREDMAIL_KV_DIR}
626
+
627
+ f="${IREDMAIL_KV_DIR}/${param}"
628
+ echo "${value}" > ${f}
629
+
630
+ chown -R ${SYS_USER_ROOT}:${SYS_GROUP_ROOT} ${IREDMAIL_KV_DIR}
631
+ chmod -R 0400 ${IREDMAIL_KV_DIR}
632
+ }