HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/UpdateManager/Core/__pycache__/MetaRelease.cpython-38.pyc
U

z��c�D�@s�ddlmZmZddlZddlZddlZzddlZWnek
rPddlZYnXzddl	m
Z
Wn ek
r�ddlm
Z
YnXddlZddl
ZddlZddlZddlZddlZddlZz0ddlmZddlmZmZddlmZmZWn2ek
�rddlmZmZmZmZmZYnXdd	lmZmZm Z m!Z!m"Z"Gd
d�de#�Z$Gdd
�d
e%�Z&Gdd�de%�Z'e(dk�r�e'dd�Z)dS)�)�absolute_import�print_functionN)�
BadStatusLine)�quote)�Request�urlopen)�	HTTPError�URLError)rrr	rr�)�get_lang�get_dist�get_dist_version�get_ubuntu_flavor�get_ubuntu_flavor_namec@seZdZdS)�MetaReleaseParseErrorN)�__name__�
__module__�__qualname__�rr�@/usr/lib/python3/dist-packages/UpdateManager/Core/MetaRelease.pyr6src@seZdZdd�ZdS)�DistcCs:||_||_||_||_d|_d|_d|_d|_d|_dS�N)	�name�version�date�	supported�releaseNotesURI�releaseNotesHtmlUri�upgradeTool�upgradeToolSig�upgrade_broken)�selfrrrrrrr�__init__;sz
Dist.__init__N)rrrr"rrrrr:src@speZdZdZdejkZdZdZddd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zedd��Zdd�Zdd�ZdS)�MetaReleaseCorezT
    A MetaReleaseCore object abstracts the list of released
    distributions.
    ZDEBUG_UPDATE_MANAGERz$/etc/update-manager/release-upgradesz /etc/update-manager/meta-releaseFNc
Cs�|r
d|_|�d||f�||_||_t��|_d|_d|_|dkrNt	�
�}t|d�|_t
|d�|_t�|_t�|_d|_d|_d}|d|_|d|_d|_d|_t��}tj�|j��rtz|�|j�WnBtj k
�r}	z t!j"�#d	|j|	f�WY�dSd}	~	XYnX|�$d
��rtd
}
dD]L}|�%|
|��r&|�d|j|�&|
|�f�t'|d
|
|f|�&|
|���q&t��}tj�|j(��rhz|�|j(�WnBtj k
�r�}	z t!j"�#d	|j(|	f�WY�dSd}	~	XYnX|�%dd��rh|�&dd��)�}|dk�s|dk�r&d|_|j�*�dS|dk�rbd|_t+�,�}
|
�-|j��rV|j|_n
|�d�nd|_|�rv|j|_|�r�|j|j7_n|�r�|j|j7_|�d|j�d|_.|�/��s�|�d�dStj0|j1d��2�dS)NTz1MetaRelease.__init__() useDevel=%s useProposed=%s)�cachezhttps://changelogs.ubuntu.com/zmeta-releasezmeta-release-ltsz-developmentz	-proposedzERROR: failed to read '%s':
%sZMETARELEASE)ZURIZURI_LTSZURI_UNSTABLE_POSTFIXZURI_PROPOSED_POSTFIXz%s: %s z%s_%sZDEFAULTZPrompt�never�no�ltsz Prompt=lts for non-LTS, ignoringZnormalzmetarelease-uri: %sz_buildMetaReleaseFile failed)�target)3�DEBUG�_debug�
forceDownload�useDevelopmentRelease�	threading�Event�
downloaded�
upgradable_to�new_dist�apt�Cacher�flavorrZflavor_namer�current_dist_namer
Zcurrent_dist_version�no_longer_supported�prompt�METARELEASE_URIZMETARELEASE_URI_LTSZ METARELEASE_URI_UNSTABLE_POSTFIXZ METARELEASE_URI_PROPOSED_POSTFIX�configparser�ConfigParser�os�path�exists�CONF_METARELEASE�read�Error�sys�stderr�writeZhas_sectionZ
has_option�get�setattr�CONF�lower�set�distro_infoZUbuntuDistroInfoZis_lts�metarelease_information�_buildMetaReleaseFile�Thread�download�start)r!r,�useProposed�debugZforceLTSr+r$Zbase_uri�parser�eZsec�kr7Zdirrrr"Ts��


�

� �




zMetaReleaseCore.__init__c
Cs�tj�dtj�|j��|_zt|jd���W�nntk
�r�t�	dtj�
d��}tj�|�d}tj�|�s�zt�
|�Wn:tk
r�}ztj�d|�WY�YdSd}~XYnXtj�|��szt�|d�Wn<tk
�r}ztj�d|�WY�YdSd}~XYnXtj�|d	�}tj�|��s�zt�|�Wn<tk
�r~}ztj�d|�WY�YdSd}~XYnXtj�|tj�|j��|_YnXz$tj�|j�dk�r�t�|j�Wntk
�r�YnXd
S)Nz/var/lib/update-manager/�aZXDG_CACHE_HOMEz~/.cacherzmkdir() failed: '%s'Fi�zupdate-manager-coreT)r;r<�join�basenamer8�METARELEASE_FILE�open�close�IOError�getenv�
expanduser�splitr=�makedirs�OSErrorrArBrC�mkdir�getsize�unlink�	Exception)r!Z	cache_dirZcache_parent_dirrRr<rrrrK�sR�
��z%MetaReleaseCore._buildMetaReleaseFilecCs
||_dS)z\ virtual function that is called when the distro is no longer
            supported
        N)r6�r!�distrrr�dist_no_longer_supported�sz(MetaReleaseCore.dist_no_longer_supportedcCs
||_dS)z\ virtual function that is called when a new distro release
            is available
        N)r1rdrrr�new_dist_available�sz"MetaReleaseCore.new_dist_availablecCsv|�d�|j}|�d|�d}g}t�|j�}�zh|���r�dD]}||jkrDtd|��qD|jd}|�d|�|jd}tt	j
�|��}d|d	<t�
t|��}	t|jd
�}
|jd}t|||	|
�}d|jk�r|jd|_t�}
|
�r|jd
|
7_d|jk�r:|jd|_|�|�}|�r:|j|7_d|jk�rR|jd|_d|jk�rj|jd|_d|jk�r�|jd|_|�|�||kr6|}q6Wn&tjk
�r�td|j��YnX|j��d|_|dk�r�|�d�dSd}|D]@}|j|jk�r�|j�s|j�s�q�|}|�d|��q6�q�|dk�rX|j�sX||_|� |�|dk�rr||_|�!|�dS)NzMetaRelease.parse()zcurrent dist name: '%s')r�Version�	Supported�DatezRequired key '%s' missingrzfound distro name: '%s'rjr�rirhZReleaseNotesz?lang=%sZReleaseNotesHtmlZUpgradeToolZUpgradeToolSignatureZ
UpgradeBrokenzUnable to parse %sz,current dist not found in meta-release file
F�znew dist: %sT)"r*r5�apt_pkgZTagFilerJ�stepZsectionr�list�email�utilsZ	parsedate�time�mktime�tuple�intrrrr�#_get_release_notes_uri_query_stringrrr �appendr@r8rYrrr,r0rfrg)r!r5Zcurrent_distZdistsZ	index_tagZrequired_keyrZrawdateZ
parseddaterrrre�langZqueryr0rrr�parse�s�


�


�
�

�






zMetaReleaseCore.parsec
Cs�|�d�d}t|j�}|�dd�|�dd�t�|jtj�rhzt�|j�j	}Wnt
k
rfYnX|dkr�|js�|�dt�
t�|���z�t|dd	�}tj�|j��rt�|jtj��szt�|j�Wn6t
k
�r}ztd
|j|f�W5d}~XYnXzJt|jd�}|��D]}|�|�d���q|��|�dd�||_Wntk
�rfYnX|��Wn�tk
�r�}zN|jd
k�r�tj�|j��r�|�d|j�t|jd�|_n|�d|�W5d}~XYnHtt t!j"fk
�r&}z |�d|�td|j�W5d}~XYnX|jdk	�r�|�d�z|�#�Wn2t$k
�r|t%�&d|j�t�'|j�YnX|j(�r�|j(j)�r�t�'|j�n
|�d�|j*�+�dS)NzMetaRelease.download()rz
Cache-ControlzNo-CacheZPragmazno-cachezIf-Modified-Since�)�timeoutzCan't unlink '%s' (%s)zw+zUTF-8i0zreading file '%s'�rz%result of meta-release download: '%s'zIFailed to connect to %s. Check your Internet connection or proxy settingsz!have self.metarelease_informationzparse failed for '%s'zNO self.metarelease_information),r*rr8Z
add_headerr;�accessrW�W_OK�stat�st_mtimer_r+rr�asctime�gmtimerr<r=rb�printrX�	readlinesrC�decode�flush�seekrJrZrYr�coder	r�socketr{ryrc�logging�	exception�remover1r r/rH)r!ZlastmodifiedZreqZurirR�f�linerrrrMNst

���
�
�
zMetaReleaseCore.downloadcCs|j��Sr)r/�is_set)r!rrr�downloading�szMetaReleaseCore.downloadingcCs@d}t�}|r|d|7}|d|j7}|d|j7}t|d�S)N�?zlang=%s&zos=%s&zver=%sz/?)rr4rr)r!re�qrxrrrrv�sz3MetaReleaseCore._get_release_notes_uri_query_stringcCs|jrtj�|d�dS)N�
)r)rArBrC)r!�msgrrrr*�szMetaReleaseCore._debug)FFFFFN)rrr�__doc__r;�environr)rFr>r"rKrfrgryrM�propertyr�rvr*rrrrr#Hs(
�
h.XG

r#�__main__F)*�
__future__rrr2rmrIr9�ImportErrorr:Zhttp.clientrZhttplibr�Zemail.utilsrpr;r�rArrr-Zurllib.parserZurllib.requestrrZurllib.errorrr	Zurllib2rqrrr
rrrcr�objectrr#r�metarrrr�<module>s@"e