X-Git-Url: https://code.delx.au/offlineimap/blobdiff_plain/6949a311647932f2968e181cd78f23c9f7493106..ca08c1e5531af7a19b38d1034780ff751589ce9a:/offlineimap/repository/IMAP.py diff --git a/offlineimap/repository/IMAP.py b/offlineimap/repository/IMAP.py index 3885358..e5be9ee 100644 --- a/offlineimap/repository/IMAP.py +++ b/offlineimap/repository/IMAP.py @@ -20,7 +20,7 @@ from Base import BaseRepository 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, errno from threading import * class IMAPRepository(BaseRepository): @@ -110,12 +110,27 @@ class IMAPRepository(BaseRepository): if user != None: return user + try: + netrcentry = netrc.netrc().authentificator(self.gethost()) + except IOError, inst: + if inst.errno != errno.ENOENT: + raise + else: + if netrcentry: + return netrcentry[0] + def getport(self): return self.getconfint('remoteport', None) def getssl(self): return self.getconfboolean('ssl', 0) + def getsslclientcert(self): + return self.getconf('sslclientcert', None) + + def getsslclientkey(self): + return self.getconf('sslclientkey', None) + def getpreauthtunnel(self): return self.getconf('preauthtunnel', None) @@ -146,6 +161,17 @@ class IMAPRepository(BaseRepository): password = fd.readline().strip() fd.close() return password + + try: + netrcentry = netrc.netrc().authenticators(self.gethost()) + except IOError, inst: + if inst.errno != errno.ENOENT: + raise + else: + if netrcentry: + user = self.getconf('remoteuser') + if user == None or user == netrcentry[0]: + return netrcentry[2] return None def getfolder(self, foldername):