HEX
Server: Apache
System: Linux dinesh8189 5.15.98-grsec-sharedvalley-2.lc.el8.x86_64 #1 SMP Thu Mar 9 09:07:30 -03 2023 x86_64
User: cgmgerenciamento1 (814285)
PHP: 8.1.26
Disabled: apache_child_terminate,dl,escapeshellarg,escapeshellcmd,exec,link,mail,openlog,passthru,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_check_syntax,php_strip_whitespace,popen,proc_close,proc_open,shell_exec,symlink,system
Upload Files
File: //lib/python3.6/site-packages/tracer/packageManagers/__pycache__/rpm.cpython-36.pyc
3

�|
`��@s�ddlmZddlmZej�dkr�ddlmZd	d
lmZddl	m
Z
ddlmZdd
l
mZmZddlZddlZddlZGdd�de�ZdS)�)�absolute_import)�System�fedora�rhel�centos�mageia�ol)�listdir�)�IPackageManager)�Package)�PackagesCollection)�LockedDatabase�DatabasePermissionsNc@s�eZdZdZdd�Zedd��Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zedd��ZdS)�Rpmz!
		Package manager class - RPM
		cKs
||_dS)N)�opts)�self�kwargs�r�/usr/lib/python3.6/rpm.py�__init__)szRpm.__init__cCstS)N)�NotImplemented)rrrr�history_path,szRpm.history_pathc	Cs�tjj|j�stg�S|jjd�r(d}nd}ydt�}|j�}tj	|�}tj
|_|j�}|j
||g�x(|j�D]}|jt|d|d��qnW|Stjk
r�}zt|�dkr�t�nt��WYdd}~XnXdS)zp
			Returns list of packages which were modified between unix_time and present
			Requires root permissions.
			�modern_swdbz�
					SELECT DISTINCT rpm.name, trans.dt_end AS end

					FROM trans JOIN trans_item JOIN rpm
					ON trans.id=trans_item.trans_id
					AND trans_item.item_id=rpm.item_id

					WHERE trans.dt_begin > ?
					ORDER BY rpm.name
				aJ
					SELECT DISTINCT pkgtups.name, trans_end.timestamp AS end

					FROM trans_beg JOIN trans_end JOIN trans_data_pkgs JOIN pkgtups
					ON trans_beg.tid=trans_end.tid
					AND trans_data_pkgs.tid=trans_beg.tid
					AND trans_data_pkgs.pkgtupid=pkgtups.pkgtupid

					WHERE trans_beg.timestamp > ?
					ORDER BY pkgtups.name
				�name�endzdatabase is lockedN)�os�path�existsrr
r�get�_database_file�sqlite3ZconnectZRowZrow_factory�cursorZexecuteZfetchall�appendrZOperationalError�strrr)	rZ	unix_timeZsqlZpackagesZsqliteZconnr"�result�errr�packages_newer_than/s"

zRpm.packages_newer_thancCs>|j|�r:tj�}|jd|�}tjt|��}dd�|D�SgS)z�
			Returns list of files provided by package
			See also: http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch04s02s03.html
			rcSsg|]}|d�qS)rr)�.0�frrr�
<listcomp>jsz%Rpm.package_files.<locals>.<listcomp>)�
_is_installed�rpm�TransactionSet�dbMatch�fi�next)r�pkg_name�ts�mir/rrr�
package_filesas
zRpm.package_filescCs�|j|�}tj�}|jd|�}xl|D]d}|tj|dkr$|tj|dkr$|tj|dkr$|tj|dkr$t|�}|j	||�|Sq$WdS)Nrrr
��)
�
_splitEvrar,r-r.�RPMTAG_EPOCH�RPMTAG_VERSION�RPMTAG_RELEASEZRPMTAG_ARCHr�_load_package_info_from_hdr)rr�evrar2r3�hdr�packagerrr�find_packageos

HzRpm.find_packagecCs�|sdStj�}|jd|j�}d}xz|D]r}|dkr:|}q(tjt|tj�t|tj�t|tj�ft|tj�t|tj�t|tj�f�}|dkr(|}q(W|dkr�dS|j	||�dS)zFFrom database load informations about given package and set them to itNrr
���)
r,r-r.r�labelComparer$r8r9r:r;)rr>r2r3Zlatestr=Zcomparerrr�load_package_info}s
**zRpm.load_package_infocCs<tjt|j�t|j�t|j�ft|j�t|j�t|j�f�S)zf
			labelCompare returns:
			0 if the EVR matches
			1 if EVR(1) > EVR(2)
			-1 if EVR(2) > EVR(1)
			)r,rAr$�epoch�version�release)rZp1Zp2rrr�compare_packages�szRpm.compare_packagescCsh|jd}|j|j�}|rd|jdkr`x:|j�dd�D]&}tjj|�r6|j|�}|rX|SdSq6W|SdS)z8Returns name of package which provides given applicationrzDevelopment/Languagesr
N)Z	instances�_file_provided_byZexe�categoryZcmdlinerr�isfile)rZappZprocessr>�argrrr�provided_by�s


zRpm.provided_byc
Cs�|jd�}||dd�}|d|�jd�}||d|�}|d|�jd�}||d|�}|jd�}|dkrvd}	n|d|�}	|	|||fS)z�
			Derived from rpmUtils.miscutils.splitFilename
			https://github.com/rpm-software-management/yum/blob/master/rpmUtils/miscutils.py

			Given: 9-123a.ia64
			Return: (9, 123a, 1, ia64)
			�.r
N�-�:r@)�rfind�find)
rr<Z	archIndexZarchZrelIndexZrelZverIndexZverZ
epochIndexrCrrrr7�s	

zRpm._splitEvracCsH|tj|_|tj|_|tj}|r,||_|tj|_|tj	|_
dS)N)r,ZRPMTAG_SUMMARY�description�RPMTAG_GROUPrHr8rCr9rDr:rE)rr>r=rCrrrr;�s
zRpm._load_package_info_from_hdrcCsJtj�}|jd|�}|j�dkr$dSt|�}t|tj�}|tj|_|S)z1Returns name of package which provides given fileZ	basenamesrN)	r,r-r.�countr0rZRPMTAG_NAMErRrH)r�filer2ZdbZpkg�prrrrG�szRpm._file_provided_bycCsP|jjd�r|jSx8tt|j�dd�D]"}|jd�r&|jd�r&|j|Sq&WdS)z)Returns path to yum history database filerT)�reversezhistory-z.sqliteN)rrr�sortedr	�
startswith�endswith)rrTrrrr �s
zRpm._database_filecCs(tj�}|jd|�}t|�dkr$dSdS)z$Returns True if package is installedrrTF)r,r-r.�len)r1r2r3rrrr+�szRpm._is_installedN)�__name__�
__module__�__qualname__�__doc__r�propertyrr'r4r?rBrFrKr7r;rGr �staticmethodr+rrrrr"s2	r)rrrrr)Z
__future__rZtracer.resources.systemrZdistributionrr	ZipackageManagerrZtracer.resources.packagerZtracer.resources.collectionsr
Ztracer.resources.exceptionsrrr!r,rrrrr�<module>s