mailcow-adm.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import argparse
  4. import sys
  5. from models.AliasModel import AliasModel
  6. from models.MailboxModel import MailboxModel
  7. from models.SyncjobModel import SyncjobModel
  8. from models.CalendarModel import CalendarModel
  9. from models.MailerModel import MailerModel
  10. from models.AddressbookModel import AddressbookModel
  11. from models.MaildirModel import MaildirModel
  12. from models.DomainModel import DomainModel
  13. from models.DomainadminModel import DomainadminModel
  14. from models.StatusModel import StatusModel
  15. from modules.Utils import Utils
  16. def main():
  17. utils = Utils()
  18. model_map = {
  19. MailboxModel.parser_command: MailboxModel,
  20. AliasModel.parser_command: AliasModel,
  21. SyncjobModel.parser_command: SyncjobModel,
  22. CalendarModel.parser_command: CalendarModel,
  23. AddressbookModel.parser_command: AddressbookModel,
  24. MailerModel.parser_command: MailerModel,
  25. MaildirModel.parser_command: MaildirModel,
  26. DomainModel.parser_command: DomainModel,
  27. DomainadminModel.parser_command: DomainadminModel,
  28. StatusModel.parser_command: StatusModel
  29. }
  30. parser = argparse.ArgumentParser(description="mailcow Admin Tool")
  31. subparsers = parser.add_subparsers(dest="command", required=True)
  32. for model in model_map.values():
  33. model.add_parser(subparsers)
  34. args = parser.parse_args()
  35. for cmd, model_cls in model_map.items():
  36. if args.command == cmd and model_cls.has_required_args(args):
  37. instance = model_cls(**vars(args))
  38. action = getattr(instance, args.object, None)
  39. if callable(action):
  40. res = action()
  41. utils.pprint(res)
  42. sys.exit(0)
  43. parser.print_help()
  44. if __name__ == "__main__":
  45. main()