12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- from modules.Dovecot import Dovecot
- from models.BaseModel import BaseModel
- class MaildirModel(BaseModel):
- parser_command = "maildir"
- required_args = {
- "encrypt": [],
- "decrypt": [],
- "restore": [["username", "item"], ["list"]]
- }
- def __init__(
- self,
- username=None,
- source=None,
- item=None,
- overwrite=None,
- list=None,
- **kwargs
- ):
- self.dovecot = Dovecot()
- for key, value in kwargs.items():
- setattr(self, key, value)
- self.username = username
- self.source = source
- self.item = item
- self.overwrite = overwrite
- self.list = list
- def encrypt(self):
- """
- Encrypt the maildir for the specified user or all.
- :return: Response from Dovecot.
- """
- return self.dovecot.encryptMaildir(self.source_dir, self.output_dir)
- def decrypt(self):
- """
- Decrypt the maildir for the specified user or all.
- :return: Response from Dovecot.
- """
- return self.dovecot.decryptMaildir(self.source_dir, self.output_dir)
- def restore(self):
- """
- Restore or List maildir data for the specified user.
- :return: Response from Dovecot.
- """
- if self.list:
- return self.dovecot.listDeletedMaildirs()
- return self.dovecot.restoreMaildir(self.username, self.item)
- @classmethod
- def add_parser(cls, subparsers):
- parser = subparsers.add_parser(
- cls.parser_command,
- help="Manage maildir (encrypt, decrypt, restore)"
- )
- parser.add_argument("object", choices=list(cls.required_args.keys()), help="Action to perform: encrypt, decrypt, restore")
- parser.add_argument("--item", help="Item to restore")
- parser.add_argument("--username", help="Username to restore the item to")
- parser.add_argument("--list", action="store_true", help="List items to restore")
- parser.add_argument("--source-dir", help="Path to the source maildir to import/encrypt/decrypt")
- parser.add_argument("--output-dir", help="Directory to store encrypted/decrypted files inside the Dovecot container")
|