HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/usr/lib/python3/dist-packages/softwareproperties/__pycache__/ppa.cpython-38.pyc
U

��d�B�@s�ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
m
Zddlm
Z
ddlmZz4ddlZddlmZmZddlZddlmZdZWn&ek
r�d	ZddlZejZYnXd
ZdZdZd
ZdZ dZ!dZ"Gdd�d�Z#Gdd�de$�Z%dd�Z&d8dd�Z'dd�Z(dd�Z)dd�Z*dd�Z+d9d d!�Z,d:d"d#�Z-d$d%�Z.d&d'�Z/Gd(d)�d)e0�Z1Gd*d+�d+e
e1�Z2d,d-�Z3d.d/�Z4d;d0d1�Z5Gd2d3�d3e0�Z6d4d5�Z7e8d6k�r�ddl9Z9e.e9j:d7�Z;e<e4e;��dS)<�)�print_functionN)�gettext)�Thread)�ShortcutException)�	HTTPError�URLError)�
HTTPExceptionFTzNhttps://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&exact=on&search=0x%sz.https://launchpad.net/api/devel/%s/+archive/%sz https://launchpad.net/api/1.0/%sz%https://launchpad.net/api/1.0/%s/ppasz#https://launchpad.net/api/1.0/%s/%sz"/etc/ssl/certs/ca-certificates.crtc@seZdZdd�Zdd�ZdS)�CurlCallbackcCs
d|_dS)N���contents��self�r�8/usr/lib/python3/dist-packages/softwareproperties/ppa.py�__init__?szCurlCallback.__init__cCs|j||_dS�Nr)rZbufrrr�
body_callbackBszCurlCallback.body_callbackN)�__name__�
__module__�__qualname__rrrrrrr	>sr	c@seZdZddd�Zdd�ZdS)�PPAExceptionNcCs||_||_dSr)�value�original_error)rrrrrrrHszPPAException.__init__cCs
t|j�Sr)�reprrr
rrr�__str__LszPPAException.__str__)N)rrrrrrrrrrFs
rcCst�dd|�S)Nz[^a-zA-Z0-9_-]�_)�re�sub)�srrr�encodePsr cCs0trtnt}||||d�}|r(t�|�S|SdS)a-Return the content from url.
    accept_json indicates that:
        a.) Send header Accept: 'application/json'
        b.) Instead of raw content, return json.loads(content)
    retry_delays is None or an iterator (including list or tuple)
        If it is None, no retries will be done.
        If it is an iterator, each value is number of seconds to delay before
        retrying.  For example, retry_delays=(3,5) means to try up to 3
        times, with a 3s delay after first failure and 5s delay after second.
        Retries will not be done on 404.)�lp_url�accept_json�retry_delaysN)�NEED_PYCURL�_get_https_content_pycurl�_get_https_content_py3�json�loads)Zurlr"r#�func�datarrr�get_info_from_httpsTs

r+cCs
t|d�S�NT)r+)r!rrr�get_info_from_lpgsr-cCs(|ddkrd|}t||f}t|�S)Nr�~)�LAUNCHPAD_PPA_APIr-)Z
owner_name�ppar!rrr�get_ppa_info_from_lpjsr1cCs6t||f}zt|�WdStk
r0YdSXdS)NTF)�!LAUNCHPAD_DISTRIBUTION_SERIES_APIr-r)�distributionZseriesr!rrr�series_valid_for_distropsr4cCst|}tj�t|�d�S)NZcurrent_series_link)�LAUNCHPAD_DISTRIBUTION_API�os�path�basenamer-)r3r!rrr�get_current_series_from_lpxsr9c

Cs�|dkrg}d}d}t|�}|r(ddini}|d7}z6tjjt|�|d�}tjj|td�}|���dd�WSt	t
fk
r�}	z6td	|||	jf|	�}t
|	t�r�|	jd
kr�WY�q�W5d}	~	XYnXzt�t|��Wq,tk
r�Yq�Yq,Xq,|�dS)NrZAcceptzapplication/json�)�headers)Zcafile�utf-8�strict�Error reading %s (%d tries): %si�)�iter�urllib�requestZRequest�strZurlopen�LAUNCHPAD_PPA_CERT�read�decoderrr�reason�
isinstancer�code�time�sleep�next�
StopIteration)
r!r"r#�trynum�err�sleep_waitsr;rAZlp_page�errrr&}s2��r&c
Csh|dkrg}d}t|�}d}d}|d7}z�t�}t��}|�tjd�|�tjd�|�tjd�|�tj|j	�t
r�|�tjt
�|�tjt
|��|r�|�tjdg�|��|�|j�}	|��|	dkr�d|	}Wn2tjk
�r
}
zt
|
�}|
}W5d}
~
XYnX|dk�r|jSzt�t|��Wqtk
�rJY�qNYqXqtd|||f|d��dS)	Nrr:�zAccept: application/json��zresponse code %ir>)r)r?r	�pycurlZCurlZsetoptZSSL_VERIFYPEERZSSL_VERIFYHOSTZFOLLOWLOCATIONZ
WRITEFUNCTIONrrCZCAINFOZURLrBZ
HTTPHEADERZperformZgetinfoZ
RESPONSE_CODE�close�errorrrIrJrKrLr)r!r"r#rMrO�err_msgrN�callbackZcurlZresponserPrrrr%�sJ
�r%cCs�d|kr|�d�d}n|}|�d�r0|�d�}|�d�d}|ddkrV|dd�}|�d�dd�}g}t|�dkr�ddg}n(t|�dkr�|�dd�|�|�n|}d|d�|�f}|S)	N�:r:�/rr.Zubuntur0z~%s/%s)�split�
startswith�lstrip�len�insert�extend�join)�shortcutZppa_shortcut�userZ
ppa_path_objs�ppa_pathr0rrr�mangle_ppa_shortcut�s$


rdcCst|�dkS)z>Verify that the keyid is a v4 fingerprint with at least 160bitg4@)r])�signing_key_fingerprintrrr�verify_keyid_is_v4�srfc@sTeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
ddd�ZdS)�AddPPASigningKeyz; thread class for adding the signing key in the background NcCs||_t��|_dSr)rc�tempfileZmkdtemp�_homedir�rrc�	keyserverrrrr�szAddPPASigningKey.__init__cCst�|j�dSr)�shutilZrmtreerir
rrr�__del__�szAddPPASigningKey.__del__cCs&d|j|f}tj|��tjtjd�S)NzRgpg -q --homedir %s --no-default-keyring --no-options --import --import-options %s)�stdin�stdout)ri�
subprocess�PopenrZ�PIPE)r�args�cmdrrr�gpg_cmd�szAddPPASigningKey.gpg_cmdcCsN|d}zt|�s$td|�WdSWntk
rDtd�YdSXt|�S)Nrez-Error: signing key fingerprint '%s' too shortFz-Error: signing key fingerprint does not exist)rf�print�	TypeError�get_ppa_signing_key_data)r�ppa_inforerrr�	_recv_key�s�
zAddPPASigningKey._recv_keycCs.|�d�}|�|���\}}|jdkr*dS|S)Nzimport-minimal,import-exportrF)ru�communicater �
returncode)r�key�p�minimal_keyrrrr�
_minimize_keys


zAddPPASigningKey._minimize_keycCs\g}|�d�}|�|�\}}|jdkrX|�d���D]"}|�d�r4|�|�d�d�q4|S)Nz-show-only --fingerprint --batch --with-colonsrr<zfpr:rX�	)rur{r|rE�
splitlinesr[�appendrZ)rr}Zfingerprintsr~�outputr�linerrr�_get_fingerprints
s


z"AddPPASigningKey._get_fingerprintscCsR|�|�}t|�dkr*tdt|��dS|d}||krNtd||f�dSdS)Nr:z(Got '%s' fingerprints, expected only oneFrz6Fingerprints do not match, not importing: '%s' != '%s'T)r�r]rv)rr}Zexpected_fingerprintZgot_fingerprintsZgot_fingerprintrrr�_verify_fingerprints
��z$AddPPASigningKey._verify_fingerprintc

Cs|dkr|j}ztt|��}Wn2tk
rP}zt|j�WY�dSd}~XYnXz|d}Wn"tk
r�td|�YdSX|�|�}|s�dStj	�
d�}tj�
|t|ddd���}|�|�}|s�dS|�||�s�dStd|d	��}	|	�|�W5QRXd
S)z�Query and add the corresponding PPA signing key.

        The signing key fingerprint is obtained from the Launchpad PPA page,
        via a secure channel, so it can be trusted.
        NFrez/Error: can't find signing_key_fingerprint at %szDir::Etc::trustedparts�	referencer:z%s.gpg�wbT)rc�get_ppa_infordrrvr�
IndexErrorrz�apt_pkg�config�find_dirr6r7r`r r�r��open�write)
rrcryrPreZarmored_keyZtrustedgpgdZapt_keyringr�frrr�add_ppa_signing_key!s2


z$AddPPASigningKey.add_ppa_signing_key)N)N)rrr�__doc__rrmrurzr�r�r�r�rrrrrg�s


rgc@seZdZddd�Zdd�ZdS)�AddPPASigningKeyThreadNcCst�|�tj|||d�dS)N)rcrk)rrrgrjrrrrPs
zAddPPASigningKeyThread.__init__cCs|�|j�dSr)r�rcr
rrr�runTszAddPPASigningKeyThread.run)N)rrrrr�rrrrr�Js
r�cCs2�zg}z�ztt|�}Wn(tk
rBtd�j|d�YWWSXtt|�}|dr`td�ntd�}|ddkr�|�td�|||d	��|�td
��|dD]$}|�td�|d
|dd��q�n|�td�||d��d�|�WWStk
�r
YWdSXWnt	k
�r,td�YSXdS)Nz,ERROR: '{user}' user or team does not exist.)rbZis_teamZteamrbZ
total_sizerz:The %(entity)s named '%(user)s' has no PPA named '%(ppa)s')�entityrbr0z0Please choose from the following available PPAs:�entriesz * '%(name)s':  %(displayname)s�name�displayname)r�r�z5The %(entity)s named '%(user)s' does not have any PPA)r�rb�
r
z4Please check that the PPA name or format is correct.)
r-�LAUNCHPAD_USER_APIrr�format�LAUNCHPAD_USER_PPAS_APIr�r`�KeyError�ImportError)rbZppa_name�msgZlp_userZlp_ppasZentity_namer0rrr�_get_suggested_ppa_messageXs<
�

�
�
r�c	Cs�|�d�d}d�|�d�dd��}z<t||�}|d�d�d|d<|d�d�d|d<|WSttfk
r�g}|�td	�||f�td
�|�d
t||���Yn0t	t
fk
r�ttd�t||f��YnXdS)NrYrr:Zdistribution_link���r3Z
owner_link�ownerzCannot add PPA: 'ppa:%s/%s'.r�zUCannot access PPA (%s) to get PPA information, please check your internet connection.)rZr`r1r�	Exceptionr�rrr��
ValueErrorrr/)rarbr0Zretr�rrrr�xs,

��

��r�cCs6t|t�r|d}ntt|��d}t|dddd�S)aReturn signing key data in armored ascii format for the provided ppa.
    
    If 'info' is a dictionary, it is assumed to be the result
    of 'get_ppa_info(ppa)'.  If it is a string, it is assumed to
    be a ppa_path.

    Return value is a text string.Z	self_linkz?ws.op=getSigningKeyDataT)r:rQ�)r"r#)rG�dictr�rdr+)�info�linkrrrrx�s

�rxcs@eZdZ�fdd�Zdd�Zddd�Zdd	�Zd
d
d�Z�ZS)�PPAShortcutHandlercsntt|���zt|�|_Wn ttd�j|d���YnXt|j�}d|krd|drdttd���||_	dS)Nz-ERROR: '{shortcut}' is not a valid ppa format�raZprivatez.Adding private PPAs is not supported currently)
�superr�rrdrarrr�r��_info)rrar���	__class__rrr�s
�
�zPPAShortcutHandler.__init__cCs|jSr)r�r
rrrr��szPPAShortcutHandler.infoNc	Cs�|dk	r4||jdkr4t|jd|�s4t|jd�}d|jddd�|jd|jd|f}tj�d�}tj�|dt	|jddd��t	|jd�t	|jd�|f�}||fS)Nr3z-deb http://ppa.launchpad.net/%s/%s/%s %s mainr�r:r�zDir::Etc::sourcepartsz%s-%s-%s-%s.list)
r�r4r9r�r�r�r6r7r`r )rZcodenameZdistroZdeblineZsourceslistd�filenamerrr�expand�s(��
�
�zPPAShortcutHandler.expandcCsdSr,rr
rrr�should_confirm�sz!PPAShortcutHandler.should_confirmcCst|jd|d�}|��S)Nr�)rk)rgr�r�)rrkZapskrrr�add_key�szPPAShortcutHandler.add_key)N)N)	rrrrr�r�r�r��
__classcell__rrr�rr��s

r�cCs|�d�sdSt|�S)Nzppa:)r[r�r�rrr�shortcut_handler�s
r��__main__r:)N)N)N)N)=Z
__future__rr�r'r6rrlrprhrIrrZ	threadingrZsoftwareproperties.shortcutsrZurllib.requestr@Zurllib.errorrrZurllib.parseZhttp.clientrr$r�rSrUZ
SKS_KEYSERVERr/r�r�r5r2rCr	r�rr r+r-r1r4r9r&r%rdrf�objectrgr�r�r�rxr�r�r�sys�argvr0rvrrrr�<module>sf



/d 
0