HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/fail2ban/tests/__pycache__/databasetestcase.cpython-38.pyc
U

]^X�@s�dZdZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
ddlmZmZd	d
lmZzddlmZejZWnek
r�dZYnXd	dlmZmZej�ej�e�d
�Zdd�Z Gdd�de�Z!dS)z"Copyright (c) 2013 Steven HiscocksZGPL�N�)�
FileContainer)�MyTime)�
FailTicket)�Actions�Utils�)�	DummyJail)�database)�LogCaptureTestCase�logSys�filescCstjjrtd�St|�S)N�:memory:)�unittest�F2B�	memory_db�
Fail2BanDb)�filename�r�A/usr/lib/python3/dist-packages/fail2ban/tests/databasetestcase.py�
getFail2BanDb0srcs�eZdZ�fdd�Zedd��Zejdd��Z�fdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Z�ZS)2�DatabaseTestcsJtt|���tdkr t�d��d|_tjjs@t	�
dd�\}|_d|_dS)zCall before every test case.NzEUnable to import fail2ban database module as sqlite is not available.�.db�	fail2ban_�:auto-create-in-memory:)�superr�setUprr�SkipTest�
dbFilenamerr�tempfile�mkstemp�_db)�self�_��	__class__rrr8s�zDatabaseTest.setUpcCs(t|jt�r"|jdkr"t|j�|_|jS)Nr)�
isinstancer!�strrr�r"rrr�dbDszDatabaseTest.dbcCs t|jt�r|j��||_dS�N)r&r!r�close)r"�valuerrrr)Is
cs4tt|���tdkrdS|jdk	r0t�|j�dS)zCall after every test case.N)rr�tearDownrr�os�remover(r$rrr-Os

zDatabaseTest.tearDowncCs,|jjdkrt�d��|�|j|jj�dS)Nr�in :memory: database)r)rrr�assertEqualrr(rrr�testGetFilenameXs
zDatabaseTest.testGetFilenamecCsD|�|jjd�d|j_|�|jjd�d|j_|�|jjd�dS)Ni�QZ1y6mon15d5h30mi�_�z2y 12mon 30d 10h 60miP��)r1r)Zpurgeager(rrr�testPurgeAge]s
zDatabaseTest.testPurgeAgecCs|�tjtd�dS)Nz/this/path/should/not/exist)�assertRaises�sqlite3ZOperationalErrorrr(rrr�testCreateInvalidPathds
�z"DatabaseTest.testCreateInvalidPathcCsH|jjdkrt�d��|��t|j�|_|�|jj	|j�
�kd�dS)Nrr0z3Jail not retained in Db after disconnect reconnect.)r)rrr�testAddJailrr�
assertTrue�jail�name�getJailNamesr(rrr�testCreateAndReconnectjs
�z#DatabaseTest.testCreateAndReconnectc
CsXt�d�st�d��d|_|jdkr6t�dd�\}|_dD�]}|�d|�t	�
tj�
td�|j�t�|jtj�}t�||�t�|�z�t|j�|_|d	kr�|jd
ddd
d�|�|j��tdg��|�t|j���d�n>|jdddd
d�|�t|j���d�|�t|j���d�W5|j�rP|jjdk�rPt�|jj�d|_Xq:dS)Nzsqlite3 --versionzno sqlite3 commandrr)�6i�z)[test-repair], next phase - file-size: %d�database_v1.dbrr=zRepair seems to be successfulzCheck integrityzDatabase updatedT)�all�/tmp/Fail2BanDb_pUlZJh.logrzRepair seems to be failedzNew database created.r)rZ
executeCmdrrr)rrr �pruneLog�shutil�copyfiler.�path�join�TEST_FILES_DIR�open�O_RDWR�	ftruncater+�_dbFilenamer/�_dbBackupFilenamer�assertLoggedr1�getLogPaths�set�lenr;)r"r#Z	truncSize�frrr�testRepairDbusD



�
��zDatabaseTest.testRepairDbc	Cs.d|_z�|jdkr$t�dd�\}|_t�	tj
�td�|j�t
|j�|_|�|j��tdg��|�|j��tdg��tddd	g�}|�|j��d
|�|�|j�t
j�t
j�|�t|jjt
jd�|jjdd
d�}|�t|�d�|�|d
��d
�W5|j�r(|jjdk�r(t�|jj�XdS)Nrrrr>z"DummyJail #29162448 with 0 ticketsr@�	127.0.0.1gף��ծ�A�abc
rriW�Ri@�)�fromtimeZcorrectBanTime)r)rJr.r/rKrrr rBrCrDrErFrr1r;rNrMr�getBans�updateDb�__version__r4�NotImplementedError�getCurrentBansrO�
getBanTime)r"r#�ticket�ticketsrrr�testUpdateDb�s(
�zDatabaseTest.testUpdateDbcCsTd|_|jdkr"t�dd�\}|_t�tj�t	d�|j�t
|j�|_|�|j��t
dg��|�|j��t
dg��|j��}|�t|�d�tddd	d
dg�}|�d�|�|d
|�|�|d��d�|�|j�t
j�t
j�tdd�|_|jj|jdd�}|�t|�d�|�|d
��d�|�t|jjt
jd�t�|jj�dS)Nrrzdatabase_v2.dbzpam-genericz/var/log/auth.logrz1.2.3.7if�~Tz�Dec  3 09:31:08 f2btest test:auth[27658]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7z�Dec  3 09:31:32 f2btest test:auth[27671]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7z�Dec  3 09:31:34 f2btest test:auth[27673]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7�rrz1.2.3.8�r:)r9rTiX)r)rrr rBrCr.rDrErFrr1r;rNrMrUrOr�
setAttempt�getIPrVrWr	r9rYrZr4rXr/rK)r"r#Zbansr[r\rrr�
testUpdateDb2�s6
�
�
zDatabaseTest.testUpdateDb2cCs6t�|_|j�|j�|�|jj|j�d�kd�dS)NTzJail not added to database)r	r9r)�addJailr8r:r;r(rrrr7�s�zDatabaseTest.testAddJailcCsZ|��t�dd�\}}t|d�|_|j�|j|j�|�||j�	|j��t
�|�dS)Nz.logZFail2BanDb_�utf-8)r7rr r�
fileContainerr)�addLogr9�assertInrMr.r/)r"r#rrrr�
testAddLog�szDatabaseTest.testAddLogcCs|��|j��}t|d�}|�d�|��|j��|j��|j��|j��}|�|dk�|j	�
|j|j�t|d�|_|�
|j��d�|�
|j	�|j|j�|�t|d�}|�d�|��t|d�|_|�
|j��d�|�
|j	�|j|j�d�t�|�dS)N�wz,Some text to write which will change md5sum
rrdz%Some different text to change md5sum
)rhreZgetFileNamerG�writer+�readlineZgetPosr8r)Z	updateLogr9rr1rfr.r/)r"rZfile_ZlastPosrrr�
testUpdateLog�s6






�

�zDatabaseTest.testUpdateLogcCs^|��tdddg�}|j�|j|�|jj|jd�}|�t|�d�|�t	|dt��dS)NrRrrS�r9r)
r7rr)�addBanr9rUr1rOr8r&)r"r[r\rrr�
testAddBan	s�zDatabaseTest.testAddBancCs�|��tdddddg�tdddddg�tddddd	g�td
ddddg�tdddd
g�tdddd
g�tddddg�g}|D]}|j�|j|�qz|�d�|jj|jd�}|�d�|�t|�d�t	|�D]h\}}t
�d|||���t
�d||���|�||�
�|�
��|�t||���t|����q�|�d�tj}zZdt_|D]}|j�|j|��qR|�d�|jj|jd�}|�d�|�t|�d�W5|t_X|�d�|j�|jtd��|jj|jd�}|�t|�d�|�dd�dS)NrRrzuser "test"uuser "Ñâåòà"uuser "äöüß"�	127.0.0.2z	127.0.0.3suser "�����"suser "äöüß"z	127.0.0.4uuser "äöüß"z	127.0.0.5uunterminated Ïz	127.0.0.6z	127.0.0.7sunterminated �zjson dumps failedrmzjson loads failed�zreadtickets[%d]: %rz == tickets[%d]: %rz[test-phase 2] simulate errorszf2b-test::non-existing-encoding�z[test-phase 3] still operable?z	127.0.0.8�)r7rr)rnr9ZassertNotLoggedrUr1rO�	enumerate�	DefLogSys�debugZgetDatara�
getMatchesrAr
Z
PREFER_ENCrL)r"r\r[Zreadtickets�iZpriorEncrrr�testAddBanInvalidEncodedsH�	

"



z%DatabaseTest.testAddBanInvalidEncodedcCsX|��dD]&}td|ddg�}|j�|j|�q|jj|jd�}|�t|�d�|S)N)rrr^z
192.0.2.%drztest
rmr^)r7rr)rnr9rUr1rO)r"rxr[r\rrr�
_testAdd3BansOszDatabaseTest._testAdd3BanscCs~|��}|j�|j|d���|�t|jj|jd��d�|j�|j|d��|d���|�t|jj|jd��d�dS)Nrrmrr)rzr)�delBanr9rar1rOrU)r"r\rrr�
testDelBanXs
"zDatabaseTest.testDelBancCs6|��|j�|j�|�t|jj|jd��d�dS)Nrmr)rzr)r{r9r1rOrUr(rrr�
testFlushBansaszDatabaseTest.testFlushBanscCs�|��|j�|jtdt��ddg��|j�|jtdt��ddg��|�t|jj	|jdd��d�|�t|jj	|jdd��d	�|�t|jj	|jd
d��d�dS)NrR�<rS�(�2)r9�bantimer�r���r)
r7r)rnr9rr�timer1rOrUr(rrr�testGetBansWithTimegs��z DatabaseTest.testGetBansWithTimecCs|��d}dgtdg�d�dgtdg�d�dgtddg�d�dgtddg�d�g}d	d
�|D�}d}|D]<}|d8}td
t��||d�}|�d�|j�|j|�qj||j_	|j�
d
�}|�|��d
�|�|�
�t|��|�t|���|�|�|��||d��td
t��d|dtddg�id�}|�t|��|j�|j|�|j�
d
�}|�|�
�dt|��|�t|���|�|�|��||d��|jj|jd
t��dd�}|�|dk	�|�|�
�t|��|�t|���|�|�|��||d��|jj|jd
t��ddd�}|�t|���d�|�|��|dd�|jj|jd
t��ddd�}|�t|���d�|�dddg�d|j_	|j�|j|�|jj|jd
t��dd�}|�|dk	�|�|�
�t|��|�t|���d�dS)NrrS�test)�matches�user�123
�ABC
�rootz1234
cSsg|]}|dd�qS)r�rr)�.0rPrrr�
<listcomp>|sz=DatabaseTest.testGetBansMerged_MaxMatches.<locals>.<listcomp>�P�
rR)�datarr��d)rT)rTZ
maxmatchesr^r�r�1�2�3)r7rNrrr�r`r)rnr9�
maxMatches�
getBansMergedr1ra�
getAttemptrOrwrYr8�
setMatches)r"r�ZfailuresZmatches2findrxrPr[rrr�testGetBansMerged_MaxMatchesssd�
���z)DatabaseTest.testGetBansMerged_MaxMatchescCs�|��tdd�}|j�|�tdt��ddg�}|�d�|j�|j	|�tdt��ddg�}|�d	�|j�|j	|�td
t��d	dg�}|�d�|j�|j	|�tdt��ddg�}|�d�|j�||�|j�
d�}|�|��d�|�|�
�d�|�|��dddg�|jj
d|j	d
�}|�|��d�|�|�
�d�|�|��ddg�|�t|�t|jj
d|j	d
���td
t��d	dg�}|�d�|j�|j	|�|�t|�t|jj
d|j	d
���tdt��ddg�}|�d�|j�|j	|�|�t|�t|jj
d|j	d
���|j�
�}|�t|�d�|�ttdd�|D���dd�|D��|jj
|d
�}|�t|�d�|jj
dd�}|�t|�d�|jj
dd�}|�t|�d�|jj
dd�}|�t|�d�|jj
dd�}|�t|�d�|jj|j	d
�}|�t|�d�|jjddd�}|�|��d�|jj|j	dt��d�}|�t|�d�|jj|j	dt��t�d�d�}|�t|�d�|jj|j	dt��t�d�d�}|�t|�d�|�d�|j�|j	|�|jj|j	dt��t�d�d�}|�t|�d�|�d|j	���|j	j�d�|jj|j	dt��t�d�d�}|�t|�d�|�|d��d�dS)NzDummyJail-2r_rRrrSr��r�r�rpr��Frmrcss|]}|��VqdSr*�ra�r�r[rrr�	<genexpr>�sz1DatabaseTest.testGetBansMerged.<locals>.<genexpr>cSsg|]}|���qSrr�r�rrrr��sz2DatabaseTest.testGetBansMerged.<locals>.<listcomp>r�)r�rs�rr�)r9Zip)r9Z
forbantimerTZ1yearz(ignore ticket (with new max ban-time %r))r7r	r)rcrrr�r`rnr9r�r1rar�rw�idZassertNotEqualrOZassertSortedEqual�listrNrYZstr2secondsZ
setBanTimerLZ
getMaxBanTime�actionsrZ)r"Zjail2r[Z	newTicketr\rrr�testGetBansMerged�s�




�
�
�
����
��zDatabaseTest.testGetBansMergedcCsz|��|j|j_t|j�}|�dtj�t	d�i�t
d�}|�d�|�ddg�|j�
|�|��|�dd�dS)NZaction_checkainfozaction.d/action_checkainfo.pyz1.2.3.4r�r�zban ainfo %s, %s, %s, %s)TTTT)r7r)r9r
r�addr.rDrErFrr`r�Z
putFailTicketZ_Actions__checkBanrL)r"r�r[rrr�testActionWithDBs

�
zDatabaseTest.testActionWithDBcCs|��|j�|j�|j��}|�t|�dko6|jj|�|jjdd�}|�t|�dko`|jj|�|jjdd�}|�t|�dk�|j�	|j�|j��}|�t|�dko�|jj|�|jjdd�}|�t|�dko�|jj|�|jjdd�}|�t|�dk�dS)NrF)�enabledTr)
r7r)�delJailr9r;rgrOr:r8rc)r"Zjailsrrr�testDelAndAddJail%s

zDatabaseTest.testDelAndAddJailcCs|��|j��|�t|j���d�|j�|j�|j��|�t|j���d�|��|j�|j�|j��|�t|j���d�|�t|jj	|jd��d�|��|j�
|jtdt�
�dg��|j�|j�|j��|�t|j���d�|�t|jj	|jd��d�dS)NrrrmrRrS)r7r)�purger1rOr;r�r9rorUrnrrr�r(rrr�	testPurge8s(


�
zDatabaseTest.testPurge)�__name__�
__module__�__qualname__r�propertyr)�setterr-r2r3r6r<rQr]rbr7rhrlroryrzr|r}r�r�r�r�r�r��
__classcell__rrr$rr6s6

	#!'
<		9ir)"Z
__copyright__Z__license__r.�sysrrr5rBZ
server.filterrZ
server.mytimerZ
server.ticketrZserver.actionsrrZ	dummyjailr	Zserverr
r�ImportErrorZutilsrrrurDrE�dirname�__file__rFrrrrrr�<module>s*