]> code.delx.au - offlineimap/commitdiff
Patch from Jim Pryor to support /etc/netrc in addition to ~/.netrc
authorJohn Goerzen <jgoerzen@complete.org>
Tue, 2 Dec 2008 19:15:44 +0000 (13:15 -0600)
committerJohn Goerzen <jgoerzen@complete.org>
Tue, 2 Dec 2008 19:15:44 +0000 (13:15 -0600)
offlineimap.conf
offlineimap/repository/IMAP.py

index 011c33e1941629c2e12a95b11c70e23ec982585e..7f5181962c78ab04151cd0d963a04db45d02afd7 100644 (file)
@@ -267,10 +267,11 @@ remoteuser = username
 # There are five ways to give the password for the remote IMAP
 # server:
 #
-# 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.
+# 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. If there is no ~/.netrc file but there is an
+#    /etc/netrc file, the password will instead be taken from there. Otherwise 
+#    you will be prompted for the password when OfflineIMAP starts.
 #
 # 2. The remote password stored in this file with the remotepass
 #    option. Example:
index a9d73438edb89b249186bd72a2c1ca282868bcdf..f8445f8f88861f70c0839e769dbd710ce24bbe54 100644 (file)
@@ -117,6 +117,16 @@ class IMAPRepository(BaseRepository):
             if netrcentry:
                 return netrcentry[0]
 
+        try:
+            netrcentry = netrc.netrc('/etc/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)
 
@@ -170,6 +180,16 @@ class IMAPRepository(BaseRepository):
                 user = self.getconf('remoteuser')
                 if user == None or user == netrcentry[0]:
                     return netrcentry[2]
+        try:
+            netrcentry = netrc.netrc('/etc/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):