Applied netrc_v2.diff from bboissin

This commit is contained in:
John Goerzen 2008-03-03 02:21:33 -06:00
parent aca2a4458b
commit 50fc49bf7f
2 changed files with 23 additions and 3 deletions

View File

@ -218,8 +218,10 @@ remoteuser = username
# There are four ways to specify the password for the remote IMAP
# server:
#
# 1. No password at all specified in the config file. You will
# be prompted for the password when OfflineIMAP starts.
# 1. No password at all specified in the config file. If a matching
# entry is found in ~/.netrc (see netrc (5) for information) the
# password from the matching entry will be used. Otherwise you
# will be prompted for the password when OfflineIMAP starts.
#
# 2. The remote password stored in this file with the remotepass
# option. Example:

View File

@ -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):
@ -109,6 +109,14 @@ class IMAPRepository(BaseRepository):
user = self.getconf('remoteuser')
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)
@ -146,6 +154,16 @@ 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):