Server added to command line arguments
authorPlamen Dimitrov <plamen.dimitrov@intra2net.com>
Wed, 11 Jul 2012 09:23:49 +0000 (11:23 +0200)
committerPlamen Dimitrov <plamen.dimitrov@intra2net.com>
Wed, 11 Jul 2012 09:23:49 +0000 (11:23 +0200)
src/imap_restore_mail.py
src/mail_iterator.py

index cfdf9cf..093c7a2 100644 (file)
@@ -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
 
index 12ed42d..e46c312 100644 (file)
@@ -24,8 +24,6 @@ MAILBOX_RESP = re.compile(r'\((?P<flags>.*?)\) "(?P<delimiter>.*)" (?P<name>.*)'
 UIDVAL_RESP = re.compile(r'(?P<name>.*) \(UIDVALIDITY (?P<uidval>.*)\)')
 ACLS_RESP = re.compile(b'(?P<user>.*) (?P<acls>.*)')
 
-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()