CasperSecurity

Current Path : /lib/python3/dist-packages/fail2ban/server/__pycache__/
Upload File :
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
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY