Your IP : 18.220.47.149
Current Path : /lib64/python2.7/ |
|
Current File : //lib64/python2.7/poplib.pyc |
�
_Ofc@s�dZddlZddlZddgZdefd��YZdZdZdZd Z ee Z
d
Zdfd��YZyddl
Z
Wnek
r�n$Xdefd
��YZejd�edkr�ddlZeejd�Zej�GHejejd�ejejd�ej�ej�\ZZx[eded�D]FZeje�\ZZ Z!deGHxe D]Z"de"GHq~WdGHqPWej#�ndS(s@A POP3 client class.
Based on the J. Myers POP3 draft, Jan. 96
i����NtPOP3terror_protocBseZRS((t__name__t
__module__(((s/usr/lib64/python2.7/poplib.pyRsini�s
s
icBs�eZdZeejd�Zd�Zd�Zd�Z d�Z
d�Zd�Zd�Z
d �Zd
�Zd�Zd�Zd
�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Zejd�Zd�Zd�Zdd�Z RS(s�This class supports both the minimal and optional command sets.
Arguments can be strings or integers (where appropriate)
(e.g.: retr(1) and retr('1') both work equally well.
Minimal Command Set:
USER name user(name)
PASS string pass_(string)
STAT stat()
LIST [msg] list(msg = None)
RETR msg retr(msg)
DELE msg dele(msg)
NOOP noop()
RSET rset()
QUIT quit()
Optional Commands (some servers support these):
RPOP name rpop(name)
APOP name digest apop(name, digest)
TOP msg n top(msg, n)
UIDL [msg] uidl(msg = None)
Raises one exception: 'error_proto'.
Instantiate with:
POP3(hostname, port=110)
NB: the POP protocol locks the mailbox from user
authorization until QUIT, so be sure to get in, suck
the messages, and quit, each time you access the
mailbox.
POP is a line-based protocol, which means large mail
messages consume lots of python cycles reading them
line-by-line.
If it's available on your mail server, use IMAP4
instead, it doesn't suffer from the two problems
above.
cCs^||_||_tj||f|�|_|jjd�|_d|_|j�|_ dS(Ntrbi(
thosttporttsockettcreate_connectiontsocktmakefiletfilet
_debuggingt_getresptwelcome(tselfRRttimeout((s/usr/lib64/python2.7/poplib.pyt__init__Us cCs?|jdkr!dGt|�GHn|jjd|tf�dS(Nis*put*s%s%s(RtreprR tsendalltCRLF(Rtline((s/usr/lib64/python2.7/poplib.pyt_putline_scCs,|jrdGt|�GHn|j|�dS(Ns*cmd*(RRR(RR((s/usr/lib64/python2.7/poplib.pyt_putcmdfs cCs�|jjtd�}t|�tkr7td��n|jdkrXdGt|�GHn|smtd��nt|�}|dtkr�|d |fS|dtkr�|dd!|fS|d |fS(Nis
line too longs*get*s-ERR EOFi����ii����( Rtreadlinet_MAXLINEtlenRRRRtCR(RRtoctets((s/usr/lib64/python2.7/poplib.pyt_getlineoscCs\|j�\}}|jdkr3dGt|�GHn|d }|dkrXt|��n|S(Nis*resp*t+(RRRR(Rtresptotc((s/usr/lib64/python2.7/poplib.pyR
�s
cCs�|j�}g}d}|j�\}}x`|dkr�|d dkr`|d}|d}n||}|j|�|j�\}}q-W|||fS(Nit.is..i(R
Rtappend(RRtlistRRR ((s/usr/lib64/python2.7/poplib.pyt_getlongresp�s
cCs|j|�|j�S(N(RR
(RR((s/usr/lib64/python2.7/poplib.pyt _shortcmd�s
cCs|j|�|j�S(N(RR%(RR((s/usr/lib64/python2.7/poplib.pyt_longcmd�s
cCs|jS(N(R(R((s/usr/lib64/python2.7/poplib.pyt
getwelcome�scCs
||_dS(N(R(Rtlevel((s/usr/lib64/python2.7/poplib.pytset_debuglevel�scCs|jd|�S(sVSend user name, return response
(should indicate password required).
sUSER %s(R&(Rtuser((s/usr/lib64/python2.7/poplib.pyR+�scCs|jd|�S(s�Send password, return response
(response includes message count, mailbox size).
NB: mailbox is locked by server from here to 'quit()'
sPASS %s(R&(Rtpswd((s/usr/lib64/python2.7/poplib.pytpass_�scCs`|jd�}|j�}|jr6dGt|�GHnt|d�}t|d�}||fS(s]Get mailbox status.
Result is tuple of 2 ints (message count, mailbox size)
tSTATs*stat*ii(R&tsplitRRtint(RtretvaltretstnumMessagestsizeMessages((s/usr/lib64/python2.7/poplib.pytstat�s cCs*|dk r|jd|�S|jd�S(sRequest listing, return result.
Result without a message number argument is in form
['response', ['mesg_num octets', ...], octets].
Result when a message number argument is given is a
single response: the "scan listing" for that message.
sLIST %stLISTN(tNoneR&R'(Rtwhich((s/usr/lib64/python2.7/poplib.pyR$�s cCs|jd|�S(soRetrieve whole message number 'which'.
Result is in form ['response', ['line', ...], octets].
sRETR %s(R'(RR8((s/usr/lib64/python2.7/poplib.pytretr�scCs|jd|�S(sFDelete message number 'which'.
Result is 'response'.
sDELE %s(R&(RR8((s/usr/lib64/python2.7/poplib.pytdele�scCs
|jd�S(sXDoes nothing.
One supposes the response indicates the server is alive.
tNOOP(R&(R((s/usr/lib64/python2.7/poplib.pytnoop�scCs
|jd�S(s(Unmark all messages marked for deletion.tRSET(R&(R((s/usr/lib64/python2.7/poplib.pytrset�scCsYy|jd�}Wntk
r.}|}nX|jj�|jj�|`|`|S(sDSignoff: commit changes on server, unlock mailbox, close connection.tQUIT(R&RRtcloseR (RRtval((s/usr/lib64/python2.7/poplib.pytquits
cCs|jd|�S(sNot sure what this does.sRPOP %s(R&(RR+((s/usr/lib64/python2.7/poplib.pytrpopss\+OK.[^<]*(<.*>)cCs�|jj|j�}|s*td��nddl}|j|jd�|�j�}djt d�|��}|j
d||f�S(s Authorisation
- only possible if server has supplied a timestamp in initial greeting.
Args:
user - mailbox user;
secret - secret shared between client and server.
NB: mailbox is locked by server from here to 'quit()'
s!-ERR APOP not supported by serveri����NitcSsdt|�S(Ns%02x(tord(tx((s/usr/lib64/python2.7/poplib.pyt<lambda>'RDs
APOP %s %s(t timestamptmatchRRthashlibtmd5tgrouptdigesttjointmapR&(RR+tsecrettmRJRM((s/usr/lib64/python2.7/poplib.pytapops"cCs|jd||f�S(s�Retrieve message header of message number 'which'
and first 'howmuch' lines of message body.
Result is in form ['response', ['line', ...], octets].
s TOP %s %s(R'(RR8thowmuch((s/usr/lib64/python2.7/poplib.pyttop+scCs*|dk r|jd|�S|jd�S(s�Return message digest (unique id) list.
If 'which', result contains unique id for that message
in the form 'response mesgnum uid', otherwise result is
the list ['response', ['mesgnum uid', ...], octets]
sUIDL %stUIDLN(R7R&R'(RR8((s/usr/lib64/python2.7/poplib.pytuidl4sN(!RRt__doc__t POP3_PORTRt_GLOBAL_DEFAULT_TIMEOUTRRRRR
R%R&R'R(R*R+R-R5R7R$R9R:R<R>RBRCtretcompileRHRRRTRV(((s/usr/lib64/python2.7/poplib.pyR*s4(
tPOP3_SSLcBsDeZdZeddd�Zd�Zd�Zd�Zd�Z RS(s�POP3 client class over SSL connection
Instantiate with: POP3_SSL(hostname, port=995, keyfile=None, certfile=None)
hostname - the hostname of the pop3 over ssl server
port - port number
keyfile - PEM formatted file that contains your private key
certfile - PEM formatted certificate chain file
See the methods of the parent class POP3 for more documentation.
cCsR||_||_||_||_d|_d}d|_x�tj|j|jdtj �D]�}|\}}} }
}y,tj||| �|_|jj
|�Wn;tjk
r�}|jr�|jj�nd|_q^nXPq^W|jstj|�n|jj
d�|_tj|j|j|j�|_d|_|j�|_dS(NRDs!getaddrinfo returns an empty listiR(RRtkeyfiletcertfiletbufferR7R RtgetaddrinfotSOCK_STREAMtconnectterrorR@R
Rtssltwrap_sockettsslobjRR
R(RRRR]R^tmsgtrestaftsocktypetprotot canonnametsa((s/usr/lib64/python2.7/poplib.pyRRs0 ( ! cCsC|jj�}t|�dkr0td��n|j|7_dS(Nis-ERR EOF(RftreadRRR_(Rtlocalbuf((s/usr/lib64/python2.7/poplib.pyt_fillBufferlscCsd}tjd�}|j|j�}xJ|ss|j�t|j�tkr^td��n|j|j�}q*W|jd�}|j d|jd�|_|j
dkr�dGt|�GHnt|�}|dtkr�|d |fS|dt
kr
|dd!|fS|d |fS( NRDs.*?\ns
line too longiis*get*i����i����(RZR[RIR_RpRRRRLtsubRRRR(RRt renewlineRIR((s/usr/lib64/python2.7/poplib.pyRrs$
cCs�|jdkr!dGt|�GHn|t7}t|�}xF|dkr|jj|�}||krhPn||}||}q:WdS(Nis*put*i(RRRRRftwrite(RRtbytestsent((s/usr/lib64/python2.7/poplib.pyR�s
cCsLy|jd�}Wntk
r.}|}nX|jj�|`|`|S(sDSignoff: commit changes on server, unlock mailbox, close connection.R?(R&RR R@Rf(RRRA((s/usr/lib64/python2.7/poplib.pyRB�s
N(
RRRWt
POP3_SSL_PORTR7RRpRRRB(((s/usr/lib64/python2.7/poplib.pyR\Es t__main__iiisMessage %d:s s-----------------------($RWRZRt__all__t ExceptionRRXRvRtLFRRRRdtImportErrorR\R#RtsystargvtaR(R+R-R$R5tnumMsgst totalSizetrangetiR9theaderRgRRRB(((s/usr/lib64/python2.7/poplib.pyt<module>s@
�
V