from offlineimap import folder, imaputil, imapserver
from offlineimap.folder.UIDMaps import MappedIMAPFolder
from offlineimap.threadutil import ExitNotifyThread
-import re, types, os
+import re, types, os, netrc
from threading import *
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
+ netrcentry = netrc.netrc().authentificator(self.gethost())
+ if netrcentry:
+ return netrcentry[0]
def getport(self):
return self.getconfint('remoteport', None)
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
fd = open(os.path.expanduser(passfile))
password = fd.readline().strip()
fd.close()
- return password
+ return password
+ netrcentry = netrc.netrc().authenticators(self.gethost())
+ if netrcentry:
+ user = self.getconf('remoteuser')
+ if user == None or user == netrcentry[0]:
+ return netrcentry[2]
return None
def getfolder(self, foldername):