modoboa 2.4.9__py3-none-any.whl → 2.4.10__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 (151) hide show
  1. modoboa/admin/api/v1/serializers.py +7 -1
  2. modoboa/admin/api/v2/serializers.py +4 -2
  3. modoboa/core/api/v2/serializers.py +34 -15
  4. modoboa/core/app_settings.py +1 -1
  5. modoboa/core/management/commands/load_initial_data.py +7 -15
  6. modoboa/core/migrations/0025_rename_user_email_is_active_core_user_email_c0c03f_idx.py +5 -5
  7. modoboa/frontend_dist/assets/{AccountAliasForm-DO4IpT1M.js → AccountAliasForm-DVXatAhB.js} +1 -1
  8. modoboa/frontend_dist/assets/{AccountEditView-BLA0CnKd.js → AccountEditView-DmvQjxpx.js} +1 -1
  9. modoboa/frontend_dist/assets/AccountLayout-OGtZvlHR.js +1 -0
  10. modoboa/frontend_dist/assets/{AccountPasswordSubForm-D9xU4Or7.js → AccountPasswordSubForm-g3IEGrgM.js} +1 -1
  11. modoboa/frontend_dist/assets/{AccountView-DegeD2uG.js → AccountView-DsxYqr3k.js} +1 -1
  12. modoboa/frontend_dist/assets/{AddressBook-CJM-ajGg.js → AddressBook-3RoKiKon.js} +1 -1
  13. modoboa/frontend_dist/assets/{AdminLayout-CTbzqJSq.js → AdminLayout-CWfn8zaQ.js} +1 -1
  14. modoboa/frontend_dist/assets/{AlarmsView-CpIExehE.js → AlarmsView-D3Mh8ntf.js} +1 -1
  15. modoboa/frontend_dist/assets/{AliasEditView-Bu0rnLCQ.js → AliasEditView-C15eUZ11.js} +1 -1
  16. modoboa/frontend_dist/assets/{AliasRecipientForm-CGuaOz6K.js → AliasRecipientForm-DVZXWaUX.js} +1 -1
  17. modoboa/frontend_dist/assets/{AliasView-Cdwd7AvE.js → AliasView-Cyvc5vMb.js} +1 -1
  18. modoboa/frontend_dist/assets/{AuditTrailView-Dn1B2S23.js → AuditTrailView-LI2XuLLn.js} +1 -1
  19. modoboa/frontend_dist/assets/{CalendarView-CV-DAWtd.js → CalendarView-BpOlPh3f.js} +1 -1
  20. modoboa/frontend_dist/assets/{ChoiceField-BS45Bjds.js → ChoiceField-7eU7c_rI.js} +1 -1
  21. modoboa/frontend_dist/assets/{ComposeEmailForm-22JKKl9M.js → ComposeEmailForm-CNfI7ept.js} +1 -1
  22. modoboa/frontend_dist/assets/ComposeEmailView-B866Xsrc.js +1 -0
  23. modoboa/frontend_dist/assets/{ConfirmDialog-BLu1kBWp.js → ConfirmDialog-BvqxQsD1.js} +1 -1
  24. modoboa/frontend_dist/assets/ConnectedLayout-BQ3ug6Jh.js +1 -0
  25. modoboa/frontend_dist/assets/{ConnectedLayout-AhwwAZvE.css → ConnectedLayout-BaJZ3BeR.css} +1 -1
  26. modoboa/frontend_dist/assets/CreationForm-C9Kh05ax.js +1 -0
  27. modoboa/frontend_dist/assets/CreationForm-HaiQhqwK.css +1 -0
  28. modoboa/frontend_dist/assets/{DashboardView-CubvMqxt.js → DashboardView-Cw-gIcuB.js} +1 -1
  29. modoboa/frontend_dist/assets/{DomainAdminList-B0z8fRmf.js → DomainAdminList-CsWUNKVk.js} +1 -1
  30. modoboa/frontend_dist/assets/DomainEditView-DocxeOeW.js +1 -0
  31. modoboa/frontend_dist/assets/DomainTransportForm-DPnPGBOp.js +1 -0
  32. modoboa/frontend_dist/assets/{DomainView-DCfSLvj-.css → DomainView-BDKoBFYr.css} +1 -1
  33. modoboa/frontend_dist/assets/DomainView-Djc_0PsF.js +5 -0
  34. modoboa/frontend_dist/assets/DomainsView-B-Lxru7P.js +1 -0
  35. modoboa/frontend_dist/assets/{DomainsView-BUgJLN9o.css → DomainsView-DasJ0NdZ.css} +1 -1
  36. modoboa/frontend_dist/assets/{EmailField-phdi2rhQ.js → EmailField-BEKxuYni.js} +1 -1
  37. modoboa/frontend_dist/assets/{EmailView-B8eqs4jh.js → EmailView-BsR1Wes5.js} +1 -1
  38. modoboa/frontend_dist/assets/EmptyLayout-BzPFOeLU.js +1 -0
  39. modoboa/frontend_dist/assets/{FiltersView-Dq_lXOZQ.js → FiltersView-5rmpC5cC.js} +1 -1
  40. modoboa/frontend_dist/assets/ForwardEmailView-D7MbetcT.js +1 -0
  41. modoboa/frontend_dist/assets/{HtmlEditor-KH0pmxrK.js → HtmlEditor-uM4AtIGi.js} +1 -1
  42. modoboa/frontend_dist/assets/IdentitiesView-BqjD9Lue.js +1 -0
  43. modoboa/frontend_dist/assets/IdentitiesView-jmuItyMZ.css +1 -0
  44. modoboa/frontend_dist/assets/{InformationView-DlwtlpvG.js → InformationView-CghcvPn2.js} +1 -1
  45. modoboa/frontend_dist/assets/{LoadingData-BYDZn1pb.js → LoadingData-CVD2Aen8.js} +1 -1
  46. modoboa/frontend_dist/assets/{LoginCallbackView-xSv3LV4_.js → LoginCallbackView-sWzBke1g.js} +1 -1
  47. modoboa/frontend_dist/assets/{LoginView-R5FtOIzW.js → LoginView-wmN73W0f.js} +1 -1
  48. modoboa/frontend_dist/assets/{MailboxView-esEw0ueS.js → MailboxView-T_p-_ZtJ.js} +1 -1
  49. modoboa/frontend_dist/assets/{MenuItems-Bck8ixGf.js → MenuItems-kHCMzR5E.js} +1 -1
  50. modoboa/frontend_dist/assets/{MessagesView-Dyg8Y4bi.js → MessagesView-Cerv3xsy.js} +1 -1
  51. modoboa/frontend_dist/assets/{MigrationsView-BHTt1qeH.js → MigrationsView-7kjqPyYU.js} +1 -1
  52. modoboa/frontend_dist/assets/Modoboa_RVB-BLEU-SANS-pKrnjsR_.png +0 -0
  53. modoboa/frontend_dist/assets/{ParametersForm-Bx5J7UU0.js → ParametersForm-BCeQljir.js} +1 -1
  54. modoboa/frontend_dist/assets/ParametersView-DspBxVMV.js +1 -0
  55. modoboa/frontend_dist/assets/ParametersView-Dy0H5ep1.js +1 -0
  56. modoboa/frontend_dist/assets/{ProviderEditView-d2fBym_r.js → ProviderEditView-DDLMOylC.js} +1 -1
  57. modoboa/frontend_dist/assets/{ProviderGeneralForm-C9jkYxB7.js → ProviderGeneralForm-BwOSKNHK.js} +1 -1
  58. modoboa/frontend_dist/assets/{ProvidersView-CjKsqSYV.js → ProvidersView-C99UD0WB.js} +1 -1
  59. modoboa/frontend_dist/assets/ReplyEmailView-DAPBHldd.js +1 -0
  60. modoboa/frontend_dist/assets/{ResourcesForm-RZNnt_x1.js → ResourcesForm-D87PHeH0.js} +1 -1
  61. modoboa/frontend_dist/assets/{SettingsView-TStQqZWd.js → SettingsView-OxDo9wNd.js} +1 -1
  62. modoboa/frontend_dist/assets/{StatisticsView-CABa0tgU.js → StatisticsView-CM__Eqku.js} +1 -1
  63. modoboa/frontend_dist/assets/{TimeSerieChart-BjM9PGIT.js → TimeSerieChart-C6j0uYR_.js} +1 -1
  64. modoboa/frontend_dist/assets/UserLayout-CckCGnPS.js +1 -0
  65. modoboa/frontend_dist/assets/{VAlert-DSMD0lqo.js → VAlert-B7mzOJIO.js} +1 -1
  66. modoboa/frontend_dist/assets/{VApp-D2FuKvLN.js → VApp-BKxnjOoi.js} +1 -1
  67. modoboa/frontend_dist/assets/{VAutocomplete-CQ5LL_Nk.js → VAutocomplete-Cc4_tcl1.js} +1 -1
  68. modoboa/frontend_dist/assets/{VAvatar-DbAmPjyA.js → VAvatar-BAgTUIvX.js} +1 -1
  69. modoboa/frontend_dist/assets/{VCard-BGXTuaE-.js → VCard-DFWiFORP.js} +1 -1
  70. modoboa/frontend_dist/assets/{VCheckbox-BM1QzY5m.js → VCheckbox-CKsH_vq3.js} +1 -1
  71. modoboa/frontend_dist/assets/{VCheckboxBtn-DdHQE-gt.js → VCheckboxBtn-j7di4leN.js} +1 -1
  72. modoboa/frontend_dist/assets/{VChip-Bm7znPZ6.js → VChip-nZ0uhY7t.js} +1 -1
  73. modoboa/frontend_dist/assets/{VColorPicker-CYCnVu_Z.js → VColorPicker-Os2aeP6J.js} +1 -1
  74. modoboa/frontend_dist/assets/{VContainer-B8HjqhNU.js → VContainer-Btam4lk2.js} +1 -1
  75. modoboa/frontend_dist/assets/{VDataTable-Etpc99CI.js → VDataTable-D_0_xJTl.js} +1 -1
  76. modoboa/frontend_dist/assets/{VDataTableServer-BNNG6dBx.js → VDataTableServer-BWTt4Mzi.js} +1 -1
  77. modoboa/frontend_dist/assets/{VDataTableVirtual-D9Km3t6e.js → VDataTableVirtual-BwVmkt4u.js} +1 -1
  78. modoboa/frontend_dist/assets/{VDialog-0NvxFg1X.js → VDialog-CZqM2Ofu.js} +1 -1
  79. modoboa/frontend_dist/assets/{VExpansionPanels-eED_hKBs.js → VExpansionPanels-B5D6GOa3.js} +1 -1
  80. modoboa/frontend_dist/assets/{VFileInput-COIdDRxq.js → VFileInput-Cv9DIPki.js} +1 -1
  81. modoboa/frontend_dist/assets/{VForm-DwwrfSN8.js → VForm-CpoZf60D.js} +1 -1
  82. modoboa/frontend_dist/assets/{VMenu-CTyyRlRb.js → VMenu-B_dVqOmo.js} +1 -1
  83. modoboa/frontend_dist/assets/{VPicker-3NOHH3h1.js → VPicker-CXkIGEze.js} +1 -1
  84. modoboa/frontend_dist/assets/{VProgressCircular-1VQzh5PK.js → VProgressCircular-CrEXxs7k.js} +1 -1
  85. modoboa/frontend_dist/assets/{VRadioGroup-CnRLqIcd.js → VRadioGroup-D8ypjYOO.js} +1 -1
  86. modoboa/frontend_dist/assets/{VRow-DgX40uiD.js → VRow-C_Ydf6yr.js} +1 -1
  87. modoboa/frontend_dist/assets/{VSelect-CeY-emKK.js → VSelect-CS51PDEt.js} +1 -1
  88. modoboa/frontend_dist/assets/{VSelectionControl-BYdVI5Q9.js → VSelectionControl-DiOqtY38.js} +1 -1
  89. modoboa/frontend_dist/assets/{VSheet-C8P69LA8.js → VSheet-5VVWtHvs.js} +1 -1
  90. modoboa/frontend_dist/assets/VSpacer-C6PZ3X24.js +1 -0
  91. modoboa/frontend_dist/assets/{VSwitch-BSifpScd.js → VSwitch-Chg5o-Cp.js} +1 -1
  92. modoboa/frontend_dist/assets/{VTable-BeyU0Uhj.js → VTable-KsiZ3cBz.js} +1 -1
  93. modoboa/frontend_dist/assets/{VTabs-Dzq8prKm.js → VTabs-tNrJIYO0.js} +1 -1
  94. modoboa/frontend_dist/assets/{VTextField-FBM5XwC5.js → VTextField-CLwRV0Cb.js} +1 -1
  95. modoboa/frontend_dist/assets/{VTextarea-BwkVlXPS.js → VTextarea-Di8jbl8m.js} +1 -1
  96. modoboa/frontend_dist/assets/{VToolbar-AQXTYlxS.js → VToolbar-CGwhgdmI.js} +1 -1
  97. modoboa/frontend_dist/assets/{VWindowItem-p9SJ1V9Y.js → VWindowItem-wWSFAGI-.js} +1 -1
  98. modoboa/frontend_dist/assets/{WebmailLayout-E3DJFEW2.js → WebmailLayout-DsYThBrz.js} +1 -1
  99. modoboa/frontend_dist/assets/{admin-B0fFM9gW.js → admin-CJVLMHh9.js} +1 -1
  100. modoboa/frontend_dist/assets/{aliases-C-hC9If-.js → aliases-c3n-dCV_.js} +1 -1
  101. modoboa/frontend_dist/assets/{contacts-DZDbAN4o.js → contacts-Bqckz8sr.js} +1 -1
  102. modoboa/frontend_dist/assets/{domains-CWdc-ODs.js → domains-nBMR-fRf.js} +1 -1
  103. modoboa/frontend_dist/assets/{domains.store-B6sc48r9.js → domains.store-ChZgLcqP.js} +1 -1
  104. modoboa/frontend_dist/assets/{filter-BSw3r225.js → filter-D7NrAf6a.js} +1 -1
  105. modoboa/frontend_dist/assets/{forwardRefs-Cn7kyt_f.js → forwardRefs-Cpc3YYl6.js} +1 -1
  106. modoboa/frontend_dist/assets/{global.store-IwCGIFoO.js → global.store-DUP26-A5.js} +1 -1
  107. modoboa/frontend_dist/assets/importExport-Dn9vYw7T.js +1 -0
  108. modoboa/frontend_dist/assets/{index-BCUdq-Zu.js → index-DV9Li2cg.js} +2 -2
  109. modoboa/frontend_dist/assets/{index-CJ87ZZG1.js → index-DzL89N4E.js} +1 -1
  110. modoboa/frontend_dist/assets/{layout-CLqGxWz4.js → layout-CHO37cA6.js} +1 -1
  111. modoboa/frontend_dist/assets/{layout.store-CSmWF8Cf.js → layout.store-BxBoBlgf.js} +1 -1
  112. modoboa/frontend_dist/assets/{logs-DIXCC1C0.js → logs-DrTzylW7.js} +1 -1
  113. modoboa/frontend_dist/assets/{parameters-u6VE5cq8.js → parameters-Lgiqp7aw.js} +1 -1
  114. modoboa/frontend_dist/assets/{parameters.store-D4x8W7LS.js → parameters.store-C9k9DuTj.js} +1 -1
  115. modoboa/frontend_dist/assets/{permissions-C7XVO62l.js → permissions-mL5hLHcW.js} +1 -1
  116. modoboa/frontend_dist/assets/{ssrBoot-B-x5LB2_.js → ssrBoot-BsxW6uW4.js} +1 -1
  117. modoboa/frontend_dist/assets/{tag-DCSJ2lri.js → tag-CFK9dzMJ.js} +1 -1
  118. modoboa/frontend_dist/assets/transports-TO08iTXJ.js +1 -0
  119. modoboa/frontend_dist/assets/{webmail-D2rioayn.js → webmail-KrD8ZhNM.js} +1 -1
  120. modoboa/frontend_dist/config.json +1 -3
  121. modoboa/frontend_dist/index.html +1 -1
  122. modoboa/maillog/management/commands/logparser.py +1 -0
  123. modoboa/pdfcredentials/api/v2/serializers.py +17 -5
  124. modoboa/pdfcredentials/api/v2/tests.py +28 -0
  125. modoboa/pdfcredentials/app_settings.py +1 -1
  126. {modoboa-2.4.9.dist-info → modoboa-2.4.10.dist-info}/METADATA +2 -2
  127. {modoboa-2.4.9.dist-info → modoboa-2.4.10.dist-info}/RECORD +132 -130
  128. modoboa/frontend_dist/assets/AccountLayout-DMwguvdC.js +0 -1
  129. modoboa/frontend_dist/assets/ComposeEmailView-B6Tbw3MS.js +0 -1
  130. modoboa/frontend_dist/assets/ConnectedLayout-CNzvhsb9.js +0 -1
  131. modoboa/frontend_dist/assets/CreationForm-ChgnxngD.js +0 -1
  132. modoboa/frontend_dist/assets/CreationForm-DLumMdUy.css +0 -1
  133. modoboa/frontend_dist/assets/DomainEditView-DrZ9__pt.js +0 -1
  134. modoboa/frontend_dist/assets/DomainTransportForm-DEsm5zOa.js +0 -1
  135. modoboa/frontend_dist/assets/DomainView-RmJalGk7.js +0 -5
  136. modoboa/frontend_dist/assets/DomainsView-DzL9wtff.js +0 -1
  137. modoboa/frontend_dist/assets/EmptyLayout-FS-cJHKI.js +0 -1
  138. modoboa/frontend_dist/assets/ForwardEmailView-Lpw9sqB4.js +0 -1
  139. modoboa/frontend_dist/assets/IdentitiesView-7nHABB9n.js +0 -1
  140. modoboa/frontend_dist/assets/IdentitiesView-cvIq8q24.css +0 -1
  141. modoboa/frontend_dist/assets/ParametersView-Bkw5_CyJ.js +0 -1
  142. modoboa/frontend_dist/assets/ParametersView-CyAAGtfU.js +0 -1
  143. modoboa/frontend_dist/assets/ReplyEmailView-DcUkD2HR.js +0 -1
  144. modoboa/frontend_dist/assets/UserLayout-C6_Zjp6P.js +0 -1
  145. modoboa/frontend_dist/assets/VSpacer-pLqQLLwB.js +0 -1
  146. modoboa/frontend_dist/assets/importExport-B7mBfHxZ.js +0 -1
  147. {modoboa-2.4.9.data → modoboa-2.4.10.data}/scripts/modoboa-admin.py +0 -0
  148. {modoboa-2.4.9.dist-info → modoboa-2.4.10.dist-info}/WHEEL +0 -0
  149. {modoboa-2.4.9.dist-info → modoboa-2.4.10.dist-info}/entry_points.txt +0 -0
  150. {modoboa-2.4.9.dist-info → modoboa-2.4.10.dist-info}/licenses/LICENSE +0 -0
  151. {modoboa-2.4.9.dist-info → modoboa-2.4.10.dist-info}/top_level.txt +0 -0
@@ -1 +0,0 @@
1
- import{C as M}from"./ChoiceField-BS45Bjds.js";import{b as g,h as R,g as b,c as x,o as v,w as h,a as r,f as a,e as D,_ as K,d as S,m as q,q as C,t as N,F as U,G as T}from"./index-BCUdq-Zu.js";import{r as y,V as $}from"./VForm-DwwrfSN8.js";import{V as k}from"./VTextField-FBM5XwC5.js";import{V as B}from"./VSwitch-BSifpScd.js";import{V as j}from"./VAutocomplete-CQ5LL_Nk.js";import{V as A}from"./VCheckbox-BM1QzY5m.js";const X={__name:"DomainGeneralForm",props:{modelValue:{type:Object,default:null}},emits:["update:modelValue"],setup(V,{expose:c,emit:o}){const{$gettext:m}=g(),i=V,t=o,u=R({get(){return i.modelValue},set(_){t("update:modelValue",_)}}),l=b();function e(_){_==="relaydomain"&&u.value.transport==null&&(u.value.transport={})}const s=[{label:m("Domain"),icon:"mdi-earth",value:"domain"},{label:m("Relay domain"),icon:"mdi-earth",value:"relaydomain"}];return c({vFormRef:l}),(_,p)=>(v(),x($,{ref_key:"vFormRef",ref:l},{default:h(()=>[r(k,{modelValue:u.value.name,"onUpdate:modelValue":p[0]||(p[0]=d=>u.value.name=d),label:a(m)("Domain name (ex: domain.tld)"),rules:[a(y).required],variant:"outlined",class:"mb-5"},null,8,["modelValue","label","rules"]),r(a(M),{modelValue:u.value.type,"onUpdate:modelValue":[p[1]||(p[1]=d=>u.value.type=d),e],label:a(m)("Type"),choices:s},null,8,["modelValue","label"]),r(B,{modelValue:u.value.enabled,"onUpdate:modelValue":p[2]||(p[2]=d=>u.value.enabled=d),label:a(m)("Enabled"),hint:a(m)("Control if this domain will be allowed to send and receive messages"),color:"primary","persistent-hint":""},null,8,["modelValue","label","hint"])]),_:1},512))}},Y={__name:"DomainDNSForm",props:{modelValue:{type:Object,default:()=>{}}},setup(V,{expose:c}){const{$gettext:o}=g(),m=V,i=b(),t=R(()=>m.modelValue),u=b([{label:"1024",value:1024},{label:"2048",value:2048},{label:"4096",value:4096}]);return c({vFormRef:i}),(l,e)=>(v(),x($,{ref_key:"vFormRef",ref:i},{default:h(()=>[D("div",null,[r(B,{modelValue:t.value.enable_dns_checks,"onUpdate:modelValue":e[0]||(e[0]=s=>t.value.enable_dns_checks=s),label:a(o)("Enable DNS checks"),color:"primary"},null,8,["modelValue","label"]),r(B,{modelValue:t.value.enable_dkim,"onUpdate:modelValue":e[1]||(e[1]=s=>t.value.enable_dkim=s),label:a(o)("Enable DKIM signing"),color:"primary"},null,8,["modelValue","label"]),r(k,{modelValue:t.value.dkim_key_selector,"onUpdate:modelValue":e[2]||(e[2]=s=>t.value.dkim_key_selector=s),label:a(o)("DKIM key selector"),disabled:!t.value.enable_dkim,variant:"outlined"},null,8,["modelValue","label","disabled"]),r(a(M),{modelValue:t.value.dkim_key_length,"onUpdate:modelValue":e[3]||(e[3]=s=>t.value.dkim_key_length=s),label:a(o)("DKIM key length"),choices:u.value,disabled:!t.value.enable_dkim},null,8,["modelValue","label","choices","disabled"])])]),_:1},512))}},Z={__name:"DomainLimitationsForm",props:{modelValue:{type:Object,default:null}},setup(V,{expose:c}){const{$gettext:o}=g(),m=V,i=b(),t=R(()=>m.modelValue);return c({vFormRef:i}),(u,l)=>(v(),x($,{ref_key:"vFormRef",ref:i},{default:h(()=>[r(k,{modelValue:t.value.quota,"onUpdate:modelValue":l[0]||(l[0]=e=>t.value.quota=e),label:a(o)("Quota"),hint:a(o)("Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. A value of 0 means no quota."),"persistent-hint":"",class:"mb-4",variant:"outlined",rules:[a(y).required]},null,8,["modelValue","label","hint","rules"]),r(k,{modelValue:t.value.default_mailbox_quota,"onUpdate:modelValue":l[1]||(l[1]=e=>t.value.default_mailbox_quota=e),label:a(o)("Default mailbox quota"),hint:a(o)("Default quota applied to mailboxes. Can be expressed in KB, MB (default) or GB. A value of 0 means no quota."),"persistent-hint":"",class:"mb-4",variant:"outlined",rules:[a(y).required]},null,8,["modelValue","label","hint","rules"]),r(k,{modelValue:t.value.message_limit,"onUpdate:modelValue":l[2]||(l[2]=e=>t.value.message_limit=e),label:a(o)("Message sending limit"),hint:a(o)("Number of messages this domain can send per day. Leave empty for no limit."),type:"number","persistent-hint":"",variant:"outlined",rules:[a(y).numericOrNull]},null,8,["modelValue","label","hint","rules"])]),_:1},512))}},G="transports",O={getAll(){return K.get(`/${G}/`)}},E={class:"m-label"},I={class:"m-label"},ee={__name:"DomainTransportForm",props:{modelValue:{type:Object,default:()=>{}}},emits:["update:modelValue"],setup(V,{expose:c,emit:o}){const{$gettext:m}=g(),i=V,t=o,u=b(),l=b({}),e=b(),s=b([]);function _(d){for(const f of e.value.settings)if(f.type==="int"){const n=`${e.value.name}_${f.name}`;d.transport.settings[n]=parseInt(d.transport.settings[n])}}function p(){l.value.service=e.value.name,t("update:modelValue",l.value)}return S(()=>{l.value={...i.modelValue},l.value.settings||(l.value.settings={}),O.getAll().then(d=>{s.value=d.data,l.value.service&&(e.value=s.value.find(f=>f.name===l.value.service))})}),c({checkSettingTypes:_,service:e,vFormRef:u}),(d,f)=>(v(),x($,{ref_key:"vFormRef",ref:u},{default:h(()=>[D("label",E,N(a(m)("Service")),1),r(j,{modelValue:e.value,"onUpdate:modelValue":f[0]||(f[0]=n=>e.value=n),items:s.value,"item-title":"name","return-object":"",variant:"outlined",rules:[a(y).required]},null,8,["modelValue","items","rules"]),e.value?(v(!0),q(U,{key:0},T(e.value.settings,(n,w)=>(v(),q(U,{key:w},[n.type==="str"||n.type==="int"?(v(),q(U,{key:0},[D("label",I,N(n.label),1),r(k,{modelValue:l.value.settings[`${e.value.name}_${n.name}`],"onUpdate:modelValue":[F=>l.value.settings[`${e.value.name}_${n.name}`]=F,p],variant:"outlined",type:l.value.type==="int"?"number":"text",rules:[!!n.required||a(y).required]},null,8,["modelValue","onUpdate:modelValue","type","rules"])],64)):n.type==="boolean"?(v(),x(A,{key:1,modelValue:l.value.settings[`${e.value.name}_${n.name}`],"onUpdate:modelValue":[F=>l.value.settings[`${e.value.name}_${n.name}`]=F,p],label:n.label},null,8,["modelValue","onUpdate:modelValue","label"])):C("",!0)],64))),128)):C("",!0)]),_:1},512))}};export{ee as _,Z as a,Y as b,X as c};
@@ -1,5 +0,0 @@
1
- import{_ as ve}from"./DomainAdminList-B0z8fRmf.js";import{c as O}from"./colors-DoZdCu1D.js";import{b as R,m as x,o as r,e as n,a as t,l as i,t as l,J as ie,w as e,F as j,G as ee,f as o,g as k,K as J,h as G,d as _e,L as te,r as re,c as m,q as I,k as se,n as pe,M as ge}from"./index-BCUdq-Zu.js";import{f as U,V as C,d as ye}from"./VAvatar-DbAmPjyA.js";import{V as ke}from"./VTable-BeyU0Uhj.js";import{d as B}from"./domains-CWdc-ODs.js";import{V as ue,a as de}from"./VToolbar-AQXTYlxS.js";import{V as le}from"./VSpacer-pLqQLLwB.js";import{V as F,b as z,c as W,a as ce}from"./VCard-BGXTuaE-.js";import{V as b,a as c}from"./VRow-DgX40uiD.js";import{V as be}from"./VSheet-C8P69LA8.js";import{V as he,a as xe,b as we}from"./VExpansionPanels-eED_hKBs.js";import{V as S}from"./VAlert-DSMD0lqo.js";import{_ as Ve}from"./ConfirmDialog-BLu1kBWp.js";import{V as D}from"./VChip-Bm7znPZ6.js";import{V as De}from"./VDataTableVirtual-D9Km3t6e.js";import{V as oe}from"./VDialog-0NvxFg1X.js";import{L as $e}from"./LoadingData-BYDZn1pb.js";import{_ as Ce}from"./ResourcesForm-RZNnt_x1.js";import{T as ne}from"./TimeSerieChart-BjM9PGIT.js";import{V as Me,a as Ne,b as Q,c as Z}from"./VTabs-Dzq8prKm.js";import"./VAutocomplete-CQ5LL_Nk.js";import"./VSelect-CeY-emKK.js";import"./VTextField-FBM5XwC5.js";import"./tag-DCSJ2lri.js";import"./VProgressCircular-1VQzh5PK.js";import"./forwardRefs-Cn7kyt_f.js";import"./ssrBoot-B-x5LB2_.js";import"./VMenu-CTyyRlRb.js";import"./VCheckboxBtn-DdHQE-gt.js";import"./VSelectionControl-BYdVI5Q9.js";import"./filter-BSw3r225.js";/* empty css */import"./VDataTable-Etpc99CI.js";import"./VContainer-B8HjqhNU.js";import"./VForm-DwwrfSN8.js";import"./VPicker-3NOHH3h1.js";import"./VWindowItem-p9SJ1V9Y.js";const Ie={class:"text-h6"},Te={width:"40%"},Se={class:"text-white"},Ke={class:"text-white"},Ae={class:"text-white"},Pe={class:"text-white"},q={__name:"DmarcSourceTable",props:{title:{type:String,default:""},color:{type:String,default:""},total:{type:Number,default:null},sources:{type:Object,default:null}},setup(s){const{$gettext:a}=R();return(y,d)=>(r(),x("div",null,[n("div",Ie,[i(l(s.title)+" ",1),n("span",{class:ie(`text-${s.color}-lighten-2`)},l(s.total),3)]),t(ke,null,{default:e(()=>[n("tbody",null,[(r(!0),x(j,null,ee(s.sources,(u,f)=>(r(),x(j,{key:f},[n("tr",null,[n("th",Te,l(f),1),n("th",null,l(o(a)("Total")),1),d[0]||(d[0]=n("th",null,"SPF",-1)),d[1]||(d[1]=n("th",null,"DKIM",-1))]),(r(!0),x(j,null,ee(u,(v,w)=>(r(),x("tr",{key:w},[n("td",null,l(w),1),n("td",null,l(v.total),1),n("td",null,[t(U,{color:"green lighten-2",size:"24"},{default:e(()=>[n("span",Se,l(v.spf.success),1)]),_:2},1024),t(U,{color:"red lighten-2 ml-1",size:"24"},{default:e(()=>[n("span",Ke,l(v.spf.failure),1)]),_:2},1024)]),n("td",null,[t(U,{color:"green lighten-2",size:"24"},{default:e(()=>[n("span",Ae,l(v.dkim.success),1)]),_:2},1024),t(U,{color:"red lighten-2 ml-1",size:"24"},{default:e(()=>[n("span",Pe,l(v.dkim.failure),1)]),_:2},1024)])]))),128))],64))),128))])]),_:1})]))}},Fe={key:0},ze={class:"mx-2"},Re={class:"text-subtitle-1"},Le={key:1},je={__name:"DmarcAligmentChart",props:{domain:{type:Object,default:()=>null}},setup(s){const{$gettext:a}=R(),y=["aligned","trusted","forwarded","failed"],d=s,u=k({colors:[O.green.lighten2,O.orange.lighten2,O.blue.lighten2,O.red.lighten2],labels:[a("Fully aligned"),a("Partially aligned"),a("Forwarded"),a("Failed")],legend:{position:"bottom"}}),f=k(null),v=k([{key:"total",label:a("Total"),color:"primary lighten-2"},{key:"aligned",label:a("Fully aligned"),color:"green lighten-2"},{key:"trusted",label:a("Partially aligned"),color:"orange lighten-2"},{key:"forwarded",label:a("Forwarded"),color:"blue lighten-2"},{key:"failed",label:a("Failed"),color:"red lighten-2"}]),w=J.now(),_=k(w.year),p=k(w.weekNumber),K=k(!1),L=k(!1),E=k(null),A=k([]),M=k({}),X=G(()=>J.fromObject({weekYear:_.value,weekNumber:p.value}).startOf("week")),N=G(()=>J.fromObject({weekYear:_.value,weekNumber:p.value}).endOf("week"));function g(P){let h="";for(const T of P.split(" "))h!==""&&(h+=" "),h+="text-"+T;return h}function Y(){p.value===52?(_.value+=1,p.value=1):p.value+=1}function $(){p.value===1?(_.value-=1,p.value=52):p.value-=1}function H(){if(L.value)return;const P=`${_.value}-${p.value}`;L.value=!0,B.getDomainDmarcAlignment(d.domain.pk,P).then(h=>{if(L.value=!1,h.status===204){K.value=!0;return}M.value={total:0},f.value=h.data,A.value=[];for(const T of y){let V=0;for(const ae in h.data[T])for(const fe in h.data[T][ae])V+=h.data[T][ae][fe].total;M.value.total+=V,M.value[T]=V,A.value.push(V)}})}return _e(()=>H()),te(p,()=>{H()}),te(_,()=>{H()}),(P,h)=>{const T=re("apexchart");return f.value?(r(),x("div",Fe,[t(z,null,{default:e(()=>[t(ue,{dense:"",elevation:"0",class:"mr-2"},{default:e(()=>[t(de,null,{default:e(()=>[i(l(o(a)("Alignment")),1)]),_:1}),t(le),t(C,{icon:"mdi-arrow-left",size:"x-small",onClick:$}),n("span",ze,l(X.value.toLocaleString())+" - "+l(N.value.toLocaleString()),1),t(C,{icon:"mdi-arrow-right",size:"x-small",onClick:Y})]),_:1}),t(F,null,{default:e(()=>[t(b,null,{default:e(()=>[t(c,{cols:"5"},{default:e(()=>[A.value?(r(),m(T,{key:0,type:"pie",height:"350",options:u.value,series:A.value},null,8,["options","series"])):I("",!0)]),_:1}),t(c,{cols:"7"},{default:e(()=>[t(b,null,{default:e(()=>[(r(!0),x(j,null,ee(v.value,V=>(r(),m(c,{key:V.key,cols:"6"},{default:e(()=>[t(be,{outlined:"",color:V.color,rounded:""},{default:e(()=>[t(z,{outlined:"",class:"pa-10 text-center"},{default:e(()=>[n("span",{class:ie("text-h4 "+g(V.color))},l(M.value[V.key]),3),h[1]||(h[1]=n("br",null,null,-1)),n("span",Re,l(V.label),1)]),_:2,__:[1]},1024)]),_:2},1032,["color"])]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(we,{modelValue:E.value,"onUpdate:modelValue":h[0]||(h[0]=V=>E.value=V),class:"mt-2"},{default:e(()=>[t(he,{title:o(a)("Detail")},{default:e(()=>[t(xe,null,{default:e(()=>[t(q,{title:o(a)("Trusted sources"),color:"green",total:M.value.aligned,sources:f.value.aligned},null,8,["title","total","sources"]),t(q,{title:o(a)("Partially trusted sources / Forwarders"),color:"orange",total:M.value.trusted,sources:f.value.trusted,class:"mt-4"},null,8,["title","total","sources"]),t(q,{title:o(a)("Forwarders with ARC"),color:"blue",total:M.value.forwarded,sources:f.value.forwarded,class:"mt-4"},null,8,["title","total","sources"]),t(q,{title:o(a)("Unknown sources / Threats"),color:"red",total:M.value.failed,sources:f.value.failed,class:"mt-4"},null,8,["title","total","sources"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])])):(r(),x("div",Le,[K.value?(r(),m(S,{key:0,type:"info",variant:"outlined",prominent:"",border:"start",class:"mt-6"},{default:e(()=>[n("div",null,l(o(a)("DMARC support does not seem to be enabled for this domain.")),1),n("div",null,l(o(a)("If you configured it recently, please wait for the first report to be received and processed.")),1)]),_:1})):I("",!0)]))}}},Be={id:"dkimdns",class:"dkim"},me={__name:"DKIMKeyViewer",props:{domain:{type:Object,default:null}},setup(s){const a=s,y=G(()=>{let u=`v=DKIM1;k=rsa;p=${a.domain.dkim_public_key}`;const f=[];for(;u.length>0;)if(u.length>74)f.push(` "${u.substring(0,74)}"`),u=u.substring(74);else{f.push(` "${u}"`);break}return f.join(`
2
- `)});function d(){navigator.clipboard.writeText(document.getElementById("dkimdns").textContent)}return(u,f)=>(r(),x("button",{class:"dkimbutton",onClick:f[0]||(f[0]=v=>d())},[n("pre",Be,l(s.domain.dkim_key_selector)+"._domainkey."+l(s.domain.name)+". IN TXT ("+l(y.value)+`)
3
- }})`,1)]))}},Ee={class:"headline"},Oe={id:"dkimpub",class:"dkim"},Ue={__name:"DomainDKIMKey",props:{domain:{type:Object,default:null}},emits:["close"],setup(s,{emit:a}){const{$gettext:y}=R(),d=a;function u(){navigator.clipboard.writeText(document.getElementById("dkimpub").textContent)}return(f,v)=>(r(),m(z,null,{default:e(()=>[t(W,null,{default:e(()=>[n("span",Ee,l(o(y)("DKIM public key for"))+" "+l(s.domain.name),1)]),_:1}),t(F,null,{default:e(()=>[n("p",null,l(o(y)("Raw format. Click to copy")),1),t(S,{border:"start","colored-border":"","border-color":"primary lighten-3",elevation:"2",dense:""},{default:e(()=>[n("button",{class:"dkimbutton",onClick:v[0]||(v[0]=w=>u())},[n("pre",Oe,l(s.domain.dkim_public_key),1)])]),_:1})]),_:1}),t(F,null,{default:e(()=>[n("p",null,l(o(y)("Bind/named format. Click to copy")),1),t(S,{border:"start","colored-border":"","border-color":"primary lighten-3",elevation:"2",dense:""},{default:e(()=>[t(me,{domain:s.domain},null,8,["domain"])]),_:1})]),_:1}),t(ce,null,{default:e(()=>[t(le),t(C,{onClick:v[1]||(v[1]=w=>d("close"))},{default:e(()=>[i(l(o(y)("Close")),1)]),_:1})]),_:1})]),_:1}))}},qe={class:"text-subtitle-1 text-grey-darken-2 mb-4"},Ge={class:"text-h6"},We={__name:"DomainDNSConfig",props:{domain:{type:Object,default:null}},emits:["close"],setup(s,{emit:a}){const y=a;return(d,u)=>(r(),m(z,null,{default:e(()=>[t(W,{class:"text-h5"},{default:e(()=>[n("span",null,l(d.$gettext("DNS configuration for "))+" "+l(s.domain.name),1)]),_:1}),t(F,null,{default:e(()=>[n("p",qe,l(d.$gettext("Here is an example of DNS configuration (bind format). Replace values between [ ] by the appropriate ones.")),1),t(S,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",color:"white"},{default:e(()=>[u[1]||(u[1]=n("div",{class:"text-h6"},"MX",-1)),n("pre",null,[i("mail."+l(s.domain.name)+". IN A ",1),n("strong",null,"["+l(d.$gettext("IP address of your Modoboa server"))+"]",1),i(`
4
- @ IN MX 10 mail.`+l(s.domain.name)+".",1)])]),_:1,__:[1]}),t(S,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",dense:"",color:"white"},{default:e(()=>u[2]||(u[2]=[n("div",{class:"text-h6"},"SPF",-1),n("pre",null,'@ IN TXT "v=spf1 mx ~all"',-1)])),_:1,__:[2]}),s.domain.enable_dkim&&s.domain.dkim_public_key?(r(),m(S,{key:0,class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",dense:"",color:"white"},{default:e(()=>[u[3]||(u[3]=n("div",{class:"text-h6"},"DKIM",-1)),t(me,{domain:s.domain},null,8,["domain"])]),_:1,__:[3]})):I("",!0),t(S,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",dense:"",color:"white"},{default:e(()=>[u[4]||(u[4]=n("div",{class:"text-h6"},"DMARC",-1)),n("pre",null,"_dmarc."+l(s.domain.name)+'. IN TXT "v=DMARC1; p=quarantine; pct=100;"',1)]),_:1,__:[4]}),t(S,{class:"mb-4",border:"start","border-color":"primary lighten-3",elevation:"2",dense:"",color:"white"},{default:e(()=>[n("div",Ge,l(d.$gettext("Auto configuration")),1),n("pre",null,[i("autoconfig."+l(s.domain.name)+". IN CNAME ",1),n("strong",null,"["+l(d.$gettext("hostname of your automx server"))+"]",1),i(`
5
- autodiscover.`+l(s.domain.name)+". IN CNAME ",1),n("strong",null,"["+l(d.$gettext("hostname of your automx server"))+"]",1)])]),_:1})]),_:1}),t(ce,null,{default:e(()=>[t(le),t(C,{onClick:u[0]||(u[0]=f=>y("close"))},{default:e(()=>[i(l(d.$gettext("Close")),1)]),_:1})]),_:1})]),_:1}))}},Xe=se(We,[["__scopeId","data-v-506783e1"]]),Ye={class:"overline"},He={class:"overline"},Je={key:4,class:"d-flex align-center flex-nowrap mt-4"},Qe={class:"text-subtitle-2"},Ze={class:"ml-6"},et={key:0},tt={key:1},lt={__name:"DNSDetail",props:{modelValue:{type:Object,default:null}},setup(s){const{$gettext:a}=R(),y=pe(),d=s,u=G(()=>d.modelValue),f=k(),v=k({}),w=k([{title:a("Name"),value:"name"},{title:a("Address"),value:"address"},{title:a("Updated"),value:"updated"}]),_=k(!1),p=k(!1),K=k(!1);function L(){navigator.clipboard.writeText(u.value.dkim_public_key),y.displayNotification({msg:a("DKIM key copied to clipboard"),type:"success"})}function E(){const N={dkim_private_key_path:""};B.patchDomain(u.value.pk,N).then(()=>{y.displayNotification({msg:a("A new key will be generated soon. Refresh the page in a moment to see it."),type:"success"}),u.value.dkim_private_key_path="",_.value=!1}).catch(()=>{_.value=!1})}function A(){_.value=!1}async function M(){_.value=!0,B.getDomainDNSDetail(u.value.pk).then(async N=>{v.value=N.data,await f.value.open(a("warning"),a("DKIM key does not seem to be generated yet or has failed. Do you want to requeue the job?"),{color:"warning",cancelLabel:a("No"),agreeLabel:a("Yes")})?E():A()})}function X(){f.value.open(a("Warning"),a("DKIM keys already exist for this domain. Do you want to overwrite them?"),{color:"error",cancelLabel:a("No"),agreeLabel:a("Yes")})}return te(u,N=>{N&&B.getDomainDNSDetail(N.pk).then(g=>{v.value=g.data})},{immediate:!0}),(N,g)=>{const Y=re("translate");return u.value?(r(),m(z,{key:0},{default:e(()=>[t(W,null,{default:e(()=>[g[6]||(g[6]=n("span",null," DNS ",-1)),t(C,{class:"ml-2",icon:"mdi-information-outline",title:o(a)("DNS configuration help"),variant:"text",density:"compact",onClick:g[0]||(g[0]=$=>p.value=!0)},null,8,["title"])]),_:1,__:[6]}),t(F,null,{default:e(()=>[t(Y,{class:"overline"},{default:e(()=>g[7]||(g[7]=[i("MX records")])),_:1,__:[7]}),u.value.dns_global_status=="pending"?(r(),m(b,{key:0},{default:e(()=>[t(c,null,{default:e(()=>[t(D,{color:"info",size:"small"},{default:e(()=>[i(l(o(a)("Pending")),1)]),_:1})]),_:1})]),_:1})):(r(),m(De,{key:1,headers:w.value,items:v.value.mx_records},{"item.updated":e(({item:$})=>[i(l(N.$date($.updated)),1)]),_:2},1032,["headers","items"])),n("div",Ye,l(o(a)("Auto configuration")),1),u.value.dns_global_status=="pending"?(r(),m(b,{key:2},{default:e(()=>[t(c,null,{default:e(()=>[t(D,{color:"info",size:"small"},{default:e(()=>[i(l(o(a)("Pending")),1)]),_:1})]),_:1})]),_:1})):(r(),x(j,{key:3},[t(b,null,{default:e(()=>[t(c,null,{default:e(()=>[v.value.autoconfig_record?(r(),m(D,{key:0,color:"success"},{default:e(()=>[i(l(o(a)("autoconfig record (Mozilla): %{ value }",{value:v.value.autoconfig_record.value})),1)]),_:1})):(r(),m(D,{key:1,color:"warning"},{default:e(()=>[i(l(o(a)("autoconfig record (Mozilla) not found")),1)]),_:1}))]),_:1}),t(c,null,{default:e(()=>[v.value.autodiscover_record?(r(),m(D,{key:0,color:"success"},{default:e(()=>[i(l(o(a)("autodiscover record (Microsoft): %{ value }",{value:v.value.autodiscover_record.value})),1)]),_:1})):(r(),m(D,{key:1,color:"warning"},{default:e(()=>[i(l(o(a)("autodiscover record (Microsoft) not found")),1)]),_:1}))]),_:1})]),_:1}),n("div",He,l(o(a)("Authentication")),1),t(b,null,{default:e(()=>[t(c,null,{default:e(()=>[v.value.spf_record?(r(),m(D,{key:0,color:"success"},{default:e(()=>[i(l(o(a)("SPF record found")),1)]),_:1})):(r(),m(D,{key:1,color:"error"},{default:e(()=>[i(l(o(a)("SPF record not found")),1)]),_:1}))]),_:1}),t(c,null,{default:e(()=>[v.value.dkim_record?(r(),m(D,{key:0,color:"success"},{default:e(()=>[i(l(o(a)("DKIM record found")),1)]),_:1})):(r(),m(D,{key:1,color:"error"},{default:e(()=>[i(l(o(a)("DKIM record not found")),1)]),_:1}))]),_:1}),t(c,null,{default:e(()=>[v.value.dmarc_record?(r(),m(D,{key:0,color:"success"},{default:e(()=>[i(l(o(a)("DMARC record found")),1)]),_:1})):(r(),m(D,{key:1,color:"error"},{default:e(()=>[i(l(o(a)("DMARC record not found")),1)]),_:1}))]),_:1})]),_:1})],64)),u.value.enable_dkim?(r(),x("div",Je,[n("div",Qe,l(o(a)("DKIM key")),1),n("div",Ze,[u.value.dkim_private_key_path&&u.value.dkim_public_key?(r(),x("div",et,[t(C,{color:"primary",size:"small",onClick:g[1]||(g[1]=$=>K.value=!0)},{default:e(()=>[i(l(o(a)("Show key")),1)]),_:1}),t(C,{icon:"mdi-content-copy",variant:"text",class:"ml-2",title:o(a)("Copy key to clipboard"),onClick:L},null,8,["title"]),t(C,{icon:"mdi-refresh",title:o(a)("Generate a new DKIM key"),variant:"text",loading:_.value,onClick:X},null,8,["title","loading"])])):(r(),x("div",tt,[i(l(o(a)("Not generated"))+" ",1),t(C,{icon:"mdi-reload",color:"primary",variant:"text",loading:_.value,onClick:M},null,8,["loading"])]))])])):I("",!0)]),_:1}),t(oe,{modelValue:p.value,"onUpdate:modelValue":g[3]||(g[3]=$=>p.value=$),"max-width":"800px",persistent:""},{default:e(()=>[t(Xe,{domain:u.value,onClose:g[2]||(g[2]=$=>p.value=!1)},null,8,["domain"])]),_:1},8,["modelValue"]),t(oe,{modelValue:K.value,"onUpdate:modelValue":g[5]||(g[5]=$=>K.value=$),"max-width":"800px",persistent:""},{default:e(()=>[t(Ue,{domain:u.value,onClose:g[4]||(g[4]=$=>K.value=!1)},null,8,["domain"])]),_:1},8,["modelValue"]),t(Ve,{ref_key:"dialog",ref:f},null,512)]),_:1})):I("",!0)}}},at={class:"headline"},ot={__name:"DomainSummary",props:{domain:{type:Object,default:null}},setup(s){const{$gettext:a}=R();return(y,d)=>s.domain?(r(),m(z,{key:0},{default:e(()=>[t(W,null,{default:e(()=>[n("div",at,l(o(a)("General information")),1)]),_:1}),t(F,null,{default:e(()=>[t(b,null,{default:e(()=>[t(c,{cols:"6"},{default:e(()=>[i(l(o(a)("Creation date")),1)]),_:1}),t(c,{cols:"6"},{default:e(()=>[i(l(y.$date(s.domain.creation)),1)]),_:1})]),_:1}),t(b,null,{default:e(()=>[t(c,{cols:"6"},{default:e(()=>[i(l(o(a)("Last modification date")),1)]),_:1}),t(c,{cols:"6"},{default:e(()=>[i(l(y.$date(s.domain.last_modification)),1)]),_:1})]),_:1}),t(b,null,{default:e(()=>[t(c,{cols:"6"},{default:e(()=>[i(l(o(a)("Quota")),1)]),_:1}),s.domain.quota==="0"?(r(),m(c,{key:0,cols:"6"},{default:e(()=>[i(l(o(a)("Unlimited")),1)]),_:1})):(r(),m(c,{key:1,cols:"6"},{default:e(()=>[i(l(s.domain.quota)+" "+l(o(a)("MB")),1)]),_:1}))]),_:1}),t(b,null,{default:e(()=>[t(c,{cols:"6"},{default:e(()=>[i(l(o(a)("Default mailbox quota")),1)]),_:1}),s.domain.default_mailbox_quota==="0"?(r(),m(c,{key:0,cols:"6"},{default:e(()=>[i(l(o(a)("Unlimited")),1)]),_:1})):(r(),m(c,{key:1,cols:"6"},{default:e(()=>[i(l(s.domain.default_mailbox_quota)+" MB",1)]),_:1}))]),_:1}),s.domain.message_limit!==void 0?(r(),m(b,{key:0},{default:e(()=>[t(c,{cols:"6"},{default:e(()=>[i(l(o(a)("Daily sending limit")),1)]),_:1}),t(c,{cols:"6"},{default:e(()=>[i(l(s.domain.message_limit)+" "+l(o(a)("messages")),1)]),_:1})]),_:1})):I("",!0),t(b,null,{default:e(()=>[t(c,{cols:"6"},{default:e(()=>[i(l(o(a)("Mailboxes")),1)]),_:1}),t(c,{cols:"6"},{default:e(()=>[i(l(s.domain.mailbox_count),1)]),_:1})]),_:1}),t(b,null,{default:e(()=>[t(c,{cols:"6"},{default:e(()=>[i(l(o(a)("Aliases")),1)]),_:1}),t(c,{cols:"6"},{default:e(()=>[i(l(s.domain.mbalias_count),1)]),_:1})]),_:1}),t(b,null,{default:e(()=>[t(c,{cols:"6"},{default:e(()=>[i(l(o(a)("Enabled")),1)]),_:1}),t(c,{cols:"6"},{default:e(()=>[t(ye,{color:s.domain.enabled?"success":"error",icon:s.domain.enabled?"mdi-check-circle":"mdi-close-circle",variant:"flat"},null,8,["color","icon"])]),_:1})]),_:1})]),_:1})]),_:1})):I("",!0)}},nt={key:1},it={__name:"DomainView",setup(s){const{$gettext:a}=R(),y=ge(),d=k(null),u=k({}),f=k(null);function v(){B.getDomain(y.params.id).then(w=>{d.value=w.data})}return v(),(w,_)=>d.value?(r(),x("div",nt,[t(ue,{flat:""},{default:e(()=>[t(de,null,{default:e(()=>[i(l(o(a)("Domain"))+" "+l(d.value.name)+" ",1),t(C,{color:"primary",icon:"mdi-circle-edit-outline",to:{name:"DomainEdit",params:{id:d.value.pk}}},null,8,["to"]),t(C,{color:"primary",icon:"mdi-reload",onClick:_[0]||(_[0]=p=>v())})]),_:1})]),_:1}),t(Me,{modelValue:f.value,"onUpdate:modelValue":_[1]||(_[1]=p=>f.value=p),class:"mb-4",color:"primary"},{default:e(()=>[t(Q,null,{default:e(()=>[i(l(o(a)("General")),1)]),_:1}),t(Q,null,{default:e(()=>[i(l(o(a)("Statistics")),1)]),_:1}),t(Q,null,{default:e(()=>[i(l(o(a)("DMARC")),1)]),_:1})]),_:1},8,["modelValue"]),t(Ne,{modelValue:f.value,"onUpdate:modelValue":_[3]||(_[3]=p=>f.value=p)},{default:e(()=>[t(Z,null,{default:e(()=>[t(b,null,{default:e(()=>[t(c,{cols:"12",md:"6"},{default:e(()=>[t(ot,{domain:d.value},null,8,["domain"]),_[4]||(_[4]=n("div",{class:"mt-4"},null,-1)),t(ve,{domain:d.value},null,8,["domain"])]),_:1,__:[4]}),t(c,{cols:"12",md:"6"},{default:e(()=>[t(lt,{modelValue:d.value,"onUpdate:modelValue":_[2]||(_[2]=p=>d.value=p)},null,8,["modelValue"]),_[5]||(_[5]=n("div",{class:"mt-4"},null,-1)),u.value.params&&u.value.params.enable_domain_limits&&d.value.resources&&d.value.resources.length?(r(),m(Ce,{key:0,resources:d.value.resources},null,8,["resources"])):I("",!0)]),_:1,__:[5]})]),_:1})]),_:1}),t(Z,null,{default:e(()=>[t(b,null,{default:e(()=>[t(c,{cols:"12"},{default:e(()=>[d.value.name?(r(),m(ne,{key:0,domain:d.value,"graphic-set":"mailtraffic","graphic-name":"averagetraffic"},null,8,["domain"])):I("",!0)]),_:1}),t(c,{cols:"12"},{default:e(()=>[d.value.name?(r(),m(ne,{key:0,domain:d.value,"graphic-set":"mailtraffic","graphic-name":"averagetrafficsize"},null,8,["domain"])):I("",!0)]),_:1})]),_:1})]),_:1}),t(Z,null,{default:e(()=>[t(je,{domain:d.value},null,8,["domain"])]),_:1})]),_:1},8,["modelValue"])])):(r(),m($e,{key:0}))}},qt=se(it,[["__scopeId","data-v-e7f32894"]]);export{qt as default};
@@ -1 +0,0 @@
1
- import{d as U}from"./domains-CWdc-ODs.js";import{b as M,n as te,g as m,h as B,d as le,c as $,o as C,w as l,a,p as xe,e as v,t as k,f as d,q as E,l as D,s as de,m as z,F as me,v as Ce,x as De,y as we,z as he,A as Ae,B as O,C as Se,I as $e,D as Ne,E as Ue,k as ce,G as Fe,r as Te,H as qe}from"./index-BCUdq-Zu.js";import{u as fe}from"./permissions-C7XVO62l.js";import{V as pe,r as Z}from"./VForm-DwwrfSN8.js";import{c as Le,V as Be,a as Re,b as ve}from"./VCard-BGXTuaE-.js";import{V as oe}from"./VTextField-FBM5XwC5.js";import{V as Pe}from"./VSelect-CeY-emKK.js";import{V as J}from"./VSwitch-BSifpScd.js";import{V as Ee}from"./VSpacer-pLqQLLwB.js";import{V as N,u as Oe,a as Me,m as ze,b as Ie,c as Ge,M as Je,d as _e,e as ie}from"./VAvatar-DbAmPjyA.js";import{p as je}from"./parameters-u6VE5cq8.js";import{_ as We}from"./CreationForm-ChgnxngD.js";import{_ as Ke,a as Ye,b as He,c as Qe}from"./DomainTransportForm-DEsm5zOa.js";import{_ as Xe}from"./AccountPasswordSubForm-D9xU4Or7.js";import{a as P,V as se}from"./VRow-DgX40uiD.js";import{_ as Ze}from"./DomainAdminList-B0z8fRmf.js";import{_ as ea}from"./ConfirmDialog-BLu1kBWp.js";import{V as ee}from"./VChip-Bm7znPZ6.js";import{_ as aa}from"./MenuItems-Bck8ixGf.js";import{V as ta}from"./VCheckboxBtn-DdHQE-gt.js";import{V as ae}from"./VMenu-CTyyRlRb.js";import{u as la,a as oa}from"./VProgressCircular-1VQzh5PK.js";import{u as na,m as ia,a as sa}from"./tag-DCSJ2lri.js";import{V as ye,a as ra}from"./VToolbar-AQXTYlxS.js";import{V as be,a as re,b as ue}from"./forwardRefs-Cn7kyt_f.js";import{V as ua}from"./VDataTable-Etpc99CI.js";import{V as da}from"./VCheckbox-BM1QzY5m.js";import{V as I}from"./VDialog-0NvxFg1X.js";import{_ as ma,i as ca}from"./importExport-B7mBfHxZ.js";import"./VSelectionControl-BYdVI5Q9.js";/* empty css */import"./VWindowItem-p9SJ1V9Y.js";import"./ssrBoot-B-x5LB2_.js";import"./VContainer-B8HjqhNU.js";import"./VSheet-C8P69LA8.js";import"./ChoiceField-BS45Bjds.js";import"./VAutocomplete-CQ5LL_Nk.js";import"./filter-BSw3r225.js";import"./VAlert-DSMD0lqo.js";import"./VDataTableVirtual-D9Km3t6e.js";import"./VTable-BeyU0Uhj.js";import"./VFileInput-COIdDRxq.js";const fa={class:"headline"},pa={class:"m-label"},va={class:"m-label"},ge={__name:"DomainAliasForm",props:{domainAlias:{type:Object,default:()=>null}},emits:["close"],setup(i,{emit:b}){const{$gettext:e}=M(),f=b,{displayNotification:x}=te(),_=i,w=m([]),t=m({enabled:!0}),c=m(!1),S=m(),V=B(()=>_.domainAlias?e("Update"):e("Add")),p=B(()=>_.domainAlias?e("Edit domain alias"):e("Add a new domain alias"));async function g(){c.value=!0;try{await U.deleteDomainAlias(_.domainAlias.pk),x({msg:e("Domain alias deleted")}),f("close")}finally{c.value=!1}}async function h(){const{valid:s}=await S.value.validate();if(s){c.value=!0;try{if(!t.value.pk)await U.createDomainAlias(t.value),x({msg:e("Domain alias created")});else{const u=JSON.parse(JSON.stringify(t.value));await U.updateDomainAlias(_.domainAlias.pk,u),x({msg:e("Domain alias updated")})}f("close")}finally{c.value=!1}}}return le(()=>{U.getDomains().then(s=>{w.value=s.data}),_.domainAlias&&(t.value=JSON.parse(JSON.stringify(_.domainAlias)))}),(s,u)=>(C(),$(ve,null,{default:l(()=>[a(pe,{ref_key:"vFormRef",ref:S,onSubmit:xe(h,["prevent"])},{default:l(()=>[a(Le,null,{default:l(()=>[v("span",fa,k(p.value),1)]),_:1}),a(Be,null,{default:l(()=>[v("label",pa,k(d(e)("Name")),1),a(oe,{modelValue:t.value.name,"onUpdate:modelValue":u[0]||(u[0]=A=>t.value.name=A),variant:"outlined",density:"compact",rules:[d(Z).required]},null,8,["modelValue","rules"]),v("label",va,k(d(e)("Choose a domain")),1),a(Pe,{modelValue:t.value.target,"onUpdate:modelValue":u[1]||(u[1]=A=>t.value.target=A),items:w.value,"item-title":"name","item-value":"pk",rules:[d(Z).required],"single-line":"",variant:"outlined",density:"compact"},null,8,["modelValue","items","rules"]),a(J,{modelValue:t.value.enabled,"onUpdate:modelValue":u[2]||(u[2]=A=>t.value.enabled=A),label:"Enabled",color:"primary"},null,8,["modelValue"])]),_:1}),a(Re,null,{default:l(()=>[a(Ee),a(N,{loading:c.value,onClick:u[3]||(u[3]=A=>f("close"))},{default:l(()=>[D(k(d(e)("Close")),1)]),_:1},8,["loading"]),i.domainAlias&&i.domainAlias.pk?(C(),$(N,{key:0,color:"error",loading:c.value,onClick:g},{default:l(()=>[D(k(d(e)("Delete")),1)]),_:1},8,["loading"])):E("",!0),a(N,{color:"primary",type:"submit",loading:c.value},{default:l(()=>[D(k(V.value),1)]),_:1},8,["loading"])]),_:1})]),_:1},512)]),_:1}))}},_a={__name:"DomainOptionsForm",props:{modelValue:{type:Object,default:null}},emits:["createAdmin"],setup(i,{expose:b,emit:e}){const{$gettext:f}=M(),x=i,_=e,w=m(),t=m(!1),c=B(()=>x.modelValue);function S(V){_("createAdmin",V)}return b({vFormRef:w}),(V,p)=>(C(),$(pe,{ref_key:"vFormRef",ref:w},{default:l(()=>[a(J,{modelValue:t.value,"onUpdate:modelValue":[p[0]||(p[0]=g=>t.value=g),S],label:d(f)("Create a domain administrator"),color:"primary"},null,8,["modelValue","label"]),a(oe,{modelValue:c.value.domain_admin.username,"onUpdate:modelValue":p[1]||(p[1]=g=>c.value.domain_admin.username=g),label:d(f)("Name"),hint:d(f)("Name of the administrator"),"persistent-hint":"",variant:"outlined",disabled:!t.value,suffix:`@${c.value.name}`,rules:[!t.value||d(Z).required]},null,8,["modelValue","label","hint","disabled","suffix","rules"]),a(Xe,{modelValue:c.value.domain_admin,"onUpdate:modelValue":p[2]||(p[2]=g=>c.value.domain_admin=g),disabled:!t.value},null,8,["modelValue","disabled"]),a(J,{modelValue:c.value.domain_admin.with_mailbox,"onUpdate:modelValue":p[3]||(p[3]=g=>c.value.domain_admin.with_mailbox=g),label:d(f)("With a mailbox"),disabled:!t.value,hint:d(f)("Create a mailbox for the administrator."),"persistent-hint":"",color:"primary"},null,8,["modelValue","label","disabled","hint"]),a(J,{modelValue:c.value.domain_admin.with_aliases,"onUpdate:modelValue":p[4]||(p[4]=g=>c.value.domain_admin.with_aliases=g),label:d(f)("Create aliases"),disabled:!t.value,hint:d(f)("Create standard aliases for the domain."),"persistent-hint":"",color:"primary"},null,8,["modelValue","label","disabled","hint"])]),_:1},512))}},ya={class:"text-grey"},ba={__name:"DomainCreationForm",emits:["close","created"],setup(i,{emit:b}){const{$gettext:e}=M(),f=te(),x=de(),_=b,t=m({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:{}}});le(()=>{je.getGlobalApplication("admin").then(n=>{const o=n.data.params;t.value.quota=o.default_domain_quota,t.value.default_mailbox_quota=o.default_mailbox_quota,o.default_domain_message_limit!==null&&(t.value.message_limit=o.default_domain_message_limit)})});const c=m(!1),S=m(),V=m(),p=m(),g=m(),h=m(),s=m(),u={general:V,dns:p,limitations:g,options:h,transport:s},A=[{name:"general",title:e("General")},{name:"dns",title:e("DNS")},{name:"limitations",title:e("Limitations")},{name:"options",title:e("Options")}],q=[{name:"general",title:e("General")},{name:"dns",title:e("DNS")},{name:"limitations",title:e("Limitations")},{name:"transport",title:e("Transport")}],j=B(()=>t.value.type==="domain"?A:q),R=B(()=>{const n=[{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&&(n[1].items.push({key:e("DKIM key selector"),value:t.value.dkim_key_selector}),n[1].items.push({key:e("DKIM key length"),value:t.value.dkim_key_length})),t.value.type==="relaydomain"&&t.value.transport.service){const o={title:e("Transport"),items:[{key:e("Service"),value:t.value.transport.service}]};for(const y of s.value.service.settings){const r={key:y.label,value:t.value.transport.settings[`${t.value.transport.service}_${y.name}`]};y.type==="boolean"&&(r.type="yesno"),o.items.push(r)}n.push(o)}else if(t.value.type==="domain"){const o={title:e("Options"),items:[{key:e("Create a domain administrator"),value:c.value,type:"yesno"}]};c.value&&o.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"}),n.push(o)}return n});function G(){_("close")}function W(){navigator.clipboard.writeText(t.value.domain_admin.password).then(()=>{f.displayNotification({msg:e("Password copied to clipboard")})})}function K(n){return u.value[n.name]}function Y(n){return u[n.name].value.vFormRef}async function H(){}function Q(n){c.value=n}async function X(){const n=JSON.parse(JSON.stringify(t.value));c.value||delete n.domain_admin,n.message_limit===""&&delete n.message_limit,n.type==="relaydomain"?s.value.checkSettingTypes(n):delete n.transport;try{const o=await U.createDomain(n);x.push({name:"DomainDetail",params:{id:o.data.pk}}),f.displayNotification({msg:e("Domain created")}),G()}finally{S.value.working=!1}}return(n,o)=>(C(),$(We,{ref_key:"form",ref:S,title:d(e)("New domain"),steps:j.value,"form-getter":K,"get-v-form-ref":Y,"validate-object":H,"summary-sections":R.value,onClose:G,onCreate:X},{"form.general":l(()=>[a(Qe,{ref_key:"general",ref:V,modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=y=>t.value=y),class:"ml-4"},null,8,["modelValue"])]),"form.dns":l(()=>[a(He,{ref_key:"dns",ref:p,modelValue:t.value,"onUpdate:modelValue":o[1]||(o[1]=y=>t.value=y),class:"ml-4"},null,8,["modelValue"])]),"form.limitations":l(()=>[a(Ye,{ref_key:"limitations",ref:g,modelValue:t.value,"onUpdate:modelValue":o[2]||(o[2]=y=>t.value=y),class:"ml-4"},null,8,["modelValue"])]),"form.options":l(()=>[a(_a,{ref_key:"options",ref:h,modelValue:t.value,"onUpdate:modelValue":o[3]||(o[3]=y=>t.value=y),class:"ml-4",onCreateAdmin:Q},null,8,["modelValue"])]),"form.transport":l(()=>[a(Ke,{ref_key:"transport",ref:s,modelValue:t.value.transport,"onUpdate:modelValue":o[4]||(o[4]=y=>t.value.transport=y),class:"ml-4"},null,8,["modelValue"])]),"item.random_password":l(({item:y})=>[y.value?(C(),$(P,{key:0,cols:"12",class:"highligth text-white"},{default:l(()=>[a(se,null,{default:l(()=>[a(P,null,{default:l(()=>[v("span",null,k(y.key),1)]),_:2},1024),a(P,{class:"text-right"},{default:l(()=>[D(k(n.$yesno(y.value)),1)]),_:2},1024)]),_:2},1024),a(se,null,{default:l(()=>[a(P,{class:"text-right py-1"},{default:l(()=>[D(k(t.value.domain_admin.password)+" ",1),a(N,{icon:"mdi-clipboard-multiple-outline",color:"white",variant:"text",title:d(e)("Copy to clipboard"),onClick:W},null,8,["title"])]),_:1})]),_:1})]),_:2},1024)):(C(),z(me,{key:1},[a(P,null,{default:l(()=>[v("span",ya,k(y.key),1)]),_:2},1024),a(P,{class:"text-right"},{default:l(()=>[D(k(n.$yesno(y.value)),1)]),_:2},1024)],64))]),_:2},1032,["title","steps","summary-sections"]))}},ga={__name:"DNSStatusChip",props:{status:{type:String,default:"pending"}},setup(i){const b=i,{$gettext:e}=M(),f=B(()=>b.status==="disabled"?e("Disabled"):b.status==="pending"?e("Pending"):b.status==="critical"?e("Problem"):b.status==="ok"?e("Valid"):e("Unknown")),x=B(()=>b.status==="disabled"?"":b.status==="pending"?"info":b.status==="critical"?"error":b.status==="ok"?"success":"warning");return(_,w)=>(C(),$(ee,{color:x.value,size:"small"},{default:l(()=>[D(k(f.value),1)]),_:1},8,["color"]))}},Va=De({bordered:Boolean,color:String,content:[Number,String],dot:Boolean,floating:Boolean,icon:$e,inline:Boolean,label:{type:String,default:"$vuetify.badge"},max:[Number,String],modelValue:{type:Boolean,default:!0},offsetX:[Number,String],offsetY:[Number,String],textColor:String,...sa(),...Ge({location:"top end"}),...Ie(),...ia(),...Se(),...ze({transition:"scale-rotate-transition"})},"VBadge"),ka=Ce()({name:"VBadge",inheritAttrs:!1,props:Va(),setup(i,b){const{backgroundColorClasses:e,backgroundColorStyles:f}=la(()=>i.color),{roundedClasses:x}=Oe(i),{t:_}=we(),{textColorClasses:w,textColorStyles:t}=oa(()=>i.textColor),{themeClasses:c}=he(),{locationStyles:S}=Me(i,!0,V=>(i.floating?i.dot?2:4:i.dot?8:12)+(["top","bottom"].includes(V)?Number(i.offsetY??0):["left","right"].includes(V)?Number(i.offsetX??0):0));return na(()=>{const V=Number(i.content),p=!i.max||isNaN(V)?i.content:V<=Number(i.max)?V:`${i.max}+`,[g,h]=Ae(b.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return a(i.tag,O({class:["v-badge",{"v-badge--bordered":i.bordered,"v-badge--dot":i.dot,"v-badge--floating":i.floating,"v-badge--inline":i.inline},i.class]},h,{style:i.style}),{default:()=>{var s,u;return[v("div",{class:"v-badge__wrapper"},[(u=(s=b.slots).default)==null?void 0:u.call(s),a(Je,{transition:i.transition},{default:()=>{var A,q;return[Ne(v("span",O({class:["v-badge__badge",c.value,e.value,x.value,w.value],style:[f.value,t.value,i.inline?{}:S.value],"aria-atomic":"true","aria-label":_(i.label,V),"aria-live":"polite",role:"status"},g),[i.dot?void 0:b.slots.badge?(q=(A=b.slots).badge)==null?void 0:q.call(A):i.icon?a(_e,{icon:i.icon},null):p]),[[Ue,i.modelValue]])]}})])]}})}),{}}}),xa={class:"v-data-table__td v-data-table-column--no-padding v-data-table-column--align-start"},Ca={key:0},Da={class:"text-right"},wa={class:"grey lighten-4"},ha=["colspan"],Aa=["onClick"],Sa={__name:"DomainList",setup(i,{expose:b}){const{$gettext:e}=M(),f=de(),{canSetRole:x}=fe(),_=te(),w=[{title:e("Name"),key:"name"},{title:e("Enabled"),key:"enabled",width:"5%"},{title:e("Aliases"),key:"domainalias_count"},{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"}];x.value&&w.push({title:e("Actions"),value:"actions",sortable:!1,align:"end"});const t=m({}),c=m(),S=m([]),V=m(!1),p=m(!1),g=m(null),h=m(null),s=m(!1),u=m(!1),A=m(""),q=m([]),j=m([]);async function R(){t.value={},p.value=!0;try{const n=await U.getDomains();S.value=n.data}finally{p.value=!1}}function G(){u.value=!1,g.value=null,h.value=null}async function W(n){if(await c.value.open(e("Warning"),e("Do you really want to delete the domain %{ domain }?",{domain:n.name}),{color:"error",cancelLabel:e("No"),agreeLabel:e("Yes")})){p.value=!0;try{const y={keep_folder:V.value};await U.deleteDomain(n.pk,y),R(),_.displayNotification({msg:e("Domain deleted")}),V.value=!1}finally{p.value=!1}}}function K(n){f.push({name:"DomainEdit",params:{id:n.pk}})}function Y(n,o){g.value=n,h.value=o,u.value=!0}function H(n,o,y,r){if(y(o)){r(o);return}U.getDomainAliases(n.name).then(F=>{t.value[n.name]=F.data,r(o)})}function Q(n){g.value=n,s.value=!0}function X(n){const o=[{label:e("Administrators"),icon:"mdi-account-supervisor",onClick:Q},{label:e("Edit"),icon:"mdi-circle-edit-outline",onClick:K},{label:e("Delete"),icon:"mdi-delete-outline",onClick:W,color:"red"}];return n.opened_alarms_count&&o.push({label:e("Alarms"),icon:"mdi-bell",color:"red",onClick:()=>f.push({name:"Alarms"})}),o}return le(()=>{R()}),b({reloadDomains:R}),(n,o)=>{const y=Te("router-link");return C(),$(ve,{class:"mt-6"},{default:l(()=>[a(ua,{modelValue:q.value,"onUpdate:modelValue":o[1]||(o[1]=r=>q.value=r),expanded:j.value,headers:w,items:S.value,"item-value":"name",search:A.value,"show-select":"","expand-on-click":"",loading:p.value},{top:l(()=>[a(ye,{color:"white",flat:""},{default:l(()=>[a(oe,{modelValue:A.value,"onUpdate:modelValue":o[0]||(o[0]=r=>A.value=r),"prepend-inner-icon":"mdi-magnify",placeholder:d(e)("Search"),variant:"outlined","single-line":"","hide-details":"",density:"compact",class:"flex-grow-0 w-33 mr-4"},null,8,["modelValue","placeholder"]),qe(n.$slots,"extraActions",{},void 0,!0),a(ae,{location:"bottom"},{activator:l(({props:r})=>[a(N,O({variant:"flat","append-icon":"mdi-chevron-down"},r,{size:"small"}),{default:l(()=>[D(k(d(e)("Actions")),1)]),_:2},1040)]),default:l(()=>[a(be,{density:"compact"})]),_:1}),a(N,{variant:"text",icon:"mdi-reload",onClick:R})]),_:3})]),item:l(({item:r,internalItem:L,isExpanded:F,toggleExpand:ne,isSelected:Ve,toggleSelect:ke})=>[v("tr",null,[v("td",xa,[a(ta,{value:!Ve(L),onClick:T=>ke(L)},null,8,["value","onClick"])]),v("td",null,[a(y,{to:{name:"DomainDetail",params:{id:r.pk}}},{default:l(()=>[D(k(r.name),1)]),_:2},1032,["to"]),r.type==="relaydomain"?(C(),$(ee,{key:0,size:"small",color:"primary",class:"ml-2"},{default:l(()=>[D(k(d(e)("Relay")),1)]),_:1})):E("",!0)]),v("td",null,[a(_e,{color:r.enabled?"success":"error",icon:r.enabled?"mdi-check-circle":"mdi-close-circle",variant:"flat"},null,8,["color","icon"])]),v("td",null,[D(k(r.domainalias_count)+" aliases ",1),r.domainalias_count?(C(),$(N,{key:0,variant:"text",icon:F(L)?"mdi-chevron-up":"mdi-chevron-down",onClick:T=>H(r,L,F,ne)},null,8,["icon","onClick"])):E("",!0)]),v("td",null,[a(ga,{status:r.dns_global_status},null,8,["status"])]),v("td",null,[a(ie,{modelValue:r.allocated_quota_in_percent,"onUpdate:modelValue":T=>r.allocated_quota_in_percent=T},null,8,["modelValue","onUpdate:modelValue"])]),v("td",null,[a(ie,{modelValue:r.allocated_quota_in_percent,"onUpdate:modelValue":T=>r.allocated_quota_in_percent=T},null,8,["modelValue","onUpdate:modelValue"])]),d(x)?(C(),z("td",Ca,[v("div",Da,[a(ae,{"offset-y":""},{activator:l(({props:T})=>[r.opened_alarms_count?(C(),$(ka,{key:0,bordered:"",color:"error",icon:"mdi-bell",overlap:""},{default:l(()=>[a(N,O({icon:"mdi-dots-horizontal",variant:"text"},T),null,16)]),_:2},1024)):(C(),$(N,O({key:1,icon:"mdi-dots-horizontal",variant:"text"},T),null,16))]),default:l(()=>[a(aa,{items:X(r),obj:r},null,8,["items","obj"])]),_:2},1024)])])):E("",!0)])]),"expanded-row":l(({item:r,columns:L})=>[v("tr",wa,[v("td",{colspan:L.length},[(C(!0),z(me,null,Fe(t.value[r.name],F=>(C(),z("span",{key:F.name,class:"mr-4"},[v("a",{href:"#",class:"mr-2",onClick:ne=>Y(r,F)},k(F.name),9,Aa),a(ee,{variant:"flat",size:"x-small",color:"success"},{default:l(()=>o[6]||(o[6]=[D("DNS OK")])),_:1,__:[6]})]))),128))],8,ha)])]),_:3},8,["modelValue","expanded","items","search","loading"]),a(ea,{ref_key:"confirm",ref:c},{default:l(()=>[a(da,{modelValue:V.value,"onUpdate:modelValue":o[2]||(o[2]=r=>V.value=r),label:d(e)("Do not delete domain folder"),"hide-details":""},null,8,["modelValue","label"])]),_:1},512),a(I,{modelValue:u.value,"onUpdate:modelValue":o[3]||(o[3]=r=>u.value=r),persistent:"","max-width":"800px"},{default:l(()=>[a(ge,{"domain-alias":h.value,onClose:G},null,8,["domain-alias"])]),_:1},8,["modelValue"]),a(I,{modelValue:s.value,"onUpdate:modelValue":o[5]||(o[5]=r=>s.value=r),persistent:"","max-width":"800px"},{default:l(()=>[a(Ze,{domain:g.value,"dialog-mode":"",onClose:o[4]||(o[4]=r=>s.value=!1)},null,8,["domain"])]),_:1},8,["modelValue"])]),_:3})}}},$a=ce(Sa,[["__scopeId","data-v-d8d314e4"]]),Na={__name:"DomainsView",setup(i){const b=m(),e=m(!1),f=m(!1),x=m(!1),{$gettext:_}=M(),{canAddDomain:w}=fe(),t=m(),{importContent:c,exportContent:S}=ca();function V(){U.exportAll().then(h=>{S(h.data,"domains",_)})}function p(h){c(U,h,t,_)}const g=()=>{e.value=!1,b.value.reloadDomains()};return(h,s)=>(C(),z("div",null,[a(ye,{flat:""},{default:l(()=>[a(ra,null,{default:l(()=>[D(k(d(_)("Domains")),1)]),_:1})]),_:1}),a(d($a),{ref_key:"domainList",ref:b},{extraActions:l(()=>[d(w)?(C(),$(ae,{key:0,"offset-y":""},{activator:l(({props:u})=>[a(N,O({color:"primary",variant:"outlined"},u,{"prepend-icon":"mdi-plus",class:"mr-4"}),{default:l(()=>[D(k(d(_)("New")),1)]),_:2},1040)]),default:l(()=>[a(be,{density:"compact"},{default:l(()=>[a(re,{onClick:s[0]||(s[0]=u=>f.value=!0)},{default:l(()=>[a(ue,null,{default:l(()=>[D(k(d(_)("Domain")),1)]),_:1})]),_:1}),a(re,{onClick:s[1]||(s[1]=u=>e.value=!0)},{default:l(()=>[a(ue,null,{default:l(()=>[D(k(d(_)("Alias")),1)]),_:1})]),_:1})]),_:1})]),_:1})):E("",!0),d(w)?(C(),$(N,{key:1,class:"mr-2",title:d(_)("Import domains and aliases from CSV file"),variant:"flat",icon:"mdi-file-import-outline",onClick:s[2]||(s[2]=u=>x.value=!0)},null,8,["title"])):E("",!0),a(N,{class:"mr-2",title:d(_)("Export domains and aliases to CSV"),variant:"flat",icon:"mdi-file-export-outline",onClick:V},null,8,["title"])]),_:1},512),a(I,{modelValue:f.value,"onUpdate:modelValue":s[4]||(s[4]=u=>f.value=u),fullscreen:"",scrollable:"","z-index":"10"},{default:l(()=>[a(d(ba),{onClose:s[3]||(s[3]=u=>f.value=!1)})]),_:1},8,["modelValue"]),a(I,{modelValue:e.value,"onUpdate:modelValue":s[6]||(s[6]=u=>e.value=u),persistent:"","max-width":"800px"},{default:l(()=>[a(d(ge),{onClose:s[5]||(s[5]=u=>g())})]),_:1},8,["modelValue"]),a(I,{modelValue:x.value,"onUpdate:modelValue":s[8]||(s[8]=u=>x.value=u),persistent:"","max-width":"800px"},{default:l(()=>[a(d(ma),{ref_key:"importForm",ref:t,title:d(_)("Import domains"),onSubmit:p,onClose:s[7]||(s[7]=u=>x.value=!1)},{help:l(()=>s[9]||(s[9]=[v("ul",null,[v("li",null,[v("em",null,"domain; name; quota; default mailbox quota; enabled")]),v("li",null,[v("em",null,"domainalias; name; targeted domain; enabled")]),v("li",null,[v("em",null,"relaydomain; name; target host; target port; service; enabled; verify recipients")])],-1)])),_:1},8,["title"])]),_:1},8,["modelValue"])]))}},gt=ce(Na,[["__scopeId","data-v-50470732"]]);export{gt as default};
@@ -1 +0,0 @@
1
- import{V as s,a as c}from"./VApp-D2FuKvLN.js";import{r as m,c as t,o as e,w as o,a as r}from"./index-BCUdq-Zu.js";import"./tag-DCSJ2lri.js";import"./layout-CLqGxWz4.js";import"./ssrBoot-B-x5LB2_.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};
@@ -1 +0,0 @@
1
- import{g as i,M as m,c as p,f as a,o as e}from"./index-BCUdq-Zu.js";import{_ as n}from"./ComposeEmailForm-22JKKl9M.js";import{a as l}from"./webmail-D2rioayn.js";import"./index-CJ87ZZG1.js";import"./VForm-DwwrfSN8.js";import"./tag-DCSJ2lri.js";import"./VTextField-FBM5XwC5.js";import"./VAvatar-DbAmPjyA.js";import"./VProgressCircular-1VQzh5PK.js";import"./forwardRefs-Cn7kyt_f.js";import"./ssrBoot-B-x5LB2_.js";import"./VCard-BGXTuaE-.js";import"./VFileInput-COIdDRxq.js";import"./VChip-Bm7znPZ6.js";import"./VTable-BeyU0Uhj.js";import"./VSpacer-pLqQLLwB.js";/* empty css */import"./HtmlEditor-KH0pmxrK.js";import"./VTextarea-BwkVlXPS.js";import"./contacts-DZDbAN4o.js";import"./VToolbar-AQXTYlxS.js";import"./VRow-DgX40uiD.js";import"./VSelect-CeY-emKK.js";import"./VMenu-CTyyRlRb.js";import"./VCheckboxBtn-DdHQE-gt.js";import"./VSelectionControl-BYdVI5Q9.js";import"./filter-BSw3r225.js";import"./VDialog-0NvxFg1X.js";const J={__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{J as default};
@@ -1 +0,0 @@
1
- import{_ as K,Q as oe,R as Fe,c as U,o as h,w as t,a,m as W,F as ce,G as Se,l as g,t as b,k as pe,b as J,n as le,g as u,h as j,d as Ee,q as Q,B as te,r as Ue,H as Le,f as _,N as Y,s as fe,i as X,e as M}from"./index-BCUdq-Zu.js";import{_ as ie}from"./MenuItems-Bck8ixGf.js";import{_ as ne}from"./ConfirmDialog-BLu1kBWp.js";import{V as Ne,a as De,b as ve}from"./VCard-BGXTuaE-.js";import{V as ye}from"./VCheckbox-BM1QzY5m.js";import{V as Te}from"./VSpacer-pLqQLLwB.js";import{V as L,d as Z}from"./VAvatar-DbAmPjyA.js";import{a as H}from"./aliases-C-hC9If-.js";import{d as Me}from"./index-CJ87ZZG1.js";import{V as ae}from"./VMenu-CTyyRlRb.js";import{V as je}from"./VChip-Bm7znPZ6.js";import{V as _e,a as ze}from"./VToolbar-AQXTYlxS.js";import{V as Pe}from"./VTextField-FBM5XwC5.js";import{V as be,a as se,b as re}from"./forwardRefs-Cn7kyt_f.js";import{V as qe,a as ue}from"./VRadioGroup-CnRLqIcd.js";import{V as Be}from"./VDataTableServer-BNNG6dBx.js";import{V as G}from"./VDialog-0NvxFg1X.js";import{_ as Oe,a as Ge}from"./AliasRecipientForm-CGuaOz6K.js";import{_ as Ve}from"./CreationForm-ChgnxngD.js";import{_ as We,A as Qe,a as Ye,b as He}from"./AccountAliasForm-DO4IpT1M.js";import{u as Je}from"./permissions-C7XVO62l.js";import{a as q,V as de}from"./VRow-DgX40uiD.js";import{u as Ke}from"./domains.store-B6sc48r9.js";import{_ as Xe,i as Ze}from"./importExport-B7mBfHxZ.js";import{V as et}from"./VSwitch-BSifpScd.js";import"./tag-DCSJ2lri.js";import"./VCheckboxBtn-DdHQE-gt.js";import"./VSelectionControl-BYdVI5Q9.js";import"./VProgressCircular-1VQzh5PK.js";/* empty css */import"./ssrBoot-B-x5LB2_.js";import"./VDataTable-Etpc99CI.js";import"./VSelect-CeY-emKK.js";import"./VTable-BeyU0Uhj.js";import"./filter-BSw3r225.js";import"./EmailField-phdi2rhQ.js";import"./VForm-DwwrfSN8.js";import"./domains-CWdc-ODs.js";import"./VTextarea-BwkVlXPS.js";import"./VWindowItem-p9SJ1V9Y.js";import"./VContainer-B8HjqhNU.js";import"./VSheet-C8P69LA8.js";import"./ChoiceField-BS45Bjds.js";import"./VAlert-DSMD0lqo.js";import"./AccountPasswordSubForm-D9xU4Or7.js";import"./VFileInput-COIdDRxq.js";const ee="identities",me={getAll(){return K.get(`${ee}/`)},exportAll(){return K.get(`/${ee}/export/`)},importFromCSV(N){return K.post(`/${ee}/import/`,N,{headers:{"Content-Type":"multipart/form-data"}})}},tt={__name:"ChooseColumnsForm",props:oe({availableColumns:{type:Array,default:null},mandatoryColumns:{type:Array,default:null},columns:{type:Array,default:null}},{modelValue:{type:Array},modelModifiers:{}}),emits:oe(["apply"],["update:modelValue"]),setup(N,{emit:V}){const e=N,R=Fe(N,"modelValue"),I=V,C=()=>{I("apply",R.value)};return R.value=e.columns.map(x=>x.key),(x,k)=>(h(),U(ve,{title:x.$gettext("Choose columns to display")},{default:t(()=>[a(Ne,null,{default:t(()=>[(h(!0),W(ce,null,Se(e.availableColumns,$=>(h(),W("div",{key:$.key},[a(ye,{modelValue:R.value,"onUpdate:modelValue":k[0]||(k[0]=v=>R.value=v),value:$.key,label:$.title,color:"primary","hide-details":"",density:"compact",disabled:e.mandatoryColumns.includes($.key)},null,8,["modelValue","value","label","disabled"])]))),128))]),_:1}),a(De,null,{default:t(()=>[a(Te),a(L,{color:"primary",variant:"outlined",onClick:C},{default:t(()=>[g(b(x.$gettext("Apply")),1)]),_:1})]),_:1})]),_:1},8,["title"]))}},at={__name:"IdentityList",setup(N,{expose:V}){const{$gettext:e}=J(),R=fe(),{displayNotification:I}=le(),C={address:{title:e("Address"),key:"address"},enabled:{title:e("Enabled"),key:"enabled"},recipients:{title:e("Recipients"),key:"recipients"},expire_at:{title:e("Expire at"),key:"expire_at"},description:{title:e("Description"),key:"description"},creation:{title:e("Creation date"),key:"creation"},last_modification:{title:e("Last modification"),key:"last_modification"}},x=[C.address,C.enabled,C.recipients],k={username:{title:e("Name"),key:"username"},first_name:{title:e("First name"),key:"first_name"},last_name:{title:e("Last Name"),key:"last_name"},is_active:{title:e("Enabled"),key:"is_active"},role:{title:e("Role"),key:"role"},language:{title:e("Language"),key:"language"},phone_number:{title:e("Phone number"),key:"phone_number"},secondary_email:{title:e("Secondary email"),key:"secondary_email"},tfa_enabled:{title:e("TFA enabled"),key:"tfa_enabled"},totp_enabled:{title:e("TOTP enabled"),key:"totp_enabled"},webauth_enabled:{title:e("WebAutn enabled"),key:"webauth_enabled"},date_joined:{title:e("Creation date"),key:"date_joined"},last_login:{title:e("Last login"),key:"last_login"}},$=[k.username,k.is_active,k.role],v=u("account"),n=u(0),c=u([]),p=u(!1),o=u(""),r=u([]),F=u(!1),E=u(),z=u(),T=u(1),y=u(10),w=u([]),A=u($),P=u(!1),B=j(()=>A.value.concat([{title:e("Actions"),key:"actions",sortable:!1,align:"end"}])),O=j(()=>v.value==="account"?Object.values(k):Object.values(C)),d=j(()=>v.value==="account"?["username"]:["address"]);async function m(s){p.value=!0,c.value=[],w.value=[],s==="account"?A.value=$:A.value=x,await S()}async function f({page:s,itemsPerPage:i,sortBy:D}){T.value=s,y.value=i,w.value=D,S()}async function S(){p.value=!0;const s={page:T.value||1,page_size:y.value||10};w.value&&w.value.length&&(s.ordering=w.value.map(i=>i.order!=="asc"?`-${i.key}`:i.key).join(",")),o.value!==""&&(s.search=o.value);try{const i=v.value==="account"?await Y.getAll(s):await H.getAll(s);c.value=i.data.results,n.value=i.data.count,r.value=[]}finally{p.value=!1}}function ke(s){A.value=O.value.filter(i=>s.includes(i.key)),P.value=!1}function ge(s){const i=[];return v.value==="account"?(s.possible_actions.forEach(D=>{i.push({label:D.label,icon:D.icon,onClick:()=>{D.type,S()}})}),i.push({label:e("Edit"),icon:"mdi-circle-edit-outline",onClick:Ce}),i.push({label:e("Delete"),icon:"mdi-delete-outline",onClick:we,color:"red"})):v.value==="alias"&&(i.push({label:e("Edit"),icon:"mdi-circle-edit-outline",onClick:Ae}),i.push({label:e("Delete"),icon:"mdi-delete-outline",onClick:he,color:"red"})),i}function xe(){const s=[];return r.value.length>0&&s.push({label:e("Delete"),icon:"mdi-delete-outline",onClick:$e,color:"red"}),s}function Ce(s){R.push({name:"AccountEdit",params:{id:s.pk}})}async function we(s){if(await z.value.open(e("Warning"),e("Are you sure you want to delete this identity ?"),{color:"error",agreeLabel:e("Yes"),cancelLabel:e("No")})){p.value=!1;try{await Y.delete(s.pk,{keepdir:F.value}),S(),I({msg:e("Account deleted")})}finally{p.value=!1}}}function Ae(){}function $e(){}async function he(s){if(await E.value.open(e("Warning"),e("Are you sure you want to delete this alias?"),{color:"error",agreeLabel:e("Yes"),cancelLabel:e("No")})){p.value=!1;try{await H.delete(s.pk),S(),I({msg:e("Alias deleted")})}finally{p.value=!1}}}function Re(s){return s.recipients?s.recipients.join(", "):""}return Ee(()=>{S()}),V({fetchIdentities:S}),S=Me(S,500),(s,i)=>{const D=Ue("router-link");return h(),U(ve,{class:"mt-6"},{default:t(()=>[a(Be,{modelValue:r.value,"onUpdate:modelValue":i[3]||(i[3]=l=>r.value=l),headers:B.value,items:c.value,search:o.value,loading:p.value,"items-length":n.value,page:T.value,"items-per-page":y.value,"item-value":"pk",elevation:"0","show-select":"","sort-by":w.value,"onUpdate:options":f},{top:t(()=>[a(_e,{flat:"",color:"white"},{extension:t(()=>[a(qe,{modelValue:v.value,"onUpdate:modelValue":[i[2]||(i[2]=l=>v.value=l),m],inline:"",readonly:p.value,"hide-details":""},{default:t(()=>[a(ue,{color:"primary",label:_(e)("Accounts"),value:"account"},null,8,["label"]),a(ue,{color:"primary",label:_(e)("Alias"),value:"alias"},null,8,["label"])]),_:1},8,["modelValue","readonly"])]),default:t(()=>[a(Pe,{modelValue:o.value,"onUpdate:modelValue":i[0]||(i[0]=l=>o.value=l),"prepend-inner-icon":"mdi-magnify",placeholder:_(e)("Search"),variant:"outlined","hide-details":"","single-line":"",flat:"",density:"compact",class:"flex-grow-0 w-33 mr-4"},null,8,["modelValue","placeholder"]),Le(s.$slots,"extraActions",{},void 0,!0),a(L,{variant:"text",icon:"mdi-format-columns",title:_(e)("Customize displayed columns"),onClick:i[1]||(i[1]=l=>P.value=!0)},null,8,["title"]),r.value.length>1?(h(),U(ae,{key:0,location:"bottom"},{activator:t(({props:l})=>[a(L,te({"append-icon":"mdi-chevron-down"},l,{size:"small",variant:"flat"}),{default:t(()=>[g(b(_(e)("Actions")),1)]),_:2},1040)]),default:t(()=>[a(be,{density:"compact"},{default:t(()=>[a(ie,{items:xe()},null,8,["items"])]),_:1})]),_:1})):Q("",!0),a(L,{variant:"text",icon:"mdi-reload",onClick:S})]),_:3})]),"item.username":t(({item:l})=>[a(D,{to:{name:"AccountDetail",params:{id:l.pk}}},{default:t(()=>[g(b(l.username),1)]),_:2},1032,["to"])]),"item.address":t(({item:l})=>[a(D,{to:{name:"AliasDetail",params:{id:l.pk}}},{default:t(()=>[g(b(l.address),1)]),_:2},1032,["to"])]),"item.is_active":t(({item:l})=>[a(Z,{color:l.is_active?"success":"error",icon:l.is_active?"mdi-check-circle":"mdi-close-circle",variant:"flat"},null,8,["color","icon"])]),"item.enabled":t(({item:l})=>[a(Z,{color:l.enabled?"success":"error",icon:l.enabled?"mdi-check-circle":"mdi-close-circle",variant:"flat"},null,8,["color","icon"])]),"item.recipients":t(({item:l})=>[g(b(Re(l)),1)]),"item.date_joined":t(({item:l})=>[g(b(s.$date(l.date_joined)),1)]),"item.creation":t(({item:l})=>[g(b(s.$date(l.creation)),1)]),"item.last_modification":t(({item:l})=>[g(b(s.$date(l.last_modification)),1)]),"item.last_login":t(({item:l})=>[g(b(s.$date(l.last_login)),1)]),"item.role":t(({item:l})=>[a(je,{color:"default",size:"small"},{default:t(()=>[g(b(l.role),1)]),_:2},1024)]),"item.actions":t(({item:l})=>[l.possible_actions!==void 0&&l.possible_actions.length!==0?(h(),U(Z,{key:0,size:"large",color:"blue"},{default:t(()=>i[6]||(i[6]=[g("mdi-circle-small")])),_:1,__:[6]})):Q("",!0),a(ae,{location:"bottom"},{activator:t(({props:Ie})=>[a(L,te(Ie,{size:"small",icon:"mdi-dots-horizontal",variant:"text"}),null,16)]),default:t(()=>[a(ie,{items:ge(l),obj:l},null,8,["items","obj"])]),_:2},1024)]),_:2},1032,["modelValue","headers","items","search","loading","items-length","page","items-per-page","sort-by"]),a(ne,{ref_key:"confirmAlias",ref:E},null,512),a(ne,{ref_key:"confirmAccount",ref:z},{default:t(()=>[a(ye,{modelValue:F.value,"onUpdate:modelValue":i[4]||(i[4]=l=>F.value=l),label:_(e)("Do not delete account folder"),"hide-details":""},null,8,["modelValue","label"])]),_:1},512),a(G,{modelValue:P.value,"onUpdate:modelValue":i[5]||(i[5]=l=>P.value=l),"max-width":"500"},{default:t(()=>[a(tt,{columns:A.value,"available-columns":O.value,"mandatory-columns":d.value,onApply:ke},null,8,["columns","available-columns","mandatory-columns"])]),_:1},8,["modelValue"])]),_:3})}}},lt=pe(at,[["__scopeId","data-v-77d18fd9"]]),ot={__name:"AliasCreationForm",emits:["close","created"],setup(N,{emit:V}){const{$gettext:e}=J(),R=le(),I=fe(),C=V,x=u(),k=u(),$=u(),v={general:k,recipients:$},n=j(()=>{const y=[{title:e("General"),items:[{key:e("Random address"),value:c.value.random,type:"yesno"},{key:e("Address"),value:c.value.address}]}];return c.value.expire_at!==void 0&&y[0].items.push({key:e("Expire at"),value:c.value.expire_at}),c.value.description!==void 0&&y[0].items.push({key:e("Description"),value:c.value.description}),y.push({title:e("Recipients"),items:[{key:e("Recipients"),value:c.value.recipients.join(", ")}]}),y}),c=u(r()),p=u([{name:"general",title:e("General")},{name:"recipients",title:e("Recipients")}]);function o(){c.value=r(),C("close")}function r(){return{random:!1,enabled:!0,recipients:[]}}function F(y){return v.step[y.name]}function E(y){return v[y.name].value.vFormRef}function z(){const y={...c.value};y.recipients.length===0&&delete y.recipients;const w=H.validate(y);return w.catch(A=>{A.response.status===409&&A.response.data.id!==void 0&&(R.displayNotification({msg:e("Alias already exists, redirecting to edit page"),type:"warning"}),I.push({name:"AliasEdit",params:{id:A.response.data.id}}))}),w}async function T(){c.value.domain!==void 0&&delete c.value.domain;try{await H.create(c.value),C("created"),o()}finally{x.value.working=!1}}return(y,w)=>(h(),U(Ve,{ref_key:"form",ref:x,title:_(e)("New alias"),steps:p.value,"form-getter":F,"get-v-form-ref":E,"validate-object":z,"summary-sections":n.value,onClose:o,onCreate:T},{"form.general":t(()=>[a(Ge,{ref_key:"general",ref:k,modelValue:c.value,"onUpdate:modelValue":w[0]||(w[0]=A=>c.value=A)},null,8,["modelValue"])]),"form.recipients":t(()=>[a(Oe,{ref_key:"recipients",ref:$,modelValue:c.value.recipients,"onUpdate:modelValue":w[1]||(w[1]=A=>c.value.recipients=A)},null,8,["modelValue"])]),_:2},1032,["title","steps","summary-sections"]))}},it={class:"grey--text"},nt={__name:"AccountCreationForm",emits:["close","created"],setup(N,{emit:V}){const{$gettext:e}=J(),{canSetRole:R}=Je(),I=le(),C=Ke(),x=V,k=j(()=>n.value.username&&n.value.username.indexOf("@")!==-1),$=j(()=>{const d=[{title:e("Role"),items:[{key:e("Role"),value:n.value.role}]},{title:e("Identification"),items:[{key:e("Username"),value:n.value.username},{key:e("First name"),value:n.value.first_name},{key:e("Last name"),value:n.value.last_name},{name:"random_password",key:e("Random password"),value:n.value.random_password,type:"yesno"},{key:e("Enabled"),value:n.value.is_active,type:"yesno"}]}];return k.value?d.concat([{title:e("Mailbox"),items:[{key:e("Email"),value:n.value.mailbox.full_address},{key:e("Quota"),value:n.value.mailbox.use_domain_quota?e("Domain default value"):n.value.mailbox.quota},{key:e("Message sending limit"),value:n.value.mailbox.message_limit},{key:e("Send only account"),value:n.value.mailbox.is_send_only,type:"yesno"}]},{title:e("Aliases"),items:[{key:e("Aliases"),value:n.value.aliases,type:"list"}]}]):d}),v=j(()=>{const d=[];return R.value&&d.push({name:"role",title:e("Role")}),d.push({name:"identification",title:e("Identification")}),k.value?d.concat([{name:"mailbox",title:e("Mailbox")},{name:"aliases",title:e("Aliases")}]):d}),n=u({aliases:[],is_active:!0,role:X.USER,mailbox:{use_domain_quota:!0},random_password:!1}),c=u(),p=u(),o=u(),r=u(),F=u(),E={role:p,identification:o,mailbox:r,aliases:F};function z(){navigator.clipboard.writeText(n.value.new_password).then(()=>{I.displayNotification({msg:e("Password copied to clipboard")})})}function T(d){return E.step[d.name]}function y(d){return E[d.name].value.vFormRef}function w(d,m){const f=v.value[d-1].name;E[f].value.formErrors&&(E[f].value.formErrors.value=m)}function A(d){const m={...d};return[X.RESELLER,X.SUPER_ADMIN].includes(m.role)&&m.username&&m.username.indexOf("@")===-1&&delete m.mailbox,m.mailbox&&(m.mailbox.message_limit===""&&(m.mailbox.message_limit=null),(m.mailbox.quota===void 0||m.mailbox.quota===null)&&(m.mailbox.quota=0)),m}function P(d){if(d===1)return!0;const m=A({...n.value});return Y.validate(m)}function B(){x("close")}async function O(){const d=A({...n.value});d.password=d.new_password,delete d.new_password,delete d.password_confirmation;try{await Y.create(d),x("created"),B()}finally{c.value.working=!1}}return C.getDomains(),(d,m)=>(h(),U(Ve,{ref_key:"form",ref:c,title:_(e)("New account"),steps:v.value,"form-getter":T,"get-v-form-ref":y,"validate-object":P,"summary-sections":$.value,onClose:B,onCreate:O,onValidationError:w},{"form.role":t(()=>[a(He,{ref_key:"role",ref:p,modelValue:n.value,"onUpdate:modelValue":m[0]||(m[0]=f=>n.value=f)},null,8,["modelValue"])]),"form.identification":t(()=>[a(Ye,{ref_key:"identification",ref:o,modelValue:n.value,"onUpdate:modelValue":m[1]||(m[1]=f=>n.value=f)},null,8,["modelValue"])]),"form.mailbox":t(()=>[a(Qe,{ref_key:"mailbox",ref:r,modelValue:n.value,"onUpdate:modelValue":m[2]||(m[2]=f=>n.value=f)},null,8,["modelValue"])]),"form.aliases":t(()=>[a(We,{ref_key:"aliases",ref:F,modelValue:n.value,"onUpdate:modelValue":m[3]||(m[3]=f=>n.value=f)},null,8,["modelValue"])]),"item.random_password":t(({item:f})=>[f.value?(h(),U(q,{key:0,cols:"12",class:"highligth text-white"},{default:t(()=>[a(de,null,{default:t(()=>[a(q,null,{default:t(()=>[M("span",null,b(f.key),1)]),_:2},1024),f.type==="yesno"?(h(),U(q,{key:0,class:"text-right"},{default:t(()=>[g(b(d.$yesno(f.value)),1)]),_:2},1024)):Q("",!0)]),_:2},1024),a(de,null,{default:t(()=>[a(q,{class:"text-right py-1"},{default:t(()=>[a(L,{"append-icon":"mdi-clipboard-multiple-outline",color:"white",variant:"text",title:_(e)("Copy to clipboard"),onClick:z},{default:t(()=>[g(b(n.value.new_password),1)]),_:1},8,["title"])]),_:1})]),_:1})]),_:2},1024)):(h(),W(ce,{key:1},[a(q,null,{default:t(()=>[M("span",it,b(f.key),1)]),_:2},1024),f.type==="yesno"?(h(),U(q,{key:0,class:"text-right"},{default:t(()=>[g(b(d.$yesno(f.value)),1)]),_:2},1024)):Q("",!0)],64))]),_:2},1032,["title","steps","summary-sections"]))}},st={__name:"IdentitiesView",setup(N){const{$gettext:V,$pgettext:e}=J(),{importContent:R,exportContent:I}=Ze(),C=u(!1),x=u(!1),k=u(!1),$=u(),v=u();function n(){me.exportAll().then(p=>{I(p.data,"identities",V)})}function c(p,o){p.append("crypt_passwords",o.crypt_passwords),R(me,p,$,V)}return(p,o)=>(h(),W("div",null,[a(_e,{flat:""},{default:t(()=>[a(ze,null,{default:t(()=>[g(b(_(V)("Identities")),1)]),_:1})]),_:1}),a(lt,{ref_key:"idList",ref:v},{extraActions:t(()=>[a(ae,{"offset-y":""},{activator:t(({props:r})=>[a(L,te({color:"primary",variant:"outlined"},r,{"prepend-icon":"mdi-plus",class:"mr-4"}),{default:t(()=>[g(b(_(e)("male","New")),1)]),_:2},1040)]),default:t(()=>[a(be,{density:"compact"},{default:t(()=>[a(se,{onClick:o[0]||(o[0]=r=>C.value=!0)},{default:t(()=>[a(re,null,{default:t(()=>[g(b(_(V)("Account")),1)]),_:1})]),_:1}),a(se,{onClick:o[1]||(o[1]=r=>x.value=!0)},{default:t(()=>[a(re,null,{default:t(()=>[g(b(_(V)("Alias")),1)]),_:1})]),_:1})]),_:1})]),_:1}),a(L,{class:"mr-2",title:_(V)("Import accounts and aliases from CSV file"),variant:"flat",icon:"mdi-file-import-outline",onClick:o[2]||(o[2]=r=>k.value=!0)},null,8,["title"]),a(L,{class:"mr-2",title:_(V)("Export accounts and aliases to CSV"),icon:"mdi-file-export-outline",variant:"flat",onClick:n},null,8,["title"])]),_:1},512),a(G,{modelValue:x.value,"onUpdate:modelValue":o[5]||(o[5]=r=>x.value=r),fullscreen:"",scrollable:"","z-index":"10"},{default:t(()=>[a(ot,{onCreated:o[3]||(o[3]=r=>v.value.fetchIdentities()),onClose:o[4]||(o[4]=r=>x.value=!1)})]),_:1},8,["modelValue"]),a(G,{modelValue:C.value,"onUpdate:modelValue":o[8]||(o[8]=r=>C.value=r),fullscreen:"",scrollable:"","z-index":"10"},{default:t(()=>[a(nt,{onCreated:o[6]||(o[6]=r=>v.value.fetchIdentities()),onClose:o[7]||(o[7]=r=>C.value=!1)})]),_:1},8,["modelValue"]),a(G,{modelValue:k.value,"onUpdate:modelValue":o[10]||(o[10]=r=>k.value=r),persistent:"","max-width":"800px"},{default:t(()=>[a(_(Xe),{ref_key:"importForm",ref:$,title:_(V)("Import identities"),onSubmit:c,onClose:o[9]||(o[9]=r=>k.value=!1)},{help:t(()=>o[11]||(o[11]=[M("ul",null,[M("li",null,[M("em",null,"account; loginname; password; first name; last name; enabled; group; address; quota; [, domain, ...]")]),M("li",null,[M("em",null,"alias; address; enabled; recipient; [more recipients; ...]")])],-1)])),extraFields:t(({form:r})=>[a(et,{modelValue:r.crypt_passwords,"onUpdate:modelValue":F=>r.crypt_passwords=F,label:_(V)("Crypt passwords"),color:"primary",density:"compact",hint:_(V)("Check this option if passwords contained in your file are not crypted"),"persistent-hint":""},null,8,["modelValue","onUpdate:modelValue","label","hint"])]),_:1},8,["title"])]),_:1},8,["modelValue"])]))}},ea=pe(st,[["__scopeId","data-v-2549d1b3"]]);export{ea as default};
@@ -1 +0,0 @@
1
- a[data-v-77d18fd9]{text-decoration:none;color:rgb(var(--v-theme-primary))}a[data-v-77d18fd9]:visited{color:rgb(var(--v-theme-primary))}.highligth{background-color:#515d78}.v-toolbar[data-v-2549d1b3],.v-tabs-items[data-v-2549d1b3]{background-color:#f7f8fa!important}
@@ -1 +0,0 @@
1
- import{k as b,b as g,g as r,h as S,L as h,M as V,m as x,a as e,w as u,f as n,o as P,l as w,t as G}from"./index-BCUdq-Zu.js";import{p}from"./parameters-u6VE5cq8.js";import{P as A}from"./ParametersForm-Bx5J7UU0.js";import{V as T,a as k}from"./VToolbar-AQXTYlxS.js";import{u as N}from"./global.store-IwCGIFoO.js";import{u as B}from"./parameters.store-D4x8W7LS.js";import"./HtmlEditor-KH0pmxrK.js";import"./VAvatar-DbAmPjyA.js";import"./tag-DCSJ2lri.js";import"./VProgressCircular-1VQzh5PK.js";import"./forwardRefs-Cn7kyt_f.js";import"./ssrBoot-B-x5LB2_.js";import"./VTabs-Dzq8prKm.js";import"./VWindowItem-p9SJ1V9Y.js";import"./VChip-Bm7znPZ6.js";import"./VMenu-CTyyRlRb.js";import"./VContainer-B8HjqhNU.js";/* empty css */import"./VCard-BGXTuaE-.js";import"./VSwitch-BSifpScd.js";import"./VTextField-FBM5XwC5.js";import"./VSelectionControl-BYdVI5Q9.js";import"./VSelect-CeY-emKK.js";import"./VCheckboxBtn-DdHQE-gt.js";import"./VTextarea-BwkVlXPS.js";import"./VColorPicker-CYCnVu_Z.js";import"./colors-DoZdCu1D.js";import"./VPicker-3NOHH3h1.js";import"./VSheet-C8P69LA8.js";import"./admin-B0fFM9gW.js";const E={__name:"ParametersView",setup(M){const{$gettext:c}=g(),f=N(),o=V(),d=B(),s=r([]),i=r({}),m=r(""),_=S(()=>c("Settings: "+m.value));function l(t){p.getGlobalApplicationStructure(t).then(a=>{s.value=a.data}),p.getGlobalApplication(t).then(a=>{i.value=a.data.params,m.value=a.data.label})}function v(t){f.fetchNotifications(),o.params.app==="imap_migration"&&(d.imapMigrationEnabled=t.enabled_imapmigration)}return h(o,t=>{l(t.params.app)}),l(o.params.app),(t,a)=>(P(),x("div",null,[e(T,{flat:""},{default:u(()=>[e(k,null,{default:u(()=>[w(G(_.value),1)]),_:1})]),_:1}),e(n(A),{app:t.$route.params.app,structure:s.value,values:i.value,"save-function":n(p).saveGlobalApplication,onSuccess:v},null,8,["app","structure","values","save-function"])]))}},lt=b(E,[["__scopeId","data-v-6ffadfb6"]]);export{lt as default};
@@ -1 +0,0 @@
1
- import{k as v,b as d,g as e,h as _,L as V,M as g,m as h,a as r,w as u,f as c,o as x,l as b,t as w}from"./index-BCUdq-Zu.js";import{P}from"./ParametersForm-Bx5J7UU0.js";import{p as o}from"./parameters-u6VE5cq8.js";import{V as A,a as T}from"./VToolbar-AQXTYlxS.js";import"./HtmlEditor-KH0pmxrK.js";import"./VAvatar-DbAmPjyA.js";import"./tag-DCSJ2lri.js";import"./VProgressCircular-1VQzh5PK.js";import"./forwardRefs-Cn7kyt_f.js";import"./ssrBoot-B-x5LB2_.js";import"./VTabs-Dzq8prKm.js";import"./VWindowItem-p9SJ1V9Y.js";import"./VChip-Bm7znPZ6.js";import"./VMenu-CTyyRlRb.js";import"./VContainer-B8HjqhNU.js";/* empty css */import"./VCard-BGXTuaE-.js";import"./VSwitch-BSifpScd.js";import"./VTextField-FBM5XwC5.js";import"./VSelectionControl-BYdVI5Q9.js";import"./VSelect-CeY-emKK.js";import"./VCheckboxBtn-DdHQE-gt.js";import"./VTextarea-BwkVlXPS.js";import"./VColorPicker-CYCnVu_Z.js";import"./colors-DoZdCu1D.js";import"./VPicker-3NOHH3h1.js";import"./VSheet-C8P69LA8.js";const k={__name:"ParametersView",setup(S){const{$gettext:n}=d(),p=g(),s=e(""),i=e([]),m=e({}),f=_(()=>n("Settings: "+s.value));function l(t){o.getUserApplicationStructure(t).then(a=>{i.value=a.data}),o.getUserApplication(t).then(a=>{m.value=a.data.params,s.value=a.data.label})}return V(p,t=>{l(t.params.app)}),l(p.params.app),(t,a)=>(x(),h("div",null,[r(A,{flat:""},{default:u(()=>[r(T,null,{default:u(()=>[b(w(f.value),1)]),_:1})]),_:1}),r(c(P),{app:t.$route.params.app,structure:i.value,values:m.value,"save-function":c(o).saveUserApplication},null,8,["app","structure","values","save-function"])]))}},at=v(k,[["__scopeId","data-v-3e7380ff"]]);export{at as default};
@@ -1 +0,0 @@
1
- import{g as e,c as a,f as p,M as l,o as n}from"./index-BCUdq-Zu.js";import{_ as s}from"./ComposeEmailForm-22JKKl9M.js";import{a as u}from"./webmail-D2rioayn.js";import"./index-CJ87ZZG1.js";import"./VForm-DwwrfSN8.js";import"./tag-DCSJ2lri.js";import"./VTextField-FBM5XwC5.js";import"./VAvatar-DbAmPjyA.js";import"./VProgressCircular-1VQzh5PK.js";import"./forwardRefs-Cn7kyt_f.js";import"./ssrBoot-B-x5LB2_.js";import"./VCard-BGXTuaE-.js";import"./VFileInput-COIdDRxq.js";import"./VChip-Bm7znPZ6.js";import"./VTable-BeyU0Uhj.js";import"./VSpacer-pLqQLLwB.js";/* empty css */import"./HtmlEditor-KH0pmxrK.js";import"./VTextarea-BwkVlXPS.js";import"./contacts-DZDbAN4o.js";import"./VToolbar-AQXTYlxS.js";import"./VRow-DgX40uiD.js";import"./VSelect-CeY-emKK.js";import"./VMenu-CTyyRlRb.js";import"./VCheckboxBtn-DdHQE-gt.js";import"./VSelectionControl-BYdVI5Q9.js";import"./filter-BSw3r225.js";import"./VDialog-0NvxFg1X.js";const I={__name:"ReplyEmailView",setup(c){const t=l(),o=e(),r=i=>{o.value="",u.getEmailContent(t.query.mailbox,t.query.mailid,{context:"reply",dformat:i?"html":"plain"}).then(m=>{o.value=m.data})};return r(),(i,m)=>(n(),a(p(s),{"original-email":o.value,"reply-all":p(t).query.all==="true",onOnToggleHtmlMode:r},null,8,["original-email","reply-all"]))}};export{I as default};
@@ -1 +0,0 @@
1
- import{c as o,f as r,o as m}from"./index-BCUdq-Zu.js";import{_ as p}from"./ConnectedLayout-CNzvhsb9.js";import{u as e}from"./layout.store-CSmWF8Cf.js";import"./VContainer-B8HjqhNU.js";/* empty css */import"./tag-DCSJ2lri.js";import"./VApp-D2FuKvLN.js";import"./layout-CLqGxWz4.js";import"./ssrBoot-B-x5LB2_.js";import"./global.store-IwCGIFoO.js";import"./admin-B0fFM9gW.js";import"./VAvatar-DbAmPjyA.js";import"./VProgressCircular-1VQzh5PK.js";import"./forwardRefs-Cn7kyt_f.js";import"./VMenu-CTyyRlRb.js";import"./VCard-BGXTuaE-.js";import"./VRow-DgX40uiD.js";import"./VSheet-C8P69LA8.js";const b={__name:"UserLayout",setup(i){const t=e();return(s,a)=>(m(),o(p,{"menu-items":r(t).leftMenuItems},null,8,["menu-items"]))}};export{b as default};
@@ -1 +0,0 @@
1
- /* empty css */import{i as r}from"./VAvatar-DbAmPjyA.js";const p=r("v-spacer","div","VSpacer");export{p as V};
@@ -1 +0,0 @@
1
- import{g as h,b as g,c as C,o as w,w as l,a as o,p as N,e as v,t as r,H as _,l as p,f as s,n as b}from"./index-BCUdq-Zu.js";import{V as k,r as y}from"./VForm-DwwrfSN8.js";import{c as F,V as U,a as B,b as T}from"./VCard-BGXTuaE-.js";import{V as L}from"./VAlert-DSMD0lqo.js";import{V as R}from"./VFileInput-COIdDRxq.js";import{V as $}from"./VTextField-FBM5XwC5.js";import{V as j}from"./VSwitch-BSifpScd.js";import{V as q}from"./VSpacer-pLqQLLwB.js";import{V as x}from"./VAvatar-DbAmPjyA.js";const D={class:"headline"},I={class:"m-label"},A={class:"m-label"},K={__name:"ImportForm",props:{helpText:{type:String,default:""},title:{type:String,default:""}},emits:["close","submit"],setup(f,{expose:V,emit:i}){const n=i,t=h({}),u=h(),{$gettext:e}=g();function c(){t.value={},n("close")}async function S(){const{valid:d}=await u.value.validate();if(!d)return;const a=new FormData;a.append("sourcefile",t.value.sourcefile[0]),t.value.sepchar&&a.append("sepchar",t.value.sepchar),t.value.continue_if_exists&&a.append("continue_if_exists",t.value.continue_if_exists),n("submit",a,t.value)}return V({close:c}),(d,a)=>(w(),C(T,null,{default:l(()=>[o(k,{ref_key:"vform",ref:u,onSubmit:N(S,["prevent"])},{default:l(()=>[o(F,null,{default:l(()=>[v("span",D,r(f.title),1)]),_:1}),o(U,null,{default:l(()=>[o(L,{variant:"tonal",type:"info",class:"mb-2"},{default:l(()=>[p(r(s(e)("Provide a CSV file where lines respect one of the following formats:"))+" ",1),_(d.$slots,"help"),p(" "+r(s(e)("The first element of each line is mandatory and must be equal to one of the previous values."))+" "+r(s(e)("You can use a different character as separator.")),1)]),_:3}),v("label",I,r(s(e)("Select file")),1),o(R,{modelValue:t.value.sourcefile,"onUpdate:modelValue":a[0]||(a[0]=m=>t.value.sourcefile=m),accept:"text/csv","truncate-length":"15",variant:"outlined",density:"compact",rules:[s(y).required]},null,8,["modelValue","rules"]),v("label",A,r(s(e)("Separator")),1),o($,{modelValue:t.value.sepchar,"onUpdate:modelValue":a[1]||(a[1]=m=>t.value.sepchar=m),rules:[s(y).required],variant:"outlined",density:"compact"},null,8,["modelValue","rules"]),o(j,{modelValue:t.value.continue_if_exists,"onUpdate:modelValue":a[2]||(a[2]=m=>t.value.continue_if_exists=m),label:s(e)("Continue on error"),color:"primary",density:"compact",hint:s(e)("Don't treat duplicated objects as errors"),"persistent-hint":""},null,8,["modelValue","label","hint"]),_(d.$slots,"extraFields",{form:t.value})]),_:3}),o(B,null,{default:l(()=>[o(q),o(x,{onClick:c},{default:l(()=>[p(r(s(e)("Close")),1)]),_:1}),o(x,{color:"primary",type:"submit"},{default:l(()=>[p(r(s(e)("Import")),1)]),_:1})]),_:1})]),_:3},512)]),_:3}))}},Q=()=>{function f(i,n,t){if(!i&&!i.length){b().displayNotification({msg:t("No data to export"),type:"warning"});return}const u=new Blob([i],{type:"text/csv"}),e=document.createElement("a");e.href=URL.createObjectURL(u),e.download=`modoboa-${n}.csv`,e.click(),URL.revokeObjectURL(e.href)}function V(i,n,t,u){i.importFromCSV(n).then(e=>{const c=b();e.data.status?(c.displayNotification({msg:e.data.message}),t.value.close()):c.displayNotification({msg:e.data.message,type:"error"})}).catch(()=>{b().displayNotification({msg:u("CSV seems to be badly formatted"),type:"error"})})}return{exportContent:f,importContent:V}};export{K as _,Q as i};