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.
This commit is contained in:
John Goerzen 2006-10-17 20:55:03 +01:00
parent d04e899368
commit a6db99a21e
1 changed files with 31 additions and 3 deletions

View File

@ -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):