import argparse
from mail_iterator import MailIterator
from file_iterator import FileIterator
+from warnings_handler import WarningsHandler
LOG_FILENAME = "restore_mail_inject.log"
LOG_FILE_LEVEL = logging.DEBUG
LOG_SHELL_LEVEL = logging.INFO
+LOG_UNCLEAN_EXIT_LEVEL = logging.WARNING
def main():
"""Main function."""
# prepare configuration
args = configure_args()
- prepare_logger()
- logging.info("The module restore_mail_inject.py started with user %s, folder %s and source %s." %
- (args.user, args.folder, args.srcdir))
-
- # connect
- session = MailIterator(args.user)
- #session = MailIterator("/var/imap/socket/imap", "cyrus", "geheim")
+ warnings_handler = prepare_logger()
+ logging.info("The module restore_mail_inject.py started with user %s, folder %s and source %s.",
+ args.user, args.folder, args.srcdir)
+
+ # connect to unix socket or server
+ if(args.unix_socket_disabled):
+ session = MailIterator(args.user)
+ else:
+ session = MailIterator(args.user)
+ #session = MailIterator("/var/imap/socket/imap", "cyrus", "geheim")
storage = FileIterator()
# retrieve mailbox list from the mailbox list file
for acl_mailbox in storage.acl_mailboxes:
session.add_acls(acl_mailbox, mailbox_list, args.ouser, args.user)
- logging.info("Finished injecting mails. Exiting.")
- return
+ logging.info("Finished injecting mails. Exiting with code %s.", warnings_handler.detected_problems)
+ return warnings_handler.detected_problems
def configure_args():
"""Configure arguments and return them."""
+
# parse arguments
parser = argparse.ArgumentParser(description="Tool to inject mails via IMAP.")
parser.add_argument('-u', '--username', dest='user', action='store',
default="", help='name of the original user (=username if not specified)')
parser.add_argument('-a', '--append', dest='append', action='store_true',
default=False, help="append mails, don't delete anything")
+ parser.add_argument('-n', '--normal', dest='unix_socket_disabled', action='store_true',
+ default=False, help='disable unix socket usage for the IMAP connection')
args = parser.parse_args()
if (args.folder != "INBOX"):
level=LOG_FILE_LEVEL)
# add a handler for a console output
+ default_logger = logging.getLogger('')
console = logging.StreamHandler()
console.setLevel(LOG_SHELL_LEVEL)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console.setFormatter(formatter)
- logging.getLogger('').addHandler(console)
- return
+ default_logger.addHandler(console)
+
+ # add a handler for warnings counting
+ warnings_handler = WarningsHandler()
+ warnings_handler.setLevel(LOG_UNCLEAN_EXIT_LEVEL)
+ default_logger.addHandler(warnings_handler)
+
+ return warnings_handler
if __name__ == "__main__":
main()