modoboa 2.6.4__py3-none-any.whl → 2.7.0__py3-none-any.whl

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 (364) hide show
  1. modoboa/admin/api/v2/serializers.py +1 -0
  2. modoboa/admin/app_settings.py +12 -0
  3. modoboa/admin/{management/commands/subcommands/_mx.py → dns_checker.py} +41 -111
  4. modoboa/admin/jobs.py +86 -0
  5. modoboa/admin/management/commands/modo.py +0 -2
  6. modoboa/admin/tests/test_mailbox_operations.py +4 -4
  7. modoboa/admin/tests/test_mx.py +68 -56
  8. modoboa/amavis/jobs.py +11 -0
  9. modoboa/amavis/tests/test_jobs.py +18 -0
  10. modoboa/amavis/tests/test_viewsets.py +2 -3
  11. modoboa/autoconfig/templates/autoconfig/autoconfig.xml +2 -2
  12. modoboa/autoconfig/templates/autoconfig/autodiscover.xml +14 -0
  13. modoboa/autoconfig/tests.py +2 -1
  14. modoboa/autoconfig/views.py +11 -3
  15. modoboa/autoreply/models.py +4 -4
  16. modoboa/calendars/backends/caldav_.py +17 -13
  17. modoboa/calendars/jobs.py +7 -0
  18. modoboa/calendars/mocks.py +4 -1
  19. modoboa/calendars/serializers.py +14 -9
  20. modoboa/calendars/tests.py +10 -9
  21. modoboa/calendars/viewsets.py +3 -1
  22. modoboa/contacts/migrations/0008_addressbook_syncing.py +18 -0
  23. modoboa/contacts/models.py +1 -0
  24. modoboa/contacts/serializers.py +5 -2
  25. modoboa/contacts/tasks.py +9 -3
  26. modoboa/contacts/tests.py +32 -6
  27. modoboa/contacts/viewsets.py +7 -1
  28. modoboa/core/api/v2/serializers.py +0 -7
  29. modoboa/core/api/v2/tests.py +0 -10
  30. modoboa/core/app_settings.py +0 -22
  31. modoboa/core/commands/deploy.py +13 -0
  32. modoboa/core/commands/templates/cron_config.py.tpl +33 -0
  33. modoboa/core/commands/templates/settings.py.tpl +21 -0
  34. modoboa/core/jobs.py +34 -0
  35. modoboa/core/management/commands/load_initial_data.py +1 -1
  36. modoboa/core/password_hashers/base.py +4 -1
  37. modoboa/core/tests/test_core.py +0 -14
  38. modoboa/core/tests/test_jobs.py +40 -0
  39. modoboa/frontend_dist/assets/{AccountAliasForm-tLHotdIR.js → AccountAliasForm-DO6DwfjE.js} +1 -1
  40. modoboa/frontend_dist/assets/{AccountEditView-DnQIIg47.js → AccountEditView-CCuN9mGB.js} +1 -1
  41. modoboa/frontend_dist/assets/AccountLayout-Ge7fzuZg.js +1 -0
  42. modoboa/frontend_dist/assets/AccountPasswordSubForm-PkFPblkR.js +1 -0
  43. modoboa/frontend_dist/assets/AccountView-dgseekZ8.js +1 -0
  44. modoboa/frontend_dist/assets/AddressBook-DZWOHOJj.js +1 -0
  45. modoboa/frontend_dist/assets/AdminLayout-itB_mmH_.js +1 -0
  46. modoboa/frontend_dist/assets/AlarmsView-King6zb6.js +1 -0
  47. modoboa/frontend_dist/assets/{AliasEditView-n75NEN_s.js → AliasEditView-CTjrXYPf.js} +1 -1
  48. modoboa/frontend_dist/assets/AliasRecipientForm-CI7bXqVp.js +1 -0
  49. modoboa/frontend_dist/assets/{AliasView-DFIvPeIm.js → AliasView-BN13MNN_.js} +1 -1
  50. modoboa/frontend_dist/assets/AuditTrailView-C1jQwgoo.js +1 -0
  51. modoboa/frontend_dist/assets/CalendarView-juHVIHU5.css +1 -0
  52. modoboa/frontend_dist/assets/CalendarView-rRSzqxrH.js +1 -0
  53. modoboa/frontend_dist/assets/ChoiceField-DCr12shR.js +1 -0
  54. modoboa/frontend_dist/assets/ComposeEmailForm-BmtKwFb1.js +2 -0
  55. modoboa/frontend_dist/assets/ComposeEmailForm-CVNDl-Mq.css +1 -0
  56. modoboa/frontend_dist/assets/ComposeEmailView-JW22Phrb.js +1 -0
  57. modoboa/frontend_dist/assets/ConfirmDialog-CWpdwSQ6.js +1 -0
  58. modoboa/frontend_dist/assets/ConnectedLayout-BP8pO27H.js +1 -0
  59. modoboa/frontend_dist/assets/{ConnectedLayout-C6HNXWkp.css → ConnectedLayout-Ddpb_6yT.css} +1 -1
  60. modoboa/frontend_dist/assets/CreationForm-CzelJsVQ.js +1 -0
  61. modoboa/frontend_dist/assets/DashboardView-BBkBodVj.js +1 -0
  62. modoboa/frontend_dist/assets/{DomainAdminList-BjtfbhRj.js → DomainAdminList-DD7p3i6F.js} +1 -1
  63. modoboa/frontend_dist/assets/{DomainEditView-Cq5Ea4RW.js → DomainEditView-DoIoNYC4.js} +1 -1
  64. modoboa/frontend_dist/assets/{DomainTransportForm-DAXJGNLA.js → DomainTransportForm-CbiJF9z5.js} +1 -1
  65. modoboa/frontend_dist/assets/{DomainView-BfpK7U14.js → DomainView-BXvznFYz.js} +3 -3
  66. modoboa/frontend_dist/assets/DomainsView-ffYjiffp.js +1 -0
  67. modoboa/frontend_dist/assets/EmailField-KhhJYA4D.js +1 -0
  68. modoboa/frontend_dist/assets/EmailSchedulingForm-CQL5Vfdr.js +1 -0
  69. modoboa/frontend_dist/assets/EmailView-Bq2bHZBO.js +1 -0
  70. modoboa/frontend_dist/assets/EmptyLayout-NrTftp18.js +1 -0
  71. modoboa/frontend_dist/assets/FiltersView-SOQy0U_3.js +1 -0
  72. modoboa/frontend_dist/assets/ForwardEmailView-kEPDjWUw.js +1 -0
  73. modoboa/frontend_dist/assets/{HtmlEditor-D753fIAJ.js → HtmlEditor-CyBl5wj2.js} +15 -15
  74. modoboa/frontend_dist/assets/IdentitiesView-CZFf4oR9.js +1 -0
  75. modoboa/frontend_dist/assets/InformationView-CAtneAqM.js +1 -0
  76. modoboa/frontend_dist/assets/{LoadingData-Tm56XNwj.js → LoadingData-C2txD49L.js} +1 -1
  77. modoboa/frontend_dist/assets/{LoginCallbackView-DjCHUgz5.js → LoginCallbackView-DAvty3CI.js} +1 -1
  78. modoboa/frontend_dist/assets/{LoginView-D0r4XBEl.js → LoginView-DHYITkn4.js} +1 -1
  79. modoboa/frontend_dist/assets/MailboxView-BNg2v7mi.css +1 -0
  80. modoboa/frontend_dist/assets/MailboxView-DHg5A78D.js +5 -0
  81. modoboa/frontend_dist/assets/MenuItems-C9p70bSC.js +1 -0
  82. modoboa/frontend_dist/assets/{MessageView-BWh9BqzS.js → MessageView-CrrEJpNI.js} +1 -1
  83. modoboa/frontend_dist/assets/MessagesView-CyecRd4I.js +1 -0
  84. modoboa/frontend_dist/assets/MigrationsView-DXGKKz2h.js +1 -0
  85. modoboa/frontend_dist/assets/{ParametersForm-y02-GM0r.js → ParametersForm-DFKYkPAs.js} +1 -1
  86. modoboa/frontend_dist/assets/ParametersView-B1wT5oyt.js +1 -0
  87. modoboa/frontend_dist/assets/ParametersView-CfvVzKea.js +1 -0
  88. modoboa/frontend_dist/assets/ProviderEditView-De-8ggBp.js +1 -0
  89. modoboa/frontend_dist/assets/ProviderGeneralForm-DO-IpJMQ.js +1 -0
  90. modoboa/frontend_dist/assets/ProvidersView-Bhk7sCz4.js +1 -0
  91. modoboa/frontend_dist/assets/QuarantineLayout-C1YszNmP.js +1 -0
  92. modoboa/frontend_dist/assets/QuarantineView-cElD_rS-.js +1 -0
  93. modoboa/frontend_dist/assets/ReplyEmailView-BvuOZdLl.js +1 -0
  94. modoboa/frontend_dist/assets/ResourcesForm-FWxrmVwo.js +1 -0
  95. modoboa/frontend_dist/assets/SelfServiceLayout-JHRvfvQf.js +1 -0
  96. modoboa/frontend_dist/assets/SettingsView-SIsKAXtQ.css +1 -0
  97. modoboa/frontend_dist/assets/SettingsView-s2l2Xl1L.js +6 -0
  98. modoboa/frontend_dist/assets/StatisticsView-FiidWvad.js +1 -0
  99. modoboa/frontend_dist/assets/TimeSerieChart-CdqUHiO_.js +1 -0
  100. modoboa/frontend_dist/assets/TimeSerieChart-nLIFGI0y.css +1 -0
  101. modoboa/frontend_dist/assets/UserLayout-DyvI8duf.js +1 -0
  102. modoboa/frontend_dist/assets/{VAlert-CNys_LUS.js → VAlert-MDbeolOo.js} +1 -1
  103. modoboa/frontend_dist/assets/VApp-DM1KLQfQ.js +1 -0
  104. modoboa/frontend_dist/assets/VAutocomplete-C9NL5_uo.css +1 -0
  105. modoboa/frontend_dist/assets/VAutocomplete-CQsWYWNX.js +1 -0
  106. modoboa/frontend_dist/assets/VAvatar-CXV_FqpP.js +1 -0
  107. modoboa/frontend_dist/assets/VBadge-7tDx7aI3.js +1 -0
  108. modoboa/frontend_dist/assets/{VCard-BoH6kjPa.js → VCard-CBtX8JF-.js} +1 -1
  109. modoboa/frontend_dist/assets/VCheckbox-zY1MApOy.js +1 -0
  110. modoboa/frontend_dist/assets/{VCheckboxBtn-Ccl786Rg.js → VCheckboxBtn-B0mIT3E0.js} +1 -1
  111. modoboa/frontend_dist/assets/VColorPicker-BbCHvk6K.js +1 -0
  112. modoboa/frontend_dist/assets/{VColorPicker-B_lVDaYR.css → VColorPicker-C9m8L-6U.css} +1 -1
  113. modoboa/frontend_dist/assets/{VContainer-DKMcKasC.js → VContainer-Cn-vKB3s.js} +1 -1
  114. modoboa/frontend_dist/assets/VDataTable-CNT9KOSp.js +1 -0
  115. modoboa/frontend_dist/assets/VDataTableServer-_yn4Ry6U.js +1 -0
  116. modoboa/frontend_dist/assets/VDataTableVirtual-Csxh3Gp6.js +1 -0
  117. modoboa/frontend_dist/assets/VDatePicker-_OUDqShN.css +1 -0
  118. modoboa/frontend_dist/assets/VDatePicker-iFu13xIP.js +2 -0
  119. modoboa/frontend_dist/assets/VDialog-lKtBdqnp.js +1 -0
  120. modoboa/frontend_dist/assets/VExpansionPanels-CaIvk9iF.js +1 -0
  121. modoboa/frontend_dist/assets/VFileInput-C7J_qVmk.js +1 -0
  122. modoboa/frontend_dist/assets/VForm-fdQ5d-CH.js +1 -0
  123. modoboa/frontend_dist/assets/VInput-BwHvhzAe.js +1 -0
  124. modoboa/frontend_dist/assets/VMenu-BpmJf4X2.js +1 -0
  125. modoboa/frontend_dist/assets/VMenu-C5A_5Hs5.css +1 -0
  126. modoboa/frontend_dist/assets/VPicker-B7cB3kJg.css +1 -0
  127. modoboa/frontend_dist/assets/VPicker-BZho70wU.js +1 -0
  128. modoboa/frontend_dist/assets/VProgressCircular-DRw_-iNj.js +1 -0
  129. modoboa/frontend_dist/assets/VRadioGroup--eiP5xtJ.js +1 -0
  130. modoboa/frontend_dist/assets/{VRow-CuVZGqBj.js → VRow-83Qnr5iB.js} +1 -1
  131. modoboa/frontend_dist/assets/VSelect-BcmGFGif.js +1 -0
  132. modoboa/frontend_dist/assets/{VSelectionControl-uKY9Zull.js → VSelectionControl-Cqi1xt-q.js} +1 -1
  133. modoboa/frontend_dist/assets/VSheet-C3MaHhtw.js +1 -0
  134. modoboa/frontend_dist/assets/VSpacer-CuSkdJZL.js +1 -0
  135. modoboa/frontend_dist/assets/VSwitch-XumUl685.js +1 -0
  136. modoboa/frontend_dist/assets/{VTable-gDsAUSLX.js → VTable-f7wcr2AZ.js} +1 -1
  137. modoboa/frontend_dist/assets/VTabs-CDfdejXj.css +1 -0
  138. modoboa/frontend_dist/assets/VTabs-y4wNP4im.js +1 -0
  139. modoboa/frontend_dist/assets/VTextField-BPIvtrn4.js +1 -0
  140. modoboa/frontend_dist/assets/VTextField-DjbYGlzs.css +1 -0
  141. modoboa/frontend_dist/assets/VTextarea-B6bGYcC3.js +1 -0
  142. modoboa/frontend_dist/assets/VTextarea-f6vTjzFy.css +1 -0
  143. modoboa/frontend_dist/assets/VToolbar-BYDPtwf0.css +1 -0
  144. modoboa/frontend_dist/assets/VToolbar-CB6wwtYc.js +1 -0
  145. modoboa/frontend_dist/assets/VWindowItem-CDtLLEkg.js +1 -0
  146. modoboa/frontend_dist/assets/WebmailLayout-CQQAolnl.css +1 -0
  147. modoboa/frontend_dist/assets/WebmailLayout-tosQSHLS.js +1 -0
  148. modoboa/frontend_dist/assets/{accounts-DqbBlaLK.js → accounts-KUsk6LHW.js} +1 -1
  149. modoboa/frontend_dist/assets/{admin-D36m_nXq.js → admin-BW9cZW0P.js} +1 -1
  150. modoboa/frontend_dist/assets/{aliases-BtyF8GC8.js → aliases-Ge0hjIsH.js} +1 -1
  151. modoboa/frontend_dist/assets/{amavis-DySmsCJQ.js → amavis-BbFeFfsk.js} +1 -1
  152. modoboa/frontend_dist/assets/{amavis-B4QhM5Fa.js → amavis-DtuzP_CS.js} +1 -1
  153. modoboa/frontend_dist/assets/{contacts-Df8ptuMn.js → contacts-DMJlQTe0.js} +1 -1
  154. modoboa/frontend_dist/assets/{domains-CSxtTvUh.js → domains-Du64lcXT.js} +1 -1
  155. modoboa/frontend_dist/assets/domains.store-1U61jeCV.js +1 -0
  156. modoboa/frontend_dist/assets/events-BM3in65C.js +1 -0
  157. modoboa/frontend_dist/assets/filter-Dihm6o59.js +1 -0
  158. modoboa/frontend_dist/assets/importExport-HGcNGWOm.js +1 -0
  159. modoboa/frontend_dist/assets/{index-B9q1vO3K.css → index-B1EK3MQe.css} +1 -1
  160. modoboa/frontend_dist/assets/{index-Bp9Fb67E.js → index-Dv00bmw9.js} +1 -1
  161. modoboa/frontend_dist/assets/index-jui3edpn.js +1001 -0
  162. modoboa/frontend_dist/assets/{language.store-_-zrrEiS.js → language.store-OcfdXL_-.js} +1 -1
  163. modoboa/frontend_dist/assets/languages-CF8hxo7x.js +1 -0
  164. modoboa/frontend_dist/assets/{layout-CjSP_k58.js → layout-DOO7TRTJ.js} +1 -1
  165. modoboa/frontend_dist/assets/{layout.store-CF5WRevH.js → layout.store-C0g-piJn.js} +1 -1
  166. modoboa/frontend_dist/assets/{logos-95XYS6uH.js → logos-Dz2Gzei-.js} +1 -1
  167. modoboa/frontend_dist/assets/{logs-CyU_PIDh.js → logs-CLm32Weu.js} +1 -1
  168. modoboa/frontend_dist/assets/{parameters-BxAXBXU1.js → parameters-DMIAQ7cd.js} +1 -1
  169. modoboa/frontend_dist/assets/{parameters.store-CATOSoQZ.js → parameters.store-DLnFzCwV.js} +1 -1
  170. modoboa/frontend_dist/assets/{permissions-cSkGqV3M.js → permissions-CrpE0b4w.js} +1 -1
  171. modoboa/frontend_dist/assets/{ssrBoot-05WtbG6H.js → ssrBoot-B7cr7q9U.js} +1 -1
  172. modoboa/frontend_dist/assets/{tag-BmV84V2s.js → tag-WF93n81Q.js} +1 -1
  173. modoboa/frontend_dist/assets/{theme-myV4ekXo.js → theme-_0oOYChG.js} +1 -1
  174. modoboa/frontend_dist/assets/transports-CS61syt-.js +1 -0
  175. modoboa/frontend_dist/assets/webmail-CYDXU0DS.js +1 -0
  176. modoboa/frontend_dist/assets/webmail.store-BvHCQSjM.js +1 -0
  177. modoboa/frontend_dist/index.html +2 -2
  178. modoboa/imap_migration/api/v2/serializers.py +13 -0
  179. modoboa/imap_migration/models.py +3 -3
  180. modoboa/imap_migration/templates/imap_migration/offlineimap.conf +2 -2
  181. modoboa/imap_migration/tests.py +28 -0
  182. modoboa/lib/cryptutils.py +2 -2
  183. modoboa/lib/sysutils.py +1 -1
  184. modoboa/lib/tests/__init__.py +0 -1
  185. modoboa/locale/br/LC_MESSAGES/django.mo +0 -0
  186. modoboa/locale/br/LC_MESSAGES/django.po +753 -317
  187. modoboa/locale/cs/LC_MESSAGES/django.po +671 -309
  188. modoboa/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  189. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +801 -378
  190. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  191. modoboa/locale/de/LC_MESSAGES/django.po +1116 -455
  192. modoboa/locale/de_DE/LC_MESSAGES/django.mo +0 -0
  193. modoboa/locale/de_DE/LC_MESSAGES/django.po +745 -318
  194. modoboa/locale/el_GR/LC_MESSAGES/django.mo +0 -0
  195. modoboa/locale/el_GR/LC_MESSAGES/django.po +825 -393
  196. modoboa/locale/en/LC_MESSAGES/django.po +669 -309
  197. modoboa/locale/es/LC_MESSAGES/django.mo +0 -0
  198. modoboa/locale/es/LC_MESSAGES/django.po +810 -390
  199. modoboa/locale/es_MX/LC_MESSAGES/django.po +669 -309
  200. modoboa/locale/fi/LC_MESSAGES/django.mo +0 -0
  201. modoboa/locale/fi/LC_MESSAGES/django.po +756 -316
  202. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  203. modoboa/locale/fr/LC_MESSAGES/django.po +674 -313
  204. modoboa/locale/hu/LC_MESSAGES/django.po +669 -309
  205. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  206. modoboa/locale/it/LC_MESSAGES/django.po +807 -380
  207. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  208. modoboa/locale/ja_JP/LC_MESSAGES/django.po +951 -419
  209. modoboa/locale/ka/LC_MESSAGES/django.po +669 -309
  210. modoboa/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  211. modoboa/locale/nl_NL/LC_MESSAGES/django.po +807 -387
  212. modoboa/locale/no/LC_MESSAGES/django.po +669 -309
  213. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  214. modoboa/locale/pl_PL/LC_MESSAGES/django.po +826 -396
  215. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  216. modoboa/locale/pt_BR/LC_MESSAGES/django.po +830 -392
  217. modoboa/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  218. modoboa/locale/pt_PT/LC_MESSAGES/django.po +788 -371
  219. modoboa/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
  220. modoboa/locale/ro_RO/LC_MESSAGES/django.po +763 -316
  221. modoboa/locale/ru/LC_MESSAGES/django.mo +0 -0
  222. modoboa/locale/ru/LC_MESSAGES/django.po +1336 -1046
  223. modoboa/locale/si/LC_MESSAGES/django.po +669 -309
  224. modoboa/locale/sk/LC_MESSAGES/django.po +671 -309
  225. modoboa/locale/sk_SK/LC_MESSAGES/django.po +671 -309
  226. modoboa/locale/sl_SI/LC_MESSAGES/django.po +695 -315
  227. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  228. modoboa/locale/sv/LC_MESSAGES/django.po +819 -387
  229. modoboa/locale/tr/LC_MESSAGES/django.mo +0 -0
  230. modoboa/locale/tr/LC_MESSAGES/django.po +737 -315
  231. modoboa/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  232. modoboa/locale/tr_TR/LC_MESSAGES/django.po +711 -310
  233. modoboa/locale/uk/LC_MESSAGES/django.po +671 -309
  234. modoboa/locale/zh/LC_MESSAGES/django.po +668 -309
  235. modoboa/locale/zh_CN/LC_MESSAGES/django.po +668 -309
  236. modoboa/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  237. modoboa/locale/zh_TW/LC_MESSAGES/django.po +747 -316
  238. modoboa/maillog/jobs.py +11 -0
  239. modoboa/maillog/tests/test_views.py +5 -4
  240. modoboa/parameters/api/v2/tests.py +1 -1
  241. modoboa/policyd/management/commands/policy_daemon.py +5 -1
  242. modoboa/policyd/tests.py +4 -2
  243. modoboa/rspamd/tests.py +20 -0
  244. modoboa/templates/registration/twofactor_code_verify.html +1 -1
  245. modoboa/webmail/app_settings.py +37 -0
  246. modoboa/webmail/constants.py +21 -1
  247. modoboa/webmail/factories.py +19 -0
  248. modoboa/webmail/jobs.py +27 -0
  249. modoboa/webmail/lib/__init__.py +0 -2
  250. modoboa/webmail/lib/imapemail.py +9 -11
  251. modoboa/webmail/lib/imapheader.py +25 -13
  252. modoboa/webmail/lib/imaputils.py +51 -13
  253. modoboa/webmail/lib/sendmail.py +88 -105
  254. modoboa/webmail/lib/utils.py +109 -0
  255. modoboa/webmail/migrations/0001_initial.py +90 -0
  256. modoboa/webmail/migrations/__init__.py +0 -0
  257. modoboa/webmail/mocks.py +12 -3
  258. modoboa/webmail/models.py +102 -0
  259. modoboa/webmail/serializers.py +84 -4
  260. modoboa/webmail/tests/data.py +21 -0
  261. modoboa/webmail/tests/test_lib_imaputils.py +33 -0
  262. modoboa/webmail/tests/test_viewsets.py +108 -0
  263. modoboa/webmail/urls.py +5 -0
  264. modoboa/webmail/viewsets.py +39 -9
  265. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/METADATA +16 -13
  266. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/RECORD +271 -254
  267. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/WHEEL +1 -1
  268. modoboa/admin/management/commands/handle_mailbox_operations.py +0 -103
  269. modoboa/core/management/commands/cleanlogs.py +0 -53
  270. modoboa/frontend_dist/assets/AccountLayout-B2HptJzY.js +0 -1
  271. modoboa/frontend_dist/assets/AccountPasswordSubForm-DpADntAL.js +0 -1
  272. modoboa/frontend_dist/assets/AccountView-CJBGh9Oe.js +0 -1
  273. modoboa/frontend_dist/assets/AddressBook-CrFqzlzZ.js +0 -1
  274. modoboa/frontend_dist/assets/AdminLayout-BbCt7YxX.js +0 -1
  275. modoboa/frontend_dist/assets/AlarmsView-CIlt_IKQ.js +0 -1
  276. modoboa/frontend_dist/assets/AliasRecipientForm-jjj5yJJw.js +0 -1
  277. modoboa/frontend_dist/assets/AuditTrailView-sWnED3E9.js +0 -1
  278. modoboa/frontend_dist/assets/CalendarView-DSCBIvef.js +0 -1
  279. modoboa/frontend_dist/assets/ChoiceField-RDT6XcnX.js +0 -1
  280. modoboa/frontend_dist/assets/ComposeEmailForm-D3yUbBJX.css +0 -1
  281. modoboa/frontend_dist/assets/ComposeEmailForm-G3sXQAwI.js +0 -1
  282. modoboa/frontend_dist/assets/ComposeEmailView-Ce1CtFjD.js +0 -1
  283. modoboa/frontend_dist/assets/ConfirmDialog-Du7aqKbR.js +0 -1
  284. modoboa/frontend_dist/assets/ConnectedLayout-BHWaBAzH.js +0 -1
  285. modoboa/frontend_dist/assets/CreationForm-CjtILq0_.js +0 -1
  286. modoboa/frontend_dist/assets/DashboardView-DFNwusDZ.js +0 -1
  287. modoboa/frontend_dist/assets/DomainsView-CYxLy-3Y.js +0 -1
  288. modoboa/frontend_dist/assets/EmailField-DmPc4pyP.js +0 -1
  289. modoboa/frontend_dist/assets/EmailView-BE3vYZtJ.js +0 -1
  290. modoboa/frontend_dist/assets/EmptyLayout-DMwKNHfI.js +0 -1
  291. modoboa/frontend_dist/assets/FiltersView-Dps3_fAh.js +0 -1
  292. modoboa/frontend_dist/assets/ForwardEmailView-C0I00eXf.js +0 -1
  293. modoboa/frontend_dist/assets/IdentitiesView-CoGBVhZx.js +0 -1
  294. modoboa/frontend_dist/assets/InformationView-eB2ayeLD.js +0 -1
  295. modoboa/frontend_dist/assets/MailboxView-DIVABvk5.css +0 -1
  296. modoboa/frontend_dist/assets/MailboxView-DNokO2WZ.js +0 -5
  297. modoboa/frontend_dist/assets/MenuItems-dl38msRA.js +0 -1
  298. modoboa/frontend_dist/assets/MessagesView-BZ7NUOwo.js +0 -1
  299. modoboa/frontend_dist/assets/MigrationsView-DcOVgmcH.js +0 -1
  300. modoboa/frontend_dist/assets/ParametersView-B6abt-LH.js +0 -1
  301. modoboa/frontend_dist/assets/ParametersView-v0YS6WU4.js +0 -1
  302. modoboa/frontend_dist/assets/ProviderEditView-BaL9mKxJ.js +0 -1
  303. modoboa/frontend_dist/assets/ProviderGeneralForm-eoHMDO5v.js +0 -1
  304. modoboa/frontend_dist/assets/ProvidersView-Zu-G35u7.js +0 -1
  305. modoboa/frontend_dist/assets/QuarantineLayout-BHiiksnP.js +0 -1
  306. modoboa/frontend_dist/assets/QuarantineView-BOXSobRz.js +0 -1
  307. modoboa/frontend_dist/assets/ReplyEmailView-JmSiNWPy.js +0 -1
  308. modoboa/frontend_dist/assets/ResourcesForm-D0YBapCG.js +0 -1
  309. modoboa/frontend_dist/assets/SelfServiceLayout-DUmQzUDk.js +0 -1
  310. modoboa/frontend_dist/assets/SettingsView-DIvKGRBY.css +0 -1
  311. modoboa/frontend_dist/assets/SettingsView-DMuaKagM.js +0 -6
  312. modoboa/frontend_dist/assets/StatisticsView-CyY_CNcI.js +0 -1
  313. modoboa/frontend_dist/assets/TimeSerieChart-BTDBH33K.js +0 -1
  314. modoboa/frontend_dist/assets/TimeSerieChart-C3XHmlRd.css +0 -1
  315. modoboa/frontend_dist/assets/UserLayout-DwxcQr4L.js +0 -1
  316. modoboa/frontend_dist/assets/VApp-B0vRc3-6.js +0 -1
  317. modoboa/frontend_dist/assets/VAutocomplete-Huaz_-hf.js +0 -1
  318. modoboa/frontend_dist/assets/VAutocomplete-hzGuLlUI.css +0 -1
  319. modoboa/frontend_dist/assets/VAvatar-JdJfoK0C.js +0 -1
  320. modoboa/frontend_dist/assets/VBadge-Cg5iu5LG.js +0 -1
  321. modoboa/frontend_dist/assets/VCheckbox-CCLOJFKF.js +0 -1
  322. modoboa/frontend_dist/assets/VColorPicker-452uc3tY.js +0 -1
  323. modoboa/frontend_dist/assets/VDataTable-BkLLfcQK.js +0 -1
  324. modoboa/frontend_dist/assets/VDataTableServer-B_6fWBA3.js +0 -1
  325. modoboa/frontend_dist/assets/VDataTableVirtual-Ike7oqcC.js +0 -1
  326. modoboa/frontend_dist/assets/VDialog-DIUeAIpw.js +0 -1
  327. modoboa/frontend_dist/assets/VExpansionPanels-BeMgiS7A.js +0 -1
  328. modoboa/frontend_dist/assets/VFileInput-Dvj95FL5.js +0 -1
  329. modoboa/frontend_dist/assets/VForm-DkphQD3e.js +0 -1
  330. modoboa/frontend_dist/assets/VInput-CbqehdOu.js +0 -1
  331. modoboa/frontend_dist/assets/VMenu-B6SCtOwT.js +0 -1
  332. modoboa/frontend_dist/assets/VMenu-BEipA1lw.css +0 -1
  333. modoboa/frontend_dist/assets/VPicker-BUx70Wjg.js +0 -1
  334. modoboa/frontend_dist/assets/VPicker-ClSXs6kv.css +0 -1
  335. modoboa/frontend_dist/assets/VProgressCircular-DTDGzl2O.js +0 -1
  336. modoboa/frontend_dist/assets/VRadioGroup-CS9ULZ1c.js +0 -1
  337. modoboa/frontend_dist/assets/VSelect-D5IXDPEX.js +0 -1
  338. modoboa/frontend_dist/assets/VSheet-HeHw6g5_.js +0 -1
  339. modoboa/frontend_dist/assets/VSpacer-BUxSSJbH.js +0 -1
  340. modoboa/frontend_dist/assets/VSwitch-Dh_dserW.js +0 -1
  341. modoboa/frontend_dist/assets/VTabs-5XSICLQP.js +0 -1
  342. modoboa/frontend_dist/assets/VTabs-NzpINroH.css +0 -1
  343. modoboa/frontend_dist/assets/VTextField-Cow3HZvI.css +0 -1
  344. modoboa/frontend_dist/assets/VTextField-QXQFhKxm.js +0 -1
  345. modoboa/frontend_dist/assets/VTextarea-Bdy4UKmV.js +0 -1
  346. modoboa/frontend_dist/assets/VTextarea-DyGjqrlm.css +0 -1
  347. modoboa/frontend_dist/assets/VToolbar-CB2GrZpA.css +0 -1
  348. modoboa/frontend_dist/assets/VToolbar-CyrYSqJZ.js +0 -1
  349. modoboa/frontend_dist/assets/VWindowItem-kZpArwK1.js +0 -1
  350. modoboa/frontend_dist/assets/WebmailLayout-BzW0LWYp.css +0 -1
  351. modoboa/frontend_dist/assets/WebmailLayout-CNUHODnw.js +0 -1
  352. modoboa/frontend_dist/assets/domains.store-D4ZqCQ-O.js +0 -1
  353. modoboa/frontend_dist/assets/filter-DHKXX97M.js +0 -1
  354. modoboa/frontend_dist/assets/global.store-DYMmGKpn.js +0 -1
  355. modoboa/frontend_dist/assets/importExport-C-adpHJX.js +0 -1
  356. modoboa/frontend_dist/assets/index-B1bntsLR.js +0 -995
  357. modoboa/frontend_dist/assets/languages-CxjoT69j.js +0 -1
  358. modoboa/frontend_dist/assets/transports-ChdHV5hX.js +0 -1
  359. modoboa/frontend_dist/assets/webmail-B7MNMkv_.js +0 -1
  360. modoboa/frontend_dist/assets/webmail.store-Cm-h6hhE.js +0 -1
  361. {modoboa-2.6.4.data → modoboa-2.7.0.data}/scripts/modoboa-admin.py +0 -0
  362. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/entry_points.txt +0 -0
  363. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/licenses/LICENSE +0 -0
  364. {modoboa-2.6.4.dist-info → modoboa-2.7.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- import{_ as O,a as ke}from"./DomainAdminList-BjtfbhRj.js";import{c as q}from"./colors-DoZdCu1D.js";import{b as z,l as h,o as n,e as i,a as e,k as s,t,y as me,w as l,F as T,s as Y,f as u,h as D,D as te,i as R,d as Ve,z as ie,r as ce,c,m as C,_ as fe,n as he,g as pe,A as $e,B as xe}from"./index-B1bntsLR.js";import{b as X,V as w,a as De}from"./VAvatar-JdJfoK0C.js";import{V as we}from"./VTable-gDsAUSLX.js";import{d as E}from"./domains-CSxtTvUh.js";import{V as ve,a as _e}from"./VToolbar-CyrYSqJZ.js";import{V as G}from"./VSpacer-BUxSSJbH.js";import{V as A,a as K,c as B,b as Q}from"./VCard-BoH6kjPa.js";import{V as $,a as d}from"./VRow-CuVZGqBj.js";import{V as Ce}from"./VSheet-HeHw6g5_.js";import{V as Se,a as Me,b as Ne}from"./VExpansionPanels-BeMgiS7A.js";import{V as P}from"./VAlert-CNys_LUS.js";import{a as Ie,b as Te}from"./VMenu-B6SCtOwT.js";import{_ as Ae}from"./ConfirmDialog-Du7aqKbR.js";import{V as N}from"./VSelect-D5IXDPEX.js";import{V as Ke}from"./VDataTableVirtual-Ike7oqcC.js";import{V as H}from"./VDialog-DIUeAIpw.js";import{t as je}from"./transports-ChdHV5hX.js";import{V as ae,a as Ue}from"./VRadioGroup-CS9ULZ1c.js";import{a as ye}from"./amavis-B4QhM5Fa.js";import{V as oe}from"./VTextField-QXQFhKxm.js";import{V as Pe}from"./VCheckbox-CCLOJFKF.js";import{L as Be}from"./LoadingData-Tm56XNwj.js";import{_ as Le}from"./ResourcesForm-D0YBapCG.js";import{T as re}from"./TimeSerieChart-BTDBH33K.js";import{V as Fe,a as Re,b as ne,c as se}from"./VTabs-5XSICLQP.js";import{u as ze}from"./global.store-DYMmGKpn.js";import"./accounts-DqbBlaLK.js";import"./VAutocomplete-Huaz_-hf.js";import"./VProgressCircular-DTDGzl2O.js";import"./tag-BmV84V2s.js";import"./filter-DHKXX97M.js";import"./VInput-CbqehdOu.js";import"./VCheckboxBtn-Ccl786Rg.js";import"./VSelectionControl-uKY9Zull.js";/* empty css */import"./ssrBoot-05WtbG6H.js";import"./VDataTable-BkLLfcQK.js";import"./VContainer-DKMcKasC.js";import"./VForm-DkphQD3e.js";import"./VPicker-BUx70Wjg.js";import"./VWindowItem-kZpArwK1.js";const Oe={class:"text-h6"},Ee={width:"40%"},Ye={class:"text-white"},Ge={class:"text-white"},qe={class:"text-white"},Xe={class:"text-white"},W={__name:"DmarcSourceTable",props:{title:{type:String,default:""},color:{type:String,default:""},total:{type:Number,default:null},sources:{type:Object,default:null}},setup(r){const{$gettext:o}=z();return(p,y)=>(n(),h("div",null,[i("div",Oe,[s(t(r.title)+" ",1),i("span",{class:me(`text-${r.color}-lighten-2`)},t(r.total),3)]),e(we,null,{default:l(()=>[i("tbody",null,[(n(!0),h(T,null,Y(r.sources,(a,_)=>(n(),h(T,{key:_},[i("tr",null,[i("th",Ee,t(_),1),i("th",null,t(u(o)("Total")),1),y[0]||(y[0]=i("th",null,"SPF",-1)),y[1]||(y[1]=i("th",null,"DKIM",-1))]),(n(!0),h(T,null,Y(a,(f,V)=>(n(),h("tr",{key:V},[i("td",null,t(V),1),i("td",null,t(f.total),1),i("td",null,[e(X,{color:"green lighten-2",size:"24"},{default:l(()=>[i("span",Ye,t(f.spf.success),1)]),_:2},1024),e(X,{color:"red lighten-2 ml-1",size:"24"},{default:l(()=>[i("span",Ge,t(f.spf.failure),1)]),_:2},1024)]),i("td",null,[e(X,{color:"green lighten-2",size:"24"},{default:l(()=>[i("span",qe,t(f.dkim.success),1)]),_:2},1024),e(X,{color:"red lighten-2 ml-1",size:"24"},{default:l(()=>[i("span",Xe,t(f.dkim.failure),1)]),_:2},1024)])]))),128))],64))),128))])]),_:1})]))}},We={key:0},He={class:"mx-2"},Qe={class:"text-subtitle-1"},Je={key:1},Ze={__name:"DmarcAligmentChart",props:{domain:{type:Object,default:()=>null}},setup(r){const{$gettext:o}=z(),p=["aligned","trusted","forwarded","failed"],y=r,a=D({colors:[q.green.lighten2,q.orange.lighten2,q.blue.lighten2,q.red.lighten2],labels:[o("Fully aligned"),o("Partially aligned"),o("Forwarded"),o("Failed")],legend:{position:"bottom"}}),_=D(null),f=D([{key:"total",label:o("Total"),color:"primary lighten-2"},{key:"aligned",label:o("Fully aligned"),color:"green lighten-2"},{key:"trusted",label:o("Partially aligned"),color:"orange lighten-2"},{key:"forwarded",label:o("Forwarded"),color:"blue lighten-2"},{key:"failed",label:o("Failed"),color:"red lighten-2"}]),V=te.now(),g=D(V.year),v=D(V.weekNumber),m=D(!1),b=D(!1),L=D(null),F=D([]),I=D({}),J=R(()=>te.fromObject({weekYear:g.value,weekNumber:v.value}).startOf("week")),Z=R(()=>te.fromObject({weekYear:g.value,weekNumber:v.value}).endOf("week"));function ee(U){let k="";for(const j of U.split(" "))k!==""&&(k+=" "),k+="text-"+j;return k}function le(){v.value===52?(g.value+=1,v.value=1):v.value+=1}function S(){v.value===1?(g.value-=1,v.value=52):v.value-=1}function x(){if(b.value)return;const U=`${g.value}-${v.value}`;b.value=!0,E.getDomainDmarcAlignment(y.domain.pk,U).then(k=>{if(b.value=!1,k.status===204){m.value=!0;return}I.value={total:0},_.value=k.data,F.value=[];for(const j of p){let M=0;for(const de in k.data[j])for(const be in k.data[j][de])M+=k.data[j][de][be].total;I.value.total+=M,I.value[j]=M,F.value.push(M)}})}return Ve(()=>x()),ie(v,()=>{x()}),ie(g,()=>{x()}),(U,k)=>{const j=ce("apexchart");return _.value?(n(),h("div",We,[e(K,null,{default:l(()=>[e(ve,{dense:"",elevation:"0",class:"mr-2"},{default:l(()=>[e(_e,null,{default:l(()=>[s(t(u(o)("Alignment")),1)]),_:1}),e(G),e(w,{icon:"mdi-arrow-left",size:"x-small",onClick:S}),i("span",He,t(J.value.toLocaleString())+" - "+t(Z.value.toLocaleString()),1),e(w,{icon:"mdi-arrow-right",size:"x-small",onClick:le})]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"5"},{default:l(()=>[F.value?(n(),c(j,{key:0,type:"pie",height:"350",options:a.value,series:F.value},null,8,["options","series"])):C("",!0)]),_:1}),e(d,{cols:"7"},{default:l(()=>[e($,null,{default:l(()=>[(n(!0),h(T,null,Y(f.value,M=>(n(),c(d,{key:M.key,cols:"6"},{default:l(()=>[e(Ce,{outlined:"",color:M.color,rounded:""},{default:l(()=>[e(K,{outlined:"",class:"pa-10 text-center"},{default:l(()=>[i("span",{class:me("text-h4 "+ee(M.color))},t(I.value[M.key]),3),k[1]||(k[1]=i("br",null,null,-1)),i("span",Qe,t(M.label),1)]),_:2},1024)]),_:2},1032,["color"])]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),e(Ne,{modelValue:L.value,"onUpdate:modelValue":k[0]||(k[0]=M=>L.value=M),class:"mt-2"},{default:l(()=>[e(Se,{title:u(o)("Detail")},{default:l(()=>[e(Me,null,{default:l(()=>[e(W,{title:u(o)("Trusted sources"),color:"green",total:I.value.aligned,sources:_.value.aligned},null,8,["title","total","sources"]),e(W,{title:u(o)("Partially trusted sources / Forwarders"),color:"orange",total:I.value.trusted,sources:_.value.trusted,class:"mt-4"},null,8,["title","total","sources"]),e(W,{title:u(o)("Forwarders with ARC"),color:"blue",total:I.value.forwarded,sources:_.value.forwarded,class:"mt-4"},null,8,["title","total","sources"]),e(W,{title:u(o)("Unknown sources / Threats"),color:"red",total:I.value.failed,sources:_.value.failed,class:"mt-4"},null,8,["title","total","sources"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])])):(n(),h("div",Je,[m.value?(n(),c(P,{key:0,type:"info",variant:"outlined",prominent:"",border:"start",class:"mt-6"},{default:l(()=>[i("div",null,t(u(o)("DMARC support does not seem to be enabled for this domain.")),1),i("div",null,t(u(o)("If you configured it recently, please wait for the first report to be received and processed.")),1)]),_:1})):C("",!0)]))}}},el={id:"dkimdns",class:"dkim"},ge={__name:"DKIMKeyViewer",props:{domain:{type:Object,default:null}},setup(r){const o=r,p=R(()=>{let a=`v=DKIM1;k=rsa;p=${o.domain.dkim_public_key}`;const _=[];for(;a.length>0;)if(a.length>74)_.push(` "${a.substring(0,74)}"`),a=a.substring(74);else{_.push(` "${a}"`);break}return _.join(`
2
- `)});function y(){navigator.clipboard.writeText(document.getElementById("dkimdns").textContent)}return(a,_)=>(n(),h("button",{class:"dkimbutton",onClick:_[0]||(_[0]=f=>y())},[i("pre",el,t(r.domain.dkim_key_selector)+"._domainkey."+t(r.domain.name)+". IN TXT ("+t(p.value)+")",1)]))}},ll={class:"headline"},tl={id:"dkimpub",class:"dkim"},al={__name:"DomainDKIMKey",props:{domain:{type:Object,default:null}},emits:["close"],setup(r,{emit:o}){const{$gettext:p}=z(),y=o;function a(){navigator.clipboard.writeText(document.getElementById("dkimpub").textContent)}return(_,f)=>(n(),c(K,null,{default:l(()=>[e(B,null,{default:l(()=>[i("span",ll,t(u(p)("DKIM public key for"))+" "+t(r.domain.name),1)]),_:1}),e(A,null,{default:l(()=>[i("p",null,t(u(p)("Raw format. Click to copy")),1),e(P,{border:"start","colored-border":"","border-color":"primary lighten-3",elevation:"2",dense:""},{default:l(()=>[i("button",{class:"dkimbutton",onClick:f[0]||(f[0]=V=>a())},[i("pre",tl,t(r.domain.dkim_public_key),1)])]),_:1})]),_:1}),e(A,null,{default:l(()=>[i("p",null,t(u(p)("Bind/named format. Click to copy")),1),e(P,{border:"start","colored-border":"","border-color":"primary lighten-3",elevation:"2",dense:""},{default:l(()=>[e(ge,{domain:r.domain},null,8,["domain"])]),_:1})]),_:1}),e(Q,null,{default:l(()=>[e(G),e(w,{onClick:f[1]||(f[1]=V=>y("close"))},{default:l(()=>[s(t(u(p)("Close")),1)]),_:1})]),_:1})]),_:1}))}},ol={class:"text-subtitle-1 text-grey-darken-2 mb-4"},nl={class:"text-h6"},sl={__name:"DomainDNSConfig",props:{domain:{type:Object,default:null}},emits:["close"],setup(r,{emit:o}){const p=o;return(y,a)=>(n(),c(K,null,{default:l(()=>[e(B,{class:"text-h5"},{default:l(()=>[i("span",null,t(y.$gettext("DNS configuration for "))+" "+t(r.domain.name),1)]),_:1}),e(A,null,{default:l(()=>[i("p",ol,t(y.$gettext("Here is an example of DNS configuration (bind format). Replace values between [ ] by the appropriate ones.")),1),e(P,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",color:"white"},{default:l(()=>[a[1]||(a[1]=i("div",{class:"text-h6"},"MX",-1)),i("pre",null,[s("mail."+t(r.domain.name)+". IN A ",1),i("strong",null,"["+t(y.$gettext("IP address of your Modoboa server"))+"]",1),s(`
1
+ import{_ as O,a as ke}from"./DomainAdminList-DD7p3i6F.js";import{c as q}from"./colors-DoZdCu1D.js";import{b as z,m as h,o as n,e as i,a as e,l as s,t,z as me,w as l,F as T,v as Y,f as u,i as D,D as te,j as R,d as Ve,A as ie,r as ce,c,n as C,_ as fe,p as he,g as pe,B as $e,h as xe,C as De}from"./index-jui3edpn.js";import{b as X,V as w,a as we}from"./VAvatar-CXV_FqpP.js";import{V as Ce}from"./VTable-f7wcr2AZ.js";import{d as E}from"./domains-Du64lcXT.js";import{V as ve,a as _e}from"./VToolbar-CB6wwtYc.js";import{V as G}from"./VSpacer-CuSkdJZL.js";import{V as A,a as j,c as B,b as Q}from"./VCard-CBtX8JF-.js";import{V as $,a as d}from"./VRow-83Qnr5iB.js";import{V as Se}from"./VSheet-C3MaHhtw.js";import{V as Me,a as Ne,b as Ie}from"./VExpansionPanels-CaIvk9iF.js";import{V as P}from"./VAlert-MDbeolOo.js";import{a as Te,b as Ae}from"./VMenu-BpmJf4X2.js";import{_ as je}from"./ConfirmDialog-CWpdwSQ6.js";import{V as N}from"./VSelect-BcmGFGif.js";import{V as Ke}from"./VDataTableVirtual-Csxh3Gp6.js";import{V as H}from"./VDialog-lKtBdqnp.js";import{t as Ue}from"./transports-CS61syt-.js";import{V as ae,a as Pe}from"./VRadioGroup--eiP5xtJ.js";import{a as ye}from"./amavis-DtuzP_CS.js";import{V as oe}from"./VTextField-BPIvtrn4.js";import{V as Be}from"./VCheckbox-zY1MApOy.js";import{L as Le}from"./LoadingData-C2txD49L.js";import{_ as Fe}from"./ResourcesForm-FWxrmVwo.js";import{T as re}from"./TimeSerieChart-CdqUHiO_.js";import{V as Re,a as ze,b as ne,c as se}from"./VTabs-y4wNP4im.js";import"./accounts-KUsk6LHW.js";import"./VAutocomplete-CQsWYWNX.js";import"./VInput-BwHvhzAe.js";import"./tag-WF93n81Q.js";import"./VProgressCircular-DRw_-iNj.js";import"./filter-Dihm6o59.js";import"./VCheckboxBtn-B0mIT3E0.js";import"./VSelectionControl-Cqi1xt-q.js";/* empty css */import"./ssrBoot-B7cr7q9U.js";import"./VDataTable-CNT9KOSp.js";import"./events-BM3in65C.js";import"./VContainer-Cn-vKB3s.js";import"./VForm-fdQ5d-CH.js";import"./VDatePicker-iFu13xIP.js";import"./VBadge-7tDx7aI3.js";import"./VPicker-BZho70wU.js";import"./VWindowItem-CDtLLEkg.js";const Oe={class:"text-h6"},Ee={width:"40%"},Ye={class:"text-white"},Ge={class:"text-white"},qe={class:"text-white"},Xe={class:"text-white"},W={__name:"DmarcSourceTable",props:{title:{type:String,default:""},color:{type:String,default:""},total:{type:Number,default:null},sources:{type:Object,default:null}},setup(r){const{$gettext:o}=z();return(p,y)=>(n(),h("div",null,[i("div",Oe,[s(t(r.title)+" ",1),i("span",{class:me(`text-${r.color}-lighten-2`)},t(r.total),3)]),e(Ce,null,{default:l(()=>[i("tbody",null,[(n(!0),h(T,null,Y(r.sources,(a,_)=>(n(),h(T,{key:_},[i("tr",null,[i("th",Ee,t(_),1),i("th",null,t(u(o)("Total")),1),y[0]||(y[0]=i("th",null,"SPF",-1)),y[1]||(y[1]=i("th",null,"DKIM",-1))]),(n(!0),h(T,null,Y(a,(f,V)=>(n(),h("tr",{key:V},[i("td",null,t(V),1),i("td",null,t(f.total),1),i("td",null,[e(X,{color:"green lighten-2",size:"24"},{default:l(()=>[i("span",Ye,t(f.spf.success),1)]),_:2},1024),e(X,{color:"red lighten-2 ml-1",size:"24"},{default:l(()=>[i("span",Ge,t(f.spf.failure),1)]),_:2},1024)]),i("td",null,[e(X,{color:"green lighten-2",size:"24"},{default:l(()=>[i("span",qe,t(f.dkim.success),1)]),_:2},1024),e(X,{color:"red lighten-2 ml-1",size:"24"},{default:l(()=>[i("span",Xe,t(f.dkim.failure),1)]),_:2},1024)])]))),128))],64))),128))])]),_:1})]))}},We={key:0},He={class:"mx-2"},Qe={class:"text-subtitle-1"},Je={key:1},Ze={__name:"DmarcAligmentChart",props:{domain:{type:Object,default:()=>null}},setup(r){const{$gettext:o}=z(),p=["aligned","trusted","forwarded","failed"],y=r,a=D({colors:[q.green.lighten2,q.orange.lighten2,q.blue.lighten2,q.red.lighten2],labels:[o("Fully aligned"),o("Partially aligned"),o("Forwarded"),o("Failed")],legend:{position:"bottom"}}),_=D(null),f=D([{key:"total",label:o("Total"),color:"primary lighten-2"},{key:"aligned",label:o("Fully aligned"),color:"green lighten-2"},{key:"trusted",label:o("Partially aligned"),color:"orange lighten-2"},{key:"forwarded",label:o("Forwarded"),color:"blue lighten-2"},{key:"failed",label:o("Failed"),color:"red lighten-2"}]),V=te.now(),g=D(V.year),v=D(V.weekNumber),m=D(!1),b=D(!1),L=D(null),F=D([]),I=D({}),J=R(()=>te.fromObject({weekYear:g.value,weekNumber:v.value}).startOf("week")),Z=R(()=>te.fromObject({weekYear:g.value,weekNumber:v.value}).endOf("week"));function ee(U){let k="";for(const K of U.split(" "))k!==""&&(k+=" "),k+="text-"+K;return k}function le(){v.value===52?(g.value+=1,v.value=1):v.value+=1}function S(){v.value===1?(g.value-=1,v.value=52):v.value-=1}function x(){if(b.value)return;const U=`${g.value}-${v.value}`;b.value=!0,E.getDomainDmarcAlignment(y.domain.pk,U).then(k=>{if(b.value=!1,k.status===204){m.value=!0;return}I.value={total:0},_.value=k.data,F.value=[];for(const K of p){let M=0;for(const de in k.data[K])for(const be in k.data[K][de])M+=k.data[K][de][be].total;I.value.total+=M,I.value[K]=M,F.value.push(M)}})}return Ve(()=>x()),ie(v,()=>{x()}),ie(g,()=>{x()}),(U,k)=>{const K=ce("apexchart");return _.value?(n(),h("div",We,[e(j,null,{default:l(()=>[e(ve,{dense:"",elevation:"0",class:"mr-2"},{default:l(()=>[e(_e,null,{default:l(()=>[s(t(u(o)("Alignment")),1)]),_:1}),e(G),e(w,{icon:"mdi-arrow-left",size:"x-small",onClick:S}),i("span",He,t(J.value.toLocaleString())+" - "+t(Z.value.toLocaleString()),1),e(w,{icon:"mdi-arrow-right",size:"x-small",onClick:le})]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"5"},{default:l(()=>[F.value?(n(),c(K,{key:0,type:"pie",height:"350",options:a.value,series:F.value},null,8,["options","series"])):C("",!0)]),_:1}),e(d,{cols:"7"},{default:l(()=>[e($,null,{default:l(()=>[(n(!0),h(T,null,Y(f.value,M=>(n(),c(d,{key:M.key,cols:"6"},{default:l(()=>[e(Se,{outlined:"",color:M.color,rounded:""},{default:l(()=>[e(j,{outlined:"",class:"pa-10 text-center"},{default:l(()=>[i("span",{class:me("text-h4 "+ee(M.color))},t(I.value[M.key]),3),k[1]||(k[1]=i("br",null,null,-1)),i("span",Qe,t(M.label),1)]),_:2},1024)]),_:2},1032,["color"])]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),e(Ie,{modelValue:L.value,"onUpdate:modelValue":k[0]||(k[0]=M=>L.value=M),class:"mt-2"},{default:l(()=>[e(Me,{title:u(o)("Detail")},{default:l(()=>[e(Ne,null,{default:l(()=>[e(W,{title:u(o)("Trusted sources"),color:"green",total:I.value.aligned,sources:_.value.aligned},null,8,["title","total","sources"]),e(W,{title:u(o)("Partially trusted sources / Forwarders"),color:"orange",total:I.value.trusted,sources:_.value.trusted,class:"mt-4"},null,8,["title","total","sources"]),e(W,{title:u(o)("Forwarders with ARC"),color:"blue",total:I.value.forwarded,sources:_.value.forwarded,class:"mt-4"},null,8,["title","total","sources"]),e(W,{title:u(o)("Unknown sources / Threats"),color:"red",total:I.value.failed,sources:_.value.failed,class:"mt-4"},null,8,["title","total","sources"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])])):(n(),h("div",Je,[m.value?(n(),c(P,{key:0,type:"info",variant:"outlined",prominent:"",border:"start",class:"mt-6"},{default:l(()=>[i("div",null,t(u(o)("DMARC support does not seem to be enabled for this domain.")),1),i("div",null,t(u(o)("If you configured it recently, please wait for the first report to be received and processed.")),1)]),_:1})):C("",!0)]))}}},el={id:"dkimdns",class:"dkim"},ge={__name:"DKIMKeyViewer",props:{domain:{type:Object,default:null}},setup(r){const o=r,p=R(()=>{let a=`v=DKIM1;k=rsa;p=${o.domain.dkim_public_key}`;const _=[];for(;a.length>0;)if(a.length>74)_.push(` "${a.substring(0,74)}"`),a=a.substring(74);else{_.push(` "${a}"`);break}return _.join(`
2
+ `)});function y(){navigator.clipboard.writeText(document.getElementById("dkimdns").textContent)}return(a,_)=>(n(),h("button",{class:"dkimbutton",onClick:_[0]||(_[0]=f=>y())},[i("pre",el,t(r.domain.dkim_key_selector)+"._domainkey."+t(r.domain.name)+". IN TXT ("+t(p.value)+")",1)]))}},ll={class:"headline"},tl={id:"dkimpub",class:"dkim"},al={__name:"DomainDKIMKey",props:{domain:{type:Object,default:null}},emits:["close"],setup(r,{emit:o}){const{$gettext:p}=z(),y=o;function a(){navigator.clipboard.writeText(document.getElementById("dkimpub").textContent)}return(_,f)=>(n(),c(j,null,{default:l(()=>[e(B,null,{default:l(()=>[i("span",ll,t(u(p)("DKIM public key for"))+" "+t(r.domain.name),1)]),_:1}),e(A,null,{default:l(()=>[i("p",null,t(u(p)("Raw format. Click to copy")),1),e(P,{border:"start","colored-border":"","border-color":"primary lighten-3",elevation:"2",dense:""},{default:l(()=>[i("button",{class:"dkimbutton",onClick:f[0]||(f[0]=V=>a())},[i("pre",tl,t(r.domain.dkim_public_key),1)])]),_:1})]),_:1}),e(A,null,{default:l(()=>[i("p",null,t(u(p)("Bind/named format. Click to copy")),1),e(P,{border:"start","colored-border":"","border-color":"primary lighten-3",elevation:"2",dense:""},{default:l(()=>[e(ge,{domain:r.domain},null,8,["domain"])]),_:1})]),_:1}),e(Q,null,{default:l(()=>[e(G),e(w,{onClick:f[1]||(f[1]=V=>y("close"))},{default:l(()=>[s(t(u(p)("Close")),1)]),_:1})]),_:1})]),_:1}))}},ol={class:"text-subtitle-1 text-grey-darken-2 mb-4"},nl={class:"text-h6"},sl={__name:"DomainDNSConfig",props:{domain:{type:Object,default:null}},emits:["close"],setup(r,{emit:o}){const p=o;return(y,a)=>(n(),c(j,null,{default:l(()=>[e(B,{class:"text-h5"},{default:l(()=>[i("span",null,t(y.$gettext("DNS configuration for "))+" "+t(r.domain.name),1)]),_:1}),e(A,null,{default:l(()=>[i("p",ol,t(y.$gettext("Here is an example of DNS configuration (bind format). Replace values between [ ] by the appropriate ones.")),1),e(P,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",color:"white"},{default:l(()=>[a[1]||(a[1]=i("div",{class:"text-h6"},"MX",-1)),i("pre",null,[s("mail."+t(r.domain.name)+". IN A ",1),i("strong",null,"["+t(y.$gettext("IP address of your Modoboa server"))+"]",1),s(`
3
3
  @ IN MX 10 mail.`+t(r.domain.name)+".",1)])]),_:1}),e(P,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",dense:"",color:"white"},{default:l(()=>[...a[2]||(a[2]=[i("div",{class:"text-h6"},"SPF",-1),i("pre",null,'@ IN TXT "v=spf1 mx ~all"',-1)])]),_:1}),r.domain.enable_dkim&&r.domain.dkim_public_key?(n(),c(P,{key:0,class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",dense:"",color:"white"},{default:l(()=>[a[3]||(a[3]=i("div",{class:"text-h6"},"DKIM",-1)),e(ge,{domain:r.domain},null,8,["domain"])]),_:1})):C("",!0),e(P,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",dense:"",color:"white"},{default:l(()=>[a[4]||(a[4]=i("div",{class:"text-h6"},"DMARC",-1)),i("pre",null,"_dmarc."+t(r.domain.name)+'. IN TXT "v=DMARC1; p=quarantine; pct=100;"',1)]),_:1}),e(P,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",dense:"",color:"white"},{default:l(()=>[i("div",nl,t(y.$gettext("Auto configuration")),1),i("pre",null,[s("autoconfig."+t(r.domain.name)+". IN CNAME ",1),i("strong",null,"["+t(y.$gettext("hostname of your automx server"))+"]",1),s(`
4
- autodiscover.`+t(r.domain.name)+". IN CNAME ",1),i("strong",null,"["+t(y.$gettext("hostname of your automx server"))+"]",1)])]),_:1})]),_:1}),e(Q,null,{default:l(()=>[e(G),e(w,{onClick:a[0]||(a[0]=_=>p("close"))},{default:l(()=>[s(t(y.$gettext("Close")),1)]),_:1})]),_:1})]),_:1}))}},ul=fe(sl,[["__scopeId","data-v-506783e1"]]),il={__name:"DNSBLSummary",props:{mxrecord:{type:Object,default:null}},emits:["close"],setup(r,{emit:o}){const p=r,y=o;return(a,_)=>(n(),c(K,null,{default:l(()=>[e(B,{class:"text-h5"},{default:l(()=>[i("span",null,t(a.$gettext("DNSBL summary for "))+" "+t(p.mxrecord.name),1)]),_:1}),e(A,null,{default:l(()=>[s(t(a.$gettext("IP address %{ address } is currently listed by the following DNSBL providers:",{address:r.mxrecord.address}))+" ",1),e(Ie,null,{default:l(()=>[(n(!0),h(T,null,Y(p.mxrecord.dnsbl_results,f=>(n(),c(Te,{key:f.provider},{default:l(()=>[s(t(f.provider)+" ("+t(f.status)+") ",1)]),_:2},1024))),128))]),_:1})]),_:1}),e(Q,null,{default:l(()=>[e(G),e(w,{onClick:_[0]||(_[0]=f=>y("close"))},{default:l(()=>[s(t(a.$gettext("Close")),1)]),_:1})]),_:1})]),_:1}))}},dl={class:"mt-4 overline"},rl={class:"mt-4 overline"},ml={key:4,class:"d-flex align-center flex-nowrap mt-4"},cl={class:"text-subtitle-2"},fl={class:"ml-6"},pl={key:0},vl={key:1},_l={__name:"DNSDetail",props:{modelValue:{type:Object,default:null}},setup(r){const{$gettext:o}=z(),p=he(),y=r,a=R(()=>y.modelValue),_=D(),f=D({}),V=D([{title:o("Name"),value:"name"},{title:o("Address"),value:"address"},{title:o("Updated"),value:"updated"},{title:"",value:"issues"}]),g=D(!1),v=D(null),m=D(!1),b=D(!1),L=D(!1);function F(){navigator.clipboard.writeText(a.value.dkim_public_key),p.displayNotification({msg:o("DKIM key copied to clipboard"),type:"success"})}function I(){const S={dkim_private_key_path:""};E.patchDomain(a.value.pk,S).then(()=>{p.displayNotification({msg:o("A new key will be generated soon. Refresh the page in a moment to see it."),type:"success"}),a.value.dkim_private_key_path="",g.value=!1}).catch(()=>{g.value=!1})}function J(){g.value=!1}async function Z(){g.value=!0,E.getDomainDNSDetail(a.value.pk).then(async S=>{f.value=S.data,await _.value.open(o("warning"),o("DKIM key does not seem to be generated yet or has failed. Do you want to requeue the job?"),{color:"warning",cancelLabel:o("No"),agreeLabel:o("Yes")})?I():J()})}function ee(){_.value.open(o("Warning"),o("DKIM keys already exist for this domain. Do you want to overwrite them?"),{color:"error",cancelLabel:o("No"),agreeLabel:o("Yes")})}function le(S){v.value=S,L.value=!0}return ie(a,S=>{S&&E.getDomainDNSDetail(S.pk).then(x=>{f.value=x.data})},{immediate:!0}),(S,x)=>{const U=ce("translate");return a.value?(n(),c(K,{key:0},{default:l(()=>[e(B,null,{default:l(()=>[x[8]||(x[8]=i("span",null," DNS ",-1)),e(w,{class:"ml-2",icon:"mdi-information-outline",title:u(o)("DNS configuration help"),variant:"text",density:"compact",onClick:x[0]||(x[0]=k=>m.value=!0)},null,8,["title"])]),_:1}),e(A,null,{default:l(()=>[e(U,{class:"overline"},{default:l(()=>[...x[9]||(x[9]=[s("MX records",-1)])]),_:1}),a.value.dns_global_status=="pending"?(n(),c($,{key:0},{default:l(()=>[e(d,null,{default:l(()=>[e(N,{color:"info",size:"small"},{default:l(()=>[s(t(u(o)("Pending")),1)]),_:1})]),_:1})]),_:1})):(n(),c(Ke,{key:1,headers:V.value,items:f.value.mx_records},{"item.updated":l(({item:k})=>[s(t(S.$date(k.updated)),1)]),"item.issues":l(({item:k})=>[k.dnsbl_results.length?(n(),c(w,{key:0,icon:"mdi-bell",color:"error",variant:"flat",size:"x-small",onClick:j=>le(k)},null,8,["onClick"])):C("",!0)]),_:2},1032,["headers","items"])),i("div",dl,t(u(o)("Auto configuration")),1),a.value.dns_global_status=="pending"?(n(),c($,{key:2},{default:l(()=>[e(d,null,{default:l(()=>[e(N,{color:"info",size:"small"},{default:l(()=>[s(t(u(o)("Pending")),1)]),_:1})]),_:1})]),_:1})):(n(),h(T,{key:3},[e($,null,{default:l(()=>[e(d,null,{default:l(()=>[f.value.autoconfig_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("autoconfig record (Mozilla): %{ value }",{value:f.value.autoconfig_record.value})),1)]),_:1})):(n(),c(N,{key:1,color:"warning"},{default:l(()=>[s(t(u(o)("autoconfig record (Mozilla) not found")),1)]),_:1}))]),_:1}),e(d,null,{default:l(()=>[f.value.autodiscover_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("autodiscover record (Microsoft): %{ value }",{value:f.value.autodiscover_record.value})),1)]),_:1})):(n(),c(N,{key:1,color:"warning"},{default:l(()=>[s(t(u(o)("autodiscover record (Microsoft) not found")),1)]),_:1}))]),_:1})]),_:1}),i("div",rl,t(u(o)("Authentication")),1),e($,null,{default:l(()=>[e(d,null,{default:l(()=>[f.value.spf_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("SPF record found")),1)]),_:1})):(n(),c(N,{key:1,color:"error"},{default:l(()=>[s(t(u(o)("SPF record not found")),1)]),_:1}))]),_:1}),e(d,null,{default:l(()=>[f.value.dkim_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("DKIM record found")),1)]),_:1})):(n(),c(N,{key:1,color:"error"},{default:l(()=>[s(t(u(o)("DKIM record not found")),1)]),_:1}))]),_:1}),e(d,null,{default:l(()=>[f.value.dmarc_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("DMARC record found")),1)]),_:1})):(n(),c(N,{key:1,color:"error"},{default:l(()=>[s(t(u(o)("DMARC record not found")),1)]),_:1}))]),_:1})]),_:1})],64)),a.value.enable_dkim?(n(),h("div",ml,[i("div",cl,t(u(o)("DKIM key")),1),i("div",fl,[a.value.dkim_private_key_path&&a.value.dkim_public_key?(n(),h("div",pl,[e(w,{color:"primary",size:"small",onClick:x[1]||(x[1]=k=>b.value=!0)},{default:l(()=>[s(t(u(o)("Show key")),1)]),_:1}),e(w,{icon:"mdi-content-copy",variant:"text",class:"ml-2",title:u(o)("Copy key to clipboard"),onClick:F},null,8,["title"]),e(w,{icon:"mdi-refresh",title:u(o)("Generate a new DKIM key"),variant:"text",loading:g.value,onClick:ee},null,8,["title","loading"])])):(n(),h("div",vl,[s(t(u(o)("Not generated"))+" ",1),e(w,{icon:"mdi-reload",color:"primary",variant:"text",loading:g.value,onClick:Z},null,8,["loading"])]))])])):C("",!0)]),_:1}),e(H,{modelValue:m.value,"onUpdate:modelValue":x[3]||(x[3]=k=>m.value=k),"max-width":"800px",persistent:""},{default:l(()=>[e(ul,{domain:a.value,onClose:x[2]||(x[2]=k=>m.value=!1)},null,8,["domain"])]),_:1},8,["modelValue"]),e(H,{modelValue:b.value,"onUpdate:modelValue":x[5]||(x[5]=k=>b.value=k),"max-width":"800px",persistent:""},{default:l(()=>[e(al,{domain:a.value,onClose:x[4]||(x[4]=k=>b.value=!1)},null,8,["domain"])]),_:1},8,["modelValue"]),e(H,{modelValue:L.value,"onUpdate:modelValue":x[7]||(x[7]=k=>L.value=k),"max-width":"800px",persistent:""},{default:l(()=>[e(il,{mxrecord:v.value,onClose:x[6]||(x[6]=k=>L.value=!1)},null,8,["mxrecord"])]),_:1},8,["modelValue"]),e(Ae,{ref_key:"dialog",ref:_},null,512)]),_:1})):C("",!0)}}},yl={class:"headline"},gl={__name:"DomainSummary",props:{domain:{type:Object,default:null}},setup(r){const{$gettext:o}=z();return(p,y)=>r.domain?(n(),c(K,{key:0},{default:l(()=>[e(B,null,{default:l(()=>[i("div",yl,t(u(o)("General information")),1)]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Creation date")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(p.$date(r.domain.creation)),1)]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Last modification date")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(p.$date(r.domain.last_modification)),1)]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Quota")),1)]),_:1}),r.domain.quota==="0"?(n(),c(d,{key:0,cols:"6"},{default:l(()=>[s(t(u(o)("Unlimited")),1)]),_:1})):(n(),c(d,{key:1,cols:"6"},{default:l(()=>[s(t(r.domain.quota)+" "+t(u(o)("MB")),1)]),_:1}))]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Default mailbox quota")),1)]),_:1}),r.domain.default_mailbox_quota==="0"?(n(),c(d,{key:0,cols:"6"},{default:l(()=>[s(t(u(o)("Unlimited")),1)]),_:1})):(n(),c(d,{key:1,cols:"6"},{default:l(()=>[s(t(r.domain.default_mailbox_quota)+" MB",1)]),_:1}))]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Daily sending limit")),1)]),_:1}),r.domain.message_limit!==void 0&&r.domain.message_limit!==null?(n(),c(d,{key:0,cols:"6"},{default:l(()=>[r.domain.message_limit===0?(n(),h(T,{key:0},[s(t(u(o)("Sending forbidden")),1)],64)):(n(),c(De,{key:1,color:r.domain.sent_messages_in_percent<80?"primary":"warning","model-value":r.domain.sent_messages_in_percent,height:"25",class:"white--text"},{default:l(({value:a})=>[s(t(Math.ceil(a))+"% ("+t(r.domain.message_limit)+" "+t(u(o)("messages"))+") ",1)]),_:1},8,["color","model-value"]))]),_:1})):(n(),c(d,{key:1,cols:"6"},{default:l(()=>[s(t(u(o)("Unlimited")),1)]),_:1}))]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Mailboxes")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(r.domain.mailbox_count),1)]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Aliases")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(r.domain.mbalias_count),1)]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Enabled")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[e(u(O),{value:r.domain.enabled,variant:"flat"},null,8,["value"])]),_:1})]),_:1})]),_:1})]),_:1})):C("",!0)}},bl={class:"headline"},kl={__name:"RelayDomainSummary",props:{domain:{type:Object,default:null}},async setup(r){let o,p;const y=r,a=D([]),_=R(()=>a.value.find(g=>g.name===y.domain.transport.service)),f=g=>y.domain.transport.settings[`${_.value.name}_${g}`],V=([o,p]=pe(()=>je.getAll()),o=await o,p(),o);return a.value=V.data,(g,v)=>y.domain?(n(),c(K,{key:0},{default:l(()=>[e(B,null,{default:l(()=>[i("div",bl,t(g.$gettext("Transport")),1)]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(g.$gettext("Service")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(y.domain.transport.service),1)]),_:1})]),_:1}),_.value?(n(!0),h(T,{key:0},Y(_.value.settings,(m,b)=>(n(),c($,{key:b},{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(m.label),1)]),_:2},1024),e(d,{cols:"6"},{default:l(()=>[m.type!=="boolean"?(n(),h(T,{key:0},[s(t(f(m.name)),1)],64)):(n(),c(u(O),{key:1,value:f(m.name),variant:"flat"},null,8,["value"]))]),_:2},1024)]),_:2},1024))),128)):C("",!0)]),_:1})]),_:1})):C("",!0)}},ue={__name:"YesNoDefaultField",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(r){const o=$e(r,"modelValue");return(p,y)=>(n(),c(Ue,{modelValue:o.value,"onUpdate:modelValue":y[0]||(y[0]=a=>o.value=a),inline:""},{default:l(()=>[e(ae,{label:p.$gettext("yes"),value:"Y"},null,8,["label"]),e(ae,{label:p.$gettext("no"),value:"N"},null,8,["label"]),e(ae,{label:p.$gettext("default"),value:""},null,8,["label"])]),_:1},8,["modelValue"]))}},Vl={class:"v-label mb-4"},hl={class:"v-label mb-4"},$l={__name:"DomainPolicyForm",props:{domainId:{type:Number,default:null},modelValue:{type:Object,default:()=>{}}},emits:["close","update:modelValue"],setup(r,{emit:o}){const p=r,y=o,a=D({}),_=D(!1),f=D(!1);a.value={bypass_virus_checks:p.modelValue.bypass_virus_checks===null?"":p.modelValue.bypass_virus_checks,bypass_spam_checks:p.modelValue.bypass_spam_checks===null?"":p.modelValue.bypass_spam_checks,bypass_banned_checks:p.modelValue.bypass_banned_checks===null?"":p.modelValue.bypass_banned_checks,spam_tag2_level:p.modelValue.spam_tag2_level,spam_kill_level:p.modelValue.spam_kill_level,spam_subject_tag2:p.modelValue.spam_subject_tag2},a.value.spam_subject_tag2===null&&(f.value=!0);const V=v=>{v&&(a.value.spam_subject_tag2=null)},g=async()=>{_.value=!0;const v={...a.value};v.spam_tag2_level===""&&(v.spam_tag2_level=null),v.spam_kill_level===""&&(v.spam_kill_level=null);try{const m=await ye.updateDomainPolicy(p.domainId,v);y("update:modelValue",m.data),y("close")}finally{_.value=!1}};return(v,m)=>(n(),c(K,null,{default:l(()=>[e(B,{class:"text-h5"},{default:l(()=>[i("span",null,t(v.$gettext("Content filter settings")),1)]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[e(u(ue),{modelValue:a.value.bypass_virus_checks,"onUpdate:modelValue":m[0]||(m[0]=b=>a.value.bypass_virus_checks=b),label:v.$gettext("Disable virus checks"),color:"primary","hide-details":""},null,8,["modelValue","label"]),e(u(ue),{modelValue:a.value.bypass_spam_checks,"onUpdate:modelValue":m[1]||(m[1]=b=>a.value.bypass_spam_checks=b),label:v.$gettext("Disable spam checks"),color:"primary",class:"mt-6","hide-details":""},null,8,["modelValue","label"]),e(u(ue),{modelValue:a.value.bypass_banned_checks,"onUpdate:modelValue":m[2]||(m[2]=b=>a.value.bypass_banned_checks=b),label:v.$gettext("Disable banned checks"),color:"primary",class:"mt-6","hide-details":""},null,8,["modelValue","label"])]),_:1}),e(d,{cols:"6"},{default:l(()=>[i("div",null,[i("label",Vl,t(v.$gettext("Spam marker")),1),e($,null,{default:l(()=>[e(d,{cols:"9"},{default:l(()=>[e(oe,{modelValue:a.value.spam_subject_tag2,"onUpdate:modelValue":m[3]||(m[3]=b=>a.value.spam_subject_tag2=b),variant:"outlined",density:"compact",disabled:f.value},null,8,["modelValue","disabled"])]),_:1}),e(d,{cols:"3"},{default:l(()=>[e(Pe,{modelValue:f.value,"onUpdate:modelValue":[m[4]||(m[4]=b=>f.value=b),V],label:v.$gettext("default"),color:"primary",density:"compact","hide-details":""},null,8,["modelValue","label"])]),_:1})]),_:1})]),i("div",hl,t(v.$gettext("Thresholds")),1),e($,{class:"align-center"},{default:l(()=>[e(d,{cols:"4"},{default:l(()=>[e(oe,{modelValue:a.value.spam_tag2_level,"onUpdate:modelValue":m[5]||(m[5]=b=>a.value.spam_tag2_level=b),variant:"outlined",density:"compact",type:"number","hide-details":""},null,8,["modelValue"])]),_:1}),e(d,{cols:"8"},{default:l(()=>[s(t(v.$gettext("or more is spam")),1)]),_:1})]),_:1}),e($,{class:"align-center"},{default:l(()=>[e(d,{cols:"4"},{default:l(()=>[e(oe,{modelValue:a.value.spam_kill_level,"onUpdate:modelValue":m[6]||(m[6]=b=>a.value.spam_kill_level=b),variant:"outlined",density:"compact",type:"number","hide-details":""},null,8,["modelValue"])]),_:1}),e(d,{cols:"8"},{default:l(()=>[s(t(v.$gettext("or more throw spam message away")),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),e(Q,null,{default:l(()=>[e(G),e(w,{loading:_.value,onClick:m[7]||(m[7]=b=>y("close"))},{default:l(()=>[s(t(v.$gettext("Cancel")),1)]),_:1},8,["loading"]),e(w,{color:"primary",loading:_.value,onClick:g},{default:l(()=>[s(t(v.$gettext("Apply")),1)]),_:1},8,["loading"])]),_:1})]),_:1}))}},xl={key:1},Dl={key:1},wl={key:1},Cl={key:0},Sl={key:1},Ml={key:0},Nl={key:1},Il={key:0},Tl={key:1},Al={__name:"DomainPolicy",props:{domain:{type:Object,default:null}},async setup(r){let o,p;const y=r,a=D(null),_=D(!1),f=([o,p]=pe(()=>ye.getDomainPolicy(y.domain.pk)),o=await o,p(),o);return a.value=f.data,(V,g)=>(n(),h("div",null,[a.value?(n(),c(K,{key:0},{default:l(()=>[e(B,null,{default:l(()=>[i("span",null,t(V.$gettext("Content filter")),1),e(w,{class:"ml-2",icon:"mdi-circle-edit-outline",title:V.$gettext("Edit content filter settings"),variant:"text",density:"compact",onClick:g[0]||(g[0]=v=>_.value=!0)},null,8,["title"])]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Spam filters")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.bypass_spam_checks!==null&&a.value.bypass_spam_checks!==""?(n(),c(u(O),{key:0,value:a.value.bypass_spam_checks!=="Y",variant:"flat"},null,8,["value"])):(n(),h("span",xl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Virus filters")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.bypass_virus_checks!==null&&a.value.bypass_virus_checks!==""?(n(),c(u(O),{key:0,value:a.value.bypass_virus_checks!=="Y",variant:"flat"},null,8,["value"])):(n(),h("span",Dl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Banned filters")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.bypass_banned_checks!==null&&a.value.bypass_banned_checks!==""?(n(),c(u(O),{key:0,value:a.value.bypass_banned_checks!=="Y",variant:"flat"},null,8,["value"])):(n(),h("span",wl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Spam classification threshold")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.spam_tag2_level!==null?(n(),h("span",Cl,t(a.value.spam_tag2_level),1)):(n(),h("span",Sl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Rejection threshold")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.spam_kill_level!==null?(n(),h("span",Ml,t(a.value.spam_kill_level),1)):(n(),h("span",Nl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Spam marker")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.spam_subject_tag2!==null?(n(),h("span",Il,t(a.value.spam_subject_tag2),1)):(n(),h("span",Tl,t(V.$gettext("Default value")),1))]),_:1})]),_:1})]),_:1})]),_:1})):C("",!0),e(H,{modelValue:_.value,"onUpdate:modelValue":g[3]||(g[3]=v=>_.value=v),width:"1000"},{default:l(()=>[e(u($l),{modelValue:a.value,"onUpdate:modelValue":g[1]||(g[1]=v=>a.value=v),"domain-id":y.domain.pk,onClose:g[2]||(g[2]=v=>_.value=!1)},null,8,["modelValue","domain-id"])]),_:1},8,["modelValue"])]))}},Kl={key:1},jl={__name:"DomainView",setup(r){const{$gettext:o}=z(),p=xe(),y=ze(),a=D(null),_=D({}),f=D(null),V=R(()=>"amavis"in y.capabilities);function g(){E.getDomain(p.params.id).then(v=>{a.value=v.data})}return g(),(v,m)=>a.value?(n(),h("div",Kl,[e(ve,{flat:""},{default:l(()=>[e(_e,null,{default:l(()=>[s(t(u(o)("Domain"))+" "+t(a.value.name)+" ",1),e(w,{color:"primary",icon:"mdi-circle-edit-outline",to:{name:"DomainEdit",params:{id:a.value.pk}}},null,8,["to"]),e(w,{color:"primary",icon:"mdi-reload",onClick:m[0]||(m[0]=b=>g())})]),_:1})]),_:1}),e(Fe,{modelValue:f.value,"onUpdate:modelValue":m[1]||(m[1]=b=>f.value=b),class:"mb-4",color:"primary"},{default:l(()=>[e(ne,null,{default:l(()=>[s(t(u(o)("General")),1)]),_:1}),e(ne,null,{default:l(()=>[s(t(u(o)("Statistics")),1)]),_:1}),e(ne,null,{default:l(()=>[s(t(u(o)("DMARC")),1)]),_:1})]),_:1},8,["modelValue"]),e(Re,{modelValue:f.value,"onUpdate:modelValue":m[3]||(m[3]=b=>f.value=b)},{default:l(()=>[e(se,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"12",md:"6"},{default:l(()=>[e(gl,{domain:a.value},null,8,["domain"]),m[5]||(m[5]=i("div",{class:"mt-4"},null,-1)),a.value.type==="relaydomain"?(n(),h(T,{key:0},[e(kl,{domain:a.value},null,8,["domain"]),m[4]||(m[4]=i("div",{class:"mt-4"},null,-1))],64)):C("",!0),e(ke,{domain:a.value},null,8,["domain"]),m[6]||(m[6]=i("div",{class:"mt-4"},null,-1)),V.value?(n(),c(Al,{key:1,domain:a.value},null,8,["domain"])):C("",!0)]),_:1}),e(d,{cols:"12",md:"6"},{default:l(()=>[e(_l,{modelValue:a.value,"onUpdate:modelValue":m[2]||(m[2]=b=>a.value=b)},null,8,["modelValue"]),m[7]||(m[7]=i("div",{class:"mt-4"},null,-1)),_.value.params&&_.value.params.enable_domain_limits&&a.value.resources&&a.value.resources.length?(n(),c(Le,{key:0,resources:a.value.resources},null,8,["resources"])):C("",!0)]),_:1})]),_:1})]),_:1}),e(se,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"12"},{default:l(()=>[a.value.name?(n(),c(re,{key:0,domain:a.value,"graphic-set":"mailtraffic","graphic-name":"averagetraffic"},null,8,["domain"])):C("",!0)]),_:1}),e(d,{cols:"12"},{default:l(()=>[a.value.name?(n(),c(re,{key:0,domain:a.value,"graphic-set":"mailtraffic","graphic-name":"averagetrafficsize"},null,8,["domain"])):C("",!0)]),_:1})]),_:1})]),_:1}),e(se,null,{default:l(()=>[e(Ze,{domain:a.value},null,8,["domain"])]),_:1})]),_:1},8,["modelValue"])])):(n(),c(Be,{key:0}))}},Dt=fe(jl,[["__scopeId","data-v-11fbb076"]]);export{Dt as default};
4
+ autodiscover.`+t(r.domain.name)+". IN CNAME ",1),i("strong",null,"["+t(y.$gettext("hostname of your automx server"))+"]",1)])]),_:1})]),_:1}),e(Q,null,{default:l(()=>[e(G),e(w,{onClick:a[0]||(a[0]=_=>p("close"))},{default:l(()=>[s(t(y.$gettext("Close")),1)]),_:1})]),_:1})]),_:1}))}},ul=fe(sl,[["__scopeId","data-v-506783e1"]]),il={__name:"DNSBLSummary",props:{mxrecord:{type:Object,default:null}},emits:["close"],setup(r,{emit:o}){const p=r,y=o;return(a,_)=>(n(),c(j,null,{default:l(()=>[e(B,{class:"text-h5"},{default:l(()=>[i("span",null,t(a.$gettext("DNSBL summary for "))+" "+t(p.mxrecord.name),1)]),_:1}),e(A,null,{default:l(()=>[s(t(a.$gettext("IP address %{ address } is currently listed by the following DNSBL providers:",{address:r.mxrecord.address}))+" ",1),e(Te,null,{default:l(()=>[(n(!0),h(T,null,Y(p.mxrecord.dnsbl_results,f=>(n(),c(Ae,{key:f.provider},{default:l(()=>[s(t(f.provider)+" ("+t(f.status)+") ",1)]),_:2},1024))),128))]),_:1})]),_:1}),e(Q,null,{default:l(()=>[e(G),e(w,{onClick:_[0]||(_[0]=f=>y("close"))},{default:l(()=>[s(t(a.$gettext("Close")),1)]),_:1})]),_:1})]),_:1}))}},dl={class:"mt-4 overline"},rl={class:"mt-4 overline"},ml={key:4,class:"d-flex align-center flex-nowrap mt-4"},cl={class:"text-subtitle-2"},fl={class:"ml-6"},pl={key:0},vl={key:1},_l={__name:"DNSDetail",props:{modelValue:{type:Object,default:null}},setup(r){const{$gettext:o}=z(),p=he(),y=r,a=R(()=>y.modelValue),_=D(),f=D({}),V=D([{title:o("Name"),value:"name"},{title:o("Address"),value:"address"},{title:o("Updated"),value:"updated"},{title:"",value:"issues"}]),g=D(!1),v=D(null),m=D(!1),b=D(!1),L=D(!1);function F(){navigator.clipboard.writeText(a.value.dkim_public_key),p.displayNotification({msg:o("DKIM key copied to clipboard"),type:"success"})}function I(){const S={dkim_private_key_path:""};E.patchDomain(a.value.pk,S).then(()=>{p.displayNotification({msg:o("A new key will be generated soon. Refresh the page in a moment to see it."),type:"success"}),a.value.dkim_private_key_path="",g.value=!1}).catch(()=>{g.value=!1})}function J(){g.value=!1}async function Z(){g.value=!0,E.getDomainDNSDetail(a.value.pk).then(async S=>{f.value=S.data,await _.value.open(o("warning"),o("DKIM key does not seem to be generated yet or has failed. Do you want to requeue the job?"),{color:"warning",cancelLabel:o("No"),agreeLabel:o("Yes")})?I():J()})}function ee(){_.value.open(o("Warning"),o("DKIM keys already exist for this domain. Do you want to overwrite them?"),{color:"error",cancelLabel:o("No"),agreeLabel:o("Yes")})}function le(S){v.value=S,L.value=!0}return ie(a,S=>{S&&E.getDomainDNSDetail(S.pk).then(x=>{f.value=x.data})},{immediate:!0}),(S,x)=>{const U=ce("translate");return a.value?(n(),c(j,{key:0},{default:l(()=>[e(B,null,{default:l(()=>[x[8]||(x[8]=i("span",null," DNS ",-1)),e(w,{class:"ml-2",icon:"mdi-information-outline",title:u(o)("DNS configuration help"),variant:"text",density:"compact",onClick:x[0]||(x[0]=k=>m.value=!0)},null,8,["title"])]),_:1}),e(A,null,{default:l(()=>[e(U,{class:"overline"},{default:l(()=>[...x[9]||(x[9]=[s("MX records",-1)])]),_:1}),a.value.dns_global_status=="pending"?(n(),c($,{key:0},{default:l(()=>[e(d,null,{default:l(()=>[e(N,{color:"info",size:"small"},{default:l(()=>[s(t(u(o)("Pending")),1)]),_:1})]),_:1})]),_:1})):(n(),c(Ke,{key:1,headers:V.value,items:f.value.mx_records},{"item.updated":l(({item:k})=>[s(t(S.$date(k.updated)),1)]),"item.issues":l(({item:k})=>[k.dnsbl_results.length?(n(),c(w,{key:0,icon:"mdi-bell",color:"error",variant:"flat",size:"x-small",onClick:K=>le(k)},null,8,["onClick"])):C("",!0)]),_:2},1032,["headers","items"])),i("div",dl,t(u(o)("Auto configuration")),1),a.value.dns_global_status=="pending"?(n(),c($,{key:2},{default:l(()=>[e(d,null,{default:l(()=>[e(N,{color:"info",size:"small"},{default:l(()=>[s(t(u(o)("Pending")),1)]),_:1})]),_:1})]),_:1})):(n(),h(T,{key:3},[e($,null,{default:l(()=>[e(d,null,{default:l(()=>[f.value.autoconfig_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("autoconfig record (Mozilla): %{ value }",{value:f.value.autoconfig_record.value})),1)]),_:1})):(n(),c(N,{key:1,color:"warning"},{default:l(()=>[s(t(u(o)("autoconfig record (Mozilla) not found")),1)]),_:1}))]),_:1}),e(d,null,{default:l(()=>[f.value.autodiscover_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("autodiscover record (Microsoft): %{ value }",{value:f.value.autodiscover_record.value})),1)]),_:1})):(n(),c(N,{key:1,color:"warning"},{default:l(()=>[s(t(u(o)("autodiscover record (Microsoft) not found")),1)]),_:1}))]),_:1})]),_:1}),i("div",rl,t(u(o)("Authentication")),1),e($,null,{default:l(()=>[e(d,null,{default:l(()=>[f.value.spf_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("SPF record found")),1)]),_:1})):(n(),c(N,{key:1,color:"error"},{default:l(()=>[s(t(u(o)("SPF record not found")),1)]),_:1}))]),_:1}),e(d,null,{default:l(()=>[f.value.dkim_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("DKIM record found")),1)]),_:1})):(n(),c(N,{key:1,color:"error"},{default:l(()=>[s(t(u(o)("DKIM record not found")),1)]),_:1}))]),_:1}),e(d,null,{default:l(()=>[f.value.dmarc_record?(n(),c(N,{key:0,color:"success"},{default:l(()=>[s(t(u(o)("DMARC record found")),1)]),_:1})):(n(),c(N,{key:1,color:"error"},{default:l(()=>[s(t(u(o)("DMARC record not found")),1)]),_:1}))]),_:1})]),_:1})],64)),a.value.enable_dkim?(n(),h("div",ml,[i("div",cl,t(u(o)("DKIM key")),1),i("div",fl,[a.value.dkim_private_key_path&&a.value.dkim_public_key?(n(),h("div",pl,[e(w,{color:"primary",size:"small",onClick:x[1]||(x[1]=k=>b.value=!0)},{default:l(()=>[s(t(u(o)("Show key")),1)]),_:1}),e(w,{icon:"mdi-content-copy",variant:"text",class:"ml-2",title:u(o)("Copy key to clipboard"),onClick:F},null,8,["title"]),e(w,{icon:"mdi-refresh",title:u(o)("Generate a new DKIM key"),variant:"text",loading:g.value,onClick:ee},null,8,["title","loading"])])):(n(),h("div",vl,[s(t(u(o)("Not generated"))+" ",1),e(w,{icon:"mdi-reload",color:"primary",variant:"text",loading:g.value,onClick:Z},null,8,["loading"])]))])])):C("",!0)]),_:1}),e(H,{modelValue:m.value,"onUpdate:modelValue":x[3]||(x[3]=k=>m.value=k),"max-width":"800px",persistent:""},{default:l(()=>[e(ul,{domain:a.value,onClose:x[2]||(x[2]=k=>m.value=!1)},null,8,["domain"])]),_:1},8,["modelValue"]),e(H,{modelValue:b.value,"onUpdate:modelValue":x[5]||(x[5]=k=>b.value=k),"max-width":"800px",persistent:""},{default:l(()=>[e(al,{domain:a.value,onClose:x[4]||(x[4]=k=>b.value=!1)},null,8,["domain"])]),_:1},8,["modelValue"]),e(H,{modelValue:L.value,"onUpdate:modelValue":x[7]||(x[7]=k=>L.value=k),"max-width":"800px",persistent:""},{default:l(()=>[e(il,{mxrecord:v.value,onClose:x[6]||(x[6]=k=>L.value=!1)},null,8,["mxrecord"])]),_:1},8,["modelValue"]),e(je,{ref_key:"dialog",ref:_},null,512)]),_:1})):C("",!0)}}},yl={class:"headline"},gl={__name:"DomainSummary",props:{domain:{type:Object,default:null}},setup(r){const{$gettext:o}=z();return(p,y)=>r.domain?(n(),c(j,{key:0},{default:l(()=>[e(B,null,{default:l(()=>[i("div",yl,t(u(o)("General information")),1)]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Creation date")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(p.$date(r.domain.creation)),1)]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Last modification date")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(p.$date(r.domain.last_modification)),1)]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Quota")),1)]),_:1}),r.domain.quota==="0"?(n(),c(d,{key:0,cols:"6"},{default:l(()=>[s(t(u(o)("Unlimited")),1)]),_:1})):(n(),c(d,{key:1,cols:"6"},{default:l(()=>[s(t(r.domain.quota)+" "+t(u(o)("MB")),1)]),_:1}))]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Default mailbox quota")),1)]),_:1}),r.domain.default_mailbox_quota==="0"?(n(),c(d,{key:0,cols:"6"},{default:l(()=>[s(t(u(o)("Unlimited")),1)]),_:1})):(n(),c(d,{key:1,cols:"6"},{default:l(()=>[s(t(r.domain.default_mailbox_quota)+" MB",1)]),_:1}))]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Daily sending limit")),1)]),_:1}),r.domain.message_limit!==void 0&&r.domain.message_limit!==null?(n(),c(d,{key:0,cols:"6"},{default:l(()=>[r.domain.message_limit===0?(n(),h(T,{key:0},[s(t(u(o)("Sending forbidden")),1)],64)):(n(),c(we,{key:1,color:r.domain.sent_messages_in_percent<80?"primary":"warning","model-value":r.domain.sent_messages_in_percent,height:"25",class:"white--text"},{default:l(({value:a})=>[s(t(Math.ceil(a))+"% ("+t(r.domain.message_limit)+" "+t(u(o)("messages"))+") ",1)]),_:1},8,["color","model-value"]))]),_:1})):(n(),c(d,{key:1,cols:"6"},{default:l(()=>[s(t(u(o)("Unlimited")),1)]),_:1}))]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Mailboxes")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(r.domain.mailbox_count),1)]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Aliases")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(r.domain.mbalias_count),1)]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(u(o)("Enabled")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[e(u(O),{value:r.domain.enabled,variant:"flat"},null,8,["value"])]),_:1})]),_:1})]),_:1})]),_:1})):C("",!0)}},bl={class:"headline"},kl={__name:"RelayDomainSummary",props:{domain:{type:Object,default:null}},async setup(r){let o,p;const y=r,a=D([]),_=R(()=>a.value.find(g=>g.name===y.domain.transport.service)),f=g=>y.domain.transport.settings[`${_.value.name}_${g}`],V=([o,p]=pe(()=>Ue.getAll()),o=await o,p(),o);return a.value=V.data,(g,v)=>y.domain?(n(),c(j,{key:0},{default:l(()=>[e(B,null,{default:l(()=>[i("div",bl,t(g.$gettext("Transport")),1)]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(g.$gettext("Service")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[s(t(y.domain.transport.service),1)]),_:1})]),_:1}),_.value?(n(!0),h(T,{key:0},Y(_.value.settings,(m,b)=>(n(),c($,{key:b},{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(m.label),1)]),_:2},1024),e(d,{cols:"6"},{default:l(()=>[m.type!=="boolean"?(n(),h(T,{key:0},[s(t(f(m.name)),1)],64)):(n(),c(u(O),{key:1,value:f(m.name),variant:"flat"},null,8,["value"]))]),_:2},1024)]),_:2},1024))),128)):C("",!0)]),_:1})]),_:1})):C("",!0)}},ue={__name:"YesNoDefaultField",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(r){const o=$e(r,"modelValue");return(p,y)=>(n(),c(Pe,{modelValue:o.value,"onUpdate:modelValue":y[0]||(y[0]=a=>o.value=a),inline:""},{default:l(()=>[e(ae,{label:p.$gettext("yes"),value:"Y"},null,8,["label"]),e(ae,{label:p.$gettext("no"),value:"N"},null,8,["label"]),e(ae,{label:p.$gettext("default"),value:""},null,8,["label"])]),_:1},8,["modelValue"]))}},Vl={class:"v-label mb-4"},hl={class:"v-label mb-4"},$l={__name:"DomainPolicyForm",props:{domainId:{type:Number,default:null},modelValue:{type:Object,default:()=>{}}},emits:["close","update:modelValue"],setup(r,{emit:o}){const p=r,y=o,a=D({}),_=D(!1),f=D(!1);a.value={bypass_virus_checks:p.modelValue.bypass_virus_checks===null?"":p.modelValue.bypass_virus_checks,bypass_spam_checks:p.modelValue.bypass_spam_checks===null?"":p.modelValue.bypass_spam_checks,bypass_banned_checks:p.modelValue.bypass_banned_checks===null?"":p.modelValue.bypass_banned_checks,spam_tag2_level:p.modelValue.spam_tag2_level,spam_kill_level:p.modelValue.spam_kill_level,spam_subject_tag2:p.modelValue.spam_subject_tag2},a.value.spam_subject_tag2===null&&(f.value=!0);const V=v=>{v&&(a.value.spam_subject_tag2=null)},g=async()=>{_.value=!0;const v={...a.value};v.spam_tag2_level===""&&(v.spam_tag2_level=null),v.spam_kill_level===""&&(v.spam_kill_level=null);try{const m=await ye.updateDomainPolicy(p.domainId,v);y("update:modelValue",m.data),y("close")}finally{_.value=!1}};return(v,m)=>(n(),c(j,null,{default:l(()=>[e(B,{class:"text-h5"},{default:l(()=>[i("span",null,t(v.$gettext("Content filter settings")),1)]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[e(u(ue),{modelValue:a.value.bypass_virus_checks,"onUpdate:modelValue":m[0]||(m[0]=b=>a.value.bypass_virus_checks=b),label:v.$gettext("Disable virus checks"),color:"primary","hide-details":""},null,8,["modelValue","label"]),e(u(ue),{modelValue:a.value.bypass_spam_checks,"onUpdate:modelValue":m[1]||(m[1]=b=>a.value.bypass_spam_checks=b),label:v.$gettext("Disable spam checks"),color:"primary",class:"mt-6","hide-details":""},null,8,["modelValue","label"]),e(u(ue),{modelValue:a.value.bypass_banned_checks,"onUpdate:modelValue":m[2]||(m[2]=b=>a.value.bypass_banned_checks=b),label:v.$gettext("Disable banned checks"),color:"primary",class:"mt-6","hide-details":""},null,8,["modelValue","label"])]),_:1}),e(d,{cols:"6"},{default:l(()=>[i("div",null,[i("label",Vl,t(v.$gettext("Spam marker")),1),e($,null,{default:l(()=>[e(d,{cols:"9"},{default:l(()=>[e(oe,{modelValue:a.value.spam_subject_tag2,"onUpdate:modelValue":m[3]||(m[3]=b=>a.value.spam_subject_tag2=b),variant:"outlined",density:"compact",disabled:f.value},null,8,["modelValue","disabled"])]),_:1}),e(d,{cols:"3"},{default:l(()=>[e(Be,{modelValue:f.value,"onUpdate:modelValue":[m[4]||(m[4]=b=>f.value=b),V],label:v.$gettext("default"),color:"primary",density:"compact","hide-details":""},null,8,["modelValue","label"])]),_:1})]),_:1})]),i("div",hl,t(v.$gettext("Thresholds")),1),e($,{class:"align-center"},{default:l(()=>[e(d,{cols:"4"},{default:l(()=>[e(oe,{modelValue:a.value.spam_tag2_level,"onUpdate:modelValue":m[5]||(m[5]=b=>a.value.spam_tag2_level=b),variant:"outlined",density:"compact",type:"number","hide-details":""},null,8,["modelValue"])]),_:1}),e(d,{cols:"8"},{default:l(()=>[s(t(v.$gettext("or more is spam")),1)]),_:1})]),_:1}),e($,{class:"align-center"},{default:l(()=>[e(d,{cols:"4"},{default:l(()=>[e(oe,{modelValue:a.value.spam_kill_level,"onUpdate:modelValue":m[6]||(m[6]=b=>a.value.spam_kill_level=b),variant:"outlined",density:"compact",type:"number","hide-details":""},null,8,["modelValue"])]),_:1}),e(d,{cols:"8"},{default:l(()=>[s(t(v.$gettext("or more throw spam message away")),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),e(Q,null,{default:l(()=>[e(G),e(w,{loading:_.value,onClick:m[7]||(m[7]=b=>y("close"))},{default:l(()=>[s(t(v.$gettext("Cancel")),1)]),_:1},8,["loading"]),e(w,{color:"primary",loading:_.value,onClick:g},{default:l(()=>[s(t(v.$gettext("Apply")),1)]),_:1},8,["loading"])]),_:1})]),_:1}))}},xl={key:1},Dl={key:1},wl={key:1},Cl={key:0},Sl={key:1},Ml={key:0},Nl={key:1},Il={key:0},Tl={key:1},Al={__name:"DomainPolicy",props:{domain:{type:Object,default:null}},async setup(r){let o,p;const y=r,a=D(null),_=D(!1),f=([o,p]=pe(()=>ye.getDomainPolicy(y.domain.pk)),o=await o,p(),o);return a.value=f.data,(V,g)=>(n(),h("div",null,[a.value?(n(),c(j,{key:0},{default:l(()=>[e(B,null,{default:l(()=>[i("span",null,t(V.$gettext("Content filter")),1),e(w,{class:"ml-2",icon:"mdi-circle-edit-outline",title:V.$gettext("Edit content filter settings"),variant:"text",density:"compact",onClick:g[0]||(g[0]=v=>_.value=!0)},null,8,["title"])]),_:1}),e(A,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Spam filters")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.bypass_spam_checks!==null&&a.value.bypass_spam_checks!==""?(n(),c(u(O),{key:0,value:a.value.bypass_spam_checks!=="Y",variant:"flat"},null,8,["value"])):(n(),h("span",xl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Virus filters")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.bypass_virus_checks!==null&&a.value.bypass_virus_checks!==""?(n(),c(u(O),{key:0,value:a.value.bypass_virus_checks!=="Y",variant:"flat"},null,8,["value"])):(n(),h("span",Dl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Banned filters")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.bypass_banned_checks!==null&&a.value.bypass_banned_checks!==""?(n(),c(u(O),{key:0,value:a.value.bypass_banned_checks!=="Y",variant:"flat"},null,8,["value"])):(n(),h("span",wl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Spam classification threshold")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.spam_tag2_level!==null?(n(),h("span",Cl,t(a.value.spam_tag2_level),1)):(n(),h("span",Sl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Rejection threshold")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.spam_kill_level!==null?(n(),h("span",Ml,t(a.value.spam_kill_level),1)):(n(),h("span",Nl,t(V.$gettext("Default value")),1))]),_:1})]),_:1}),e($,null,{default:l(()=>[e(d,{cols:"6"},{default:l(()=>[s(t(V.$gettext("Spam marker")),1)]),_:1}),e(d,{cols:"6"},{default:l(()=>[a.value.spam_subject_tag2!==null?(n(),h("span",Il,t(a.value.spam_subject_tag2),1)):(n(),h("span",Tl,t(V.$gettext("Default value")),1))]),_:1})]),_:1})]),_:1})]),_:1})):C("",!0),e(H,{modelValue:_.value,"onUpdate:modelValue":g[3]||(g[3]=v=>_.value=v),width:"1000"},{default:l(()=>[e(u($l),{modelValue:a.value,"onUpdate:modelValue":g[1]||(g[1]=v=>a.value=v),"domain-id":y.domain.pk,onClose:g[2]||(g[2]=v=>_.value=!1)},null,8,["modelValue","domain-id"])]),_:1},8,["modelValue"])]))}},jl={key:1},Kl={__name:"DomainView",setup(r){const{$gettext:o}=z(),p=De(),y=xe(),a=D(null),_=D({}),f=D(null),V=R(()=>"amavis"in y.capabilities);function g(){E.getDomain(p.params.id).then(v=>{a.value=v.data})}return g(),(v,m)=>a.value?(n(),h("div",jl,[e(ve,{flat:""},{default:l(()=>[e(_e,null,{default:l(()=>[s(t(u(o)("Domain"))+" "+t(a.value.name)+" ",1),e(w,{color:"primary",icon:"mdi-circle-edit-outline",to:{name:"DomainEdit",params:{id:a.value.pk}}},null,8,["to"]),e(w,{color:"primary",icon:"mdi-reload",onClick:m[0]||(m[0]=b=>g())})]),_:1})]),_:1}),e(Re,{modelValue:f.value,"onUpdate:modelValue":m[1]||(m[1]=b=>f.value=b),class:"mb-4",color:"primary"},{default:l(()=>[e(ne,null,{default:l(()=>[s(t(u(o)("General")),1)]),_:1}),e(ne,null,{default:l(()=>[s(t(u(o)("Statistics")),1)]),_:1}),e(ne,null,{default:l(()=>[s(t(u(o)("DMARC")),1)]),_:1})]),_:1},8,["modelValue"]),e(ze,{modelValue:f.value,"onUpdate:modelValue":m[3]||(m[3]=b=>f.value=b)},{default:l(()=>[e(se,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"12",md:"6"},{default:l(()=>[e(gl,{domain:a.value},null,8,["domain"]),m[5]||(m[5]=i("div",{class:"mt-4"},null,-1)),a.value.type==="relaydomain"?(n(),h(T,{key:0},[e(kl,{domain:a.value},null,8,["domain"]),m[4]||(m[4]=i("div",{class:"mt-4"},null,-1))],64)):C("",!0),e(ke,{domain:a.value},null,8,["domain"]),m[6]||(m[6]=i("div",{class:"mt-4"},null,-1)),V.value?(n(),c(Al,{key:1,domain:a.value},null,8,["domain"])):C("",!0)]),_:1}),e(d,{cols:"12",md:"6"},{default:l(()=>[e(_l,{modelValue:a.value,"onUpdate:modelValue":m[2]||(m[2]=b=>a.value=b)},null,8,["modelValue"]),m[7]||(m[7]=i("div",{class:"mt-4"},null,-1)),_.value.params&&_.value.params.enable_domain_limits&&a.value.resources&&a.value.resources.length?(n(),c(Fe,{key:0,resources:a.value.resources},null,8,["resources"])):C("",!0)]),_:1})]),_:1})]),_:1}),e(se,null,{default:l(()=>[e($,null,{default:l(()=>[e(d,{cols:"12"},{default:l(()=>[a.value.name?(n(),c(re,{key:0,domain:a.value,"graphic-set":"mailtraffic","graphic-name":"averagetraffic"},null,8,["domain"])):C("",!0)]),_:1}),e(d,{cols:"12"},{default:l(()=>[a.value.name?(n(),c(re,{key:0,domain:a.value,"graphic-set":"mailtraffic","graphic-name":"averagetrafficsize"},null,8,["domain"])):C("",!0)]),_:1})]),_:1})]),_:1}),e(se,null,{default:l(()=>[e(Ze,{domain:a.value},null,8,["domain"])]),_:1})]),_:1},8,["modelValue"])])):(n(),c(Le,{key:0}))}},Ct=fe(Kl,[["__scopeId","data-v-11fbb076"]]);export{Ct as default};
@@ -0,0 +1 @@
1
+ import{d as E}from"./domains-Du64lcXT.js";import{b as J,p as ne,i as n,j as I,d as ie,c as A,o as V,w as l,a,q as we,e as $,t as c,f as i,n as H,l as h,s as ce,m as j,F as fe,_ as ve,v as he,x as X,r as Ce,y as Ae}from"./index-jui3edpn.js";import{u as _e}from"./permissions-CrpE0b4w.js";import{d as $e}from"./index-Dv00bmw9.js";import{V as ye,r as te}from"./VForm-fdQ5d-CH.js";import{c as Se,V as Ue,b as Ne,a as ge}from"./VCard-CBtX8JF-.js";import{V as se}from"./VTextField-BPIvtrn4.js";import{V as Fe}from"./VAutocomplete-CQsWYWNX.js";import{V as Z}from"./VSwitch-XumUl685.js";import{V as qe}from"./VSpacer-CuSkdJZL.js";import{V as q,a as me}from"./VAvatar-CXV_FqpP.js";import{p as Le}from"./parameters-DMIAQ7cd.js";import{_ as Te}from"./CreationForm-CzelJsVQ.js";import{_ as Ee,a as Re,b as Oe,c as Pe}from"./DomainTransportForm-CbiJF9z5.js";import{_ as ze}from"./AccountPasswordSubForm-PkFPblkR.js";import{a as B,V as ue}from"./VRow-83Qnr5iB.js";import{_ as Ie,a as Me}from"./DomainAdminList-DD7p3i6F.js";import{_ as Be}from"./ConfirmDialog-CWpdwSQ6.js";import{V as le}from"./VSelect-BcmGFGif.js";import{_ as je}from"./MenuItems-C9p70bSC.js";import{V as oe,a as be,b as de,c as pe}from"./VMenu-BpmJf4X2.js";import{V as Je}from"./VBadge-7tDx7aI3.js";import{V as Ve,a as Ge}from"./VToolbar-CB6wwtYc.js";import{V as We}from"./VDataTableServer-_yn4Ry6U.js";import{V as Ke}from"./VCheckbox-zY1MApOy.js";import{V as Q}from"./VDialog-lKtBdqnp.js";import{_ as Qe,i as He}from"./importExport-HGcNGWOm.js";import"./tag-WF93n81Q.js";import"./VInput-BwHvhzAe.js";import"./VProgressCircular-DRw_-iNj.js";import"./filter-Dihm6o59.js";import"./VCheckboxBtn-B0mIT3E0.js";import"./VSelectionControl-Cqi1xt-q.js";/* empty css */import"./logos-Dz2Gzei-.js";import"./VWindowItem-CDtLLEkg.js";import"./ssrBoot-B7cr7q9U.js";import"./VContainer-Cn-vKB3s.js";import"./VSheet-C3MaHhtw.js";import"./ChoiceField-DCr12shR.js";import"./transports-CS61syt-.js";import"./accounts-KUsk6LHW.js";import"./VAlert-MDbeolOo.js";import"./VDataTableVirtual-Csxh3Gp6.js";import"./VDataTable-CNT9KOSp.js";import"./events-BM3in65C.js";import"./VTable-f7wcr2AZ.js";import"./VFileInput-C7J_qVmk.js";const Ye={class:"headline"},Xe={class:"m-label"},Ze={class:"m-label"},ke={__name:"DomainAliasForm",props:{domainAlias:{type:Object,default:()=>null}},emits:["close","aliasDeleted"],setup(T,{emit:k}){const{$gettext:e}=J(),d=k,{displayNotification:w}=ne(),f=T,U=n([]),t=n({enabled:!0}),r=n(!1),F=n(),C=n(""),v=I(()=>f.domainAlias?e("Update"):e("Add")),_=I(()=>f.domainAlias?e("Edit domain alias"):e("Add a new domain alias"));async function L(){r.value=!0;try{await E.deleteDomainAlias(f.domainAlias.pk),w({msg:e("Domain alias deleted")}),d("aliasDeleted"),d("close")}finally{r.value=!1}}function D(){const N={page_size:0};C.value&&(N.search=C.value),E.getDomains(N).then(x=>{U.value=x.data.results})}const m=$e(D,500);async function g(){const{valid:N}=await F.value.validate();if(N){r.value=!0;try{if(!t.value.pk)await E.createDomainAlias(t.value),w({msg:e("Domain alias created")});else{const x=JSON.parse(JSON.stringify(t.value));await E.updateDomainAlias(f.domainAlias.pk,x),w({msg:e("Domain alias updated")})}d("close")}finally{r.value=!1}}}return ie(()=>{D(),f.domainAlias&&(t.value=JSON.parse(JSON.stringify(f.domainAlias)))}),(N,x)=>(V(),A(ge,null,{default:l(()=>[a(ye,{ref_key:"vFormRef",ref:F,onSubmit:we(g,["prevent"])},{default:l(()=>[a(Se,null,{default:l(()=>[$("span",Ye,c(_.value),1)]),_:1}),a(Ue,null,{default:l(()=>[$("label",Xe,c(i(e)("Name")),1),a(se,{modelValue:t.value.name,"onUpdate:modelValue":x[0]||(x[0]=S=>t.value.name=S),variant:"outlined",density:"compact",rules:[i(te).required]},null,8,["modelValue","rules"]),$("label",Ze,c(i(e)("Choose a domain")),1),a(Fe,{modelValue:t.value.target,"onUpdate:modelValue":x[1]||(x[1]=S=>t.value.target=S),search:C.value,"onUpdate:search":[x[2]||(x[2]=S=>C.value=S),i(m)],items:U.value,"item-title":"name","item-value":"pk",rules:[i(te).required],variant:"outlined",density:"compact",clearable:""},null,8,["modelValue","search","items","rules","onUpdate:search"]),a(Z,{modelValue:t.value.enabled,"onUpdate:modelValue":x[3]||(x[3]=S=>t.value.enabled=S),label:"Enabled",color:"primary"},null,8,["modelValue"])]),_:1}),a(Ne,null,{default:l(()=>[a(qe),a(q,{loading:r.value,onClick:x[4]||(x[4]=S=>d("close"))},{default:l(()=>[h(c(i(e)("Close")),1)]),_:1},8,["loading"]),T.domainAlias&&T.domainAlias.pk?(V(),A(q,{key:0,color:"error",loading:r.value,onClick:L},{default:l(()=>[h(c(i(e)("Delete")),1)]),_:1},8,["loading"])):H("",!0),a(q,{color:"primary",type:"submit",loading:r.value},{default:l(()=>[h(c(v.value),1)]),_:1},8,["loading"])]),_:1})]),_:1},512)]),_:1}))}},ea={__name:"DomainOptionsForm",props:{modelValue:{type:Object,default:null}},emits:["createAdmin"],setup(T,{expose:k,emit:e}){const{$gettext:d}=J(),w=T,f=e,U=n(),t=n(!1),r=I(()=>w.modelValue);function F(C){f("createAdmin",C)}return k({vFormRef:U}),(C,v)=>(V(),A(ye,{ref_key:"vFormRef",ref:U},{default:l(()=>[a(Z,{modelValue:t.value,"onUpdate:modelValue":[v[0]||(v[0]=_=>t.value=_),F],label:i(d)("Create a domain administrator"),color:"primary"},null,8,["modelValue","label"]),a(se,{modelValue:r.value.domain_admin.username,"onUpdate:modelValue":v[1]||(v[1]=_=>r.value.domain_admin.username=_),label:i(d)("Name"),hint:i(d)("Name of the administrator"),"persistent-hint":"",variant:"outlined",disabled:!t.value,suffix:`@${r.value.name}`,rules:[!t.value||i(te).required]},null,8,["modelValue","label","hint","disabled","suffix","rules"]),a(ze,{modelValue:r.value.domain_admin,"onUpdate:modelValue":v[2]||(v[2]=_=>r.value.domain_admin=_),disabled:!t.value},null,8,["modelValue","disabled"]),a(Z,{modelValue:r.value.domain_admin.with_mailbox,"onUpdate:modelValue":v[3]||(v[3]=_=>r.value.domain_admin.with_mailbox=_),label:i(d)("With a mailbox"),disabled:!t.value,hint:i(d)("Create a mailbox for the administrator."),"persistent-hint":"",color:"primary"},null,8,["modelValue","label","disabled","hint"]),a(Z,{modelValue:r.value.domain_admin.with_aliases,"onUpdate:modelValue":v[4]||(v[4]=_=>r.value.domain_admin.with_aliases=_),label:i(d)("Create aliases"),disabled:!t.value,hint:i(d)("Create standard aliases for the domain."),"persistent-hint":"",color:"primary"},null,8,["modelValue","label","disabled","hint"])]),_:1},512))}},aa={class:"text-grey"},ta={__name:"DomainCreationForm",emits:["close","created"],setup(T,{emit:k}){const{$gettext:e}=J(),d=ne(),w=ce(),f=k,t=n({name:"",type:"domain",enabled:!0,enable_dns_checks:!0,enable_dkim:!1,dkim_key_selector:"modoboa",quota:0,default_mailbox_quota:0,domain_admin:{username:"admin",random_password:!1,with_mailbox:!1,with_aliases:!1},transport:{settings:{}}});ie(()=>{Le.getGlobalApplication("admin").then(u=>{const p=u.data.params;t.value.quota=p.default_domain_quota,t.value.default_mailbox_quota=p.default_mailbox_quota,p.default_domain_message_limit!==null&&(t.value.message_limit=p.default_domain_message_limit)})});const r=n(!1),F=n(),C=n(),v=n(),_=n(),L=n(),D=n(),m={general:C,dns:v,limitations:_,options:L,transport:D},g=[{name:"general",title:e("General")},{name:"dns",title:e("DNS")},{name:"limitations",title:e("Limitations")},{name:"options",title:e("Options")}],N=[{name:"general",title:e("General")},{name:"dns",title:e("DNS")},{name:"limitations",title:e("Limitations")},{name:"transport",title:e("Transport")}],x=I(()=>t.value.type==="domain"?g:N),S=I(()=>{const u=[{title:e("General"),items:[{key:e("Name"),value:t.value.name},{key:e("Type"),value:t.value.type},{key:e("Enabled"),value:t.value.enabled,type:"yesno"}]},{title:e("DNS"),items:[{key:e("Enable DNS checks"),value:t.value.enable_dns_checks,type:"yesno"},{key:e("Enable DKIM signing"),value:t.value.enable_dkim,type:"yesno"}]},{title:e("Limitations"),items:[{key:e("Quota"),value:t.value.quota},{key:e("Default mailbox quota"),value:t.value.default_mailbox_quota},{key:e("Message sending limit"),value:t.value.message_limit}]}];if(t.value.enable_dkim&&(u[1].items.push({key:e("DKIM key selector"),value:t.value.dkim_key_selector}),u[1].items.push({key:e("DKIM key length"),value:t.value.dkim_key_length})),t.value.type==="relaydomain"&&t.value.transport.service){const p={title:e("Transport"),items:[{key:e("Service"),value:t.value.transport.service}]};for(const b of D.value.service.settings){const Y={key:b.label,value:t.value.transport.settings[`${t.value.transport.service}_${b.name}`]};b.type==="boolean"&&(Y.type="yesno"),p.items.push(Y)}u.push(p)}else if(t.value.type==="domain"){const p={title:e("Options"),items:[{key:e("Create a domain administrator"),value:r.value,type:"yesno"}]};r.value&&p.items.push({key:e("Administrator name"),value:t.value.domain_admin.username},{name:"random_password",key:e("Random password"),value:t.value.domain_admin.random_password,type:"yesno"},{key:e("With mailbox"),value:t.value.domain_admin.with_mailbox,type:"yesno"},{key:e("Create aliases"),value:t.value.domain_admin.with_aliases,type:"yesno"}),u.push(p)}return u});function G(){f("close")}function W(){navigator.clipboard.writeText(t.value.domain_admin.password).then(()=>{d.displayNotification({msg:e("Password copied to clipboard")})})}function K(u){return m.value[u.name]}function M(u){return m[u.name].value.vFormRef}async function R(){}function ee(u){r.value=u}async function ae(){const u=JSON.parse(JSON.stringify(t.value));r.value||delete u.domain_admin,u.message_limit===""&&delete u.message_limit,u.type==="relaydomain"?D.value.checkSettingTypes(u):delete u.transport;try{const p=await E.createDomain(u);w.push({name:"DomainDetail",params:{id:p.data.pk}}),d.displayNotification({msg:e("Domain created")}),G()}finally{F.value.working=!1}}return(u,p)=>(V(),A(Te,{ref_key:"form",ref:F,title:i(e)("New domain"),steps:x.value,"form-getter":K,"get-v-form-ref":M,"validate-object":R,"summary-sections":S.value,onClose:G,onCreate:ae},{"form.general":l(()=>[a(Pe,{ref_key:"general",ref:C,modelValue:t.value,"onUpdate:modelValue":p[0]||(p[0]=b=>t.value=b),class:"ml-4"},null,8,["modelValue"])]),"form.dns":l(()=>[a(Oe,{ref_key:"dns",ref:v,modelValue:t.value,"onUpdate:modelValue":p[1]||(p[1]=b=>t.value=b),class:"ml-4"},null,8,["modelValue"])]),"form.limitations":l(()=>[a(Re,{ref_key:"limitations",ref:_,modelValue:t.value,"onUpdate:modelValue":p[2]||(p[2]=b=>t.value=b),class:"ml-4"},null,8,["modelValue"])]),"form.options":l(()=>[a(ea,{ref_key:"options",ref:L,modelValue:t.value,"onUpdate:modelValue":p[3]||(p[3]=b=>t.value=b),class:"ml-4",onCreateAdmin:ee},null,8,["modelValue"])]),"form.transport":l(()=>[a(Ee,{ref_key:"transport",ref:D,modelValue:t.value.transport,"onUpdate:modelValue":p[4]||(p[4]=b=>t.value.transport=b),class:"ml-4"},null,8,["modelValue"])]),"item.random_password":l(({item:b})=>[b.value?(V(),A(B,{key:0,cols:"12",class:"highligth text-white"},{default:l(()=>[a(ue,null,{default:l(()=>[a(B,null,{default:l(()=>[$("span",null,c(b.key),1)]),_:2},1024),a(B,{class:"text-right"},{default:l(()=>[h(c(u.$yesno(b.value)),1)]),_:2},1024)]),_:2},1024),a(ue,null,{default:l(()=>[a(B,{class:"text-right py-1"},{default:l(()=>[h(c(t.value.domain_admin.password)+" ",1),a(q,{icon:"mdi-clipboard-multiple-outline",color:"white",variant:"text",title:i(e)("Copy to clipboard"),onClick:W},null,8,["title"])]),_:1})]),_:1})]),_:2},1024)):(V(),j(fe,{key:1},[a(B,null,{default:l(()=>[$("span",aa,c(b.key),1)]),_:2},1024),a(B,{class:"text-right"},{default:l(()=>[h(c(u.$yesno(b.value)),1)]),_:2},1024)],64))]),_:2},1032,["title","steps","summary-sections"]))}},la={__name:"DNSStatusChip",props:{status:{type:String,default:"pending"}},setup(T){const k=T,{$gettext:e}=J(),d=I(()=>k.status==="disabled"?e("Disabled"):k.status==="pending"?e("Pending"):k.status==="critical"?e("Problem"):k.status==="ok"?e("Valid"):e("Unknown")),w=I(()=>k.status==="disabled"?"":k.status==="pending"?"info":k.status==="critical"?"error":k.status==="ok"?"success":"warning");return(f,U)=>(V(),A(le,{color:w.value,size:"small"},{default:l(()=>[h(c(d.value),1)]),_:1},8,["color"]))}},oa={key:1},na={key:1},ia={class:"text-right"},sa={class:"grey lighten-4"},ra=["colspan"],ma={__name:"DomainList",setup(T,{expose:k}){const{$gettext:e}=J(),d=ce(),{canSetRole:w}=_e(),f=ne(),U=[{title:e("Name"),key:"name"},{title:e("Enabled"),key:"enabled",width:"5%"},{title:e("Aliases"),key:"data-table-expand",width:"10%"},{title:e("DNS status"),key:"dns_global_status",sortable:!1},{title:e("Sending limit"),key:"message_limit"},{title:e("Quota"),key:"allocated_quota_in_percent",sortable:!1}],t=[{value:10,title:"10"},{value:25,title:"25"},{value:50,title:"50"},{value:100,title:"100"}];w.value&&U.push({title:e("Actions"),value:"actions",sortable:!1,align:"end"});const r=n({}),F=n(),C=n([]),v=n(!1),_=n(!1),L=n(null),D=n(null),m=n(!1),g=n(!1),N=n(""),x=n([]),S=n([]),G=n(0),W=n(1),K=n(10),M=n([]);async function R(){const y={page:W.value||1,page_size:K.value||10};M.value&&M.value.length&&(y.ordering=M.value.map(s=>s.order!=="asc"?`-${s.key}`:s.key).join(",")),N.value!==""&&(y.search=N.value),r.value={},_.value=!0,S.value=[];try{const s=await E.getDomains(y);C.value=s.data.results,G.value=s.data.count}finally{_.value=!1}}async function ee({page:y,itemsPerPage:s,sortBy:z}){W.value=y,K.value=s,M.value=z,await R()}function ae(){g.value=!1,L.value=null,D.value=null}async function u(y){if(await F.value.open(e("Warning"),e("Do you really want to delete the domain %{ domain }?",{domain:y.name}),{color:"error",cancelLabel:e("No"),agreeLabel:e("Yes")})){_.value=!0;try{const z={keep_folder:v.value};await E.deleteDomain(y.pk,z),R(),f.displayNotification({msg:e("Domain deleted")}),v.value=!1}finally{_.value=!1}}}function p(y){d.push({name:"DomainEdit",params:{id:y.pk}})}function b(y,s){L.value=y,D.value=s,g.value=!0}async function Y(y,s,z,o){if(!z(s)){const P=await E.getDomainAliases(y.name);r.value[y.name]=P.data}o(s)}function xe(y){L.value=y,m.value=!0}function De(y){const s=[{label:e("Administrators"),icon:"mdi-account-supervisor",onClick:xe},{label:e("Edit"),icon:"mdi-circle-edit-outline",onClick:p},{label:e("Delete"),icon:"mdi-delete-outline",onClick:u,color:"red"}];return y.opened_alarms_count&&s.push({label:e("Alarms"),icon:"mdi-bell",color:"red",onClick:()=>d.push({name:"Alarms",query:{search:y.name}})}),s}return ie(()=>{R()}),k({reloadDomains:R}),(y,s)=>{const z=Ce("router-link");return V(),A(ge,{class:"mt-6"},{default:l(()=>[a(We,{modelValue:x.value,"onUpdate:modelValue":s[1]||(s[1]=o=>x.value=o),expanded:S.value,"onUpdate:expanded":s[2]||(s[2]=o=>S.value=o),headers:U,items:C.value,"items-length":G.value,page:W.value,"items-per-page":K.value,"items-per-page-options":t,"item-value":"pk",search:N.value,"show-select":"","show-expand":"",loading:_.value,"onUpdate:options":ee},{top:l(()=>[a(Ve,{color:"white",flat:""},{default:l(()=>[a(se,{modelValue:N.value,"onUpdate:modelValue":s[0]||(s[0]=o=>N.value=o),"prepend-inner-icon":"mdi-magnify",placeholder:i(e)("Search"),variant:"outlined","single-line":"","hide-details":"",density:"compact",class:"flex-grow-0 w-33 mr-4"},null,8,["modelValue","placeholder"]),Ae(y.$slots,"extraActions",{},void 0,!0),a(oe,{location:"bottom"},{activator:l(({props:o})=>[a(q,X({variant:"flat","append-icon":"mdi-chevron-down"},o,{size:"small"}),{default:l(()=>[h(c(i(e)("Actions")),1)]),_:1},16)]),default:l(()=>[a(be,{density:"compact"})]),_:1}),a(q,{variant:"text",icon:"mdi-reload",onClick:R})]),_:3})]),"item.name":l(({item:o})=>[a(z,{to:{name:"DomainDetail",params:{id:o.pk}}},{default:l(()=>[h(c(o.name),1)]),_:2},1032,["to"]),o.type==="relaydomain"?(V(),A(le,{key:0,size:"small",color:"primary",class:"ml-2"},{default:l(()=>[h(c(i(e)("Relay")),1)]),_:1})):H("",!0)]),"item.enabled":l(({item:o})=>[a(Ie,{value:o.enabled},null,8,["value"])]),"item.data-table-expand":l(({item:o,internalItem:O,isExpanded:P,toggleExpand:re})=>[h(c(o.domainalias_count)+" aliases ",1),o.domainalias_count?(V(),A(q,{key:0,variant:"text",size:"small",icon:P(O)?"mdi-chevron-up":"mdi-chevron-down",onClick:pa=>Y(o,O,P,re)},null,8,["icon","onClick"])):H("",!0)]),"item.dns_global_status":l(({item:o})=>[a(la,{status:o.dns_global_status},null,8,["status"])]),"item.message_limit":l(({item:o})=>[o.message_limit?(V(),A(me,{key:0,color:o.sent_messages_in_percent<80?"primary":"warning","model-value":o.sent_messages_in_percent},null,8,["color","model-value"])):(V(),j("span",oa,c(i(e)("Unlimited")),1))]),"item.allocated_quota_in_percent":l(({item:o})=>[o.quota!=="0"?(V(),A(me,{key:0,color:o.allocated_quota_in_percent<80?"primary":"warning","model-value":o.allocated_quota_in_percent},null,8,["color","model-value"])):(V(),j("span",na,c(i(e)("Unlimited")),1))]),"item.actions":l(({item:o})=>[$("div",ia,[a(oe,{"offset-y":""},{activator:l(({props:O})=>[o.opened_alarms_count?(V(),A(Je,{key:0,bordered:"",color:"error",icon:"mdi-bell",overlap:""},{default:l(()=>[a(q,X({icon:"mdi-dots-horizontal",variant:"text"},O),null,16)]),_:2},1024)):(V(),A(q,X({key:1,icon:"mdi-dots-horizontal",variant:"text"},O),null,16))]),default:l(()=>[a(je,{items:De(o),obj:o},null,8,["items","obj"])]),_:2},1024)])]),"expanded-row":l(({item:o,columns:O})=>[$("tr",sa,[$("td",{colspan:O.length},[(V(!0),j(fe,null,he(r.value[o.name],P=>(V(),j("span",{key:P.name,class:"mr-4"},[a(le,{class:"mr-2",onClick:re=>b(o,P)},{default:l(()=>[h(c(P.name),1)]),_:2},1032,["onClick"])]))),128))],8,ra)])]),_:2},1032,["modelValue","expanded","items","items-length","page","items-per-page","search","loading"]),a(Be,{ref_key:"confirm",ref:F},{default:l(()=>[a(Ke,{modelValue:v.value,"onUpdate:modelValue":s[3]||(s[3]=o=>v.value=o),label:i(e)("Do not delete domain folder"),"hide-details":""},null,8,["modelValue","label"])]),_:1},512),a(Q,{modelValue:g.value,"onUpdate:modelValue":s[4]||(s[4]=o=>g.value=o),persistent:"","max-width":"800px"},{default:l(()=>[a(ke,{"domain-alias":D.value,onClose:ae,onAliasDeleted:R},null,8,["domain-alias"])]),_:1},8,["modelValue"]),a(Q,{modelValue:m.value,"onUpdate:modelValue":s[6]||(s[6]=o=>m.value=o),persistent:"","max-width":"800px"},{default:l(()=>[a(Me,{domain:L.value,"dialog-mode":"",onClose:s[5]||(s[5]=o=>m.value=!1)},null,8,["domain"])]),_:1},8,["modelValue"])]),_:3})}}},ua=ve(ma,[["__scopeId","data-v-f195dac6"]]),da={__name:"DomainsView",setup(T){const k=n(),e=n(!1),d=n(!1),w=n(!1),{$gettext:f}=J(),{canAddDomain:U}=_e(),t=n(),{importContent:r,exportContent:F}=He();function C(){E.exportAll().then(D=>{F(D.data,"domains",f)})}function v(D){r(E,D,t,f)}const _=()=>{e.value=!1,k.value.reloadDomains()},L=()=>{w.value=!1,k.value.reloadDomains()};return(D,m)=>(V(),j("div",null,[a(Ve,{flat:""},{default:l(()=>[a(Ge,null,{default:l(()=>[h(c(i(f)("Domains")),1)]),_:1})]),_:1}),a(i(ua),{ref_key:"domainList",ref:k},{extraActions:l(()=>[i(U)?(V(),A(oe,{key:0,"offset-y":""},{activator:l(({props:g})=>[a(q,X({color:"primary",variant:"outlined"},g,{"prepend-icon":"mdi-plus",class:"mr-4"}),{default:l(()=>[h(c(D.$pgettext("male","New")),1)]),_:1},16)]),default:l(()=>[a(be,{density:"compact"},{default:l(()=>[a(de,{onClick:m[0]||(m[0]=g=>d.value=!0)},{default:l(()=>[a(pe,null,{default:l(()=>[h(c(i(f)("Domain")),1)]),_:1})]),_:1}),a(de,{onClick:m[1]||(m[1]=g=>e.value=!0)},{default:l(()=>[a(pe,null,{default:l(()=>[h(c(i(f)("Alias")),1)]),_:1})]),_:1})]),_:1})]),_:1})):H("",!0),i(U)?(V(),A(q,{key:1,class:"mr-2",title:i(f)("Import domains and aliases from CSV file"),variant:"flat",icon:"mdi-file-import-outline",onClick:m[2]||(m[2]=g=>w.value=!0)},null,8,["title"])):H("",!0),a(q,{class:"mr-2",title:i(f)("Export domains and aliases to CSV"),variant:"flat",icon:"mdi-file-export-outline",onClick:C},null,8,["title"])]),_:1},512),a(Q,{modelValue:d.value,"onUpdate:modelValue":m[4]||(m[4]=g=>d.value=g),fullscreen:"",scrollable:"","z-index":"10"},{default:l(()=>[a(i(ta),{onClose:m[3]||(m[3]=g=>d.value=!1)})]),_:1},8,["modelValue"]),a(Q,{modelValue:e.value,"onUpdate:modelValue":m[6]||(m[6]=g=>e.value=g),persistent:"","max-width":"800px"},{default:l(()=>[a(i(ke),{onClose:m[5]||(m[5]=g=>_())})]),_:1},8,["modelValue"]),a(Q,{modelValue:w.value,"onUpdate:modelValue":m[7]||(m[7]=g=>w.value=g),persistent:"","max-width":"800px"},{default:l(()=>[a(i(Qe),{ref_key:"importForm",ref:t,title:i(f)("Import domains"),onSubmit:v,onClose:L},{help:l(()=>[...m[8]||(m[8]=[$("ul",null,[$("li",null,[$("em",null,"domain; name; quota; default mailbox quota; enabled")]),$("li",null,[$("em",null,"domainalias; name; targeted domain; enabled")]),$("li",null,[$("em",null,"relaydomain; name; target host; target port; service; enabled; verify recipients")])],-1)])]),_:1},8,["title"])]),_:1},8,["modelValue"])]))}},st=ve(da,[["__scopeId","data-v-de80aa3f"]]);export{st as default};
@@ -0,0 +1 @@
1
+ import{k as $,_ as b,j as p,i as n,d as z,$ as F,a0 as A,a1 as B,m as g,o as d,a as y,n as T,x as U,a2 as N,w,F as D,v as R,c as W,z as j,l as K,t as O}from"./index-jui3edpn.js";import{V as P}from"./VTextField-BPIvtrn4.js";import{b as q,c as G,a as H}from"./VMenu-BpmJf4X2.js";import{u as J}from"./domains.store-1U61jeCV.js";const Q={__name:"EmailField",props:{modelValue:{type:String,default:""},allowAdd:{type:Boolean,default:!1},role:{type:String,default:$.USER},errorMsg:{type:Array,default:()=>[]}},emits:["domain-selected","update:model-value"],setup(S,{emit:E}){const h=J(),o=S,V=E,r=p({get(){return o.modelValue},set(e){v.value=[],e.indexOf("@")!==-1?(u.value=e.split("@")[1],o.allowAdd?t.value=s.value.length>0:t.value=!0):t.value=!1,V("update:model-value",e)}}),s=p(()=>Object.values(h.domains).filter(e=>e.name.startsWith(u.value))),v=p({get(){return[...x.value,...o.errorMsg]},set(e){x.value=e}}),u=n(""),l=n(0),t=n(!1),k=n(500),_=n(),x=n([]);function C(e){const a=e.keyCode;a===40||a===34?(t.value?M():(u.value="",t.value=!0),e.preventDefault()):a===38||a===33?(t.value?I():(u.value="",t.value=!0),e.preventDefault()):a===13||a===9?(s.value.length>0?c(s.value[l.value]):o.allowAdd&&c(),e.preventDefault()):a===27&&s.value.length>0&&(t.value=!1,e.preventDefault())}function M(){l.value>=s.value.length-1?l.value=0:l.value+=1}function I(){l.value<=0?l.value=s.value.length-1:l.value-=1}function c(e){e!==void 0&&(r.value=r.value.split("@")[0]+"@"+e.name),t.value=!1,V("domain-selected")}function m(){k.value=_.value.$el.clientWidth}return z(()=>{h.getDomains(),window.addEventListener("resize",m)}),F(()=>{window.removeEventListener("resize",m)}),A(()=>{B(()=>{m()})}),(e,a)=>(d(),g(D,null,[y(P,U({ref_key:"inputRef",ref:_,modelValue:r.value,"onUpdate:modelValue":a[0]||(a[0]=i=>r.value=i),variant:"outlined"},e.$attrs,{"error-messages":v.value,error:v.value.length>0,density:"compact",autocomplete:"new-password",onKeydown:C}),null,16,["modelValue","error-messages","error"]),t.value?(d(),g("div",{key:0,class:"menu",style:N(`width: ${k.value}px;`)},[y(H,{class:"list"},{default:w(()=>[(d(!0),g(D,null,R(s.value,(i,f)=>(d(),W(q,{key:f,class:j(l.value===f?"bg-primary-lighten-1":""),onClick:L=>c(i),onMouseenter:L=>l.value=f},{default:w(()=>[y(G,null,{default:w(()=>[K(O(i.name),1)]),_:2},1024)]),_:2},1032,["class","onClick","onMouseenter"]))),128))]),_:1})],4)):T("",!0)],64))}},te=b(Q,[["__scopeId","data-v-bed4b698"]]);export{te as E};
@@ -0,0 +1 @@
1
+ import{b as k,p as b,i as u,D as w,A as B,c as F,o as H,w as m,a as l,e as c,f as o,t as I}from"./index-jui3edpn.js";import{V as N,r as f}from"./VForm-fdQ5d-CH.js";import{V as T,b as q,a as A}from"./VCard-CBtX8JF-.js";import{V as J}from"./VDatePicker-iFu13xIP.js";import{V as O}from"./VTextField-BPIvtrn4.js";import{V as P}from"./VSpacer-CuSkdJZL.js";import{V as g}from"./VAvatar-CXV_FqpP.js";const R={class:"d-flex"},U={class:"w-33 pt-2 text-uppercase text-overline font-weight-regular"},Q={__name:"EmailSchedulingForm",props:{initialDate:{type:String,default:null}},emits:["close","schedule"],setup(x,{emit:D}){const S=x,d=D,{$gettext:s}=k(),{displayNotification:p}=b(),_=()=>{d("close")},y=t=>t>new Date,h=t=>{const e=new Date,a=s("Provided time must be one minute from now at least");return t<=e?(p({msg:a,type:"error"}),!1):(t-e)/1e3<60?(p({msg:a,type:"error"}),!1):!0},r=u(""),V=u(),i=u(!1),n=u(""),v=w.now();r.value=v.toJSDate(),n.value=v.toFormat("HH:mm");const C=async()=>{const{valid:t}=await V.value.validate();if(!t)return;const e=r.value,a=n.value.split(":");e.setHours(parseInt(a[0]),parseInt(a[1])),h(e)&&(i.value=!0,d("schedule",e.toISOString()),d("close"),i.value=!1)};return B(()=>S.initialDate,t=>{if(t){const e=w.fromISO(t);r.value=e.toJSDate(),n.value=e.toFormat("HH:mm")}},{immediate:!0}),(t,e)=>(H(),F(A,{title:o(s)("Schedule your sending")},{default:m(()=>[l(T,null,{default:m(()=>[l(N,{ref_key:"formRef",ref:V},{default:m(()=>[c("div",R,[l(J,{modelValue:r.value,"onUpdate:modelValue":e[0]||(e[0]=a=>r.value=a),class:"w-50","allowed-dates":y,rules:[o(f).required]},null,8,["modelValue","rules"]),c("div",U,[c("label",null,I(o(s)("Select time")),1),l(O,{modelValue:n.value,"onUpdate:modelValue":e[1]||(e[1]=a=>n.value=a),variant:"outlined",class:"mt-6",rules:[o(f).required,o(f).time]},null,8,["modelValue","rules"])])])]),_:1},512)]),_:1}),l(q,null,{default:m(()=>[l(P),l(g,{text:o(s)("Close"),loading:i.value,onClick:_},null,8,["text","loading"]),l(g,{text:o(s)("Schedule"),color:"primary",loading:i.value,onClick:C},null,8,["text","loading"])]),_:1})]),_:1},8,["title"]))}};export{Q as _};
@@ -0,0 +1 @@
1
+ import{B as oe,s as Z,b as H,p as W,i as b,c as y,o as s,w as n,a,f as m,d as se,$ as ne,A as ie,C as re,a1 as P,m as u,M as ue,ad as de,e as c,n as w,t as d,l as E,F as V,v as z,Y as me,Z as ce,x as G}from"./index-jui3edpn.js";import{a as M}from"./webmail-CYDXU0DS.js";import{c as ve}from"./contacts-DMJlQTe0.js";import{a as T,b as $,V as R}from"./VMenu-BpmJf4X2.js";import{V as f,c as D,Z as pe}from"./VAvatar-CXV_FqpP.js";import{a as Y,V as fe,b as ye}from"./VCard-CBtX8JF-.js";import{V as ke}from"./VToolbar-CB6wwtYc.js";import{V as O}from"./VSpacer-CuSkdJZL.js";import{V as ge}from"./VAlert-MDbeolOo.js";import{V as Ve}from"./VDialog-lKtBdqnp.js";import"./tag-WF93n81Q.js";import"./ssrBoot-B7cr7q9U.js";import"./VProgressCircular-DRw_-iNj.js";/* empty css */const N={__name:"ContactCard",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(j){const l=oe(j,"modelValue"),S=Z(),{$gettext:L}=H(),{displayNotification:i}=W(),v=b(!1),x=async()=>{const _={emails:[{address:l.value.address,type:"other"}]};l.value.name?_.display_name=l.value.name:_.display_name=l.value.address,v.value=!0;let q;try{q=await ve.createContact(_),l.value.contact_id=q.data.pk}finally{v.value=!1}i({msg:L("Contact added to address book")})},t=()=>{S.push({name:"ContactList"})};return(_,q)=>(s(),y(Y,{"min-width":"300"},{default:n(()=>[a(T,null,{default:n(()=>[a($,{subtitle:l.value.name?l.value.address:"",title:l.value.name||l.value.address},{append:n(()=>[l.value.contact_id?(s(),y(f,{key:1,icon:"mdi-pencil",variant:"text",loading:v.value,title:m(L)("Update contact"),onClick:t},null,8,["loading","title"])):(s(),y(f,{key:0,color:"secondary",icon:"mdi-card-account-mail-outline",variant:"text",loading:v.value,title:m(L)("Add to contacts"),onClick:x},null,8,["loading","title"]))]),_:1},8,["subtitle","title"])]),_:1})]),_:1}))}},be={class:"bg-white rounded-lg pa-4 position-relative h-100"},_e={class:"d-flex mt-2"},he={class:"text-grey text-body-2"},we={class:"text-grey"},xe={key:0,class:"mt-2 text-grey"},Ce={key:0},qe={key:1,class:"mt-2"},Ee=["onClick"],Je={__name:"EmailView",setup(j){const{$gettext:l}=H(),{displayNotification:S,reloadMailboxCounters:L}=W(),i=re(),v=Z(),x=b(!1),t=b(null),_=b(null),q=b(null),I=b(!1),A=b(),U=b(!1),k=b(!1);se(()=>{window.addEventListener("resize",B),J()}),ne(()=>{window.removeEventListener("resize",B)}),ie(x,()=>{J()});const K=()=>{v.push({name:"MailboxView",query:{mailbox:i.query.mailbox}})},B=()=>{const r=document.querySelector("iframe");let e;A.value?e=A.value.$el.getBoundingClientRect():e=q.value.getBoundingClientRect(),r.style.top=`${e.bottom}px`,r.style.width=`${e.width-24}px`,r.style.height=`${window.innerHeight-e.bottom-32}px`},J=()=>{const r={dformat:"html",links:x.value?"1":"0"};M.getEmailContent(i.query.mailbox,i.query.mailid,r).then(e=>{L(),t.value=e.data,P(()=>{const g=document.createElement("iframe");if(g.classList.add("email-frame"),document.querySelector("iframe").replaceWith(g),t.value.body){const C=g.contentDocument;C.write(t.value.body),C.close()}I.value=!0,P(B)})})},Q=(r,e)=>{M.getEmailAttachment(i.query.mailbox,i.query.mailid,e).then(g=>{const C=new Blob([g.data],{type:g.headers["Content-Type"]}),o=document.createElement("a");o.href=URL.createObjectURL(C),o.download=r,o.click(),URL.revokeObjectURL(o.href)})},X=()=>{k.value=!0,M.deleteSelection(i.query.mailbox,[i.query.mailid]).then(()=>{k.value=!1,v.push({name:"MailboxView",query:{mailbox:i.query.mailbox}}),S({msg:l("Message deleted")})})},ee=()=>{k.value=!0,M.markSelectionAsJunk(i.query.mailbox,[i.query.mailid]).then(()=>{k.value=!1,v.push({name:"MailboxView",query:{mailbox:i.query.mailbox}}),S({msg:l("Message marked as junk")})})},ae=()=>{k.value=!0,M.markSelectionAsNotJunk(i.query.mailbox,[i.query.mailid]).then(()=>{k.value=!1,v.push({name:"MailboxView",query:{mailbox:i.query.mailbox}}),S({msg:l("Message marked as not junk")})})},te=async()=>{if(!_.value){const r=await M.getEmailSource(i.query.mailbox,i.query.mailid);_.value=r.data.source}U.value=!0},F=r=>{const e={...i.query};r&&(e.all=r),v.push({name:"ReplyEmailView",query:e})},le=()=>{v.push({name:"ForwardEmailView",query:i.query})};return(r,e)=>{var g,C;return s(),u(V,null,[ue(c("div",be,[a(ke,{color:"white"},{default:n(()=>[a(f,{icon:"mdi-arrow-left",size:"small",variant:"flat",onClick:K}),a(pe,{color:"primary",rounded:"lg",density:"compact",divided:""},{default:n(()=>[a(f,{"prepend-icon":"mdi-reply",onClick:e[0]||(e[0]=()=>F())},{default:n(()=>[E(d(m(l)("Reply")),1)]),_:1}),a(f,{size:"small",icon:""},{default:n(()=>[a(D,{icon:"mdi-chevron-down"}),a(R,{activator:"parent"},{default:n(()=>[a(T,null,{default:n(()=>[a($,{title:m(l)("Reply all"),onClick:e[1]||(e[1]=()=>F(!0))},null,8,["title"]),a($,{title:m(l)("Forward"),onClick:le},null,8,["title"])]),_:1})]),_:1})]),_:1})]),_:1}),r.$route.query.mailbox!=="Scheduled"?(s(),u(V,{key:0},[a(f,{class:"ml-2",color:"error",variant:"tonal",icon:"mdi-trash-can",size:"small",loading:k.value,onClick:X},null,8,["loading"]),m(i).params.mailbox!=="Junk"?(s(),y(f,{key:0,class:"ml-2",color:"warning",variant:"tonal",icon:"mdi-fire",size:"small",loading:k.value,onClick:ee},null,8,["loading"])):(s(),y(f,{key:1,class:"ml-2",color:"success",variant:"tonal",icon:"mdi-thumb-up",size:"small",loading:k.value,onClick:ae},null,8,["loading"]))],64)):w("",!0),a(f,{class:"ml-2",variant:"tonal",icon:"",size:"small"},{default:n(()=>[a(D,{icon:"mdi-cog"}),a(R,{activator:"parent"},{default:n(()=>[a(T,{density:"compact"},{default:n(()=>[x.value?(s(),y($,{key:1,title:m(l)("Disable links"),onClick:e[3]||(e[3]=o=>x.value=!1)},null,8,["title"])):(s(),y($,{key:0,title:m(l)("Enable links"),onClick:e[2]||(e[2]=o=>x.value=!0)},null,8,["title"])),a($,{title:m(l)("Display source"),onClick:te},null,8,["title"])]),_:1})]),_:1})]),_:1})]),_:1}),t.value?(s(),u("div",{key:0,ref_key:"headers",ref:q,class:"bg-white pa-4"},[c("h2",null,d(t.value.subject),1),c("div",_e,[a(R,{key:"sender"},{activator:n(({props:o})=>[c("h3",me(ce(o)),[t.value.from_address.name?(s(),u(V,{key:0},[E(d(t.value.from_address.name)+" ",1),c("span",he," <"+d(t.value.from_address.address)+"> ",1)],64)):(s(),u(V,{key:1},[E(d(t.value.from_address.address),1)],64))],16)]),default:n(()=>[a(N,{modelValue:t.value.from_address,"onUpdate:modelValue":e[4]||(e[4]=o=>t.value.from_address=o)},null,8,["modelValue"])]),_:1}),a(O),c("span",we,d(t.value.date),1)]),t.value.to.length?(s(),u("div",xe,[E(d(m(l)("To"))+" ",1),(s(!0),u(V,null,z(t.value.to,(o,p)=>(s(),y(R,{key:`to-${p}`},{activator:n(({props:h})=>[p>0?(s(),u("span",Ce,", ")):w("",!0),c("span",G({ref_for:!0},h),d(o.name||o.address),17)]),default:n(()=>[a(N,{modelValue:t.value.to[p],"onUpdate:modelValue":h=>t.value.to[p]=h},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024))),128)),(g=t.value.cc)!=null&&g.length?(s(!0),u(V,{key:0},z(t.value.cc,(o,p)=>(s(),y(R,{key:`cc-${p}`},{activator:n(({props:h})=>[e[7]||(e[7]=c("span",null,", ",-1)),c("span",G({ref_for:!0},h),d(o.name||o.address),17)]),default:n(()=>[a(N,{modelValue:t.value.cc[p],"onUpdate:modelValue":h=>t.value.cc[p]=h},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024))),128)):w("",!0)])):w("",!0),t.value.attachments.length?(s(),u("div",qe,[a(D,{icon:"mdi-paperclip"}),(s(!0),u(V,null,z(t.value.attachments,(o,p)=>(s(),u(V,{key:o.name},[p>0?(s(),u(V,{key:0},[E(", ")],64)):w("",!0),c("a",{href:"#",onClick:h=>Q(o.name,o.partnum)},d(o.name),9,Ee)],64))),128))])):w("",!0)],512)):w("",!0),(C=t.value)!=null&&C.scheduled_datetime?(s(),y(ge,{key:1,ref_key:"schedulingInfo",ref:A,type:"info",variant:"tonal",density:"compact",class:"mx-1"},{default:n(()=>[E(d(m(l)("Message scheduled at:"))+" "+d(r.$date(t.value.scheduled_datetime)),1)]),_:1},512)):w("",!0),e[8]||(e[8]=c("iframe",{class:"email-frame"},null,-1))],512),[[de,I.value]]),a(Ve,{modelValue:U.value,"onUpdate:modelValue":e[6]||(e[6]=o=>U.value=o),"max-width":"1200"},{default:n(()=>[a(Y,{title:m(l)("Message source")},{default:n(()=>[a(fe,{class:"text-caption overflow-x-auto"},{default:n(()=>[c("pre",null,d(_.value),1)]),_:1}),a(ye,null,{default:n(()=>[a(O),a(f,{text:m(l)("Close"),onClick:e[5]||(e[5]=o=>U.value=!1)},null,8,["text"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])],64)}}};export{Je as default};
@@ -0,0 +1 @@
1
+ import{V as s,a as c}from"./VApp-DM1KLQfQ.js";import{r as m,c as t,o as e,w as o,a as r}from"./index-jui3edpn.js";import"./tag-WF93n81Q.js";import"./layout-DOO7TRTJ.js";import"./ssrBoot-B7cr7q9U.js";const u={__name:"EmptyView",setup(a){return(_,n)=>{const p=m("router-view");return e(),t(s,null,{default:o(()=>[r(p)]),_:1})}}},d={__name:"EmptyLayout",setup(a){return(_,n)=>(e(),t(c,null,{default:o(()=>[r(u)]),_:1}))}};export{d as default};
@@ -0,0 +1 @@
1
+ import{b as le,p as ae,i as d,c as k,o as c,w as f,a as l,f as n,a3 as V,j as ie,A as P,e as q,m as _,n as A,t as J,F as z,v as Z,C as _e,s as Se,g as xe,x as ne,l as ee}from"./index-jui3edpn.js";import{V as oe,r as U}from"./VForm-fdQ5d-CH.js";import{V as me,b as ce,a as de}from"./VCard-CBtX8JF-.js";import{V as H}from"./VTextField-BPIvtrn4.js";import{V as fe}from"./VSwitch-XumUl685.js";import{d as ve,V as re}from"./VMenu-BpmJf4X2.js";import{V as pe}from"./VSpacer-CuSkdJZL.js";import{V as g,c as Ue}from"./VAvatar-CXV_FqpP.js";import{a as Ae,V as te}from"./VRadioGroup--eiP5xtJ.js";import{a as I}from"./VSelect-BcmGFGif.js";import{V as Ne}from"./VCheckbox-zY1MApOy.js";import{_ as se}from"./MenuItems-C9p70bSC.js";import{V as $e}from"./VToolbar-CB6wwtYc.js";import{V as Re}from"./VDataTable-CNT9KOSp.js";import{V as ue}from"./VDialog-lKtBdqnp.js";import{V as De}from"./VAutocomplete-CQsWYWNX.js";import{V as Te}from"./VTextarea-B6bGYcC3.js";import"./tag-WF93n81Q.js";import"./VInput-BwHvhzAe.js";import"./VProgressCircular-DRw_-iNj.js";import"./VSelectionControl-Cqi1xt-q.js";import"./ssrBoot-B7cr7q9U.js";/* empty css */import"./VCheckboxBtn-B0mIT3E0.js";import"./events-BM3in65C.js";import"./VTable-f7wcr2AZ.js";import"./filter-Dihm6o59.js";const je={__name:"FilterSetForm",emits:["close"],setup(K,{emit:O}){const{$gettext:p}=le(),B=O,N=ae(),a=d({}),o=d(),b=d(!1);function F(){o.value.reset(),a.value={},B("close")}async function h(){const{valid:e}=await o.value.validate();if(e){b.value=!0;try{await V.createFilterSet(a.value),N.displayNotification({msg:p("Filter set created")}),F()}finally{b.value=!1}}}return(e,w)=>(c(),k(de,{title:n(p)("Create a new filter set")},{default:f(()=>[l(me,null,{default:f(()=>[l(oe,{ref_key:"formRef",ref:o},{default:f(()=>[l(H,{modelValue:a.value.name,"onUpdate:modelValue":w[0]||(w[0]=C=>a.value.name=C),label:n(p)("Name"),variant:"outlined",rules:[n(U).required]},null,8,["modelValue","label","rules"]),l(fe,{label:n(p)("Active"),modelValue:a.value.active,"onUpdate:modelValue":w[1]||(w[1]=C=>a.value.active=C),color:"primary"},null,8,["label","modelValue"])]),_:1},512)]),_:1}),l(ve),l(ce,null,{default:f(()=>[l(pe),l(g,{text:n(p)("Cancel"),variant:"plain",onClick:F},null,8,["text"]),l(g,{color:"primary",text:n(p)("Create"),onClick:h},null,8,["text"])]),_:1})]),_:1},8,["title"]))}},qe={class:"bg-grey-lighten-4 rounded pa-3"},Oe={class:"mt-4 bg-grey-lighten-4 rounded pa-3"},Be={class:"mx-2 d-flex flex-column flex-grow-1"},Ee={__name:"FilterForm",props:{filterSet:{type:String,default:null},filter:{type:Object,required:!1,default:null}},emits:["close"],setup(K,{emit:O}){const p=K,B=O,N=ae(),{$gettext:a}=le(),o=d({}),b=d([]),F=d([]),h=d(),e=d($()),w=d(!1),C=ie(()=>p.filter?a("Edit filter"):a("New filter")),G=ie(()=>p.filter?a("Update"):a("Create"));let S;P(()=>p.filter,m=>{m?(e.value=JSON.parse(JSON.stringify(m)),S=m.name):e.value=$()},{immediate:!0});function E(){B("close"),e.value=$()}function $(){return{match_type:"anyof",conditions:[{}],actions:[{args:{}}]}}function L(m){for(const v of b.value)if(v.name===m)return v.operators;return[]}function R(m){for(const v of b.value)if(v.name===e.value.conditions[m].name){for(const r of v.operators)if(r.name===e.value.conditions[m].operator)return r.type==="string"?"text":"number"}}function Q(m){for(const v of F.value)if(v.name===m)return v.args;return[]}function W(){e.value.conditions.push({name:b.value[0].name,operator:b.value[0].operators[0].name})}function X(m){e.value.conditions.splice(m,1)}function Y(){e.value.actions.push({name:F.value[0].name,args:{}})}function D(m){e.value.actions.splice(m,1)}async function x(){const{valid:m}=await h.value.validate();if(!m)return;w.value=!0;let v;const r=JSON.parse(JSON.stringify(e.value));for(const y of r.actions)for(const[u,M]of Object.entries(y.args))typeof M=="boolean"&&!M&&delete y.args[u];try{p.filter?(await V.updateFilter(p.filterSet,S,r),v=a("Filter updated")):(await V.createFilter(p.filterSet,r),v=a("Filter added"))}catch(y){y.response.status===400&&y.response.data&&(o.value=y.response.data);return}finally{w.value=!1}N.displayNotification({msg:v}),E()}return V.getFilterConditionTemplates().then(m=>{b.value=m.data,p.filter||(e.value.conditions[0].name=b.value[0].name,e.value.conditions[0].operator=b.value[0].operators[0].name)}),V.getFilterActionTemplates().then(m=>{F.value=m.data,p.filter||(e.value.actions[0].name=F.value[0].name)}),(m,v)=>(c(),k(de,{title:C.value},{default:f(()=>[l(me,null,{default:f(()=>[l(oe,{ref_key:"formRef",ref:h},{default:f(()=>[l(H,{modelValue:e.value.name,"onUpdate:modelValue":v[0]||(v[0]=r=>e.value.name=r),label:n(a)("Name"),variant:"outlined",density:"compact",rules:[n(U).required],"error-messages":o.value.name?o.value.name:[]},null,8,["modelValue","label","rules","error-messages"]),q("div",qe,[q("h4",null,J(n(a)("Conditions")),1),l(Ae,{modelValue:e.value.match_type,"onUpdate:modelValue":v[1]||(v[1]=r=>e.value.match_type=r),color:"primary",inline:""},{default:f(()=>[l(te,{label:n(a)("All of the following"),value:"allof"},null,8,["label"]),l(te,{label:n(a)("Any of the following"),value:"anyof"},null,8,["label"]),l(te,{label:n(a)("All messages"),value:"all"},null,8,["label"])]),_:1},8,["modelValue"]),e.value.match_type!=="all"?(c(!0),_(z,{key:0},Z(e.value.conditions,(r,y)=>(c(),_("div",{key:`condition-${y}`,class:"d-flex align-start"},[l(I,{modelValue:r.name,"onUpdate:modelValue":u=>r.name=u,label:n(a)("Choose a header"),items:b.value,"item-title":"label","item-value":"name",variant:"outlined",density:"compact",rules:[n(U).required]},null,8,["modelValue","onUpdate:modelValue","label","items","rules"]),l(I,{modelValue:r.operator,"onUpdate:modelValue":u=>r.operator=u,label:n(a)("Choose an operator"),items:L(r.name),"item-title":"label","item-value":"name",variant:"outlined",class:"ml-2",density:"compact",rules:[n(U).required]},null,8,["modelValue","onUpdate:modelValue","label","items","rules"]),l(H,{modelValue:r.value,"onUpdate:modelValue":u=>r.value=u,label:n(a)("Value"),variant:"outlined",class:"ml-2",density:"compact",type:R(y),rules:[n(U).required]},null,8,["modelValue","onUpdate:modelValue","label","type","rules"]),y===0?(c(),k(g,{key:0,icon:"mdi-plus",variant:"text",title:n(a)("Add condition"),color:"primary",onClick:W},null,8,["title"])):(c(),k(g,{key:1,icon:"mdi-trash-can",variant:"text",title:n(a)("Remove condition"),color:"error",onClick:u=>X(y)},null,8,["title","onClick"]))]))),128)):A("",!0)]),q("div",Oe,[q("h4",null,J(n(a)("Actions")),1),(c(!0),_(z,null,Z(e.value.actions,(r,y)=>(c(),_("div",{key:`action-${y}`,class:"d-flex align-start mt-2"},[l(I,{modelValue:r.name,"onUpdate:modelValue":u=>r.name=u,label:n(a)("Choose an action"),items:F.value,"item-title":"label","item-value":"name",variant:"outlined",density:"compact",class:"flex-grow-0"},null,8,["modelValue","onUpdate:modelValue","label","items"]),q("div",Be,[(c(!0),_(z,null,Z(Q(r.name),(u,M)=>(c(),_(z,{key:`arg-${y}-${M}`},[u.type==="list"?(c(),k(I,{key:0,modelValue:r.args[u.name],"onUpdate:modelValue":T=>r.args[u.name]=T,items:u.choices,"item-title":"label",density:"compact",variant:"outlined",rules:[n(U).required]},null,8,["modelValue","onUpdate:modelValue","items","rules"])):A("",!0),u.type==="string"?(c(),k(H,{key:1,modelValue:r.args[u.name],"onUpdate:modelValue":T=>r.args[u.name]=T,density:"compact",variant:"outlined",rules:[n(U).required]},null,8,["modelValue","onUpdate:modelValue","rules"])):A("",!0),u.type==="boolean"?(c(),k(Ne,{key:2,modelValue:r.args[u.name],"onUpdate:modelValue":T=>r.args[u.name]=T,label:u.label,color:"primary",value:u.value,density:"compact"},null,8,["modelValue","onUpdate:modelValue","label","value"])):A("",!0)],64))),128))]),y===0?(c(),k(g,{key:0,icon:"mdi-plus",variant:"text",title:n(a)("Add action"),color:"primary",onClick:Y},null,8,["title"])):(c(),k(g,{key:1,icon:"mdi-trash-can",variant:"text",title:n(a)("Remove action"),color:"error",onClick:u=>D(y)},null,8,["title","onClick"]))]))),128))])]),_:1},512)]),_:1}),l(ve),l(ce,null,{default:f(()=>[l(pe),l(g,{text:n(a)("Cancel"),variant:"elevated",onClick:E},null,8,["text"]),l(g,{color:"primary",variant:"elevated",text:G.value,loading:w.value,onClick:x},null,8,["text","loading"])]),_:1})]),_:1},8,["title"]))}},Le={class:"pa-4"},Me={class:"text-h6 font-weight-regular mb-4"},Je={key:0,class:"bg-white mt-4 pa-2"},ze={class:"d-flex align-center"},Vt={__name:"FiltersView",async setup(K){let O,p;const B=Se(),N=_e(),a=ae(),{$gettext:o}=le(),b=d([]),F=d([]),h=d(""),e=d(),w=d(!1),C=d([]),G=d(),S=d(!1),E=d(!1),$=d(null),L=d(!1),R=d(!1),Q=[{title:o("Name"),key:"name"},{title:o("Active"),key:"enabled"},{title:"",key:"filter_actions",align:"end"}];P(e,t=>{t?(x(t.name),N.params.filterset!==t.name&&B.push({name:"AccountFilters",params:{filterset:t.name}})):B.push({name:"AccountFilters"})}),P(S,t=>{t?V.downloadFilterSet(e.value.name).then(i=>{h.value=i.data}):x(e.value.name)}),P(h,()=>{C.value.length&&(C.value=[])});function W(t){let i=t.name;return t.active?i+=" ("+o("active")+")":i+=" ("+o("inactive")+")",i}async function X(){L.value=!1,await D()}function Y(){R.value=!1,$.value=null,x(e.value.name)}async function D(){const t=await V.getFilterSets();if(t.data.length>0&&t.data[0].active&&t.data[0].name===null?b.value=t.data.slice(1):b.value=t.data,N.params.filterset){for(const i of b.value)if(i.name===N.params.filterset){e.value=i;break}}else for(const i of b.value)if(i.name){e.value=i;break}}function x(t){w.value=!0,V.getFilters(t).then(i=>{F.value=i.data,w.value=!1}).catch(i=>{i.response.status===518&&(S.value=!0,a.displayNotification({msg:o("Failed to display template. Using raw mode"),type:"warning"}))})}function m(t){$.value=t,R.value=!0}function v(t){V.enableFilter(e.value.name,t.name).then(()=>{t.enabled=!0,a.displayNotification({msg:o("Filter enabled")})})}function r(t){V.disableFilter(e.value.name,t.name).then(()=>{t.enabled=!1,a.displayNotification({msg:o("Filter disabled")})})}function y(t){V.deleteFilter(e.value.name,t.name).then(()=>{a.displayNotification({msg:o("Filter removed")}),x(e.value.name)})}async function u(t){await V.moveFilterDown(e.value.name,t.name),x(e.value.name)}async function M(t){await V.moveFilterUp(e.value.name,t.name),x(e.value.name)}async function T(t){await V.activateFilterSet(t.name),await D(),a.displayNotification({msg:o("Filter set activated")})}async function ye(){await V.deactivateActiveFilterSet(),await D(),a.displayNotification({msg:o("Active filter set deactivated")})}async function Ve(t){await V.deleteFilterSet(t.name),a.displayNotification({msg:o("Filter set removed")}),e.value=null,await D()}async function be(){const{valid:t}=await G.value.validate();if(!t)return;const i={content:h.value};E.value=!0;try{await V.saveFilterSet(e.value.name,i),a.displayNotification({msg:o("Filter set updated")})}catch(s){s.response.status===400&&s.response.data.content&&(C.value=s.response.data.content)}finally{E.value=!1}}async function ge(t){const i=await V.downloadFilterSet(t.name),s=new Blob([i.data],{type:"text/plain"}),j=document.createElement("a");j.href=URL.createObjectURL(s),j.download=`${t.name}.txt`,j.click(),URL.revokeObjectURL(j.href)}const Fe=[{label:o("Edit"),icon:"mdi-circle-edit-outline",onClick:m},{label:o("Delete"),icon:"mdi-delete-outline",onClick:y,color:"red"}];function we(t,i){const s=[...Fe];return t.enabled?s.push({label:o("Disable"),icon:"mdi-stop",color:"red",onClick:r}):s.push({label:o("Enable"),icon:"mdi-check",color:"success",onClick:v}),i!==F.value.length-1&&s.push({label:o("Move down"),icon:"mdi-arrow-down",onClick:u}),i!==0&&s.push({label:o("Move up"),icon:"mdi-arrow-up",onClick:M}),s}const ke=[{label:o("Download filter set"),icon:"mdi-download",onClick:ge},{label:o("Delete filter set"),color:"error",icon:"mdi-trash-can",onClick:Ve}];function he(){const t=[];return e.value.active?t.push({label:o("Deactivate filter set"),color:"error",icon:"mdi-close",onClick:ye}):t.push({label:o("Activate filter set"),color:"success",icon:"mdi-check",onClick:T}),t.concat(ke)}return[O,p]=xe(()=>D()),await O,p(),(t,i)=>(c(),_("div",Le,[q("div",Me,J(n(o)("Message filters")),1),l($e,{color:"white",flat:"",class:"px-4"},{default:f(()=>[l(De,{modelValue:e.value,"onUpdate:modelValue":i[0]||(i[0]=s=>e.value=s),label:n(o)("Select a filter set"),items:b.value,"item-title":W,"return-object":"",variant:"outlined","hide-details":"",class:"flex-grow-0",style:{width:"200px"},density:"compact"},null,8,["modelValue","label","items"]),l(g,{color:"primary",icon:"mdi-plus",size:"small",class:"mx-4",title:n(o)("Add filter set"),onClick:i[1]||(i[1]=s=>L.value=!0)},null,8,["title"]),e.value?(c(),k(re,{key:0},{activator:f(({props:s})=>[l(g,ne({icon:"mdi-dots-vertical"},s,{size:"small",color:"default"}),null,16)]),default:f(()=>[l(se,{items:he(),obj:e.value},null,8,["items","obj"])]),_:1})):A("",!0),e.value?(c(),k(fe,{key:1,modelValue:S.value,"onUpdate:modelValue":i[2]||(i[2]=s=>S.value=s),label:n(o)("Raw mode"),color:"primary",class:"ml-4","hide-details":""},null,8,["modelValue","label"])):A("",!0)]),_:1}),e.value?(c(),_("div",Je,[S.value?(c(),_(z,{key:1},[l(oe,{ref_key:"rawFormRef",ref:G},{default:f(()=>[l(Te,{modelValue:h.value,"onUpdate:modelValue":i[4]||(i[4]=s=>h.value=s),variant:"outlined","auto-grow":"",rules:[n(U).required],"error-messages":C.value},null,8,["modelValue","rules","error-messages"])]),_:1},512),l(g,{color:"success",loading:E.value,class:"mt-2",onClick:be},{default:f(()=>[ee(J(n(o)("Save")),1)]),_:1},8,["loading"])],64)):(c(),_(z,{key:0},[q("div",ze,[l(g,{color:"primary",title:n(o)("Add new filter"),class:"mx-auto",variant:"outlined",onClick:i[3]||(i[3]=s=>R.value=!0)},{default:f(()=>[l(Ue,{icon:"mdi-plus"}),ee(" "+J(n(o)("New")),1)]),_:1},8,["title"])]),l(Re,{headers:Q,items:F.value,loading:w.value},{"item.enabled":f(({item:s})=>[ee(J(t.$yesno(s.enabled)),1)]),"item.filter_actions":f(({index:s,item:j})=>[l(re,{"offset-y":""},{activator:f(({props:Ce})=>[l(g,ne({icon:"mdi-dots-horizontal",variant:"text"},Ce),null,16)]),default:f(()=>[l(se,{items:we(j,s),obj:j},null,8,["items","obj"])]),_:2},1024)]),_:2},1032,["items","loading"])],64))])):A("",!0),l(ue,{modelValue:L.value,"onUpdate:modelValue":i[5]||(i[5]=s=>L.value=s),"max-width":"600"},{default:f(()=>[l(je,{onClose:X})]),_:1},8,["modelValue"]),l(ue,{modelValue:R.value,"onUpdate:modelValue":i[6]||(i[6]=s=>R.value=s),"max-width":"800"},{default:f(()=>[e.value?(c(),k(Ee,{key:0,"filter-set":e.value.name,filter:$.value,onClose:Y},null,8,["filter-set","filter"])):A("",!0)]),_:1},8,["modelValue"])]))}};export{Vt as default};
@@ -0,0 +1 @@
1
+ import{i,C as m,c as p,f as a,o as e}from"./index-jui3edpn.js";import{_ as n}from"./ComposeEmailForm-BmtKwFb1.js";import{a as l}from"./webmail-CYDXU0DS.js";import"./index-Dv00bmw9.js";import"./VForm-fdQ5d-CH.js";import"./tag-WF93n81Q.js";import"./VInput-BwHvhzAe.js";import"./VAvatar-CXV_FqpP.js";import"./VProgressCircular-DRw_-iNj.js";import"./VMenu-BpmJf4X2.js";import"./ssrBoot-B7cr7q9U.js";import"./VCard-CBtX8JF-.js";import"./VFileInput-C7J_qVmk.js";import"./VTextField-BPIvtrn4.js";import"./VSelect-BcmGFGif.js";import"./VCheckboxBtn-B0mIT3E0.js";import"./VSelectionControl-Cqi1xt-q.js";import"./VTable-f7wcr2AZ.js";import"./VSpacer-CuSkdJZL.js";/* empty css */import"./HtmlEditor-CyBl5wj2.js";import"./VTextarea-B6bGYcC3.js";import"./EmailSchedulingForm-CQL5Vfdr.js";import"./VDatePicker-iFu13xIP.js";import"./VBadge-7tDx7aI3.js";import"./VPicker-BZho70wU.js";import"./VSheet-C3MaHhtw.js";import"./contacts-DMJlQTe0.js";import"./VToolbar-CB6wwtYc.js";import"./VRow-83Qnr5iB.js";import"./filter-Dihm6o59.js";import"./VDialog-lKtBdqnp.js";const O={__name:"ForwardEmailView",setup(s){const o=m(),r=i();return l.getEmailContent(o.query.mailbox,o.query.mailid,{context:"forward"}).then(t=>{r.value=t.data}),(t,c)=>(e(),p(a(n),{"original-email":r.value},null,8,["original-email"]))}};export{O as default};