HEX
Server: nginx/1.30.4
System: Linux d-twindigital-web-1.host-ed.eu 4.18.0-553.141.2.el8_10.x86_64 #1 SMP Wed Jul 8 10:28:18 EDT 2026 x86_64
User: u_twindigital_html (1009)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/fail2ban/server/__pycache__/server.cpython-36.pyc
3

=�Z]Wf�@sdZdZdZddlZddlmZmZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZmZdd	lmZdd
lmZmZddlmZdd
lmZmZmZmZmZmZee�ZdZ dZ!dZ"yddl#m$Z$Wne%k
r�dZ$YnXdd�Z&Gdd�d�Z'Gdd�de(�Z)dS)z
Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPL�N)�Lock�RLock�)�Jails)�
FileFilter�
JournalFilter)�Transmitter)�AsyncServer�AsyncServerException�)�version)�	getLogger�_as_bool�extractOptions�str2LogLevel�getVerbosityFormat�
excepthook�auto�INFO�STDOUT)�
Fail2BanDbcCstj�jjS)N)�	threadingZcurrent_thread�	__class__�__name__�rr�/usr/lib/python3.6/server.py�_thread_name9src@sleZdZd�dd�Zdd�Zdd�Zdd	�Zdifd
d�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;d�dvdw�Z<dxdy�Z=dzd{�Z>d�d|d}�Z?d~d�Z@d�d�d��ZAd�d��ZBd�d��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKdSS)��ServerFcCsjt�|_t�|_t�|_d|_||_t|�|_	i|_
d|_d|_d|_
d|_d|_dddd�|_i|_dS)Nz/var/run/syslogz/var/run/logz/dev/log)ZDarwinZFreeBSDZLinux)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)�selfZdaemonrrr�__init__?s 

zServer.__init__cCstjd|�|j�dS)NzCaught signal %d. Exiting)�logSys�debug�quit)r,�signum�framerrrZ__sigTERMhandlerTszServer.__sigTERMhandlercCstjd|�|j�dS)NzCaught signal %d. Flushing logs)r.r/�	flushLogs)r,r1ZfnamerrrZ__sigUSR1handlerXszServer.__sigUSR1handlercCs tj|�|j|<tj||�dS)z>Bind new signal handler while storing old one in _prev_signalsN)�signal�	getsignalr+)r,�s�newrrr�
_rebindSignal\szServer._rebindSignalc
,Csntjd�|jrXtjd�|j�}|dkr.dS|dsXd|dd�f}tj|�t|��|jdd�|_	|j
|jd|jdk	r�|jnt��|j
|jd	|jdk	r�|jnt��|j|jd
|jdk	r�|jnt��tjdd�tjd
tj�|jr�tjd�t�dk�r:x$tjtjfD]}|j||j��qW|jtj|j�tt_y4tjd|�t|d�}|j dtj!��|j"�Wn4t#t$fk
�r�}	ztjd|	�WYdd}	~	XnXtjd�y,t%|j&�|_'|jd�|j'_(|j'j)||�Wn0t*k
�r}	ztjd|	�WYdd}	~	XnX|j+�ytjd|�tj,|�Wn4t#t$fk
�rh}	ztjd|	�WYdd}	~	XnXdS)N�?zStarting in daemon modeFrzCould not create daemon %sr�verbose�syslogsocketZloglevelZ	logtarget�-�2zStarting 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)-�os�umaskr"r.�info�_Server__createDaemon�error�ServerInitializationError�getr(�setSyslogSocketr)�DEF_SYSLOGSOCKET�setLogLevelr&�DEF_LOGLEVEL�setLogTargetr'�
DEF_LOGTARGETrrr4�SIGTERM�SIGINTr8�_Server__sigTERMhandler�SIGUSR1�_Server__sigUSR1handlerr�sysr/�open�write�getpid�close�OSError�IOErrorr	r#r%r@�startr
r0�remove)
r,ZsockZpidfile�forceZconf�ret�errr6ZpidFile�errrrZas\








zServer.startcCs�dd�|_tjd�|jdk	r(|jj�t�dkrVx"|jj�D]\}}tj||�q>W|j	�|j
rt|j
j�d|_
|jdk	r�|jj�d|_tjd�dS)NcSsdS)NFrrrrr�<lambda>�szServer.quit.<locals>.<lambda>zShutdown in progress...r>zExiting Fail2ban)
r0r.rCr%Zstop_communicationrr+�itemsr4�stopAllJailr!rW�stop)r,r6Zshrrrr0�s







zServer.quitcCs�d}|jj|�rt|jj|�rt|j|}|j|krLd}tjd|�d|j|<n(tjd||j|�|j|dd�|j|=|r�|jj|||j	�|j	dk	r�|j	j
|j|�dS)NTFzReload jail %rz"Restart jail %r (reason: %r != %r))rc)r$rGr �exists�backendr.rC�delJail�addr!�addJail)r,�namereZaddflg�jailrrrrh�s


zServer.addJailTcCsJ|j|}|s|j�r$|j||d�|rF|jdk	r>|jj|�|j|=dS)N)rc�join)r �isAlivercr!rf)r,rircrkrjrrrrf�s

zServer.delJailc
Cs\|j�L|j|}|j�s$|j�n||jkrBtjd|�|j|=|jrNd|_WdQRXdS)NzJail %r reloadedF)rr rlrZr$r.rC�idle)r,rirjrrr�	startJail�s


zServer.startJailcCs$|j�|j|dd�WdQRXdS)NT)rc)rrf)r,rirrr�stopJail�szServer.stopJailc
Csptjd�|j�Vx&t|jj��D]}|j|ddd�q"Wx&t|jj��D]}|j|ddd�qJWWdQRXdS)NzStopping all jailsTF)rcrk)r.rCr�listr �keysrf)r,rirrrrb�s
zServer.stopAllJailcCs�|�r"|jr(|dks |jj|�r(td��tjd|dkr>d|nd�|j��|dkr�d}d|ksn|jj|�rx|j|}|r�d|kr�|j|�d|kr�|j	|�n d|kr�|j�d|kr�|j
�xR|jj�D]D\}}|dks�||kr�d	|_||j|<|j
jd	d
�|jjd	d
�q�WWdQRXn�|j�rg}xL|jj�D]>\}}||jk�rZ|j|�n|j
jdd
�|jjdd
��q:Wx|D]}|j|��q�WWdQRXi|_tjd�dS)
Nz--allzReload already in progresszReload zjail %sz	all jailsz--if-existsz--unbanz	--restartT)�beginFzReload finished.)r$rG�
ValueErrorr.rCrr rd�
setUnbanIProrbrarm�filter�reload�actions�appendrf)r,riZoptsrrrjZjnZdeljailsrrr�reloadJails�sH



zServer.reloadJailscCs||j|_dS)NT)r rm)r,ri�valuerrr�setIdleJail4szServer.setIdleJailcCs|j|jS)N)r rm)r,rirrr�getIdleJail8szServer.getIdleJailcCst|�|j|j_dS)N)rr ru�
ignoreSelf)r,rirzrrr�
setIgnoreSelf<szServer.setIgnoreSelfcCs|j|jjS)N)r rur})r,rirrr�
getIgnoreSelf?szServer.getIgnoreSelfcCs|j|jj|�dS)N)r ru�addIgnoreIP)r,ri�iprrrr�BszServer.addIgnoreIPcCs|j|jj|�dS)N)r ru�delIgnoreIP)r,rir�rrrr�EszServer.delIgnoreIPcCs|j|jj�S)N)r ru�getIgnoreIP)r,rirrrr�HszServer.getIgnoreIPcCs&|j|j}t|t�r"|j||�dS)N)r ru�
isinstancer�
addLogPath)r,ri�fileName�tail�filter_rrrr�Ks
zServer.addLogPathcCs$|j|j}t|t�r |j|�dS)N)r rur�r�
delLogPath)r,rir�r�rrrr�Ps
zServer.delLogPathcCs4|j|j}t|t�r|j�Stjd|�gSdS)Nz$Jail %s is not a FileFilter instance)r rur�rZgetLogPathsr.rC)r,rir�rrr�
getLogPathUs

zServer.getLogPathcCs$|j|j}t|t�r |j|�dS)N)r rur�r�addJournalMatch)r,ri�matchr�rrrr�]s
zServer.addJournalMatchcCs$|j|j}t|t�r |j|�dS)N)r rur�r�delJournalMatch)r,rir�r�rrrr�bs
zServer.delJournalMatchcCs4|j|j}t|t�r|j�Stjd|�gSdS)Nz'Jail %s is not a JournalFilter instance)r rur�r�getJournalMatchr.rC)r,rir�rrrr�gs

zServer.getJournalMatchcCs|j|j}|j|�dS)N)r ru�setLogEncoding)r,ri�encodingr�rrrr�oszServer.setLogEncodingcCs|j|j}|j�S)N)r ru�getLogEncoding)r,rir�rrrr�sszServer.getLogEncodingcCs|j|jj|�dS)N)r ru�setFindTime)r,rirzrrrr�wszServer.setFindTimecCs|j|jj�S)N)r ru�getFindTime)r,rirrrr�zszServer.getFindTimecCs|j|jj|�dS)N)r ru�setDatePattern)r,ri�patternrrrr�}szServer.setDatePatterncCs|j|jj�S)N)r ru�getDatePattern)r,rirrrr��szServer.getDatePatterncCs|j|jj|�dS)N)r ru�setLogTimeZone)r,riZtzrrrr��szServer.setLogTimeZonecCs|j|jj�S)N)r ru�getLogTimeZone)r,rirrrr��szServer.getLogTimeZonecCs||j|j_dS)N)r ru�
ignoreCommand)r,rirzrrr�setIgnoreCommand�szServer.setIgnoreCommandcCs|j|jjS)N)r rur�)r,rirrr�getIgnoreCommand�szServer.getIgnoreCommandcCs&td|d�\}}||j|j_dS)Nzcache[�])rr ru�ignoreCache)r,rirzZoptionsrrr�setIgnoreCache�szServer.setIgnoreCachecCs|j|jjS)N)r rur�)r,rirrr�getIgnoreCache�szServer.getIgnoreCachecCs"|j|j}tjd|�||_dS)Nz  prefregex: %r)r rur.r/�	prefRegex)r,rirz�fltrrr�setPrefRegex�szServer.setPrefRegexcCs|j|jjS)N)r rur�)r,rirrr�getPrefRegex�szServer.getPrefRegexcCs>|j|j}|s|f}x"|D]}tjd|�|j|�qWdS)Nz  failregex: %r)r rur.r/�addFailRegex)r,rirz�multipler�rrrr��s
zServer.addFailRegexNcCs|j|jj|�dS)N)r ru�delFailRegex)r,ri�indexrrrr��szServer.delFailRegexcCs|j|jj�S)N)r ru�getFailRegex)r,rirrrr��szServer.getFailRegexcCs>|j|j}|s|f}x"|D]}tjd|�|j|�qWdS)Nz  ignoreregex: %r)r rur.r/�addIgnoreRegex)r,rirzr�r�rrrr��s
zServer.addIgnoreRegexcCs|j|jj|�dS)N)r ru�delIgnoreRegex)r,rir�rrrr��szServer.delIgnoreRegexcCs|j|jj�S)N)r ru�getIgnoreRegex)r,rirrrr��szServer.getIgnoreRegexcCs|j|jj|�dS)N)r ru�	setUseDns)r,rirzrrrr��szServer.setUseDnscCs|j|jj�S)N)r ru�	getUseDns)r,rirrrr��szServer.getUseDnscCs|j|jj|�dS)N)r ru�setMaxRetry)r,rirzrrrr��szServer.setMaxRetrycCs|j|jj�S)N)r ru�getMaxRetry)r,rirrrr��szServer.getMaxRetrycCs|j|jj|�dS)N)r ru�setMaxLines)r,rirzrrrr��szServer.setMaxLinescCs|j|jj�S)N)r ru�getMaxLines)r,rirrrr��szServer.getMaxLinescGs(|j|jj|f|�d||jki�dS)Nrv)r rwrgr$)r,rirz�argsrrr�	addAction�szServer.addActioncCs|j|jS)N)r rw)r,rirrr�
getActions�szServer.getActionscCs|j|j|=dS)N)r rw)r,rirzrrr�	delAction�szServer.delActioncCs|j|j|S)N)r rw)r,rirzrrr�	getAction�szServer.getActioncCs|j|jj|�dS)N)r rw�
setBanTime)r,rirzrrrr��szServer.setBanTimecCs|j|jj|�S)N)r ruZaddBannedIP)r,rirzrrr�setBanIP�szServer.setBanIPcCsh|dk	r|j|g}nt|jj��}d}x$|D]}||jj||dkd�7}q.W|rd|rdtjd|�|S)Nr)Zifexistsz%s is not banned)r rp�valuesrwZremoveBannedIPr.rC)r,rirz�jailsZcntrjrrrrt�s

zServer.setUnbanIPcCs|j|jj�S)N)r rw�
getBanTime)r,rirrrr��szServer.getBanTimecCs|jdk	o|jj�S)N)r%ZisActive)r,rrr�	isStarted�szServer.isStartedcCsB|dk	rt|j�|krdSx"t|jj��D]}|j�s*dSq*WdS)Nrr)�lenr rpr�rl)r,Zjailnumrjrrrrl�szServer.isAlivec
CsRz@|jj�t|j�}|j�dj|�}dt|j�fd|fg}|S|jj�XdS)Nz, zNumber of jailz	Jail list)r�acquirerpr �sortrkr��release)r,r�ZjailListr]rrr�status�s



z
Server.status�basiccCs|j|j|d�S)N)�flavor)r r�)r,rir�rrr�
statusJail	szServer.statusJailc
Cs^|j�}|j�F|j|krdSt|�}td�jtdks@|tjkrD|nt	�||_WdQRXdS)N�fail2ban�	INHERITED)
�upperrr&rr
ZsetLevelrM�logging�DEBUGrK)r,rzZllrrrrJs
zServer.setLogLevelc	Cs|j�|jSQRXdS)N)rr&)r,rrr�getLogLevel*szServer.getLogLevelc
Cstt|�\}}|j�}|j��N|j|kr,dS|dkr>||_dS|jd�}|dk�r6|jdd�j�}|dkrnd}yttjjd|�}Wn0t	k
r�t
jd	|jd��tjjj}YnX|j
d
kr�ddl}|jj|j��|_
|j
dk	�r tjj|j
��r tjtj|j
�j��r tjj|j
|d�}nt
jd
|j
�dSn�|d!k�rNtjtj�}nh|dk�rftjtj�}nPyt|d�j�tjj|�}Wn0tk
�r�t
jd|�t
jd|j�dSXt d�}x�|jddd"�D]l}	|j!|	�y|	j"�|	j�WnFt#t$fk
�r8d#tj%k�od$kn�s2d%tj%k�r4�YnX�q�W|j&�tj'k�rp|j(dk�rptj'|j&�d|_(|jd�}
|
dk	�r�t)|
�}
n|d&k}
|dk	�r�t)|�}nd}|jdd�dk�r�|jd�}n4d}|j(dk	�r�|j(dk�r�|j(d}t*||
|d�}|j+tj,|��|j-|�|jdk	�r`t
jdt.j.�t
jd|dk�rH|nd ||j
ft.j.f�||_dSQRXdS)'NTr��padding�SYSLOG�facilityZDAEMON�0ZLOG_z)Unable to set facility %r, using 'DAEMON'rr)r�z9Syslog socket file: %s does not exists or is not a socketFr�SYSOUT�STDERR�azUnable to log to %rzLogging to previous target %rr�rr��Zdatetime�format�)�addtimer�zStart Fail2ban v%sz-Changed logging target to %s for Fail2ban v%sz%s (%s))rr����)rr�r�)r�)r�r)r�r�)/rr�rr'rG�getattrr��handlersZ
SysLogHandler�AttributeErrorr.rEZ
LOG_DAEMONr)�platformr*�systemrA�pathrd�stat�S_ISSOCK�st_modeZ
StreamHandlerrS�stdout�stderrrTrWZRotatingFileHandlerrYrCr
Z
removeHandler�flushrs�KeyError�version_infoZgetEffectiveLevelr�r(rrZsetFormatterZ	FormatterZ
addHandlerr)
r,�targetZ
logOptionsZ	systargetr�r�r�ZhdlrZlogger�handlerr�Zfmtr:rrrrL4s�
















zServer.setLogTargetc	Cs<|j�|j|krdS||_WdQRX|jdkp:|j|j�S)NTr�)rr)r'rL)r,r;rrrrH�s

zServer.setSyslogSocketc	Cs|j�|jSQRXdS)N)rr')r,rrr�getLogTarget�szServer.getLogTargetc	Cs|j�|jSQRXdS)N)rr))r,rrr�getSyslogSocket�szServer.getSyslogSocketcCs�|jd	krlx\td�jD]N}y|j�tjd|j�Wqtk
rb|j�tjd|j�YqXqWdSx*td�jD]}|j�tjd|j�qxWdSdS)
Nr�rr�r�zrollover performed on %szflush performed on %szrolled overZflushed)r�rr�)r'r
r�Z
doRolloverr.rCr�r�)r,r�rrrr3�s
zServer.flushLogscCs�|jr|jj|krdS|jr.|j�dkr.dSt|j�dkrDtd��|j�dkrXd|_n(tdk	rvt|�|_|jj�n
tj	d�dS)NZnonerz3Cannot change database when there are jails presentzEUnable to import fail2ban database module as sqlite is not available.)
r!�filename�lowerr�r �RuntimeErrorrZdelAllJailsr.rE)r,r�rrr�setDatabase�s
zServer.setDatabasecCs|jS)N)r!)r,rrr�getDatabase�szServer.getDatabasec0Cs�|jtjtj�ytj�}Wn,tk
rH}zd|j|jffSd}~XnX|dkr�tj	�ytj�}Wn,tk
r�}zd|j|jffSd}~XnX|dkr�tj
d�q�tjd�ndSytjd�}Wnt
tfk
r�d}YnXtjdd�dk�r^tjd	tj�}xJtd|�D]<}ytjj||��s2tj|�Wntk
�rJYnX�qWtj|�ntjd|�tjd
tj�tjd
tj�tjd
tj�d
S)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�r��z/dev/urandomz	/dev/nullT)r�r�r)T)r8r4�SIGHUP�SIG_IGNrA�forkrX�errno�strerror�setsid�chdir�_exit�sysconfr�rsrSr�rT�O_RDONLY�ranger��sameopenfilerW�
closerange�O_RDWR)r,�pidr_ZmaxfdZ
urandom_fd�fdrrrZ__createDaemon�sB
	
zServer.__createDaemon)F)TT)F)F)N)F)NN)N)r�)Lr�
__module__�__qualname__r-rPrRr8rZr0rhrfrnrorbryr{r|r~rr�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�rtr�r�rlr�r�rJr�rLrHr�r�r3r�r�rDrrrrr=s�
E#
	
5





	

q	rc@seZdZdS)rFN)rrrrrrrrF3srF)*�
__author__Z
__copyright__Z__license__rrrr�rAr4r�rSr�rrurrZtransmitterrZasyncserverr	r
r�rZhelpersr
rrrrrrr.rIrKrMZdatabaser�ImportErrorrr�	ExceptionrFrrrr�<module>s> 
{