403Webshell
Server IP : 35.236.43.222  /  Your IP : 216.73.216.143
Web Server : Apache
System : Linux order-form-vm-001 5.10.0-37-cloud-amd64 #1 SMP Debian 5.10.247-1 (2025-12-11) x86_64
User : deploy ( 1002)
PHP Version : 8.1.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/reportbug/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/reportbug/__pycache__/utils.cpython-39.pyc
a

%v"f(��@sdddlZddlZddlZddlZzddlZddlmZmZWnDey�Z	z,e�
�dkrZnee	�e�d�WYdZ	[	n
dZ	[	00ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZddlmZdZej�ed�Zej�ed	�Zd
ZdgZdd
ddd�Z gd�Z!e!D] Z"e#de"�$�e!�%e"�f��q["ddl&m'Z'ddl(m)Z)dZ*gd�Z+ddddddddddd �
Z,e-d!d"�e.e,�/��D��Z0e�1�Z2d#d$�Z3gd%�Z4d&d'�Z5d�d(d)�Z6d*d+�Z7d�d-d.�Z8d/d0�Z9d�d1d2�Z:d�d4d5�Z;d6d7�Z<d8d9�Z=d:d;�Z>d�d=d>�Z?d�d@dA�Z@iZAd�dBdC�ZBGdDdE�dEeC�ZDdFdG�ZEdHdI�ZFdJdK�ZGdLdM�ZHd�dNdO�ZIdPdQ�ZJd�dSdT�ZKd�dUdV�ZLgdW�ZMdXdY�ZNdZd[�ZOd\d]�ZPd^d_�ZQd<d<d`ddd<d<d<d<eRddd3dfdadb�ZSGdcdd�dde
j
�ZTej�Ude�ZVdfeVfZWdgZXdhdi�ZYdjdk�ZZdldm�Z[dndo�Z\dpdq�Z]drds�Z^ej
fdtdu�Z_dvdw�Z`dxdy�Zadzd{�Zbd|d}�Zcd~d�ZddS)��N�)�TempFile�cleanup_temp_fileZWindows)�open_url)�MUAz
/var/lib/dpkgZ	available�status)ZPackageZSourceZVersionZSeverityZFileZTagsZ
JustificationzFollowup-ForZOwnerZUserZUsertagsZ	Forwarded�Control�X-Debbugs-Ccrz4Offer simple prompts, bypassing technical questions.z�Offer more extensive prompts, including asking about things that a moderately sophisticated user would be expected to know about Debian.zRLike standard, but assumes you know a bit more about Debian, including "incoming".z�Bypass most handholding measures and preliminary triage routines.  This mode should not be used by people unfamiliar with Debian's policies and operating procedures.)ZnoviceZstandardZadvancedZexpertz
MODE_%s=%d)�debbugs)�
AVAILABLE_UISafDear Maintainer,

*** Reporter, please consider answering these questions, where appropriate ***

   * What led up to the situation?
   * What exactly did you do (or not do) that was effective (or
     ineffective)?
   * What was the outcome of this action?
   * What outcome did you expect instead?

*** End of the template - remove these template lines ***)�/z/usrz
/usr/sharez/varz
/usr/X11R6z/usr/manz/usr/doc�/usr/binZoldoldoldoldoldstableZoldoldoldoldstableZoldoldoldstableZoldoldstable�	oldstable�stable�testingznext-testing�unstable�experimental)
ZwheezyZjessieZstretchZbusterZbullseyeZbookwormZtrixieZforkyZsidrcCsg|]\}}||f�qS�r)�.0ZcodenameZsuiterr�1/usr/lib/python3/dist-packages/reportbug/utils.py�
<listcomp>l�rcCs�tj�|�}|�d�}tdt|�d�D]�}d�|d|��}|tvrHq(tj�|�r(t�	|�}tj�|�\}}tj�
tj�||��}tjj|g||d��}t|�Sq(|S)Nr�rr)�os�path�abspath�split�range�len�join�fhs_directories�islink�readlink�normpath�realpath)�filename�bits�iZ	componentZresolved�dir�file�newpathrrrr$ps

r$)�	/usr/sbinr
z/sbinz/binz/usr/X11R6/binz
/usr/gamescCs�tj�|�\}}|rt|�Stj�dtj��d�}tD]}||vr6|�|�q6|D]*}tj�	||�}tj�
|�rRt|�SqRdS)N�PATH�:)rrrr$�environ�get�defpath�pathdirs�appendr�exists)r%�d�fr�fullnamerrr�search_path_for�sr7cCs2d}|tj�d�tj�d�|fD]}|r q.q |S)a Determine which editor program to use.

        :parameters:
          `specified_editor`
            Specified editor for reportbug, to be used in preference
            to other settings.

        :return value:
            Command to invoke for selected editor program.

        z/usr/bin/sensible-editorZVISUALZEDITOR)rr.r/)Zspecified_editorZdebian_default_editor�editorrrr�which_editor�s

�r9cCst�dd|�}|S)Nz
([*?\[\]])z\\\1)�re�sub)r%rrr�glob_escape�sr<TcCsDt�|�}|r*tj�d�r*t�d|�}nd}t�d|�}||fS)Nz/usr/bin/dlocatez$COLUMNS=79 dlocate -S %s 2>/dev/nullFz'COLUMNS=79 dpkg --search %s 2>/dev/null)�shlex�quoterrr3�popen)Z
searchfile�use_dlocate�arg�piperrr�search_pipe�s
rCcCs6d}t|t�rd|vrd}tj||tjd�jjdd�S)NF� T)�shell�stdout�backslashreplace��errors)�
isinstance�str�
subprocess�run�PIPErF�decode)�cmdZ	use_shellrrr�get_command_output�srQcCs�zt��}Wnty(t�d�Yn0t|�}t||�\}}i}|D]d}|��}d|vr^qH|�dd�\}}	|	��}	|�d�}
|
D]&}||vr�||�|	�q�|	g||<q�qH|�	�|s�|r�t
|dd�\}}|s�|�d�r�|d	d�}t
|�S||fS)
Nrzdiversion by�: r�, F)r@)r
z/usr/libr+�)r�getcwd�OSError�chdirr<rC�striprr2�close�query_dpkg_for�
startswith)r%r@�xZsearchfilenamerBZdlocate_used�packages�line�packager�packlist�_rrrrZ�s2
rZFcCs�i}|�d�r8t�d�}|�|�}d||�d�<||fS|ddkr\t|�\}}|r\||fSt|�}|rt|st|dfSt|p||�S)z)Find the package(s) containing this file.z/var/lib/dpkg/info/z/var/lib/dpkg/info/(.+)\.[^.]+�rrrN)r[r:�compile�match�grouprZr7)r%Zpathonlyr]Z	dpkg_info�m�fnZpkglistZnewfilenamerrr�find_package_for�s


rhc	Cs�d}zt|dd�}Wnttfy,YdS0z�|D]�}|���d�d}|sPq4z6|�d�\}}|��|kr�|��WW|��SWq4ty�td|�YW|��dS0q4W|��n
|��0dS)Nz/etc/email-addressesrGrH�#rr-zInvalid entry in %s)�open�FileNotFoundError�IOErrorrXrrY�
ValueError�print)Zusernamer%�fpr^�name�aliasrrr�find_rewrittens,��
rrcCs�d|vrdS|�d�dkrdS|�d�\}}|�d�s@|�d�rDdSd|vrPdS|�d�sd|�d�rhdS|dvrtdS|�d�r�dSdS)zSimple check for email validity�@Fr�.)Z	localhostzexample.comzexample.netzexample.org)z.examplez.invalidz
.localhostz.testz.example.comz.example.netz.example.orgT)�countrr[�endswith)�addrZ	localpartZ
domainpartrrr�check_email_addrs 
rxcCstj�|g�dS)Nr)�email�utilsZgetaddresses)rwrrr�get_email_addr0sr{rbcCstt||��S�N)r{�get_user_id)�	emailaddr�realnamerrr�	get_email4sr��utf-8c	CsPt��}t�|�}tj�d|�p6tj�d�p6tj�d�}|pNt|d�pN|d}d|vr�z:tdd��}|���	�}Wd�n1s�0YWnt
tfy�t�
�}Yn0|d|}d|vs�d	|vr�t|�\}}|�s6tj�d
��ptj�d��ptj�d�}|�s6|d
�dd�d}|�d|d���}|�s@|Stj�||f�S)NZREPORTBUGEMAILZDEBEMAILZEMAILrrsz
/etc/mailname�r�<�(ZDEBFULLNAMEZDEBNAME�NAMErT�,r�&)r�getuid�pwd�getpwuidr.r/rrrj�readlinerXrkrl�socketZgetfqdnr{r�replace�
capitalizeryrzZ
formataddr)r~r�charsetZuid�infoZmfZ
domainnamerrrr}8s6

�
�.
�r}c-Cs�|s|tvrt|St�d�}t�d�}t�d�}t�d�}t�d�}t�d�}t�d�}t�d�}	t�d	�}
t�d
�}t�d�}t�d�}
t�d
�}t�d�}t�d�}d}}}}}d}}}}}}g}g}g}g}g} d}!d}"d}#zt��}$Wnt�y t�d�Yn0t�|�}%|�r@t	d|%�}&n:zt	d|%��
�d}%Wnt�ylYn0t	d|%�}&|&�
tj�D�]~}'|'�
�}'|'�s��q�|"�r�|'dd
k�r�|�|'�nd}"|!�r�|'dd�dk�r�d}!n|t�d|'�7}|�|'��r|'�
dd�\}(}�q�|
�|'��r0|'�
dd�\}(}�q�|�|'��rP|'�
dd�\}(}�q�|�|'��rp|'�
dd�\}(}�q�|�|'��r�|'�
dd�\}(}�q�|�|'��r�|'�
dd�\}(}�q�|
�|'��r�|�s�|'�
dd�\}(}d}"�q�|�|'��r|'�
dd�\}(})dd�|)�
d�D�})|�|)�n�|�|'��rR|'�
dd�\}(})d d�|)�
d�D�})|�|)�n�|�|'��r�|'�
dd�\}(})d!d�|)�
d�D�})| �|)�nv|�|'��r�d}!nd|	�|'��r�|'�
dd�\}(}nF|�|'��r�|'�
dd�\}(}|�
�d}n|�|'��r�|'�
dd�\}(}�q�d}*|�r&|�
�d}#|#d"v}*d}+|�r<t�|�}+nP|�r�|tjv�r~tj|d#}tj|�d$d%�tj|d&f}+n|��}nd}||t|�t|�t|�||*|||+|||tj�|�|#t| �|f},|�s�|,t|<|,S)'Nz	Version: z	Package: z
Priority: z(Pre-)?Depends: zRecommends: z
Suggests: z
Conffiles:zMaintainer: zStatus: zOrigin: zBugs: zDescription(?:-[a-zA-Z]+)?: rDzSource: z	Section: Frbrz,LC_ALL=C.UTF-8 apt-cache show %s 2>/dev/nullz4dpkg-query -W -f='${binary:Package}
' %s 2>/dev/nullrz'COLUMNS=79 dpkg --status %s 2>/dev/nullrz /z (.+) ([0-9a-f]+).*$rRrTcSs g|]}dd�|�d�D��qS)cSsg|]}|��d�qS�r�r�r�yrrrr�r�1get_package_status.<locals>.<listcomp>.<listcomp>�|r��rr\rrrr�s�z&get_package_status.<locals>.<listcomp>rScSs g|]}dd�|�d�D��qS)cSsg|]}|��d�qSr�r�r�rrrr�rr�r�r�r�rrrr�s�cSs g|]}dd�|�d�D��qS)cSsg|]}|��d�qSr�r�r�rrrr�rr�r�r�r�rrrr�s�)�config-filesz
not-installedrp�typer
Zbtsroot)�statuscacher:rcrrUrVrWr=r>rQr�
IndexError�linesep�rstripr2�findallrd�extendr
Z
parse_bts_url�SYSTEMSr/r��tupler)-r_ZavailZ	versionreZ	packagereZ
priorityreZ	dependsreZrecsreZ
suggestsreZconffilesreZmaintreZstatusreZoriginreZbugsreZdescreZfullreZsrcreZ	sectionre�
pkgversionZpkgavailZ
maintainerr�originZbugsZvendorZpriority�descZsrc_nameZsection�	conffilesZfulldesc�dependsZ
recommendsZsuggestsZconfmodeZdescmode�stater\Zpackarg�outputr^ZcrudZthisdependsZ	installedZ
reportinfor�rrr�get_package_status^s�















��������
�r�c@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)�AvailDBNcCs"||_|r||_n|r|j|_dSr|)�popenobrorF)�selfror�rrr�__init__�s
zAvailDB.__init__cCs|Sr|r)r�rrr�__iter__�szAvailDB.__iter__cCsNd}|jr|jjrq>|j��}|s$q>|dkr0|S|t|�7}q|rF|St�dS)Nrb�
)r��
returncoderor�rK�
StopIteration)r��chunkr^rrr�__next__�s
zAvailDB.__next__cCsB|jr.|jjrq$|j�d�}|sq$q|j��|jr>|j��dS)Ni)r�r�ro�read�waitrY)r�Zstuffrrr�__del__s
zAvailDB.__del__)NN)�__name__�
__module__�__qualname__r�r�r�r�rrrrr��s
r�cCsRz ttdd�}|rt|d�WSWn,tyLtdttjd�t�d�Yn0dS)NrGrH�rozUnable to open�r)r)rj�STATUSDBr�rlrn�sys�stderr�exitr�rrr�get_dpkg_databasesr�cCstjdtjd�}t|d�S)N)z	apt-cacheZ	dumpavail)rF)r�)rL�PopenrNr�)Zsubprrr�get_avail_database'sr�c
Cs�zt|jdjWSty$Yn0z tj��}|�|�rD|jWSWn8tjj	y~}zt
d|�d��WYd}~n
d}~00dS)Nrz Cannot look up source package: '�')�
_apt_cache�versionsZsource_name�KeyError�aptZapt_pkgZ
SourceRecords�lookupr_�Errorrn)r_Z
srcrecords�errr�get_source_name-s

&r�c	Cs�g}g}i}tdt�|��}t�d�}|�d�D]0}|�|�}|r2|�d�}t�d|�}	||	7}q2|D]R}
zt|
j	dj
}Wnty�YqhYn0|rh|
|vrh||
|fg7}|||
<qh|��|S)Nzapt-cache showsrc z^Binary: (.*)$r�rz,\s*r)
rQr=r>r:rcrrdrer�r�Zsummaryr��sort)r_r]Zretlist�found�dataZbinrer^rf�packsr`�pr�rrr�get_source_package<s*





r�csR|sgSt�}d}i}g}g}|D](\}}|||<t�|�}	|�|	d�q"dd�|�dd|dd�|�d|d	g}t|���}
i�d
d�|D�}t�dtj�}t�d
tj�}
t�dtj�}t�dtj�}g}|D�]}|D�]}|�	|�}|r�|�	|��
d�}|
�	|��
d�}|��}|dd|dd}|ddvs�|ddk�rXq�|�
d�dk�r||�
d���d}nd}|�	|��
d�}|�	|��
d�}|||||f}|�|�|�|�}|�r�|D]}d�|<�q�|�vr�d�|<q�q�|�r�|S|
D]N}�fdd�|D�}t
|�t
|�k�r�|�v�r�|�d�|�ddd df��q�|S)!Nz&(?:[\S]+(?:\s+\(=[^()]+\))?(?:$|,\s+))z(?:\s+\(=[^()]+\))?z^(?P<hdr>Package):\s+(r�z)$z^(?P<hdr>Provides):\s+z	*(?P<pkg>z)(?:$|,\s+)z*$cSsg|]}t�|tj��qSr)r:rc�	MULTILINEr�rrrrqrz$get_package_info.<locals>.<listcomp>z^Package: (?P<pkg>.*)$z^Status: (?P<stat>.*)$z^Version: (?P<vers>.*)$z*^Description(?:-[a-zA-Z]+)?: (?P<desc>.*)$�pkg�statrrZihr�nZhdrZProvides�versr�Tcsg|]}|�vr|�qSrrr��r�rrr�rz | Zpnz<none>z(no description available))r�r:�escaper2r�list�valuesrcr��searchrerr/r)r]�
skip_notfoundZpackinfo�pkgnameZgroupforZ
searchpkgsZ
searchbitsrer_Zescpkg�groupsZ	searchobsZpackobZstatobZversobZdescob�retr��obrf�packr�Zsinfo�providesr�r�r��itemZnotfoundrr�r�get_package_infoWsz
����





�
r�cCs<t|f|fgdd�}g}|D]}|�|d|df�q|S)NT)r�r�)r�r2)r_Zaretr�r�rrr�packages_providing�s
r��
depends oncCsj|sd||fSg}|D].}dd�|D�}|D]}|�t|�|f�q.qd||f}i}t|�D]:}|d}	|	|vr~|||	<q`|dr`||	ds`|||	<q`t|���}
|
��g}|
D]2\}}
}}}|r�|d|d7}|�|||
f�q�|}
td	d�|
D��}td
d�|
D��}t|d|�}t|d|�}|
D]0\}}}
dj|
||||d
�}||�	�d7}�q4|S)Nz
%s %s no packages.
cSsg|]}|�d�d�qS)r-rr�)rr4rrrr�rz'get_dependency_info.<locals>.<listcomp>z
Versions of packages %s %s:
rrTz [�]cSsg|]}t|d��qSr��rr�rrrr�rcSsg|]}t|d��qS)rr�r�rrrr�r�Iz4{0:3.3} {1:{widthp}.{widthp}}  {2:{widthv}.{widthv}})�widthp�widthvr�)
r2r�r�r�r�r��max�min�formatr�)r_r�ZrelZdependenciesZdep�bit�depinfor�r�r�ZdeplistZdeplist2r�rr�r�r�ZmaxpZmaxvr�r�rrr�get_dependency_info�sD


�r�cCs�i}g}|D]�\}}zt|dd�}Wn8ty\}z |||<WYd}~qWYd}~n
d}~00tdt�|����d}||kr�q|�|�d}	|D]2}
|
s�q�|
dkr�|s�q�|
ddkr�|s�q�|	|
7}	q�|	||<q||fS)NrGrHzmd5sum rz	changed:
r�ri)rjrlrQr=r>rr2)r��
nocompress�confinfoZchangedr%Zmd5sumro�msgZfilemd5Zthisinfor^rrr�get_changed_config_files�s."


r�)rrrrrcCs�d}}}}g}td�}|r�t�dtj�}i}|�|�D]R}|�dd�\}	}
|
tvrnt|	�t�|
�}}nt|	�t	t�}}d||||
f<q<|r�t
|���}|��|�
�dd�|D�}|d	d}z<td
dd��}
|
����}Wd�n1s�0YWn"t�y(td
tjd�Yn0|�r@|d|d7}|�rV|d|d7}|�r|d�dd�|D��}|d|7}|�r�||7}|S)Nrbzapt-cache policy 2>/dev/nullzE\s+(\d+)\s+.*$\s+release\s.*o=(Ubuntu|Debian|Debian Ports),a=([^,]+),rr�TcSsg|]}|d|df�qS)rrrr�rrrrrz+get_debian_release_info.<locals>.<listcomp>rz/etc/debian_versionrGrHz"Unable to open /etc/debian_versionr�zDebian Release: r�z  APT prefers rScSsg|]}t|��qSr)rKr�rrrr,rz  APT policy: %s
)rQr:rcr��finditerre�	DISTORDER�int�indexrr��keysr��reverserjr�rXrlrnr�r�r)ZdebversZdebinfoZverfile�warnZdistsr�Zmrer�rdZpwordZdistnameZpriZdistZfobZ	policystrrrr�get_debian_release_infosB.r�cCstd�S)Nzlsb_release -a 2>/dev/null)rQrrrr�lsb_release_info4sr�cCsNtd���}|sJt��}|d}t�dd|�}t�dd|�}t�dd|�}|S)	zlGet the architecture of the current system.

    :returns:

        The architecture, e.g. ``"i386"``.

    z0COLUMNS=79 dpkg --print-architecture 2>/dev/nullrTzi[456]86Zi386Zs390xZs390ZppcZpowerpc)rQrXr�unamer:r;)ZarchZunrrr�get_arch8srcCstd�}d�|���S)Nz9COLUMNS=79 dpkg --print-foreign-architectures 2>/dev/nullrS)rQr�
splitlines)�outrrr�
get_multiarchJsrZdebiancCsZddlm}|tjvo |o |j}|j||||||||
|||	|
|||||||d�}t|�S)Nr)�	bugreport)�version�severity�
justificationr%�mode�subject�tags�body�
pseudoheadersZfollowupr��systemr��sysinfor��incfiles�
debsumsoutput�issource)rbrr
ZdebotherZ
buildd_formatrK)r_r�rrr�r�Z	foundfilerrZexinfor��klassr
rrr	�pseudosrrZoptionsrrZreprrr�generate_blank_reportOs
�rc@seZdZdd�ZdS)�our_lexcCsNtj�|�}|dust|�s |S|d|dkrJ|d|jvrJ|dd�}|S)Nr���r)r=�	get_tokenrZquotes)r��tokenrrrrgszour_lex.get_tokenN)r�r�r�rrrrrrfsrz~/.reportbugrcz/etc/reportbug.conf)'�sendtor�mua�mtaryr�bts�verify�replyto�
http_proxy�smtphostr8�debconfr�sign�noccr��	dontquery�noconf�mirrors�keyid�headers�	interface�templater	�check_available�	query_src�	printonly�offline�	check_uid�smtptls�smtpuser�
smtppasswd�paranoid�mbox_reader_cmd�max_attachment_size�listccme�outfile�	draftpathcCstj�t�Sr|)rrr3�USERFILErrrr�	first_run}sr;cCsi}tD�]�}tj�|�rztt|dd�dd�}Wn0tyb}zWYd}~qWYd}~n
d}~00|jd|_|��}|r|�	�}|dvr�||d<�n`|dkr�|���	�}|t
tj�
��vr�||d<�n.|d	kr�|�d
g�|��g|d
<�n|dv�r
|dk|d
<�n�|dv�r$|dk|d<�n�|dv�r>|dk|d<�n�|dv�rX|dk|d<�n�|dv�rr|dk|d<�n�|dv�r�d||<�np|dv�r�|��}|||<�nR|dv�r�|dk|d<�n8|dk�r|���	�}|dv�r�||d<n&|d k�r�d!|d<n|d"k�r�d#|d<�n�|d$k�rV|���	�}|d%k�r8d&}|t
t�
��v�r�||d'<�n�|d(k�r�|���	�}|t
t�
��v�r�|||<�nn|d)k�r�|���	�}|t
tj�
��v�r�||d)<�n8|d*k�r�|�d+g�|��g|d+<�n|d,v�r|d-k|d.<n�|d/k�r|���	�}n�|tv�r0t||d0<n�|d1v�rH|d2k|d3<n�|d4v�r`|d5k|d5<n�|d6v�rx|d7k|d7<n�|d8v�r�|d9k|d:<nh|d;v�r�|d<k|d<<nP|d=k�r�|��}t|�|d=<n0|d>k�r�|���	�}||d><ntj�d?|�|��}qxq|S)@NrGrHT)�posixz-.@/:<>)�quietZ	maintonlyZsubmitrr�headerr))�no-ccZccr?r$)�no-compress�compressr@r�)z
no-list-cc-me�
list-cc-merBr7)�no-query-btsz	query-btsrCr%)r��no-config-filesrDr&)r.r+r/)ryrrr r!r8rrr2r3rr(r5r8r9)z
no-smtptlsr1r1r#)Zpgp�gpgZgnupgrEZnonerbZuiZgtk2Zgtkr*r	rZmirrorr')zno-check-available�check-availablerFr,Zreportbug_versionr)�query-sourcezno-query-sourcerGr-)r"z
no-debconfr")rz	no-verifyr)�	check-uidzno-check-uidrHr0)r4zno-paranoidr4r6ZenvelopefromzUnrecognized token: %s
)�FILESrrr3rrjrlZ	wordcharsr�lowerr�r
Z
SEVERITIESr�r/r�MODESr�rr�r�r��write)�argsr%Zlexr�rr�rAZ	w_versionrrr�parse_config_files�s�
"





























rNc
Cs�d}}g}g}t|dd�}|D]�}|��}|�d�}t|�dkrDq |d��|d}}	|dkrh|	}q |dkrv|	}q |d	kr�||	�d
�7}q |dkr ||	�d
�7}q ||||fS)NrGrHrRrrrz	submit-aszsend-tozreport-withrDzpackage-status)rjrXrrrJ)
r%ZsubmitasZsubmittoZ
reportwithZsupplemental�fhr^�partsr>r�rrr�parse_bug_control_file�s&
rQcs�g}g}g}t�dtj�}d}d}	}
|D] }|�|�}|r*|�|���q*dd���fdd�tD�}
|D]2}|�|�}|rj�|�d��}||
vrj|
�|�qj|�t	j
�D�]}|	�r�|s�d	}	q�|�|�}|�r|d
kr�|�d��|
v�s
|dk�r|�d�dd
k�r|�|���d	}
n�|�rZd}
|��\}}|dd
k�rJ�|�}|�||f�nD|
�s�t|��r�|ddk�r�|d}|d|dd|f|d<nq�|��t
kr�||d7}q�|dk�r|D].\}}|�r�|d||fg7}n
||g7}�q�|||fSi}g}|D]\\}}|tv�r6|d||fg7}�q|dk�r`||v�r`||d|7<n|||<�q|
D]&}||v�rp|d|||fg7}�qp|�|�|||fS)Nz^([^:]+):\s*(.*)$rbTcSsd�dd�|�d�D��S)N�-cSsg|]}|���qSr)r�r�rrrrrz/cleanup_msg.<locals>.normph.<locals>.<listcomp>)rr)Zaphrrr�normph
szcleanup_msg.<locals>.normphcsg|]}�|��qSrr)r�ph�rSrrr
rzcleanup_msg.<locals>.<listcomp>rFr
Zgnatsr�>rDrr�z%s: %sr	rS)r:rc�Irdr2r��
PSEUDOHEADERSrerrr�rrX�
NEWBIELINE�REPEATABLE_PSEUDOHEADERSr�)Zdmessager)rZbtstypeZ
newheadersZcollected_pseudoheadersZclean_pseudoheadersZheaderre�messageZparsingZ
lastpseudor>ZmobZaccepted_pseudoheadersrTr^�key�valueZ
lastheaderZcontentZ	unique_phZ
repeatable_phrrUr�cleanup_msg�s�


���




r^c		Cs�t|||�}|durdSt�\}}z�|��D]}|�|d�q,|��|dur�z||}Wntyzd||f}Yn0t�|�}|s�Wt�|�dSt�d|�Wt�|�nt�|�0dS)z�Runs the command specified by cmd passing the mbox file
    downloaded from url as a parameter. If cmd is None or fails, then
    fallback to mail program.Nr�z%s %szmail -f )	rrrrLrY�	TypeErrorrr�unlink)	rPZurlr ZtimeoutZmbox�fd�fnamer^�errorrrr�launch_mbox_reader`s(


�rdcCs8t��}t��}|dkr d|S|dkr0d|SdSdS)zuReturn the package of the currently running kernel, needed to force
    assignment for 'kernel' package to a real oneZLinuxzlinux-image-zGNU/kFreeBSDzkfreebsd-image-N)�platformr�release)rrfrrr�get_running_kernel_pkgzsrgcCst�\}}|��|d|t�|�t�|�f�}d}d}d}d}	}
}g}t|dd�}
|
��D]�}|dkrrd}q`|dkr�d}q`|d	kr�d}q`|d
kr�d}q`|dkr�d}q`|dkr�d}q`|r�|	|7}	q`|r�|
|7}
q`|r�|�|���q`||7}q`|
��t|�||	|
||fS)
z�Execute and parse the output of the package bugscript, in particular
    identifying the headers and pseudo-headers blocks, if presentzLC_ALL=C %s %s %sFrbrGrHz-- BEGIN HEADERS --
Tz-- END HEADERS --
z-- BEGIN PSEUDOHEADERS --
z-- END PSEUDOHEADERS --
z-- BEGIN ATTACHMENTS --
z-- END ATTACHMENTS --
)	rrYr=r>rj�	readlinesr2rXr)ZhandlerZ	bugscriptZrunnerrOr%ZrcZ	isheadersZispseudoheadersZ
isattachmentsr)r
�textZattachmentsror^rrr�exec_and_parse_bugscript�sD
�


rjcCst�d�}|�|�rdSdS)z�Check the package name against Debian Policy:
    https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source

    Returns True if the package name is valid.z^[a-z0-9][a-z0-9+-\.]+$TF)r:rcrd)r�Zpkg_rerrr�check_package_name�s
rkcCs�d}tj�d�rd}n�tjddd�s*d}n�tj�d�r<d	}n�tj�d
�r�d}zDtdd
��&}|d|������7}Wd�n1s�0YWq�Yq�0ntj�d�r�tj�	d�s�d}|S)z1Determines the init system on the current machinezunable to detectz/run/systemd/systemz!systemd (via /run/systemd/system)z+. /lib/lsb/init-functions ; init_is_upstartT)rEzupstart (via init_is_upstart())z/run/runit.stopitzrunit (via /run/runit.stopit)z/run/openrczOpenRC (via /run/openrc)z/proc/1/commr�z	, PID 1: Nz
/sbin/initzsysvinit (via /sbin/init))
rr�isdirrL�call�isfilerjr�rXr!)ZinitZpfrrr�get_init_system�s"8rocCs�d}tj�d�r&t�ddg�dkr&d}tj�d�r�t�dg�dkr�|durPd}n|d7}t�d	g��d
�}|d|dd�7}td
d��N}|��}|D]0}|�	d�r�|d|�
d�ddd�7}q�q�Wd�n1s�0Y|S)z�Determines the linux security module enabled on the current machine

    Returns None if there is no LSM enabled on the machine or if the state
    cannot be determined.Nz/usr/bin/aa-enabledz--quietrzAppArmor: enabledz/usr/sbin/selinuxenabledzSELinux: enabled - z; SELinux: enabled - z/usr/sbin/getenforce�asciizMode: %s - rz/etc/selinux/configr�zSELINUXTYPE=zPolicy name: %s�=r)rrr3rLrmZcheck_outputrOrjrhr[r)ZlsminfoZenforce_statusr5�linesr^rrr�get_lsm_info�s$�
$rscCsTgd�}g}tj�d�rPttd����}t|�D]\}}|d|@r0|�|�q0|S)z!Determines the kernel taint flags)ZTAINT_PROPRIETARY_MODULEZTAINT_FORCED_MODULEZTAINT_CPU_OUT_OF_SPECZTAINT_FORCED_RMMODZTAINT_MACHINE_CHECKZTAINT_BAD_PAGEZ
TAINT_USERZ	TAINT_DIEZTAINT_OVERRIDDEN_ACPI_TABLEZ
TAINT_WARNZ
TAINT_CRAPZTAINT_FIRMWARE_WORKAROUNDZTAINT_OOT_MODULEZTAINT_UNSIGNED_MODULEZTAINT_SOFTLOCKUPZTAINT_LIVEPATCHZ	TAINT_AUXZTAINT_RANDSTRUCTz/proc/sys/kernel/taintedr)rrr3r�rjr��	enumerater2)ZTAINT_FLAGS�flagsZtaintedr'�flagrrr�get_kernel_taint_flags�srwcCs.t�d�}|�|�}|sdSz,t|}ddd�|j|jD�vrFWdSWnYn0d}d�|�d	�|�fD]}tj�	|�rnq�qnz�t
�|d
��v}|��}||vr�t
�|��D]H}|��dkr�|�d�s�|�d
�s�q�d|��vr�Wd�WdSq�Wd�n1�s0YWnYn0dS)aDetermine whether a given package is a security update.

    Detection of security update versions works most reliably if the
    package version under investigation is the currently installed
    version.  If this is not the case, the probability of false
    negatives increases.

    Parameters
    ----------
    pkgname : str
        package name
    pkgversion : str
        package version

    Returns
    -------
    bool
        True if there is evidence that this version is a security
        update, otherwise False
    z(\+|~)deb(\d+)u(\d+)FzDebian-SecuritycSsg|]
}|j�qSr)Zlabel)r�orrrrErz&is_security_update.<locals>.<listcomp>TNz%/usr/share/doc/{}/changelog.Debian.gzz/usr/share/doc/{}/changelog.gzZrtrbz -- rDzCVE-20)r:rcr�r�r�Zoriginsr�rrr3�gziprjr�r�rhr�r[�upper)r�r�ZregexZ
secversionr�Zclr5Zlnrrr�is_security_updates>

	
�
� :r{)N)T)T)F)rbrb)rbrbr�)F)F)r�)F)er�rr:rer�Z	tempfilesrr�ImportErrorr�rrnr�r=ryZemail.policyr�rLr�ryZurllibZurlutilsrZmailerrZDPKGLIBrrZAVAILDBr�rXrZrKZMODELISTr	�execrzr�rbr
Zreportbug.uirrYr ZCODENAME2SUITE�dictr��itemsZSUITE2CODENAMEZCacher�r$r1r7r9r<rCrQrZrhrrrxr{r�r}r�r��objectr�r�r�r�r�r�r�r�r�r�r�r�rrZMODE_EXPERTrr�
expanduserr:rIZCONFIG_ARGSr;rNrQr^rdrgrjrkrorsrwr{rrrr�<module>s� �	�




&


#
.

N	
6
 -�


be,'

Youez - 2016 - github.com/yon3zu
LinuXploit