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/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

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

;s*b�Y�@s�dZdZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
ddlmZmZd	d
lmZzddlmZejZWneyRdZYnwd	dlmZmZej�ej�e�d
�Zdd�Z Gdd�de�Z!dS)z"Copyright (c) 2013 Steven Hiscocks�GPL�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�Zd2d3�Z�ZS)4�DatabaseTestcsJtt|���tdurt�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|jdkrt|j�|_|jS)Nr)�
isinstancer"�strrr�r#rrr�dbDszDatabaseTest.dbcCs t|jt�r|j��||_dS�N)r'r"r�close)r#�valuerrrr*Is

cs8tt|���tdur
dS|jdurt�|j�dSdS)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�Q�1y6mon15d5h30mi�_�z2y 12mon 30d 10h 60miP��)r2r*�purgeager)rrr�testPurgeAge]s
zDatabaseTest.testPurgeAgecCs|�tjtd�dS)Nz/this/path/should/not/exist)�assertRaises�sqlite3�OperationalErrorrr)rrr�testCreateInvalidPathds
�z"DatabaseTest.testCreateInvalidPathcCsH|jjdkrt�d��|��t|j�|_|�|jj	|j�
�vd�dS)Nrr1z3Jail not retained in Db after disconnect reconnect.)r*rrr�testAddJailrr�
assertTrue�jail�name�getJailNamesr)rrr�testCreateAndReconnectjs
�z#DatabaseTest.testCreateAndReconnectc
Csvt�d�s
t�d��d|_|jdurt�dd�\}|_dD]�}|�d|�t	�
tj�
td�|j�t�|jtj�}t�||�t�|�z_t|j�|_|dkrq|jd	d
ddd
�|�|j��tdg��|�t|j���d�n|jdd
ddd
�|�t|j���d�|�t|j���d�W|jr�|jjdkr�t�|jj�d|_q|jr�|jjdkr�t�|jj�d|_wdS)Nzsqlite3 --versionzno sqlite3 commandrr)�6i�z)[test-repair], next phase - file-size: %d�database_v1.dbrAzRepair seems to be successfulzCheck integrityzDatabase updatedT)�all�/tmp/Fail2BanDb_pUlZJh.logr	zRepair seems to be failedzNew database created.rr)r�
executeCmdrrr*rr r!�pruneLog�shutil�copyfiler/�path�join�TEST_FILES_DIR�open�O_RDWR�	ftruncater,r�assertLoggedr2�getLogPaths�set�lenr?�_dbFilenamer0�_dbBackupFilename)r#r$�	truncSize�frrr�testRepairDbusF


�
������zDatabaseTest.testRepairDbc	CsTd|_z�|jdurt�dd�\}|_t�tj�t	d�|j�t
|j�|_|�|j��t
dg��|�|j��t
dg��tdddg�}|�|j��d	|�|�|j�t
j�t
j�|�t|jjt
jd
�|jjddd
�}|�t|�d
�|�|d	��d�W|jr�|jjdkr�t�|jj�dSdSdS|jr�|jjdkr�t�|jj�www)NrrrBz"DummyJail #29162448 with 0 ticketsrD�	127.0.0.1gף��ծ�A�abc
rr	iW�Ri@�)�fromtime�correctBanTimer)r*rr r!rGrHr/rIrJrKrr2r?rQrPr�getBans�updateDb�__version__r7�NotImplementedError�getCurrentBansrR�
getBanTimerSr0rT)r#r$�ticket�ticketsrrr�testUpdateDb�s,
���zDatabaseTest.testUpdateDbcCsRd|_|jdurt�dd�\}|_t�tj�t	d�|j�t
|j�|_|�|j��t
dg��|�|j��t
dg��|j��}|�t|�d�tddgd	��}|�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�~T)z�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�rr	z1.2.3.8�r>)r=rZiX)r*rr r!rGrHr/rIrJrKrr2r?rQrPr\rRr�
setAttempt�getIPr]r^r
r=r`rar7r_r0rT)r#r$�bansrbrcrrr�
testUpdateDb2�s,
�

zDatabaseTest.testUpdateDb2cCs6t�|_|j�|j�|�|jj|j�d�vd�dS)NTzJail not added to database)r
r=r*�addJailr<r>r?r)rrrr;�s�zDatabaseTest.testAddJailcCsZ|��t�dd�\}}t|d�|_|j�|j|j�|�||j�	|j��t
�|�dS)Nz.log�Fail2BanDb_�utf-8)r;r r!r�
fileContainerr*�addLogr=�assertInrPr/r0)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
rrmz%Some different text to change md5sum
)rqrn�getFileNamerL�writer,�readline�getPosr<r*�	updateLogr=rr2ror/r0)r#r�file_�lastPosrrr�
testUpdateLog�s2






�

�zDatabaseTest.testUpdateLogc	Csb|��|�|j�|jd�d�dD]}|j�|jd|dt|��|�|j�|jd�|�qdS)Nzsystemd-journal)i/hYi/hYi/hY�TEST)r;r2r*�
getJournalPosr=�
updateJournalr()r#�trrr�testUpdateJournal	s�zDatabaseTest.testUpdateJournalcCs^|��tdddg�}|j�|j|�|jj|jd�}|�t|�d�|�t	|dt��dS)NrXrrY�r=r	)
r;rr*�addBanr=r\r2rRr<r')r#rbrcrrr�
testAddBans�zDatabaseTest.testAddBancCs�|��tddgd��tddgd��tddgd��tddgd��td	dd
dg�tddd
dg�td
dd
dg�g}|D]
}|j�|j|�q9|�d�|jj|jd�}|�d�|�t|�d�t	|�D]4\}}t
�d|||���t
�d||���|�||�
�|�
��|�t||���t|����qb|�d�tj}z/dt_|D]
}|j�|j|�q�|�d�|jj|jd�}|�d�|�t|�d�W|t_n|t_w|�d�|j�|jtd��|jj|jd�}|�t|�d�|�dd�dS)NrXr)�user "test"�user "Ñâåòà"uuser "äöüß"�	127.0.0.2z	127.0.0.3)r�suser "�����"suser "äöüß"z	127.0.0.4)r�r�uuser "äöüß"z	127.0.0.5r�uunterminated Ïz	127.0.0.6z	127.0.0.7sunterminated �zjson dumps failedr�zjson 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�)r;rr*r�r=�assertNotLoggedr\r2rR�	enumerate�	DefLogSys�debug�getDatarh�
getMatchesrFr�
PREFER_ENCrO)r#rcrb�readtickets�i�priorEncrrr�testAddBanInvalidEncodedsH�	

"



z%DatabaseTest.testAddBanInvalidEncodedcCsX|��dD]}td|ddg�}|j�|j|�q|jj|jd�}|�t|�d�|S)N)r	rrez
192.0.2.%drztest
r�re)r;rr*r�r=r\r2rR)r#r�rbrcrrr�
_testAdd3BansXszDatabaseTest._testAdd3BanscCs~|��}|j�|j|d���|�t|jj|jd��d�|j�|j|d��|d���|�t|jj|jd��d�dS)Nrr�rr	)r�r*�delBanr=rhr2rRr\)r#rcrrr�
testDelBanas
" zDatabaseTest.testDelBancCs6|��|j�|j�|�t|jj|jd��d�dS)Nr�r)r�r*r�r=r2rRr\r)rrr�
testFlushBansjs zDatabaseTest.testFlushBanscCs�|��|j�|jtdt��ddg��|j�|jtdt��ddg��|�t|jj	|jdd��d�|�t|jj	|jdd��d	�|�t|jj	|jd
d��d�dS)NrX�<rY�(�2)r=�bantimer	�r���r)
r;r*r�r=rr�timer2rRr\r)rrr�testGetBansWithTimeps��"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|�q5||j_	|j�
d
�}|�|��d
�|�|�
�t|��|�t|���|�|�|��||d��td
t��d|dtddg�id�}|�t|��|j�|j|�|j�
d
�}|�|�
�dt|��|�t|���|�|�|��||d��|jj|jd
t��dd�}|�|du�|�|�
�t|��|�t|���|�|�|��||d��|jj|jd
t��ddd�}|�t|���d�|�|��|dd�|jj|jd
t��ddd�}|�t|���d�|�gd��d|j_	|j�|j|�|jj|jd
t��dd�}|�|du�|�|�
�t|��|�t|���d�dS)NrrY�test)�matches�user�123
�ABC
�rootz1234
cSsg|]}|dd�qS)r�rr)�.0rVrrr�
<listcomp>�sz=DatabaseTest.testGetBansMerged_MaxMatches.<locals>.<listcomp>�P�
rX)�datar	r��d)rZ)rZ�
maxmatchesrer�r)�1�2�3)r;rQrrr�rgr*r�r=�
maxMatches�
getBansMergedr2rh�
getAttemptrRr�r`r<�
setMatches)r#r��failures�matches2findr�rVrbrrr�testGetBansMerged_MaxMatches|sd�
���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�|�|��gd
��|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-2rfrXr�rYr��r�r�r�r��F)rYr�r�r�rcss�|]}|��VqdSr+�rh�r�rbrrr�	<genexpr>�s�z1DatabaseTest.testGetBansMerged.<locals>.<genexpr>cSsg|]}|���qSrr�r�rrrr��sz2DatabaseTest.testGetBansMerged.<locals>.<listcomp>r	�)r�r��rr�)r=�ip)r=�
forbantimerZ�1yearz(ignore ticket (with new max ban-time %r))r;r
r*rkrrr�rgr�r=r�r2rhr�r��id�assertNotEqualrR�assertSortedEqual�listrQr`�str2seconds�
setBanTimerO�
getMaxBanTime�actionsra)r#�jail2rb�	newTicketrcrrr�testGetBansMerged�s�




�
�
�
����
��zDatabaseTest.testGetBansMergedcCs�|��|j|j_|j�|j�t|j�}|�dtj�	t
d�i�td�}|�d�|�
ddg�|j�|�|��|�dd�dS)N�action_checkainfozaction.d/action_checkainfo.pyz1.2.3.4r�r�zban ainfo %s, %s, %s, %s)TTTT)r;r*r=rrkr�addr/rIrJrKrrgr��
putFailTicket�_Actions__checkBanrO)r#r�rbrrr�testActionWithDBs

�
zDatabaseTest.testActionWithDBcCs|��|j�|j�|j��}|�t|�dko|jj|�|jjdd�}|�t|�dko0|jj|�|jjdd�}|�t|�dk�|j�	|j�|j��}|�t|�dkoZ|jj|�|jjdd�}|�t|�dkoo|jj|�|jjdd�}|�t|�dk�dS)Nr	F)�enabledTr)
r;r*�delJailr=r?rprRr>r<rk)r#�jailsrrr�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)Nr	rr�rXrY)r;r*�purger2rRr?r�r=r�r\r�rrr�r)rrr�	testPurgeBs&


�
 zDatabaseTest.testPurge)�__name__�
__module__�__qualname__r�propertyr*�setterr.r3r6r:r@rWrdrjr;rqrzrr�r�r�r�r�r�r�r�r�r�r��
__classcell__rrr%rr6s:

	#!'	
<		9ir)"�
__copyright__�__license__r/�sysrr r8rG�
server.filterr�
server.mytimer�
server.ticketr�server.actionsrr�	dummyjailr
�serverrr�ImportError�utilsrr
r�rIrJ�dirname�__file__rKrrrrrr�<module>s.
�

https://t.me/RX1948 - 2025