modoboa 2.5.0__py3-none-any.whl → 2.6.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.
- modoboa/admin/api/v2/serializers.py +1 -1
- modoboa/admin/models/domain.py +1 -1
- modoboa/admin/models/mixins.py +3 -1
- modoboa/amavis/serializers.py +1 -1
- modoboa/autoconfig/__init__.py +0 -0
- modoboa/autoconfig/apps.py +6 -0
- modoboa/autoconfig/templates/autoconfig/autoconfig.xml +24 -0
- modoboa/autoconfig/templates/autoconfig/autodiscover.xml +27 -0
- modoboa/autoconfig/tests.py +38 -0
- modoboa/autoconfig/urls.py +21 -0
- modoboa/autoconfig/views.py +109 -0
- modoboa/autoreply/api/v2/tests.py +4 -4
- modoboa/calendars/tests.py +8 -8
- modoboa/contacts/tests.py +5 -7
- modoboa/core/api/v1/tests.py +2 -2
- modoboa/core/api/v2/views.py +3 -1
- modoboa/core/commands/deploy.py +3 -0
- modoboa/core/commands/templates/settings.py.tpl +26 -12
- modoboa/core/models.py +1 -1
- modoboa/core/tests/test_ldap.py +2 -0
- modoboa/core/views/auth.py +27 -8
- modoboa/frontend_dist/assets/{AccountAliasForm-BuSy_1n9.js → AccountAliasForm-Bu1I8sLg.js} +1 -1
- modoboa/frontend_dist/assets/{AccountEditView-qdJmLM_e.js → AccountEditView-YOpDW-Ob.js} +1 -1
- modoboa/frontend_dist/assets/AccountLayout-Cf_FVfvJ.js +1 -0
- modoboa/frontend_dist/assets/{AccountPasswordSubForm-DZGt_Xgq.js → AccountPasswordSubForm-B9X5wAXp.js} +1 -1
- modoboa/frontend_dist/assets/{AccountView-CO65y0vZ.js → AccountView-DCqbD7oi.js} +1 -1
- modoboa/frontend_dist/assets/{AddressBook-BZNUlhek.js → AddressBook-B53LXIsD.js} +1 -1
- modoboa/frontend_dist/assets/AdminLayout-DX-RXYiU.js +1 -0
- modoboa/frontend_dist/assets/AlarmsView-C0KvogOj.js +1 -0
- modoboa/frontend_dist/assets/AliasEditView-BiMPygn9.js +1 -0
- modoboa/frontend_dist/assets/AliasEditView-CYDSiX8l.css +1 -0
- modoboa/frontend_dist/assets/AliasRecipientForm-BhQfATiS.js +1 -0
- modoboa/frontend_dist/assets/{AliasView-GOJ5lyQH.js → AliasView-eIct4lMV.js} +1 -1
- modoboa/frontend_dist/assets/{AuditTrailView-fbXmq70e.js → AuditTrailView-FiUNTjpE.js} +1 -1
- modoboa/frontend_dist/assets/{CalendarView-LlQQNEPL.js → CalendarView-DbWVDoWq.js} +1 -1
- modoboa/frontend_dist/assets/{ChoiceField-B3ReQHVe.js → ChoiceField-17aCFpF6.js} +1 -1
- modoboa/frontend_dist/assets/{ComposeEmailForm-Bs1fZXAL.js → ComposeEmailForm-B-BP3lzX.js} +1 -1
- modoboa/frontend_dist/assets/ComposeEmailView-6JrFhK1W.js +1 -0
- modoboa/frontend_dist/assets/ConfirmDialog-Dr0i2kqK.js +1 -0
- modoboa/frontend_dist/assets/ConnectedLayout-irTI2ekJ.js +1 -0
- modoboa/frontend_dist/assets/{CreationForm-ORg3fazt.js → CreationForm-BZMhQOez.js} +1 -1
- modoboa/frontend_dist/assets/DashboardView-CBpsEG3P.js +1 -0
- modoboa/frontend_dist/assets/{DomainAdminList-DVn9x0rB.js → DomainAdminList-BikGujRD.js} +1 -1
- modoboa/frontend_dist/assets/{DomainEditView-nAoL64D_.js → DomainEditView-SOvfeZWo.js} +1 -1
- modoboa/frontend_dist/assets/{DomainTransportForm-CA-DNUxX.js → DomainTransportForm-CmFZ1Cxm.js} +1 -1
- modoboa/frontend_dist/assets/{DomainView-CdXPpwJG.js → DomainView-DasOm4jM.js} +3 -3
- modoboa/frontend_dist/assets/{DomainsView-B_59gowf.js → DomainsView-DVJA4-oN.js} +1 -1
- modoboa/frontend_dist/assets/{EmailField-CwcwI5xW.js → EmailField-DpBYkqam.js} +1 -1
- modoboa/frontend_dist/assets/{EmailView-BshxcfAK.js → EmailView-D9vO7HHB.js} +1 -1
- modoboa/frontend_dist/assets/EmptyLayout-Dz3F8c7x.js +1 -0
- modoboa/frontend_dist/assets/{FiltersView-Cf20MSTK.js → FiltersView-FjdtF4HL.js} +1 -1
- modoboa/frontend_dist/assets/ForwardEmailView-DF5BQJjL.js +1 -0
- modoboa/frontend_dist/assets/{HtmlEditor-Bh4c689R.js → HtmlEditor-Zn0wjDog.js} +1 -1
- modoboa/frontend_dist/assets/{IdentitiesView-BXAuU1YX.js → IdentitiesView-Cf5eQoKA.js} +1 -1
- modoboa/frontend_dist/assets/{IdentitiesView-DPrrRMS5.css → IdentitiesView-D3AAiZLZ.css} +1 -1
- modoboa/frontend_dist/assets/{InformationView-Cn5FZW7H.js → InformationView-gEYTQ37R.js} +1 -1
- modoboa/frontend_dist/assets/{LoadingData-CdVvm4FI.js → LoadingData-Cxd490P6.js} +1 -1
- modoboa/frontend_dist/assets/LoginCallbackView-C9zhejHH.js +1 -0
- modoboa/frontend_dist/assets/{LoginView-tHIR4Adc.js → LoginView-sWEH834U.js} +1 -1
- modoboa/frontend_dist/assets/{MailboxView-B-aI4XBq.css → MailboxView-CfStlWhk.css} +1 -1
- modoboa/frontend_dist/assets/MailboxView-Dn3iDym9.js +1 -0
- modoboa/frontend_dist/assets/{MenuItems-PXjiG-fs.js → MenuItems-BRChEdLp.js} +1 -1
- modoboa/frontend_dist/assets/{MessageView-Cy4STShm.js → MessageView-CDbJxbxm.js} +1 -1
- modoboa/frontend_dist/assets/{MessagesView-DdkuEgfX.js → MessagesView-C_vBxVzN.js} +1 -1
- modoboa/frontend_dist/assets/{MigrationsView-CidSEjCF.js → MigrationsView-D6peiQuR.js} +1 -1
- modoboa/frontend_dist/assets/{ParametersForm-CAv4SH-E.js → ParametersForm-Dip8Sobe.js} +1 -1
- modoboa/frontend_dist/assets/ParametersView-CwI0-9kV.js +1 -0
- modoboa/frontend_dist/assets/ParametersView-wFKfiEVR.js +1 -0
- modoboa/frontend_dist/assets/{ProviderEditView-CrltAQXl.js → ProviderEditView-EH2NSz3x.js} +1 -1
- modoboa/frontend_dist/assets/{ProviderGeneralForm-BYAzVnXM.js → ProviderGeneralForm-CAVNOJp6.js} +1 -1
- modoboa/frontend_dist/assets/{ProvidersView-osjIY4Ex.js → ProvidersView-BoH99d3a.js} +1 -1
- modoboa/frontend_dist/assets/QuarantineLayout--4g9urq2.js +1 -0
- modoboa/frontend_dist/assets/{QuarantineView-D8Qg0MXA.js → QuarantineView-BDzDrWwK.js} +1 -1
- modoboa/frontend_dist/assets/ReplyEmailView-D0VgYBnw.js +1 -0
- modoboa/frontend_dist/assets/ResourcesForm-C1YGkT8i.js +1 -0
- modoboa/frontend_dist/assets/SelfServiceLayout-BYkSLc4n.js +1 -0
- modoboa/frontend_dist/assets/{SettingsView-9iNcDhkI.js → SettingsView-Cy5O-88Y.js} +1 -1
- modoboa/frontend_dist/assets/{StatisticsView-cHsPyGkL.js → StatisticsView-DtlBQK9z.js} +1 -1
- modoboa/frontend_dist/assets/{TimeSerieChart--V83dcJ9.js → TimeSerieChart-DNjvmMDE.js} +1 -1
- modoboa/frontend_dist/assets/{TimeSerieChart-CxiwMzE8.css → TimeSerieChart-Dn6Wznn8.css} +1 -1
- modoboa/frontend_dist/assets/UserLayout-Cgqq7HVi.js +1 -0
- modoboa/frontend_dist/assets/{VAlert-BuaaYN2h.js → VAlert-x6n3drjw.js} +1 -1
- modoboa/frontend_dist/assets/{VApp-CKP-6zGP.js → VApp-C74A9rX5.js} +1 -1
- modoboa/frontend_dist/assets/{VAutocomplete-Dwv6_Rzq.js → VAutocomplete-Bg2AlW_n.js} +1 -1
- modoboa/frontend_dist/assets/{VAvatar-Cmga0vj6.js → VAvatar-J563boKh.js} +1 -1
- modoboa/frontend_dist/assets/{VBadge-CixeK87a.js → VBadge-CtEsXuih.js} +1 -1
- modoboa/frontend_dist/assets/{VCard-CxH9DWoK.js → VCard-CJ2oGh_i.js} +1 -1
- modoboa/frontend_dist/assets/{VCheckbox-62GOpvvP.js → VCheckbox-VicuXIJq.js} +1 -1
- modoboa/frontend_dist/assets/{VCheckboxBtn-DMoNtKT8.js → VCheckboxBtn-CLh3m66z.js} +1 -1
- modoboa/frontend_dist/assets/{VChip-D_styETR.js → VChip-DvxO74Mw.js} +1 -1
- modoboa/frontend_dist/assets/VColorPicker-DcVohVWE.js +1 -0
- modoboa/frontend_dist/assets/{VContainer-B46caNs1.js → VContainer-L2EoH3dT.js} +1 -1
- modoboa/frontend_dist/assets/{VDataTable-Bh8NbVSx.js → VDataTable-CAT0QYJz.js} +1 -1
- modoboa/frontend_dist/assets/{VDataTableServer-BDR5hOmo.js → VDataTableServer-DP13Fhfa.js} +1 -1
- modoboa/frontend_dist/assets/{VDataTableVirtual-BOQlNtIG.js → VDataTableVirtual-LVNemzH7.js} +1 -1
- modoboa/frontend_dist/assets/{VDialog-BcTg7w6P.js → VDialog-CaQnQSDn.js} +1 -1
- modoboa/frontend_dist/assets/{VExpansionPanels-BmH5Jl2Z.js → VExpansionPanels-Dnwgt5uT.js} +1 -1
- modoboa/frontend_dist/assets/{VFileInput-BC4yAygd.js → VFileInput-z44hJIWr.js} +1 -1
- modoboa/frontend_dist/assets/{VForm-D5iPGkde.js → VForm-BwTUBf4u.js} +1 -1
- modoboa/frontend_dist/assets/{VInput-CoDJzvaW.js → VInput-Dpmea5z9.js} +1 -1
- modoboa/frontend_dist/assets/{VMenu-gUG70-zD.js → VMenu-DDmBlbM8.js} +1 -1
- modoboa/frontend_dist/assets/{VPicker-BXuKT3zB.js → VPicker-Dz7GbXwU.js} +1 -1
- modoboa/frontend_dist/assets/{VProgressCircular-BtOPiGCg.js → VProgressCircular-CtqQON49.js} +1 -1
- modoboa/frontend_dist/assets/{VRadioGroup-DIFZKSn-.js → VRadioGroup-WW8uMAv4.js} +1 -1
- modoboa/frontend_dist/assets/{VRow-ozg66L7j.js → VRow-CAbOSEHS.js} +1 -1
- modoboa/frontend_dist/assets/{VSelect-C3RjAa45.js → VSelect-Cdh0qO5m.js} +1 -1
- modoboa/frontend_dist/assets/{VSelectionControl-zyz-fJvC.js → VSelectionControl-BN-zQ3C6.js} +1 -1
- modoboa/frontend_dist/assets/{VSheet-BNx2X4Mk.js → VSheet-9RDZpWCf.js} +1 -1
- modoboa/frontend_dist/assets/VSpacer-BWZq1PhD.js +1 -0
- modoboa/frontend_dist/assets/{VSwitch-DwxdeAEq.js → VSwitch-CixaedmQ.js} +1 -1
- modoboa/frontend_dist/assets/{VTable-DaLxa4FO.js → VTable-DO7ofPSj.js} +1 -1
- modoboa/frontend_dist/assets/{VTabs-BP0Hgsgm.js → VTabs-C1-E1DJE.js} +1 -1
- modoboa/frontend_dist/assets/{VTextField-XoGTj1KG.js → VTextField-C9VUP7V9.js} +1 -1
- modoboa/frontend_dist/assets/{VTextarea-wBlRMIv_.js → VTextarea-B28SmJ2v.js} +1 -1
- modoboa/frontend_dist/assets/{VToolbar-CFZfqeOr.js → VToolbar-Cs-fVa4M.js} +1 -1
- modoboa/frontend_dist/assets/VWindowItem-C9PFEbE6.js +1 -0
- modoboa/frontend_dist/assets/WebmailLayout-Dp6jIazW.js +1 -0
- modoboa/frontend_dist/assets/{accounts-DUzbx6k8.js → accounts-BT429O7P.js} +1 -1
- modoboa/frontend_dist/assets/{admin-DewTk2H8.js → admin-Cu5rjY7m.js} +1 -1
- modoboa/frontend_dist/assets/{aliases-4sXmjwXp.js → aliases-Q4uTcEh4.js} +1 -1
- modoboa/frontend_dist/assets/{amavis-CC0li7_T.js → amavis-Be87kCqw.js} +1 -1
- modoboa/frontend_dist/assets/{amavis-DK8SHE6o.js → amavis-Bx0pxvRn.js} +1 -1
- modoboa/frontend_dist/assets/{contacts-BjghrPqZ.js → contacts-Dx240BT8.js} +1 -1
- modoboa/frontend_dist/assets/{domains-BSawReeu.js → domains-CQv8gtbQ.js} +1 -1
- modoboa/frontend_dist/assets/{domains.store-D-vWCEIK.js → domains.store-CfpnnBGo.js} +1 -1
- modoboa/frontend_dist/assets/{filter-C82FUCw_.js → filter-C_GJovn5.js} +1 -1
- modoboa/frontend_dist/assets/{forwardRefs-cvcnlhoK.js → forwardRefs-DPrLRqxP.js} +1 -1
- modoboa/frontend_dist/assets/{global.store-DbkcI5o2.js → global.store-CNChIxQL.js} +1 -1
- modoboa/frontend_dist/assets/importExport-7sRHU_3R.js +1 -0
- modoboa/frontend_dist/assets/index-YIGRKgNA.js +982 -0
- modoboa/frontend_dist/assets/{layout-C5FyYCHK.js → layout-BM4C5b2r.js} +1 -1
- modoboa/frontend_dist/assets/{layout.store-NXWtFIwL.js → layout.store-CCOp6tv6.js} +1 -1
- modoboa/frontend_dist/assets/{logos-BswdveCV.js → logos-CboXciB_.js} +1 -1
- modoboa/frontend_dist/assets/{logs-6CbtfaZS.js → logs-BeuijmJA.js} +1 -1
- modoboa/frontend_dist/assets/{parameters-aSQiR7kN.js → parameters-DpVw-Zs4.js} +1 -1
- modoboa/frontend_dist/assets/{parameters.store-CzQqVatx.js → parameters.store-DRarkO6b.js} +1 -1
- modoboa/frontend_dist/assets/{permissions-DNoefz-n.js → permissions-C33K6cJv.js} +1 -1
- modoboa/frontend_dist/assets/{ssrBoot-CKUX4kcb.js → ssrBoot-CpJ-7WlH.js} +1 -1
- modoboa/frontend_dist/assets/{tag-B_yWNNJD.js → tag-DV1_zOzl.js} +1 -1
- modoboa/frontend_dist/assets/theme-BGzdVPko.js +1 -0
- modoboa/frontend_dist/assets/transports-B9mWU1W8.js +1 -0
- modoboa/frontend_dist/assets/{webmail-CdU6CD9b.js → webmail-DRyN8JIK.js} +1 -1
- modoboa/frontend_dist/index.html +1 -1
- modoboa/static/css/offline.css +7 -20
- modoboa/templates/registration/base.html +18 -0
- modoboa/templates/registration/login.html +1 -1
- modoboa/urls.py +1 -0
- modoboa/webmail/lib/imaputils.py +2 -2
- {modoboa-2.5.0.dist-info → modoboa-2.6.0.dist-info}/METADATA +6 -6
- {modoboa-2.5.0.dist-info → modoboa-2.6.0.dist-info}/RECORD +155 -147
- {modoboa-2.5.0.dist-info → modoboa-2.6.0.dist-info}/licenses/LICENSE +1 -1
- modoboa/frontend_dist/assets/AccountLayout-DrN7vHsX.js +0 -1
- modoboa/frontend_dist/assets/AdminLayout-CTNhuwTw.js +0 -1
- modoboa/frontend_dist/assets/AlarmsView-DN_JIw9g.js +0 -1
- modoboa/frontend_dist/assets/AliasEditView-Cx9410JP.css +0 -1
- modoboa/frontend_dist/assets/AliasEditView-DjpPUTp9.js +0 -1
- modoboa/frontend_dist/assets/AliasRecipientForm-B1Y8wFdP.js +0 -1
- modoboa/frontend_dist/assets/ComposeEmailView-s3LMl3pO.js +0 -1
- modoboa/frontend_dist/assets/ConfirmDialog-DY_kUHLG.js +0 -1
- modoboa/frontend_dist/assets/ConnectedLayout-UWjiYBNw.js +0 -1
- modoboa/frontend_dist/assets/DashboardView-Dplk9itS.js +0 -1
- modoboa/frontend_dist/assets/EmptyLayout-DFfhnhLi.js +0 -1
- modoboa/frontend_dist/assets/ForwardEmailView-CZG062os.js +0 -1
- modoboa/frontend_dist/assets/LoginCallbackView-B9hAH4MI.js +0 -1
- modoboa/frontend_dist/assets/MailboxView-Bugu2vhg.js +0 -1
- modoboa/frontend_dist/assets/ParametersView-CX7Ffemw.js +0 -1
- modoboa/frontend_dist/assets/ParametersView-CrbNcmV3.js +0 -1
- modoboa/frontend_dist/assets/QuarantineLayout-B8EcU9vS.js +0 -1
- modoboa/frontend_dist/assets/ReplyEmailView-BABPqWhd.js +0 -1
- modoboa/frontend_dist/assets/ResourcesForm-OaqdRYVs.js +0 -1
- modoboa/frontend_dist/assets/SelfServiceLayout-d277YTGR.js +0 -1
- modoboa/frontend_dist/assets/UserLayout-B3sBiTcZ.js +0 -1
- modoboa/frontend_dist/assets/VColorPicker-BHscBGQV.js +0 -1
- modoboa/frontend_dist/assets/VSpacer-DinPiXs9.js +0 -1
- modoboa/frontend_dist/assets/VWindowItem-BB7ETW3b.js +0 -1
- modoboa/frontend_dist/assets/WebmailLayout-_Hk1XhVq.js +0 -1
- modoboa/frontend_dist/assets/importExport-DzoL4Mvc.js +0 -1
- modoboa/frontend_dist/assets/index-BImkz5Jx.js +0 -984
- modoboa/frontend_dist/assets/transports-BDNB9wR5.js +0 -1
- {modoboa-2.5.0.data → modoboa-2.6.0.data}/scripts/modoboa-admin.py +0 -0
- {modoboa-2.5.0.dist-info → modoboa-2.6.0.dist-info}/WHEEL +0 -0
- {modoboa-2.5.0.dist-info → modoboa-2.6.0.dist-info}/entry_points.txt +0 -0
- {modoboa-2.5.0.dist-info → modoboa-2.6.0.dist-info}/top_level.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as ne}from"./tag-
|
|
1
|
+
import{d as ne}from"./tag-DV1_zOzl.js";import{J as Z,N as T,i as v,h as ae,aT as $,a7 as E,a2 as R,aR as D,a6 as W,d as se,av as ue,aU as le,aV as ie,aw as re,ak as X,aW as ce}from"./index-YIGRKgNA.js";const M=Symbol.for("vuetify:layout"),q=Symbol.for("vuetify:layout-item"),U=1e3,pe=Z({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),me=Z({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function ge(){const s=T(M);if(!s)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:s.getLayoutItem,mainRect:s.mainRect,mainStyles:s.mainStyles}}function he(s){const u=T(M);if(!u)throw new Error("[Vuetify] Could not find injected layout");const d=s.id??`layout-item-${ue()}`,i=D("useLayoutItem");X(q,{id:d});const n=W(!1);le(()=>n.value=!0),ie(()=>n.value=!1);const{layoutItemStyles:r,layoutItemScrimStyles:c}=u.register(i,{...s,active:v(()=>n.value?!1:s.active.value),id:d});return re(()=>u.unregister(d)),{layoutItemStyles:r,layoutRect:u.layoutRect,layoutItemScrimStyles:c}}const ve=(s,u,d,i)=>{let n={top:0,left:0,right:0,bottom:0};const r=[{id:"",layer:{...n}}];for(const c of s){const m=u.get(c),g=d.get(c),z=i.get(c);if(!m||!g||!z)continue;const h={...n,[m.value]:parseInt(n[m.value],10)+(z.value?parseInt(g.value,10):0)};r.push({id:c,layer:h}),n=h}return r};function Ie(s){const u=T(M,null),d=v(()=>u?u.rootZIndex.value-100:U),i=ae([]),n=$(new Map),r=$(new Map),c=$(new Map),m=$(new Map),g=$(new Map),{resizeRef:z,contentRect:h}=ne(),F=v(()=>{const t=new Map,l=s.overlaps??[];for(const e of l.filter(a=>a.includes(":"))){const[a,o]=e.split(":");if(!i.value.includes(a)||!i.value.includes(o))continue;const f=n.get(a),p=n.get(o),S=r.get(a),w=r.get(o);!f||!p||!S||!w||(t.set(o,{position:f.value,amount:parseInt(S.value,10)}),t.set(a,{position:p.value,amount:-parseInt(w.value,10)}))}return t}),I=v(()=>{const t=[...new Set([...c.values()].map(e=>e.value))].sort((e,a)=>e-a),l=[];for(const e of t){const a=i.value.filter(o=>{var f;return((f=c.get(o))==null?void 0:f.value)===e});l.push(...a)}return ve(l,n,r,m)}),H=v(()=>!Array.from(g.values()).some(t=>t.value)),b=v(()=>I.value[I.value.length-1].layer),J=E(()=>({"--v-layout-left":R(b.value.left),"--v-layout-right":R(b.value.right),"--v-layout-top":R(b.value.top),"--v-layout-bottom":R(b.value.bottom),...H.value?void 0:{transition:"none"}})),x=v(()=>I.value.slice(1).map((t,l)=>{let{id:e}=t;const{layer:a}=I.value[l],o=r.get(e),f=n.get(e);return{id:e,...a,size:Number(o.value),position:f.value}})),N=t=>x.value.find(l=>l.id===t),O=D("createLayout"),j=W(!1);se(()=>{j.value=!0}),X(M,{register:(t,l)=>{let{id:e,order:a,position:o,layoutSize:f,elementSize:p,active:S,disableTransitions:w,absolute:G}=l;c.set(e,a),n.set(e,o),r.set(e,f),m.set(e,S),w&&g.set(e,w);const k=ce(q,O==null?void 0:O.vnode).indexOf(t);k>-1?i.value.splice(k,0,e):i.value.push(e);const B=v(()=>x.value.findIndex(L=>L.id===e)),V=v(()=>d.value+I.value.length*2-B.value*2),Q=v(()=>{const L=o.value==="left"||o.value==="right",A=o.value==="right",te=o.value==="bottom",C=p.value??f.value,oe=C===0?"%":"px",K={[o.value]:0,zIndex:V.value,transform:`translate${L?"X":"Y"}(${(S.value?0:-(C===0?100:C))*(A||te?-1:1)}${oe})`,position:G.value||d.value!==U?"absolute":"fixed",...H.value?void 0:{transition:"none"}};if(!j.value)return K;const y=x.value[B.value];if(!y)throw new Error(`[Vuetify] Could not find layout item "${e}"`);const P=F.value.get(e);return P&&(y[P.position]+=P.amount),{...K,height:L?`calc(100% - ${y.top}px - ${y.bottom}px)`:p.value?`${p.value}px`:void 0,left:A?void 0:`${y.left}px`,right:A?`${y.right}px`:void 0,top:o.value!=="bottom"?`${y.top}px`:void 0,bottom:o.value!=="top"?`${y.bottom}px`:void 0,width:L?p.value?`${p.value}px`:void 0:`calc(100% - ${y.left}px - ${y.right}px)`}}),ee=v(()=>({zIndex:V.value-1}));return{layoutItemStyles:Q,layoutItemScrimStyles:ee,zIndex:V}},unregister:t=>{c.delete(t),n.delete(t),r.delete(t),m.delete(t),g.delete(t),i.value=i.value.filter(l=>l!==t)},mainRect:b,mainStyles:J,getLayoutItem:N,items:x,layoutRect:h,rootZIndex:d});const Y=E(()=>["v-layout",{"v-layout--full-height":s.fullHeight}]),_=E(()=>({zIndex:u?d.value:void 0,position:u?"relative":void 0,overflow:u?"hidden":void 0}));return{layoutClasses:Y,layoutStyles:_,getLayoutItem:N,items:x,layoutRect:h,layoutRef:z}}export{M as V,he as a,me as b,Ie as c,pe as m,ge as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as a,
|
|
1
|
+
import{E as a,h as s}from"./index-YIGRKgNA.js";const r=a("layout",()=>{const e=s([]),t=s(!1);function n(u){e.value=u}async function o(){e.value=[],t.value=!1}return{leftMenuItems:e,compactLeftMenu:t,setLeftMenuItems:n,$reset:o}});export{r as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{i as r,bl as s}from"./index-YIGRKgNA.js";function i(){const o=s(),t=r(()=>o.MENU_LOGO_PATH?o.MENU_LOGO_PATH:new URL("/assets/Modoboa_RVB-BLANC-SANS-BBGoASES.png",import.meta.url).href),n=r(()=>o.CREATION_FORM_LOGO_PATH?o.CREATION_FORM_LOGO_PATH:new URL("/assets/Modoboa_RVB-BLEU-SANS-pKrnjsR_.png",import.meta.url).href);return{menuLogoPath:t,creationFormLogoPath:n}}export{i as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e}from"./index-
|
|
1
|
+
import{C as e}from"./index-YIGRKgNA.js";const t="logs",o={getAuditTrail(s){return e.get(`/${t}/audit-trail/`,{params:s})},getMessages(s){return e.get(`/${t}/messages/`,{params:s})}};export{o as l};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e}from"./index-
|
|
1
|
+
import{C as e}from"./index-YIGRKgNA.js";const r="parameters",l={getGlobalApplications(){return e.get(`/${r}/global/applications/`)},getGlobalApplication(t){return e.get(`/${r}/global/${t}/`)},getGlobalApplicationStructure(t){return e.get(`/${r}/global/structure/?app=${t}`)},saveGlobalApplication(t,p){return e.put(`/${r}/global/${t}/`,p)},getUserApplications(){return e.get(`/${r}/user/applications/`)},getUserApplication(t){return e.get(`/${r}/user/${t}/`)},getUserApplicationStructure(t){return e.get(`/${r}/user/structure/?app=${t}`)},saveUserApplication(t,p){return e.put(`/${r}/user/${t}/`,p)}};export{l as p};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as a,
|
|
1
|
+
import{E as a,h as t}from"./index-YIGRKgNA.js";const s=a("parameters",()=>{const e=t(null);async function r(){e.value=null}return{imapMigrationEnabled:e,$reset:r}});export{s as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u,
|
|
1
|
+
import{u,i as n,j as e}from"./index-YIGRKgNA.js";function c(){const t=u(),s=n(()=>[e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role)),r=n(()=>[e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role)),o=n(()=>[e.DOMAIN_ADMIN,e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role));return{canSetRole:s,canAddDomain:r,canViewDomain:o}}export{c as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a6 as t,d as e,a7 as s,aS as n}from"./index-
|
|
1
|
+
import{a6 as t,d as e,a7 as s,aS as n}from"./index-YIGRKgNA.js";function i(){const o=t(!1);return e(()=>{window.requestAnimationFrame(()=>{o.value=!0})}),{ssrBootStyles:s(()=>o.value?void 0:{transition:"none !important"}),isBooted:n(o)}}export{i as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{J as m,aR as
|
|
1
|
+
import{J as m,aR as g,ab as h,h as d,an as f,aw as l,z as b,aS as R,i as S,a2 as r}from"./index-YIGRKgNA.js";const x=m({class:[String,Array,Object],style:{type:[String,Array,Object],default:null}},"component");function y(t){const a=g("useRender");a.render=t}function W(t){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const e=h(),i=d();if(f){const s=new ResizeObserver(n=>{t==null||t(n,s),n.length&&(a==="content"?i.value=n[0].contentRect:i.value=n[0].target.getBoundingClientRect())});l(()=>{s.disconnect()}),b(()=>e.el,(n,o)=>{o&&(s.unobserve(o),i.value=void 0),n&&s.observe(n)},{flush:"post"})}return{resizeRef:e,contentRect:R(i)}}const H=m({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function N(t){return{dimensionStyles:S(()=>{const e={},i=r(t.height),s=r(t.maxHeight),n=r(t.maxWidth),o=r(t.minHeight),u=r(t.minWidth),c=r(t.width);return i!=null&&(e.height=i),s!=null&&(e.maxHeight=s),n!=null&&(e.maxWidth=n),o!=null&&(e.minHeight=o),u!=null&&(e.minWidth=u),c!=null&&(e.width=c),e})}}const w=m({tag:{type:[String,Object,Function],default:"div"}},"tag");export{N as a,x as b,w as c,W as d,H as m,y as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as a,b5 as o,h as t}from"./index-YIGRKgNA.js";const h={getTheme(){return a.get("/theme/")}};function i(){const l=o(),e=t(null);return{theme:e,enableTheme:async()=>{const r=await h.getTheme();e.value=r.data,e.value.theme_primary_color!==l.themes.value.light.colors.primary&&(l.themes.value.light.colors.primary=e.value.theme_primary_color),e.value.theme_primary_color_light!==l.themes.value.light.colors["primary-lighten-1"]&&(l.themes.value.light.colors["primary-lighten-1"]=e.value.theme_primary_color_light),e.value.theme_primary_color_dark!==l.themes.value.light.colors["primary-darken-1"]&&(l.themes.value.light.colors["primary-darken-1"]=e.value.theme_primary_color_dark),e.value.theme_secondary_color!==l.themes.value.light.colors.secondary&&(l.themes.value.light.colors.secondary=e.value.theme_secondary_color),e.value.theme_label_color!==l.themes.value.light.colors.label&&(l.themes.value.light.colors.label=e.value.theme_label_color)}}}export{i as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as t}from"./index-YIGRKgNA.js";const r="transports",s={getAll(){return t.get(`/${r}/`)}};export{s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as t}from"./index-
|
|
1
|
+
import{C as t}from"./index-YIGRKgNA.js";const r={getUserMailboxes(e){const s={};return e&&(s.mailbox=e),t.get("/webmail/mailboxes/",{params:s})},getUserMailboxQuota(e){const s={mailbox:e};return t.get("/webmail/mailboxes/quota/",{params:s})},getUserMailboxUnseen(e){const s={mailbox:e};return t.get("webmail/mailboxes/unseen/",{params:s})},createUserMailbox(e){return t.post("/webmail/mailboxes/",e)},renameUserMailbox(e){return t.post("/webmail/mailboxes/rename/",e)},compressUserMailbox(e){return t.post("/webmail/mailboxes/compress/",e)},deleteUserMailbox(e){return t.post("/webmail/mailboxes/delete/",e)},emptyUserMailbox(e){const s={name:e};return t.post("/webmail/mailboxes/empty/",s)},getMailboxEmails(e,s){const a={mailbox:e,...s};return t.get("/webmail/emails/",{params:a})},getEmailContent(e,s,a){const o={mailbox:e,mailid:s,...a};return t.get("/webmail/emails/content/",{params:o})},getEmailSource(e,s){const a={mailbox:e,mailid:s};return t.get("/webmail/emails/source/",{params:a})},getEmailAttachment(e,s,a){const o={mailbox:e,mailid:s,partnum:a};return t.get("/webmail/emails/attachment/",{params:o,responseType:"blob"})},deleteSelection(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/delete/",a)},markSelectionAsJunk(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/mark_as_junk/",a)},markSelectionAsNotJunk(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/mark_as_not_junk/",a)},flagSelection(e,s,a){const o={mailbox:e,selection:s,status:a};return t.post("/webmail/emails/flag/",o)},sendEmailFromComposeSession(e,s){return t.post(`/webmail/compose-sessions/${e}/send/`,s)},getComposeSession(e){return t.get(`/webmail/compose-sessions/${e}/`)},createComposeSession(){return t.post("/webmail/compose-sessions/")},getAllowedSenders(){return t.get("/webmail/compose-sessions/allowed_senders/")},uploadAttachment(e,s){return t.post(`/webmail/compose-sessions/${e}/attachments/`,s,{headers:{"Content-Type":"multipart/form-data"}})},removeAttachment(e,s){return t.delete(`/webmail/compose-sessions/${e}/attachments/${s}/`)}};export{r as a};
|
modoboa/frontend_dist/index.html
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<link rel="icon" href="/favicon.ico" />
|
|
13
13
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
14
14
|
<title>Welcome to Modoboa</title>
|
|
15
|
-
<script type="module" crossorigin src="/assets/index-
|
|
15
|
+
<script type="module" crossorigin src="/assets/index-YIGRKgNA.js"></script>
|
|
16
16
|
<link rel="stylesheet" crossorigin href="/assets/index-B1bJH8Ti.css">
|
|
17
17
|
</head>
|
|
18
18
|
|
modoboa/static/css/offline.css
CHANGED
|
@@ -23,11 +23,6 @@ body {
|
|
|
23
23
|
padding: 20px;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
.left-column {
|
|
27
|
-
background-color: #046bf8;
|
|
28
|
-
text-align: center;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
26
|
.right-column {
|
|
32
27
|
background-color: #ffffff;
|
|
33
28
|
display: flex;
|
|
@@ -115,29 +110,14 @@ h2 {
|
|
|
115
110
|
transition: background-color 0.3s;
|
|
116
111
|
}
|
|
117
112
|
|
|
118
|
-
.btn-primary {
|
|
119
|
-
background-color: #007bff;
|
|
120
|
-
color: white;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
113
|
.btn:hover {
|
|
124
114
|
background-color: #c9c9c9;
|
|
125
115
|
}
|
|
126
116
|
|
|
127
|
-
.btn-primary:hover {
|
|
128
|
-
background-color: #0056b3;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
117
|
.footer {
|
|
132
118
|
margin-top: 20px;
|
|
133
119
|
}
|
|
134
120
|
|
|
135
|
-
.footer a {
|
|
136
|
-
color: #007bff;
|
|
137
|
-
text-decoration: none;
|
|
138
|
-
font-size: 14px;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
121
|
.footer a:hover {
|
|
142
122
|
text-decoration: underline;
|
|
143
123
|
}
|
|
@@ -155,6 +135,13 @@ h2 {
|
|
|
155
135
|
margin-top: 5px;
|
|
156
136
|
}
|
|
157
137
|
|
|
138
|
+
.annoucement {
|
|
139
|
+
background-color: #e6e6e6;
|
|
140
|
+
padding: 20px;
|
|
141
|
+
border-radius: 5px;
|
|
142
|
+
text-align: left;
|
|
143
|
+
}
|
|
144
|
+
|
|
158
145
|
@media (max-width: 768px) {
|
|
159
146
|
.container {
|
|
160
147
|
flex-direction: column;
|
|
@@ -8,6 +8,24 @@
|
|
|
8
8
|
<title>{% trans "Welcome to Modoboa" %}</title>
|
|
9
9
|
<link rel="icon" type="image/x-icon" href="{% static 'css/favicon.ico' %}" />
|
|
10
10
|
<link rel="stylesheet" type="text/css" href="{% static 'css/offline.css' %}" />
|
|
11
|
+
<style>
|
|
12
|
+
.left-column {
|
|
13
|
+
background-color: {{ theme_primary_color }};
|
|
14
|
+
text-align: center;
|
|
15
|
+
}
|
|
16
|
+
.btn-primary {
|
|
17
|
+
background-color: {{ theme_primary_color }};
|
|
18
|
+
color: white;
|
|
19
|
+
}
|
|
20
|
+
.btn-primary:hover {
|
|
21
|
+
background-color: {{ theme_primary_color_dark }};
|
|
22
|
+
}
|
|
23
|
+
.footer a {
|
|
24
|
+
color: #{{ theme_primary_color }};
|
|
25
|
+
text-decoration: none;
|
|
26
|
+
font-size: 14px;
|
|
27
|
+
}
|
|
28
|
+
</style>
|
|
11
29
|
{% block extra_css %}{% endblock %}
|
|
12
30
|
</head>
|
|
13
31
|
<body>
|
modoboa/urls.py
CHANGED
modoboa/webmail/lib/imaputils.py
CHANGED
|
@@ -301,8 +301,8 @@ class IMAPconnector:
|
|
|
301
301
|
key = "SUBJECT"
|
|
302
302
|
else:
|
|
303
303
|
continue
|
|
304
|
-
criterions = or_criterion(criterions, f
|
|
305
|
-
self.criterions = [bytearray(criterions, "
|
|
304
|
+
criterions = or_criterion(criterions, f'({key} "{pattern}")')
|
|
305
|
+
self.criterions = [bytearray(criterions, "utf8")]
|
|
306
306
|
|
|
307
307
|
def messages_count(self, **kwargs) -> int:
|
|
308
308
|
"""An enhanced version of messages_count.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: modoboa
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.0
|
|
4
4
|
Summary: Mail hosting made simple
|
|
5
5
|
Author-email: Antoine Nguyen <tonio@ngyn.org>
|
|
6
6
|
License: ISC License
|
|
7
7
|
|
|
8
|
-
Copyright (c) 2009-
|
|
8
|
+
Copyright (c) 2009-2025, Antoine Nguyen <tonio@ngyn.org>
|
|
9
9
|
|
|
10
10
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
11
11
|
purpose with or without fee is hereby granted, provided that the above
|
|
@@ -42,7 +42,7 @@ Description-Content-Type: text/x-rst
|
|
|
42
42
|
License-File: LICENSE
|
|
43
43
|
Requires-Dist: django==5.2.6
|
|
44
44
|
Requires-Dist: django-phonenumber-field[phonenumbers]==8.1.0
|
|
45
|
-
Requires-Dist: django-reversion==
|
|
45
|
+
Requires-Dist: django-reversion==6.0.0
|
|
46
46
|
Requires-Dist: django-xforwardedfor-middleware==2.0
|
|
47
47
|
Requires-Dist: django-otp==1.6.1
|
|
48
48
|
Requires-Dist: django-filter
|
|
@@ -58,9 +58,9 @@ Requires-Dist: passlib~=1.7.4
|
|
|
58
58
|
Requires-Dist: bcrypt
|
|
59
59
|
Requires-Dist: asgiref
|
|
60
60
|
Requires-Dist: dnspython==2.8.0
|
|
61
|
-
Requires-Dist: feedparser==6.0.
|
|
61
|
+
Requires-Dist: feedparser==6.0.12
|
|
62
62
|
Requires-Dist: fido2==2.0.0
|
|
63
|
-
Requires-Dist: gevent==25.
|
|
63
|
+
Requires-Dist: gevent==25.9.1
|
|
64
64
|
Requires-Dist: progressbar33==2.4
|
|
65
65
|
Requires-Dist: python-dateutil
|
|
66
66
|
Requires-Dist: cryptography
|
|
@@ -173,7 +173,7 @@ Getting help
|
|
|
173
173
|
|
|
174
174
|
Modoboa is a free software and is totally open source BUT you can hire the team if you need professional services. More information here: https://modoboa.org/en/professional-services/.
|
|
175
175
|
|
|
176
|
-
Contracting a support plan
|
|
176
|
+
Contracting a support plan is a good way to ensure your installation stays available and up-to-date and it will help the project to be sustainable :)
|
|
177
177
|
|
|
178
178
|
*********
|
|
179
179
|
Community
|