https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/fail2ban/server/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/fail2ban/server/__pycache__/server.cpython-310.pyc
o

;s*b�q�@sRdZdZdZddlZddlmZmZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
ddlmZdd	lmZmZdd
lmZddlmZmZdd
lmZddlmZmZmZmZmZm Z m!Z!ee"�Z#dZ$dZ%dZ&zddl'm(Z(Wne)ydZ(Ynwdd�Z*ze+Wne,y�e-Z+Ynwdd�Z.Gdd�d�Z/Gdd�de0�Z1dS)z
Cyril Jaquierz Copyright (c) 2004 Cyril Jaquier�GPL�N)�Lock�RLock�)�	Observers�ObserverThread)�Jails)�
FileFilter�
JournalFilter)�Transmitter)�AsyncServer�AsyncServerException�)�version)�	getLogger�_as_bool�extractOptions�str2LogLevel�getVerbosityFormat�
excepthook�prctl_set_th_name�auto�INFO�STDOUT)�
Fail2BanDbcCst��jjS�N)�	threading�current_thread�	__class__�__name__�r r �8/usr/lib/python3/dist-packages/fail2ban/server/server.py�_thread_name:�r"c
Csdtj�|�}tj�|�r0zt�|�WdSttfy/}z
|jdkr$�WYd}~dSd}~wwdS)z0Creates path of file (last level only) on demand�N)�os�path�dirname�isabs�mkdir�OSError�FileExistsError�errno)�name�er r r!�_make_file_pathBs
����r/c@s�eZdZd�dd�Zdd�Zdd�Zdd	�Zdd
ifdd�Zd
d�Zdd�Z	d�dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd�d)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Zd=d>�Z d?d@�Z!dAdB�Z"dCdD�Z#dEdF�Z$dGdH�Z%dIdJ�Z&dKdL�Z'dMdN�Z(dOdP�Z)d�dQdR�Z*d�dTdU�Z+dVdW�Z,d�dXdY�Z-dZd[�Z.d\d]�Z/d^d_�Z0d`da�Z1dbdc�Z2ddde�Z3dfdg�Z4dhdi�Z5djdk�Z6dldm�Z7dndo�Z8dpdq�Z9drds�Z:dtdu�Z;dvdw�Z<dxdy�Z=dzd{�Z>d�d|d}�Z?d�d~d�Z@d�d��ZAd�d�d��ZBd�d��ZCd�d��ZDd�d��ZEd�d�d��ZFd�d��ZGd�d�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTdSS)��ServerFcCsjt�|_t�|_t�|_d|_||_t|�|_	i|_
d|_d|_d|_
d|_d|_dddd�|_i|_dS)Nz/var/run/syslogz/var/run/logz/dev/log)�Darwin�FreeBSD�Linux)r�_Server__loggingLockr�
_Server__lockr�_Server__jails�_Server__db�_Server__daemonr�_Server__transm�_Server__reload_state�_Server__asyncServer�_Server__logLevel�_Server__logTarget�_Server__verbose�_Server__syslogSocket�_Server__autoSyslogSocketPaths�_Server__prev_signals)�self�daemonr r r!�__init__Qs"
�
zServer.__init__cC�t�d|�|��dS)NzCaught signal %d. Exiting)�logSys�debug�quit)rB�signum�framer r r!�__sigTERMhandlerf�zServer.__sigTERMhandlercCrE)NzCaught signal %d. Flushing logs)rFrG�	flushLogs)rBrI�fnamer r r!�__sigUSR1handlerjrLzServer.__sigUSR1handlercCs t�|�|j|<t�||�dS)z>Bind new signal handler while storing old one in _prev_signalsN)�signal�	getsignalrA)rB�s�newr r r!�
_rebindSignalnszServer._rebindSignalTc
Cs�t�d�|jr,t�d�|��}|durdS|ds,d|dd�f}t�|�t|��t|�	dd��|�	d	d�|_
|�|�	d
|jdurH|jnt
��|�|�	d|jdurY|jnt��|�|�	d|jdurj|jnt��t�d
�t�dtj�|jr�t�d�t�dkr�tjtjfD]	}|�||j�q�|�tj|j�tt_zt�d|�t |�t!|d�}	|	�"dt�#��|	�$�Wnt%t&fy�}
zt�d|
�WYd}
~
nd}
~
ww|r�t'j(dur�t)�t'_(t'j(�*�t�d�zt |�t+|j,�|_-|�	d�|j-_.|j-�*||�Wnt/�y#}
zt�d|
�WYd}
~
nd}
~
ww|�0�zt�d|�t�1|�WdSt%t&f�yR}
z
t�d|
�WYd}
~
dSd}
~
ww)N�?zStarting in daemon modeFrzCould not create daemon %sr�pnamezfail2ban-server�verbose�syslogsocket�loglevel�	logtargetz2--------------------------------------------------zStarting Fail2ban v%szDaemon started�_MainThreadzCreating PID file %s�wz%s
zUnable to create PID file: %szStarting communication�onstartzCould not start server: %szRemove PID file %szUnable to remove PID file: %s)2r%�umaskr8rF�info�_Server__createDaemon�error�ServerInitializationErrorr�getr>�setSyslogSocketr?�DEF_SYSLOGSOCKET�setLogLevelr<�DEF_LOGLEVEL�setLogTargetr=�
DEF_LOGTARGETrr"rP�SIGTERM�SIGINTrT�_Server__sigTERMhandler�SIGUSR1�_Server__sigUSR1handlerr�sysrGr/�open�write�getpid�closer*�IOErrorr�Mainr�startrr9r;r]r
rH�remove)rB�sock�pidfile�force�observer�conf�ret�errrR�pidFiler.r r r!rvss|



�
�
�



��


����zServer.startcCs�dd�|_t�d�|jdur|j��t�dkr)|j��D]
\}}t�||�qt	j
}|dur;|jdd�r8d}dt	_
|��|durG|��|j
rR|j
��d|_
|jdur_|j��d|_t�d�dS)NcSsdS)NFr r r r r!�<lambda>�szServer.quit.<locals>.<lambda>zShutdown in progress...r[F)�	forceQuitzExiting Fail2ban)rHrFr_r;�stop_communicationr"rA�itemsrPrru�stop�stopAllJailr7rs)rBrR�sh�obsMainr r r!rH�s,







zServer.quitcCs�d}|j�|�r:|j�|�r:|j|}|j|kr&d}t�d|�d|j|<nt�d||j|�|j|dd�|j|=|rE|j�|||j	�|j	durU|j	�
|j|�dSdS)NTFzReload jail %rz"Restart jail %r (reason: %r != %r)�r�)r:rcr6�exists�backendrFr_�delJail�addr7�addJail)rBr-r��addflg�jailr r r!r��s


�zServer.addJailcCsN|j|}|s|��r|j||d�|r%|jdur|j�|�|j|=dSdS)N�r��join)r6�isAliver�r7r�)rBr-r�r�r�r r r!r�s

�zServer.delJailcCs�|j�4|j|}|��s|��n||jvr!t�d|�|j|=|jr/d|_Wd�dSWd�dS1s:wYdS)NzJail %r reloadedF)r5r6r�rvr:rFr_�idle)rBr-r�r r r!�	startJails


�"�zServer.startJailcCs:|j�|j|dd�Wd�dS1swYdS)NTr�)r5r��rBr-r r r!�stopJails"�zServer.stopJailcCs~t�d�|j�-t|j���D]
}|j|ddd�qt|j���D]
}|j|ddd�q"Wd�dS1s8wYdS)NzStopping all jailsTFr�)rFr_r5�listr6�keysr�r�r r r!r�s
�"�zServer.stopAllJailcCs�|r�|jr|dks|j�|�rtd��t�d|dkrd|nd�|j�k|dkrPd}d|vs6|j�|�r;|j|}|rOd|vrF|�|�d|vrO|�	|�nd|vrX|��d|vr`|�
�|j��D]"\}}|dksq||kr�d	|_||j|<|j
jd	d
�|jjd	d
�qeWd�dS1s�wYdS|j�7g}|j��D]\}}||jvr�|�|�q�|j
jdd
�|jjdd
�q�|D]}|�|�q�Wd�n1s�wYi|_t�d�dS)
Nz--allzReload already in progresszReload zjail %sz	all jailsz--if-existsz--unbanz	--restartT)�beginFzReload finished.)r:rc�
ValueErrorrFr_r5r6r��
setUnbanIPr�r�r�r��filter�reload�actions�appendr�)rBr-�optsr�r��jn�deljailsr r r!�reloadJails(sR


�
�"�
��
zServer.reloadJailscCs||j|_dS)NT�r6r��rBr-�valuer r r!�setIdleJail]szServer.setIdleJailcC�|j|jSrr�r�r r r!�getIdleJailar#zServer.getIdleJailcCst|�|j|j_dSr)rr6r��
ignoreSelfr�r r r!�
setIgnoreSelfe�zServer.setIgnoreSelfcC�|j|jjSr)r6r�r�r�r r r!�
getIgnoreSelfh�zServer.getIgnoreSelfcC�|j|j�|�dSr)r6r��addIgnoreIP�rBr-�ipr r r!r�kr�zServer.addIgnoreIPcCr�r)r6r��delIgnoreIPr�r r r!r�nr�zServer.delIgnoreIPcC�|j|j��Sr)r6r��getIgnoreIPr�r r r!r�q�zServer.getIgnoreIPcCs*|j|j}t|t�r|�||�dSdSr)r6r��
isinstancer	�
addLogPath)rBr-�fileName�tail�filter_r r r!r�ts
�zServer.addLogPathcC�(|j|j}t|t�r|�|�dSdSr)r6r�r�r	�
delLogPath)rBr-r�r�r r r!r�y�
�zServer.delLogPathcC�0|j|j}t|t�r|��St�d|�gS)Nz$Jail %s is not a FileFilter instance)r6r�r�r	�getLogPathsrFr_�rBr-r�r r r!�
getLogPath~�

zServer.getLogPathcCr�r)r6r�r�r
�addJournalMatch�rBr-�matchr�r r r!r��r�zServer.addJournalMatchcCr�r)r6r�r�r
�delJournalMatchr�r r r!r��r�zServer.delJournalMatchcCr�)Nz'Jail %s is not a JournalFilter instance)r6r�r�r
�getJournalMatchrFr_r�r r r!r��r�zServer.getJournalMatchcCs|j|j}|�|�dSr)r6r��setLogEncoding)rBr-�encodingr�r r r!r��szServer.setLogEncodingcCs|j|j}|��Sr)r6r��getLogEncodingr�r r r!r��szServer.getLogEncodingcCr�r)r6r��setFindTimer�r r r!r��r�zServer.setFindTimecCr�r)r6r��getFindTimer�r r r!r��r�zServer.getFindTimecCr�r)r6r��setDatePattern)rBr-�patternr r r!r��r�zServer.setDatePatterncCr�r)r6r��getDatePatternr�r r r!r��r�zServer.getDatePatterncCr�r)r6r��setLogTimeZone)rBr-�tzr r r!r��r�zServer.setLogTimeZonecCr�r)r6r��getLogTimeZoner�r r r!r��r�zServer.getLogTimeZonecCs||j|j_dSr�r6r��
ignoreCommandr�r r r!�setIgnoreCommand��zServer.setIgnoreCommandcCr�rr�r�r r r!�getIgnoreCommand�r�zServer.getIgnoreCommandcCs&td|d�\}}||j|j_dS)Nzcache[�])rr6r��ignoreCache)rBr-r��optionsr r r!�setIgnoreCache�szServer.setIgnoreCachecCr�r)r6r�r�r�r r r!�getIgnoreCache�r�zServer.getIgnoreCachecCs"|j|j}t�d|�||_dS)Nz  prefregex: %r)r6r�rFrG�	prefRegex)rBr-r��fltr r r!�setPrefRegex�s
zServer.setPrefRegexcCr�r)r6r�r�r�r r r!�getPrefRegex�r�zServer.getPrefRegexcC�:|j|j}|s|f}|D]
}t�d|�|�|�q
dS)Nz  failregex: %r)r6r�rFrG�addFailRegex�rBr-r��multipler�r r r!r���
�zServer.addFailRegexNcCr�r)r6r��delFailRegex�rBr-�indexr r r!r��r�zServer.delFailRegexcCr�r)r6r��getFailRegexr�r r r!r��r�zServer.getFailRegexcCr�)Nz  ignoreregex: %r)r6r�rFrG�addIgnoreRegexr�r r r!r��r�zServer.addIgnoreRegexcCr�r)r6r��delIgnoreRegexr�r r r!r��r�zServer.delIgnoreRegexcCr�r)r6r��getIgnoreRegexr�r r r!r��r�zServer.getIgnoreRegexcCr�r)r6r��	setUseDnsr�r r r!r��r�zServer.setUseDnscCr�r)r6r��	getUseDnsr�r r r!r��r�zServer.getUseDnscCs||j|jj_dSr�r6r��failManager�
maxMatchesr�r r r!�
setMaxMatches��zServer.setMaxMatchescCs|j|jjjSrr�r�r r r!�
getMaxMatches�r�zServer.getMaxMatchescCr�r)r6r��setMaxRetryr�r r r!r��r�zServer.setMaxRetrycCr�r)r6r��getMaxRetryr�r r r!r��r�zServer.getMaxRetrycCr�r)r6r��setMaxLinesr�r r r!r��r�zServer.setMaxLinescCr�r)r6r��getMaxLinesr�r r r!r��r�zServer.getMaxLinescGs*|j|jj|g|�Rd||jvi�dS)Nr�)r6r�r�r:)rBr-r��argsr r r!�	addAction�s
�zServer.addActioncCr�r�r6r�r�r r r!�
getActions�r#zServer.getActionscCs|j|j|=dSrr�r�r r r!�	delActionr�zServer.delActioncCs|j|j|Srr�r�r r r!�	getActionr�zServer.getActioncCr�r)r6r��
setBanTimer�r r r!rr�zServer.setBanTimecGs|j|jj|�Sr)r6r��
addAttempt)rBr-r�r r r!�addAttemptIPr�zServer.addAttemptIPcC�|j|j�|�Sr)r6r��addBannedIPr�r r r!�setBanIPr�zServer.setBanIPcCsV|dur|j|g}nt|j���}d}||duO}|D]}||jj||d�7}q|S)Nr)�ifexists)r6r��valuesr��removeBannedIP)rBr-r�r�jails�cntr�r r r!r�szServer.setUnbanIPcCs�|dur|j|g}nt|j���}g}|dur:|r:|D]}g}|D]}|j�|g�r1|�|j�q"|�|�q|S|D]}|j�|�}|durL|S|�|j|i�q<|Sr)r6r�rr��	getBannedr�r-)rBr-�idsr
�resr�r}r�r r r!�banneds&�	�z
Server.bannedcCr�r)r6r��
getBanTimer�r r r!r9r�zServer.getBanTimecCr)z�Returns the list of banned IP addresses for a jail.

		Parameters
		----------
		name : str
			The name of a jail.

		Returns
		-------
		list
			The list of banned IP addresses.
		)r6r��
getBanList)rBr-�withTimer r r!r<s
zServer.getBanListcCs|j|�||�dSr)r6�setBanTimeExtra)rBr-�optr�r r r!rKr�zServer.setBanTimeExtracCs|j|�|�Sr)r6�getBanTimeExtra)rBr-rr r r!rNr�zServer.getBanTimeExtracCs|jduo	|j��Sr)r;�isActive�rBr r r!�	isStartedQr�zServer.isStartedcCs@|dur
t|j�|kr
dSt|j���D]	}|��sdSqdS)Nrr)�lenr6r�rr�)rB�jailnumr�r r r!r�Ts�zServer.isAlivecCsZz&|j��t|j�}|��d�|�}dt|j�fd|fg}|W|j��S|j��w)Nz, zNumber of jailz	Jail list)r5�acquirer�r6�sortr�r�release)rBr
�jailListr}r r r!�status]s


�z
Server.status�basiccCs|j|j|d�S)N)�flavor)r6r)rBr-r!r r r!�
statusJailir�zServer.statusJailcCs�|��}|j�0|j|kr	Wd�dSt|�}td��tdks'|tjkr)|nt	�||_Wd�dS1s:wYdS)N�fail2ban�	INHERITED)
�upperr4r<rr�setLevelri�logging�DEBUGrg)rBr��llr r r!rfys
��"�zServer.setLogLevelcC�0|j�|jWd�S1swYdSr)r4r<rr r r!�getLogLevel��$�zServer.getLogLevelc
Cs�t|�\}}|��}|j���|j|kr	Wd�dS|dkr-||_	Wd�dS|�d�}|dkr�|�dd���}|durDd}zttjjd|�}Wnt	yft
�d	|�d��tjjj}Ynw|j
d
kryddl}|j�|���|_
|j
dur�tj�|j
�r�t�t�|j
�j�r�tjj|j
|d�}nTt
�d
|j
�	Wd�dS|dvr�t�tj�}n8|dkr�t�tj�}n-zt|d���tj�|�}Wnty�t
�d|�t
�d|j�YWd�dSwt d�}|jddd�D]2}	|�!|	�z
|	�"�|	��Wq�t#t$f�y+dtj%k�r!dk�s(ndtj%k�r)�Yq�w|�&�tj'k�rD|j(du�rDtj'|�&�d|_(|�d�}
|
du�rSt)|
�}
n|dv}
|du�rat)|�}nd}|�dd�dk�rr|�d�}nd}|j(du�r�|j(dk�r�|j(d}t*||
|d�}|�+t�,|��|�-|�|jdu�r�t
�d t.j.�t
�d!|dk�r�|nd"||j
ft.j.f�||_	Wd�dS1�s�wYdS)#NTr$�padding�SYSLOG�facility�DAEMON�0�LOG_z)Unable to set facility %r, using 'DAEMON'rr)r/z9Syslog socket file: %s does not exists or is not a socketF)r�SYSOUT�STDERR�azUnable to log to %rzLogging to previous target %rr#���)r��)r8)r8rr�datetime)r.r3�format�r)�addtimer-zStart Fail2ban v%sz-Changed logging target to %s for Fail2ban v%sz%s (%s))/rr%r4r=rc�getattrr'�handlers�
SysLogHandler�AttributeErrorrFra�
LOG_DAEMONr?�platformr@�systemr%r&r��stat�S_ISSOCK�st_mode�
StreamHandlerro�stdout�stderrrprs�RotatingFileHandlerrtr_r�
removeHandler�flushr��KeyError�version_info�getEffectiveLevelr(r>rr�setFormatter�	Formatter�
addHandlerr)
rB�target�
logOptions�	systargetr-r/rB�hdlr�logger�handlerr<�fmtrWr r r!rh�s�

��
�
�
��������"�+
��







�����&�zServer.setLogTargetcCs^|j�|j|kr	Wd�dS||_Wd�n1swY|jdkp.|�|j�S)NTr.)r4r?r=rh)rBrXr r r!rds
��

�zServer.setSyslogSocketcCr*r)r4r=rr r r!�getLogTargetr,zServer.getLogTargetcCr*r)r4r?rr r r!�getSyslogSocketr,zServer.getSyslogSocketc	Cs�|jdvr2td�jD]%}z|��t�d|j�Wq
ty/|��t�d|j�Yq
wdStd�jD]}|��t�d|j�q7dS)N)r4rr.r#zrollover performed on %szflush performed on %szrolled over�flushed)r=rr>�
doRolloverrFr_r@rL)rBrXr r r!rMs
�zServer.flushLogscCs<|��D]\}}|dkrt�t|�d�qtd|��dS)N�	stacksize�zunknown option %r)r�r�
stack_size�intrM)rBr��o�vr r r!�setThreadOptions&s
�zServer.setThreadOptionscCsdt��diS)Nr^r_)rr`rr r r!�getThreadOptions-r�zServer.getThreadOptionscCs�|jr|jj|krdS|js|��dkrdSt|j�dkr!td��|��dkr+d|_ntdur>t|�t|�|_|j��nt	�
d�tjdurQtj�
|j�dSdS)N�nonerz3Cannot change database when there are jails presentzEUnable to import fail2ban database module as sqlite is not available.)r7�filename�lowerrr6�RuntimeErrorrr/�delAllJailsrFrarru�db_set)rBrgr r r!�setDatabase0s(�
�
�zServer.setDatabasecCs|jSr)r7rr r r!�getDatabaseGszServer.getDatabasec
Cs�|�tjtj�zt��}Wnty(}zd|j|jffWYd}~Sd}~ww|dkrbt�	�zt��}WntyQ}zd|j|jffWYd}~Sd}~ww|dkr\t�
d�nt�d�ndSzt�d�}Wn
t
tfyxd}Ynwtjdd�dkr�t�d	tj�}td|�D]}ztj�||�s�t�|�Wq�ty�Yq�wt�|�nt�d|�t�d
tj�t�d
tj�t�d
tj�dS)z� Detach a process from the controlling terminal and run it in the
			background as a daemon.
		
			http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/278731
		FNr�/�SC_OPEN_MAX�r8)r8�rz/dev/urandomz	/dev/null)T)rTrP�SIGHUP�SIG_IGNr%�forkr*r,�strerror�setsid�chdir�_exit�sysconfr@r�rorNrp�O_RDONLY�ranger&�sameopenfilers�
closerange�O_RDWR)rB�pidr.�maxfd�
urandom_fd�fdr r r!�__createDaemonJsP
��	���
��zServer.__createDaemon)F)TTr)NNT)NN)r )Ur�
__module__�__qualname__rDrlrnrTrvrHr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�rrrrrrr�rr"rfr+rhrdrZr[rMrdrerlrmr`r r r r!r0Os�
P/
	
5







	

q	r0c@seZdZdS)rbN)rr�r�r r r r!rb�srb)2�
__author__�
__copyright__�__license__rrrr'r%rPrDror{rrr
rr�r	r
�transmitterr�asyncserverrr
r;r�helpersrrrrrrrrrFrergri�databaser�ImportErrorr"r+�	NameErrorr*r/r0�	Exceptionrbr r r r!�<module>sR$��
W

https://t.me/RX1948 - 2025