From d6b222273197a4fb13e30fa28a4865ae6a6aee48 Mon Sep 17 00:00:00 2001 From: Plamen Dimitrov Date: Wed, 11 Jul 2012 11:23:49 +0200 Subject: [PATCH] Server added to command line arguments --- src/imap_restore_mail.py | 25 ++++++++++++++----------- src/mail_iterator.py | 8 +++----- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/imap_restore_mail.py b/src/imap_restore_mail.py index cfdf9cf..093c7a2 100644 --- a/src/imap_restore_mail.py +++ b/src/imap_restore_mail.py @@ -32,12 +32,12 @@ def main(): # prepare configuration args = configure_args() 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) + logging.info("The module restore_mail_inject.py started with user %s, destination %s and source %s.", + args.user, args.destination, args.source) # connect to unix socket or server psw = getpass.getpass() - session = MailIterator(args.user, psw) + session = MailIterator(args.server, args.user, psw) storage = FileIterator() # retrieve mailbox list from the mailbox list file @@ -45,12 +45,12 @@ def main(): # delete olf IMAP folders if no append requested if not args.append: - session.delete_mailboxes(args.folder) - if args.folder == "INBOX": + session.delete_mailboxes(args.destination) + if args.destination == "INBOX": session.clear_inbox_acls(args.user) # inject emails - path_generator = storage.load_mails(args.srcdir, args.folder) + path_generator = storage.load_mails(args.source, args.destination) for message, mailbox, date_modified in path_generator: # mailboxes marked for creating and acl update @@ -78,13 +78,15 @@ def configure_args(): # parse arguments parser = argparse.ArgumentParser(description="Tool to inject mails via IMAP.") - parser.add_argument('-s', '--sourcedir', dest='srcdir', action='store', - required=True, help='folder to read mail from') + parser.add_argument('-d', '--directory', dest='source', action='store', + required=True, help='file directory to read mails from') + parser.add_argument('-s', '--server', dest='server', action='store', + default="localhost", help='imap server name with default localhost') parser.add_argument('-u', '--username', dest='user', action='store', required=True, help='user to store mails to') parser.add_argument('-o', '--ouser', dest='ouser', action='store', default="", help='name of the original user (=username if not specified)') - parser.add_argument('-f', '--foldername', dest='folder', action='store', + parser.add_argument('-f', '--foldername', dest='destination', action='store', default="INBOX", help='folder to store mails to - if not specified we overwrite INBOX') parser.add_argument('-m', '--mboxlistfile', dest='mboxlistfile', action='store', default="", help='mboxlist file (flat file format) to read the ACLs from') @@ -92,8 +94,9 @@ def configure_args(): default=False, help="append mails, don't delete anything") args = parser.parse_args() - if (args.folder != "INBOX"): - args.folder = "INBOX/" + args.folder + # some default post processing of arguments + if (args.destination != "INBOX"): + args.destination = "INBOX/" + args.destination if (args.ouser == ""): args.ouser = args.user diff --git a/src/mail_iterator.py b/src/mail_iterator.py index 12ed42d..e46c312 100644 --- a/src/mail_iterator.py +++ b/src/mail_iterator.py @@ -24,8 +24,6 @@ MAILBOX_RESP = re.compile(r'\((?P.*?)\) "(?P.*)" (?P.*)' UIDVAL_RESP = re.compile(r'(?P.*) \(UIDVALIDITY (?P.*)\)') ACLS_RESP = re.compile(b'(?P.*) (?P.*)') -SERVER = "localhost" - class MailIterator: """This class communicates with the e-mail server.""" @@ -37,12 +35,12 @@ class MailIterator: # logged in status logged_in = None - def __init__(self, username, password): + def __init__(self, server, username, password): """Creates a connection and a user session.""" # connect to server try: - self.mail_con = imaplib.IMAP4(SERVER) + self.mail_con = imaplib.IMAP4(server) # socket functionality (currently unavailable) #imap_socket = socket.socket(socket.AF_UNIX) @@ -50,7 +48,7 @@ class MailIterator: #self.mail_con.sock = imap_socket #self.mail_con.file = self.mail_con.sock.makefile('rb') - logging.info("Connected to %s", SERVER) + logging.info("Connected to %s", server) except (socket.error, self.mail_con.error) as ex: logging.error("Could not connect to host: %s", ex) sys.exit() -- 1.7.1