o
    O6ufÙ  ã                   @   sX   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 G dd„ deƒZdS )	é    N)ÚUbuntuPlugin)ÚDebianPolicy)ÚSnapPackageManager)ÚDpkgPackageManager)ÚMultiPackageManagerc                       s|   e Zd ZdZdZddgZdZdZdZdZ	dZ
	
		d‡ fdd„	Zeddd„ƒZdd„ Z‡ fdd„Zdd„ Z‡ fdd„Z‡  ZS )ÚUbuntuPolicyÚUbuntuÚ	Canonical)zCommunity Websitezhttps://www.ubuntu.com/)zCommercial Supportzhttps://www.canonical.comzb/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/sbin:/usr/local/bin:/snap/binz,https://files.support.canonical.com/uploads/ÚubuntuÚputNTc                    sp   t ƒ j||||d� tttg| j|d�| _z| j d¡d dkr#d| _W n	 t	y-   Y nw |  j
tg7  _
d S )N)ÚsysrootÚinitÚprobe_runtimeÚremote_exec)ÚprimaryÚ	fallbacksÚchrootr   Ú	sosreportÚpkg_managerÚsnapz	/snap/bin)ÚsuperÚ__init__r   r   r   r   Úpackage_managerÚpkg_by_nameÚsos_bin_pathÚ	TypeErrorÚvalid_subclassesr   )Úselfr   r   r   r   ©Ú	__class__© ú=/usr/lib/python3/dist-packages/sos/policies/distros/ubuntu.pyr   !   s0   
þüÿÿÿ€þzUbuntuPolicy.__init__Ú c                 C   sb   |r| j |v S ztddƒ�}d| ¡ v W  d  ƒ W S 1 sw   Y  W dS  ty0   Y dS w )z[This method checks to see if we are running on Ubuntu.
           It returns True or False.ú/etc/lsb-releaseÚrr   NF)ÚdistroÚopenÚreadÚIOError)ÚclsÚremoteÚfpr    r    r!   Úcheck7   s   

(ÿÿzUbuntuPolicy.checkc              	   C   s’   z<t ddƒ�,}| ¡ }|D ]}d|v r(t| d¡d  ¡ ƒ  W  d  ƒ W S qW d  ƒ W dS 1 s5w   Y  W dS  ttfyH   Y dS w )z7 Returns the version stated in DISTRIB_RELEASE
        r#   r$   ÚDISTRIB_RELEASEú=é   NF)r&   Ú	readlinesÚfloatÚsplitÚstripr(   Ú
ValueError)r   r+   ÚlinesÚliner    r    r!   Údist_versionE   s    üÿ
þûÿzUbuntuPolicy.dist_versionc                    s$   | j  | j¡r| j| jfS tƒ  ¡ S ©N)Ú
upload_urlÚ
startswithÚ_upload_urlÚ_upload_userÚ_upload_passwordr   Úget_upload_https_auth©r   r   r    r!   r>   R   s   
z"UbuntuPolicy.get_upload_https_authc                 C   s   | j  | j¡r	dS |  ¡ S )NzCanonical Support File Server)r9   r:   r;   Úget_upload_urlr?   r    r    r!   Úget_upload_url_stringX   s   z"UbuntuPolicy.get_upload_url_stringc                    sB   | j r
| j  | j¡r| js| jS tj | j¡}| j| S tƒ  ¡ S r8   )	r9   r:   r;   Úupload_archive_nameÚosÚpathÚbasenamer   r@   )r   Úfnamer   r    r!   r@   ^   s   

zUbuntuPolicy.get_upload_url)NNTN)r"   )Ú__name__Ú
__module__Ú__qualname__r%   ÚvendorÚvendor_urlsÚPATHr;   r<   r=   Ú_upload_methodr   Úclassmethodr,   r7   r>   rA   r@   Ú__classcell__r    r    r   r!   r      s(    þÿr   )rC   Úsos.report.pluginsr   Úsos.policies.distros.debianr   Ú"sos.policies.package_managers.snapr   Ú"sos.policies.package_managers.dpkgr   Úsos.policies.package_managersr   r   r    r    r    r!   Ú<module>   s   