%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/fail2ban/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/fail2ban/helpers.pyc

�
��&dc@s�dZdZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZyddl
Z
e
jd�ZWn
dZnXej�atjd�r,ejr
ejjdk	r
ejjjd�r
ejjaq,ed	�d8D��r,daq,nejd9krTd�Zet�[nejd:kr~tdd�Zd�Zn9tdd�Zej�j�dkr�d�ZneZd�Zd�Zd�Z de!fd��YZ"dej#fd��YZ$e%e_&ddd�Z'y
e(Z(Wne)k
r<e*Z(nXej+j,Z-d�Z.e.ej+_,ej/j0Z1d�Z2e2ej/_0d �Z3d!�Z4d"e5e5d#�Z6d$�Z7d%�Z8ejd;kr�e9e:d'e;d(��nd)�Z<d*�Z=ej:d+ej>�Z?ej:d,ej>�Z@ej:d-ej>�ZAd.�ZBd/�ZCd0ZDej:d1�ZEd2d<dd3�ZFeryd4�ZGn	d5�ZGd6e!fd7��YZHdS(=s<Cyril Jaquier, Arturo 'Buanzo' Busleiman, Yaroslav HalchenkotGPLi����N(tLocki(tMyTimeslibcap.so.2tANSI_ccs$|]}tj|�dkVqdS(tN(NR(tostgetenvtNone(t.0tv((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pys	<genexpr>/stLANGUAGEtLC_ALLtLC_CTYPEtLANGsUTF-8icCs�tj�j�}|dkr�|tj�kr�t}t|d�s�y#ddlm}|dd�}Wq�tk
r�tt�t}q�Xnt|d�r�|j	|�q�ndS(NtASCIItsetdefaultencodingi����(tload_dynamict_systsys(
Rtgetdefaultencodingtuppert
PREFER_ENCthasattrtimpRtImportErrortreloadR(tencodingtodeRt__ldm((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt__resetDefaultEncoding7s


tstrictcCsdy't|t�r"|j||�S|SWn6ttfk
r_|dkrO�n|j|d�SXdS(NRtreplace(t
isinstancetbytestdecodetUnicodeDecodeErrortUnicodeEncodeError(txtencterrors((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt
uni_decodeXscCs)t|t�st|�S|jtd�S(NR(R R!tstrR"R(R%((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt
uni_stringas
cCsdy't|t�r"|j||�S|SWn6ttfk
r_|dkrO�n|j|d�SXdS(NRR(R tunicodetencodeR#R$(R%R&R'((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR(fscCs)t|t�st|�S|jtd�S(NR(R R+R)R,R(R%((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR*ps
cCs)t|t�st|�S|j�dkS(Nt1tonttruetyes(R-sonstruesyes(R t
basestringtbooltlower(tval((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt_as_boolxscCs)tj�d \}}|jt|�fS(s+ Consistently format exception information i(Rtexc_infot__name__R*(tclatexc((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pytformatExceptionInfo}scCsstjj|�}|jd�r.|d }n|tddg�krotjjtjj|��d|}n|S(saCustom function to include directory name if filename is too common

	Also strip .py at the end
	s.pyi����tbaset__init__t.(Rtpathtbasenametendswithtsettdirname(tsR;((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt	mbasename�s
)t	TraceBackcBs#eZdZed�Zd�ZRS(s7Customized traceback to be included in debug messages
	cCsd|_||_dS(s�Initialize TrackBack metric

		Parameters
		----------
		compress : bool
		  if True then prefix common with previous invocation gets
		  replaced with ...
		RN(t_TraceBack__prevt_TraceBack__compress(tselftcompress((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR<�s		cCs�tjdd�d }g|D]9}t|d�tjj|d�t|d�g^q}g|D]=}|ddkp�|djd�sc|d|d	g^qc}|dg}xV|dD]J}|d|d
dkr�|d
dcd|d7<q�|j|�q�Wdj	g|D]$}d
t|d�|df^q�}|j
r�|}tjj|j|f�}	t
jdd|	�}
|
dkr�d|t|
�}n||_n|S(Ntlimitidi����iitunittestslogging.__init__s	/unittestii����s,%st>s%s:%ss>[^>]*$Rs...(RKslogging.__init__(t	tracebackt
extract_stackRDRR>RBR)R@tappendtjoinRGtcommonprefixRFtretsubtlen(RHtftbR%tentriestetentries_outtentrytsftbt	prev_nextt
common_prefixtcommon_prefix2((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt__call__�s(F
-
	1	(R7t
__module__t__doc__tFalseR<R^(((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyRE�stFormatterWithTraceBackcBs eZdZd�Zd�ZRS(s}Custom formatter which expands %(tb) and %(tbc) with tracebacks

	TODO: might need locking in case of compressed tracebacks
	cOs>tjj|d|||�d|k}td|�|_dS(Ntfmts%(tbc)sRI(tloggingt	FormatterR<REt_tb(RHRctargstkwargsRI((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR<�scCs)|j�|_|_tjj||�S(N(RfttbcttbRdRetformat(RHtrecord((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyRk�s(R7R_R`R<Rk(((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyRb�s	cCs�|r,t|j�r,|j|jd�n|rAd�|_nd�tj_tjr�ytj	j�WnnXtj
d�ndS(NicSsdS(N(R(((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt<lambda>�scSsdS(N(R(RH((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyRm�s(RTthandlerst
removeHandlertcloseRdt
StreamHandlertflusht
exitOnIOErrorRtstderrtexit(tlogSystlogHndlr((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt__stopOnIOError�s	cKs�yt|||||�Wn�ttfk
rT}|jdkrNt|�n�n�tk
r�}ymxfd|t|�ffdg|D]}t|�^q�fffD]$}yt|||�Wq�q�Xq�WWq�q�XnXdS(s�Safe log inject to avoid possible errors by unsafe log-handlers, 
	concat, str. conversion, representation fails, etc.

	Used to intrude exception-safe _log-method instead of _log-method 
	of Logger class to be always safe by logging and to get more-info about.

	See testSafeLogging test-case for more information. At least the errors
	covered in phase 3 seems to affected in all known pypy/python versions 
	until now.
	i slogging failed: %r on %ss
  args: %rN(t	__origLogtBrokenPipeErrortIOErrorterrnoRxt	ExceptionR*(RHtleveltmsgRgRhRWta((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt	__safeLog�s"
/cCsPyt|�Wn;ttfk
rK}|jdkrEtd|�n�nXdS(sQSafe flush inject stopping endless logging on closed streams (redirected pipe).
	i N(t__origLogFlushRzR{R|RxR(RHRW((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt__safeLogFlush	scCs3d|kr&d|jd�d}ntj|�S(sBGet logging.Logger instance with Fail2Ban logger name convention
	R=sfail2ban.%si����(t
rpartitionRdt	getLogger(tname((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR�scCskyCt|t�s|j�r-t|�}ntt|j��}Wn!tk
rftd|��nX|S(NsInvalid log level %r(R tinttisdigittgetattrRdRtAttributeErrort
ValueError(tvaluetll((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pytstr2LogLevels
s %(message)scCs�|dkr^|dkr%d|}n|dkr>d|}q{d|}|r{d|}q{nd|}|r{d	|}n|s�tjd
d�|�}n|S(s(Custom log format for the verbose runs
	iis6 | %(module)15.15s-%(levelno)-2d: %(funcName)-20.20s |isB +%(relativeCreated)5d %(thread)X %(name)-25.25s %(levelname)-5.5ss %(thread)X %(levelname)-5.5ss %(asctime)-15ss)%(name)-24s[%(process)d]: %(levelname)-7ss%(asctime)s s(?<=\))-?\d+(?:\.\d+)?scSsdS(NRC((tm((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyRm7s(RRRS(t	verbosityRctaddtimetpadding((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pytgetVerbosityFormat%s




cCs,td�jddt�tj|||�S(s>Except hook used to log unhandled exceptions to Fail2Ban log
	tfail2bans Unhandled exception in Fail2Ban:R6(R�tcriticaltTrueRt__excepthook__(texctypeR�RM((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt
excepthook;s
cCs/|s
gStttd�tjd|���S(s�Helper to split words on any comma, space, or a new line

	Returns empty list if input is empty (or None) and filters
	out empty entries
	cSs
|j�S(N(tstrip(R	((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyRmJss[ ,
]+(tfilterR2tmapRRtsplit(RC((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt
splitwordsBsis�if 1:
	def _merge_dicts(x, y):
		"""Helper to merge dicts.
		"""
		if y:
			return {**x, **y}
		return x
	
	def _merge_copy_dicts(x, y):
		"""Helper to merge dicts to guarantee a copy result (r is never x).
		"""
		return {**x, **y}
	texeccCs,|}|r(|j�}|j|�n|S(sHelper to merge dicts.
		(tcopytupdate(R%tytr((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt_merge_dicts[s
cCs&|j�}|r"|j|�n|S(sCHelper to merge dicts to guarantee a copy result (r is never x).
		(R�R�(R%R�R�((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt_merge_copy_dictscss^([^\[]+)(?:\[(.*)\])?\s*$s@([\w\-_\.]+)=(?:"([^"]*)"|\'([^\']*)\'|([^,\]]*))(?:,|\]\s*\[|$)ss(?:[^\[\s]+(?:\s*\[\s*(?:[\w\-_\.]+=(?:"[^"]*"|\'[^\']*\'|[^,\]]*)\s*(?:,|\]\s*\[)?\s*)*\])?\s*|\S+)(?=\n\s*|\s+|$)c	Cs�tj|�}|sdS|j�\}}t�}|r�xwtj|�D]c}|jd�}g|jddd�D]}|dk	ru|^qud}|j�||j�<qJWn||fS(Niiiii(NN(	t
OPTION_CREtmatchRtgroupstdicttOPTION_EXTRACT_CREtfinditertgroupR�(	toptionR�toption_nametoptstrtoption_optstoptmatchtoptR4R�((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pytextractOptions{s	8cCs
tj|�S(N(tOPTION_SPLIT_CREtfindall(R�((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pytsplitWithOptions�sis<([^ <>]+)>Rc
Cs�tj}|}t|�}t�}t|d�}i}x�tr�t}	x{|j�D]m}
|
|ksU|
|kryqUn|r�t|j|
��r�qUnt	||
�}}||�}
|j
|
i�}xx|
rF|
jd�}||kr|||
j��}
q�n||
ks/|j
|d�t
krNtd|
|||f��nd}|rt|j
|d|�}n|dkr�|j
|�}|dkr�|dk	r�||�}q�n|dkr�|||
j��}
q�nt|t�s�t	|�}n|jd||�}|j
|d�d||<|||
j��}
q�W||kr�||�rr|||
<t}	nt|�t|�kr�|j�}n|||
<nd|krU|j|
�qUqUW|	s<Pq<q<W|S(	s|Sort out tag definitions within other tags.
	Since v.0.9.2 supports embedded interpolation (see test cases for examples).

	so:		becomes:
	a = 3		a = 3
	b = <a>_3	b = 3_3

	Parameters
	----------
	inptags : dict
		Dictionary of tags(keys) and their values.

	Returns
	-------
	dict
		Dictionary of tags(keys) and their values, with tags
		within the values recursively replaced.
	t
getRawItemispproperties contain self referencing definitions and cannot be resolved, fail tag: %s, found: %s in %s, value: %st?s<%s>it<N(tTAG_CREtsearchRARR�RatiterkeystcallableR�R*tgetR�tendtMAX_TAG_REPLACE_COUNTR�RR R1RtstarttidR�tadd(tinptagstconditionaltignoretaddreplt
tre_searchttagstdonet	noRecReplt	repCountstrepFlagttagR�torgvalR�trplctrtagtrepl((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pytsubstituteRecursiveTags�sh				$
	
cCsLy>tjdkr!|j�}nt|�}tjd|�WnnXdS(s�Helper to set real thread name (used for identification and diagnostic purposes).

		Side effect: name can be silently truncated to 15 bytes (16 bytes with NTS zero)
		iiN(i(Rtversion_infoR,R!t_libcaptprctl(R�((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pytprctl_set_th_name�scCsdS(N((R�((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR�
st	BgServicecBs>eZdZe�ZdZd�Zd�Ze	e	d�Z
RS(s{Background servicing

	Prevents memory leak on some platforms/python versions, 
	using forced GC in periodical intervals.
	cCs.|js'tt|�j|�|_n|jS(N(t	_instancetsuperR�t__new__(tcls((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR�s	cCsJd|_d|_d|_|j|_ttd�rFtjd�ndS(Ni�iidt
set_thresholdi(t_BgService__serviceTimet_BgService__periodTimet_BgService__thresholdt_BgService__countRtgcR�(RH((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR<s			cCs�|jd8_|r>|jdks:tj�|jkr>tStjj|�sTtSzMtj�|jkrptStj	�tj�|j
|_|j|_tSWdtjj
�XtS(Nii(R�RttimeR�RaR�t_mutextacquireR�tcollectR�R�R�trelease(RHtforcetwait((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pytservice(s+
N(R7R_R`RR�RR�R�R<RaR�(((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyR�s			(sLANGUAGEsLC_ALLsLC_CTYPEsLANG(i(i(ii((It
__author__t__license__R�tlocaleRdRRRRRMt	threadingRt
server.mytimeRtctypestCDLLR�RtgetpreferredencodingRt
startswithtstdoutRtallR�RR(R*RRR)R5R:RDtobjectREReRbRaRsRxRzt	NameErrorR{tLoggert_logRyR�RqRrR�R�R�R�R�R�R�R�tevaltcompilet__file__R�R�tDOTALLR�R�R�R�R�R�R�R�R�R�(((s4/usr/lib/python2.7/site-packages/fail2ban/helpers.pyt<module>s�
1	
					
.	


					
		
		
			b	

Zerion Mini Shell 1.0