1/*2Maddy Mail Server - Composable all-in-one email server.3Copyright © 2019-2020 Max Mazurov <fox.cpp@disroot.org>, Maddy Mail Server contributors45This program is free software: you can redistribute it and/or modify6it under the terms of the GNU General Public License as published by7the Free Software Foundation, either version 3 of the License, or8(at your option) any later version.910This program is distributed in the hope that it will be useful,11but WITHOUT ANY WARRANTY; without even the implied warranty of12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13GNU General Public License for more details.1415You should have received a copy of the GNU General Public License16along with this program. If not, see <https://www.gnu.org/licenses/>.17*/1819package module2021import (22 imapbackend "github.com/emersion/go-imap/backend"23)2425// Storage interface is a slightly modified go-imap's Backend interface26// (authentication is removed).27//28// Modules implementing this interface should be registered with prefix29// "storage." in name.30type Storage interface {31 // GetOrCreateIMAPAcct returns User associated with storage account specified by32 // the name.33 //34 // If it doesn't exists - it should be created.35 GetOrCreateIMAPAcct(username string) (imapbackend.User, error)36 GetIMAPAcct(username string) (imapbackend.User, error)3738 // Extensions returns list of IMAP extensions supported by backend.39 IMAPExtensions() []string40}4142// ManageableStorage is an extended Storage interface that allows to43// list existing accounts, create and delete them.44type ManageableStorage interface {45 Storage4647 ListIMAPAccts() ([]string, error)48 CreateIMAPAcct(username string) error49 DeleteIMAPAcct(username string) error50}