Merging imaplibutil into code

This commit is contained in:
John Goerzen 2007-07-04 18:51:10 +01:00
parent d352e034cc
commit 91392b7578
2 changed files with 20 additions and 11 deletions

View File

@ -18,8 +18,9 @@
import re, string, types, binascii, socket, time, random, subprocess, sys, os import re, string, types, binascii, socket, time, random, subprocess, sys, os
from offlineimap.ui import UIBase from offlineimap.ui import UIBase
from imaplib import *
class IMAP4_Tunnel(imaplib.IMAP4): class IMAP4_Tunnel(IMAP4):
"""IMAP4 client class over a tunnel """IMAP4 client class over a tunnel
Instantiate with: IMAP4_Tunnel(tunnelcmd) Instantiate with: IMAP4_Tunnel(tunnelcmd)
@ -28,7 +29,7 @@ class IMAP4_Tunnel(imaplib.IMAP4):
The result will be in PREAUTH stage.""" The result will be in PREAUTH stage."""
def __init__(self, tunnelcmd): def __init__(self, tunnelcmd):
imaplib.IMAP4.__init__(self, tunnelcmd) IMAP4.__init__(self, tunnelcmd)
def open(self, host, port): def open(self, host, port):
"""The tunnelcmd comes in on host!""" """The tunnelcmd comes in on host!"""
@ -53,7 +54,6 @@ class IMAP4_Tunnel(imaplib.IMAP4):
self.outfd.close() self.outfd.close()
self.process.wait() self.process.wait()
# FIXME: need to use this in SSL instances
class sslwrapper: class sslwrapper:
def __init__(self, sslsock): def __init__(self, sslsock):
self.sslsock = sslsock self.sslsock = sslsock
@ -93,16 +93,13 @@ class sslwrapper:
else: else:
retval += linebuf retval += linebuf
# FIXME: need to override this in IMAP instances
def new_mesg(self, s, secs=None): def new_mesg(self, s, secs=None):
if secs is None: if secs is None:
secs = time.time() secs = time.time()
tm = time.strftime('%M:%S', time.localtime(secs)) tm = time.strftime('%M:%S', time.localtime(secs))
UIBase.getglobalui().debug('imap', ' %s.%02d %s' % (tm, (secs*100)%100, s)) UIBase.getglobalui().debug('imap', ' %s.%02d %s' % (tm, (secs*100)%100, s))
# FIXME: use this def new_open(self, host = '', port = IMAP4_PORT):
def new_open(self, host = '', port = imaplib.IMAP4_PORT):
"""Setup connection to remote server on "host:port" """Setup connection to remote server on "host:port"
(default: localhost:standard IMAP4 port). (default: localhost:standard IMAP4 port).
This connection will be used by the routines: This connection will be used by the routines:

View File

@ -1,5 +1,5 @@
# IMAP server support # IMAP server support
# Copyright (C) 2002, 2003 John Goerzen # Copyright (C) 2002 - 2007 John Goerzen
# <jgoerzen@complete.org> # <jgoerzen@complete.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
@ -16,7 +16,8 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from offlineimap import imaplib, imaputil, threadutil import imaplib
from offlineimap import imaplibutil, imaputil, threadutil
from offlineimap.ui import UIBase from offlineimap.ui import UIBase
from threading import * from threading import *
import thread, hmac, os import thread, hmac, os
@ -43,8 +44,17 @@ class UsefulIMAPMixIn:
else: else:
self.selectedfolder = None self.selectedfolder = None
class UsefulIMAP4(UsefulIMAPMixIn, imaplib.IMAP4): pass def _mesg(self, s, secs=None):
class UsefulIMAP4_SSL(UsefulIMAPMixIn, imaplib.IMAP4_SSL): pass imaplibutil.new_mseg(self, s, secs)
class UsefulIMAP4(UsefulIMAPMixIn, imaplib.IMAP4):
def open(self, host = '', port = imaplib.IMAP4_PORT):
imaplibutil.new_open(self, host, port)
class UsefulIMAP4_SSL(UsefulIMAPMixIn, imaplib.IMAP4_SSL):
def open(self, host = '', port = imaplib.IMAP4_SSL_PORT):
imaplibutil.new_open_ssl(self, host, port)
class UsefulIMAP4_Tunnel(UsefulIMAPMixIn, imaplib.IMAP4_Tunnel): pass class UsefulIMAP4_Tunnel(UsefulIMAPMixIn, imaplib.IMAP4_Tunnel): pass
class IMAPServer: class IMAPServer:
@ -167,6 +177,8 @@ class IMAPServer:
UIBase.getglobalui().connecting(self.hostname, self.port) UIBase.getglobalui().connecting(self.hostname, self.port)
imapobj = UsefulIMAP4(self.hostname, self.port) imapobj = UsefulIMAP4(self.hostname, self.port)
imapobj.mustquote = imaplibutil.mustquote
if not self.tunnel: if not self.tunnel:
try: try:
if 'AUTH=CRAM-MD5' in imapobj.capabilities: if 'AUTH=CRAM-MD5' in imapobj.capabilities: