From a6db99a21ee5e9452ed47fb4d1c6237b239eef6e Mon Sep 17 00:00:00 2001 From: John Goerzen Date: Tue, 17 Oct 2006 20:55:03 +0100 Subject: [PATCH] Add remote{host,user,pass}eval config options (need documentation yet) From Ben Kibbey hello, Attached is a patch to enable evaluation of account credentials with the remotehosteval, remoteusereval and remotepasseval configuration options. I needed this because rather than change all my other programs configuration settings when I change, say a password, I store them in a file. So I call a function in pythonfile which parses the credential file and returns the wanted info. Not really very well tested, but not complex either. Offlineimap is great, thanks. --- offlineimap/repository/IMAP.py | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/offlineimap/repository/IMAP.py b/offlineimap/repository/IMAP.py index 8548b6d..33987e2 100644 --- a/offlineimap/repository/IMAP.py +++ b/offlineimap/repository/IMAP.py @@ -85,10 +85,30 @@ class IMAPRepository(BaseRepository): return self.imapserver.delim def gethost(self): - return self.getconf('remotehost') + host = None + localeval = self.localeval + + if self.config.has_option(self.getsection(), 'remotehosteval'): + host = self.getconf('remotehosteval') + if host != None: + return localeval.eval(host) + + host = self.getconf('remotehost') + if host != None: + return host def getuser(self): - return self.getconf('remoteuser') + user = None + localeval = self.localeval + + if self.config.has_option(self.getsection(), 'remoteusereval'): + user = self.getconf('remoteusereval') + if user != None: + return localeval.eval(user) + + user = self.getconf('remoteuser') + if user != None: + return user def getport(self): return self.getconfint('remoteport', None) @@ -109,6 +129,14 @@ class IMAPRepository(BaseRepository): return self.getconfboolean('expunge', 1) def getpassword(self): + passwd = None + localeval = self.localeval + + if self.config.has_option(self.getsection(), 'remotepasseval'): + passwd = self.getconf('remotepasseval') + if passwd != None: + return localeval.eval(passwd) + password = self.getconf('remotepass', None) if password != None: return password @@ -117,7 +145,7 @@ class IMAPRepository(BaseRepository): fd = open(os.path.expanduser(passfile)) password = fd.readline().strip() fd.close() - return password + return password return None def getfolder(self, foldername):