MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 216.73.216.126
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/lib/python2.7/site-packages/pyzor/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/lib/python2.7/site-packages/pyzor/client.pyc
�
YF�Tc@sdZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
ZddlZejj
j�defd��YZdefd��YZdefd��YZd	efd
��YZdefd��YZdS(
sqNetworked spam-signature detection client.

>>> import pyzor
>>> import pyzor.client
>>> import pyzor.digest
>>> import pyzor.config

To load the accounts file:

>>> accounts = pyzor.config.load_accounts(filename)

To create a client (to then issue commands):

>>> client = pyzor.client.Client(accounts)

To create a client, using the anonymous user:

>>> client = pyzor.client.Client()

To get a digest (of an email.message.Message object, or similar):

>>> digest = pyzor.digest.get_digest(msg)

To query a server (where address is a (host, port) pair):

>>> client.ping(address)
>>> client.info(digest, address)
>>> client.report(digest, address)
>>> client.whitelist(digest, address)
>>> client.check(digest, address)

To query the default server (public.pyzor.org):

>>> client.ping()
>>> client.info(digest)
>>> client.report(digest)
>>> client.whitelist(digest)
>>> client.check(digest)

Response will contain, depending on the type of request, some
of the following keys (e.g. client.ping()['Code']):

All responses will have:
- 'Diag' 'OK' or error message
- 'Code' '200' if OK
- 'PV' Protocol Version
- 'Thread'

`info` and `check` responses will also contain:
- '[WL-]Count' Whitelist/Blacklist count

`info` responses will also have:
- '[WL-]Entered' timestamp when message was first whitelisted/blacklisted
- '[WL-]Updated' timestamp when message was last whitelisted/blacklisted
i����NtClientcBs�eZdZdZdddd�Zdd�Zdd�Zdd�Zdd�Z	dd	�Z
dd
�Zdd�Zdd�Z
ed
��Zd�ZRS(ii cCs�|dkri}ntd�|j�D��|_|dkrOtjj}n||_|dk	rp||_nt	j
d�|_dS(Ncss3|])\\}}}|t|�f|fVqdS(N(tint(t.0thosttporttaccount((s0/usr/lib/python2.7/site-packages/pyzor/client.pys	<genexpr>Pstpyzor(tNonetdictt	iteritemstaccountsRtdigesttdigest_spectspecttimeouttloggingt	getLoggertlog(tselfR
RR
((s0/usr/lib/python2.7/site-packages/pyzor/client.pyt__init__Ms			spublic.pyzor.orgiy_cCs7tjj�}|j||�}|j||j��S(N(RtmessagetPingRequesttsendt
read_responset
get_thread(Rtaddresstmsgtsock((s0/usr/lib/python2.7/site-packages/pyzor/client.pytpingYscCs:tjj|�}|j||�}|j||j��S(N(RRtPongRequestRRR(RRRRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pytpong^scCs:tjj|�}|j||�}|j||j��S(N(RRtInfoRequestRRR(RRRRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pytinfocscCs@tjj||j�}|j||�}|j||j��S(N(RRt
ReportRequestR
RRR(RRRRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pytreporthscCs@tjj||j�}|j||�}|j||j��S(N(RRtWhitelistRequestR
RRR(RRRRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pyt	whitelistmscCs:tjj|�}|j||�}|j||j��S(N(RRtCheckRequestRRR(RRRRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pytcheckrscCs5dtjjjtjf}tj|dtjj�S(Ns:Code: %s
Diag: OK
PV: %s
Thread: 1024
Count: 0
WL-Count: 0t_class(RRtResponsetok_codet
proto_versiontemailtmessage_from_bytes(RtdigestsRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pyt_mock_checkws
cCs�|dt|d�f}|j�y|j|}Wntk
rTtjj}nXttj��}|j|d<t	|�|d<tjj
tjj|j|j�||�|d<|j
jd|j��|j||�S(NiitUsertTimetSigssending: %r(Rtinit_for_sendingR
tKeyErrorRRtAnonymousAccountttimetusernametstrtsign_msgthash_keytkeyRtdebugt	as_stringt_send(RRRRt	timestamp((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR}s


c	Cs/d}xtj|d|ddtjtj�D]�}|\}}}}}ytj|||�}Wntjk
r�d}q0nXy&|j|j�jd�d|�WnWtj	k
r�|j
�tjd|��n'tjk
r|j
�d}q0nXPq0W|dkr+tj
d|��n|S(Niitutf8sSending to %s time-outedsUnable to send to %s:%s(Rtsockettgetaddrinfot
SOCK_DGRAMtIPPROTO_UDPterrortsendtoR<tencodeRtcloseRtTimeoutErrort	CommError(	RtaddrRtrestaftsocktypetprotot_tsa((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR=�s, &

cCsP|j|j�y|j|j�\}}Wnatjk
r]}|j�tjd��n3tjk
r�}|j�tj	d|��nX|j
jd||�tj
|dtjj�}|j�y]|j�}||kr'|j�rtjd||f��n|j
jd||�nWn!tk
rK|j
jd�nX|S(NsReading response timed-out.s'Socket error while reading response: %ssreceived: %r/%rR's.received unexpected thread id %d (expected %d)s)received error thread id %d (expected %d)sno thread id received(t
settimeoutRtrecvfromtmax_packet_sizeR@RGRRHRDRIRR;R+R,RR(tensure_completeRtin_ok_ranget
ProtocolErrortwarnR3(RRtexpected_idtpacketRtexRt	thread_id((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR�s2

	

N(spublic.pyzor.orgiy_(spublic.pyzor.orgiy_(spublic.pyzor.orgiy_(spublic.pyzor.orgiy_(spublic.pyzor.orgiy_(spublic.pyzor.orgiy_(spublic.pyzor.orgiy_(t__name__t
__module__RRSRRRRR R"R$R&R.RtstaticmethodR=R(((s0/usr/lib/python2.7/site-packages/pyzor/client.pyRIstBatchClientcBs_eZdZddddd�Zdd�Zd
d�Zd�Zd�Zd	�Z	d
�Z
RS(s=Like the normal Client but with support for batching reports.i
cCsHtj|d|d|d|�||_i|_i|_|j�dS(NR
RR
(RRt
batch_sizet
r_requestst
w_requeststflush(RR
RR
R`((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR�s
			spublic.pyzor.orgiy_cCs|j|||j�dS(N(t_add_digestRa(RRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR"�scCs|j|||j�dS(N(RdRb(RRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR$�scCsi|dt|d�f}||}|j|�|j|jkrez|j||�SWd||=XndS(Nii(Rt
add_digesttdigest_countR`R(RRRtrequestsR((s0/usr/lib/python2.7/site-packages/pyzor/client.pyRd�s

cCsXtjtjtjjd|j��|_tjtjtjj	d|j��|_
dS(s"Deleting any saved digest reports.R
N(tcollectionstdefaultdictt	functoolstpartialRRR!R
RaR#Rb(R((s0/usr/lib/python2.7/site-packages/pyzor/client.pyRc�s$cCs�x>|jj�D]-\}}y|j||�WqqqXqWx>|jj�D]-\}}y|j||�WqQqQqQXqQWdS(s!Force send any remaining reports.N(RaR	RRb(RRR((s0/usr/lib/python2.7/site-packages/pyzor/client.pytforce�scCs|j�dS(N(Rl(R((s0/usr/lib/python2.7/site-packages/pyzor/client.pyt__del__�sN(spublic.pyzor.orgiy_(spublic.pyzor.orgiy_(R\R]t__doc__RRR"R$RdRcRlRm(((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR_�s			
tClientRunnercBs&eZd�Zdd�Zd�ZRS(cCs1tjd�|_||_t|_g|_dS(NR(RRRtroutinetTruetall_oktresults(RRp((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR�s		cCs�|dkri}nd|}d}y&|j||�}|j||�Wnptjttfk
r�}|jjd||j	t
|�ff�|jjd||j
j|�t|_nXdS(Ns%s:%s	s%s%s
s	%s	%s: %s(RRpthandle_responseRRIR3t
ValueErrorRstappendtcodeR7RRDt	__class__R\tFalseRr(RtservertargstkwargsRtresponsete((s0/usr/lib/python2.7/site-packages/pyzor/client.pytrun�s	
)cCs<|j�st|_n|jjd||j�f�dS(s)mesaage is a string we've built up so fars%s%s
N(tis_okRyRrRsRvt
head_tuple(RR}R((s0/usr/lib/python2.7/site-packages/pyzor/client.pyRt	sN(R\R]RRRRt(((s0/usr/lib/python2.7/site-packages/pyzor/client.pyRo�s	
tCheckClientRunnercBs eZddd�Zd�ZRS(icCsJtj||�t|_t|_d|_d|_||_||_dS(Ni(	RoRRyt	found_hittwhitelistedt	hit_counttwhitelist_countt
r_count_foundtwl_count_clears(RRptr_counttwl_count((s0/usr/lib/python2.7/site-packages/pyzor/client.pyRs					cCs�|dt|j��7}|j�r�t|d�|_t|d�|_|j|jkrjt|_n|j|j	kr�t|_
n|d|j|jf7}n	t|_|j
j|d�dS(Ns%s	tCountsWL-Counts%d	%ds
(R7R�R�RR�R�R�RqR�R�R�RyRrRsRv(RR}R((s0/usr/lib/python2.7/site-packages/pyzor/client.pyRts	(R\R]RRt(((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR�s	tInfoClientRunnercBseZd�ZRS(cCs�|dt|j��7}|j�r�x�dD]x}||kr-t||�}d|krjt|�}n$|dkrd	}ntj|�}|d
||f7}q-q-Wn	t|_|jj	|d�dS(
Ns%s
R�tEnteredtUpdatedsWL-Counts
WL-Entereds
WL-Updatedi����tNevers	%s: %s
s
(sCountR�R�sWL-Counts
WL-Entereds
WL-Updated(
R7R�R�RR5tctimeRyRrRsRv(RR}RR:tvaltstringed((s0/usr/lib/python2.7/site-packages/pyzor/client.pyRt*s
		(R\R]Rt(((s0/usr/lib/python2.7/site-packages/pyzor/client.pyR�)s(RnR5R+R@RRjRhtpyzor.digestRt
pyzor.accountt
pyzor.messagetpyzor.hacks.py26thackstpy26t
hack_emailtobjectRR_RoR�R�(((s0/usr/lib/python2.7/site-packages/pyzor/client.pyt<module>7s y3

MMCT - 2023