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: //usr/lib/python3/dist-packages/DistUpgrade/__pycache__/utils.cpython-38.pyc
U

�f�c�G�@s2ddlmZddlmZddlmZddlmZmZmZddl	m
Z
ddlZddlZe�
�ddlZddlZddlZddlZddlZddlZddlZz,ddlmZmZmZmZmZddlmZWn<ek
r�ddlmZmZmZmZmZddlmZYnXdd	l m Z Gd
d�de!�Z"dd
�Z#dd�Z$dKdd�Z%dd�Z&dLdd�Z'dd�Z(dd�Z)dd�Z*dd�Z+d d!�Z,d"d#�Z-Gd$d%�d%e�Z.dMd&d'�Z/dNd(d)�Z0d*d+�Z1d,d-�Z2d.d/�Z3d0d1�Z4dOd2d3�Z5d4d5�Z6dPd6d7�Z7dQd8d9�Z8d:d;�Z9d<d=�Z:d>d?�Z;d@dA�Z<dBdC�Z=dDdE�Z>dFdG�Z?e@dHk�r.e9ddIdJ�dS)R�)�print_function)�gettext)�ngettext)�S_IMODE�ST_MODE�S_IXUSR)�ceilN)�ProxyHandler�Request�build_opener�install_opener�urlopen)�urlsplit)�copyc@s*eZdZdZd
dd�Zdd�Zdd�Zd	S)�
ExecutionTimez�
    Helper that can be used in with statements to have a simple
    measure of the timing of a particular block of code, e.g.
    with ExecutionTime("db flush"):
        db.flush()
    �cCs
||_dS�N)�info)�selfr�r�3/usr/lib/python3/dist-packages/DistUpgrade/utils.py�__init__GszExecutionTime.__init__cCst��|_dSr)�time�now�rrrr�	__enter__JszExecutionTime.__enter__cCs td|jt��|jf�dS)Nz%s: %s)�printrrr)r�type�value�stackrrr�__exit__MszExecutionTime.__exit__N)r)�__name__�
__module__�__qualname__�__doc__rrr rrrrr@s
rcCsJt|�}t|j�}|jr*|j�|jd�|_|jrB|j�|jd�|_t|�S)Nzhidden-uzhidden-p)rr�uriZusername�replaceZpassword�str)�entryZtmpZ	url_partsrrr�)get_string_with_no_auth_from_source_entryQs
r)cCsFd}zddl}|��}|�d�}Wntk
r@t�d�YnX|S)z+ return True if Unity is currently running FrNzcom.canonical.Unityz&could not check for Unity dbus service)�dbusZ
SessionBusZname_has_owner�	Exception�logging�	exception)Z
unity_runningr*�busrrr�is_unity_running[sr/c	Cs||st��}|dkrxd|}t|��}|��}W5QRX|�d�d�d�d}||kr\dSt|�d�d��d�}qdS)	Nrz
/proc/%s/stat�(��)T�F)�os�getpid�open�read�	partition�
rpartition�int�split)Zprocessname�pidZ	stat_fileZstat_f�statZcommandrrr�is_child_of_process_namegs
r>cCs0tj�d�rtj�d�sdSt�d�t�d�kS)z, returns True if we are inside a chroot
    z/procz/proc/1T�/z/proc/1/root)r4�path�existsr=rrrr�
inside_chrootwsrB�FrcCsLd}|��D]:}t|�|�d�t|�|kr:|d|7}||d7}q|S)z� helpers inspired after textwrap - unfortunately
        we can not use textwrap directly because it break
        packagenames with "-" in them into new lines
    r�
� )r;�len�rfind)�t�widthZsubsequent_indent�out�srrr�wrap�srLcKs4d}|�d�}|D]}t|f|�}||d7}q|S)NrrD)r;rL)rK�kwargs�msgZparasZparrrr�twrap�s
rOcCsdg}tj�d�sgStjdgtjdd�}|��d�d�}|d=|D]}|rD|�|��d�qD|S)z= return list of loaded modules (or [] if lsmod is not found) z/sbin/lsmodT��stdoutZuniversal_newlinesrrD)	r4r@rA�
subprocess�Popen�PIPE�communicater;�append)�modules�p�lines�linerrr�lsmod�s�r[cCsBtj�|�sdStt�|�t�}|t@tks>t�||tB�dS)zB check if a given binary has the executable bit and if not, add itN)r4r@rArr=rr�chmod)r@�moderrr�check_and_fix_xbit�s
r^cCs�ddi}dtjkrdStjd��}|dd�|krD||dd�Sd|kr�|�d�d�d�d	}d
|krz|�d
�d}|dS|dd�dSdS)z: helper to get the country mirror from the current locale �crZLANGN��_�.rr3�@r1)r4�environ�lowerr;)Zlang_mirrorZlangZcountryrrr�country_mirror�s
rfcCs�tj�d�}|r"t�d|�|Sddlm}m}|dddg|dd	�}|��}|dkrjt	j
�d
|�dS|j�
���}|j��|S)z2 return the codename of the current runing distro ZMETA_RELEASE_FAKE_CODENAMEzQusing fake release name '%s' (because of META_RELEASE_FAKE_CODENAME environment) r�rSrT�lsb_releasez-c�-sTrP�"lsb_release returned exitcode: %i
�unknown distribution�r4rd�getr,ZwarningrRrSrT�wait�sys�stderr�writerQ�readline�strip�close)ZdistrSrTrX�resrrr�get_dist�s"��
rvcCs�tj�d�}|r"t�d|�|Sddlm}m}|dddg|dd	�}|��}|dkrjt	j
�d
|�dS|j�
���}|j��|S)z2 return the version of the current running distro ZMETA_RELEASE_FAKE_VERSIONzSusing fake release version '%s' (because of META_RELEASE_FAKE_VERSION environment) rrgrhz-rriTrPrjrkrl)ZdescrSrTrXrurrr�get_dist_version�s"��
rwc@seZdZdd�ZdS)�HeadRequestcCsdS)NZHEADrrrrr�
get_method�szHeadRequest.get_methodN)r!r"r#ryrrrrrx�srxc
Csb|sdd�|d|�t|�\}}}}}|d|||||f�|dkr�z*tt|��}|��|jdkrnWdSWdStk
r�}z|d	|�WY�dSd
}~XYnXn�|dk�r^dd
l}	zd|	�|�}
|
��|
�	t
j�|��|
�
t
j�|��}|
��|�r|d
|�|dk�rWdSWn<tk
�r\}z|�rF|d|�WY�dSd
}~XYnXdS)z�
    helper that checks if the given uri exists and is downloadable
    (supports optional debug_func function handler to support
     e.g. logging)

    Supports http (via HEAD) and ftp (via size request)
    cSsdS)NTr)�xrrr�<lambda>�z"url_downloadable.<locals>.<lambda>zurl_downloadable: %sz"s='%s' n='%s' p='%s' q='%s' f='%s')�http�https��TFzerror from httplib: '%s'NZftprzftplib.size() returned: %szerror from ftplib: '%s')rr
rxrt�coder+�ftplibZFTPZlogin�cwdr4r@�dirname�size�basename�quit)r%Z
debug_funcZschemeZnetlocr@ZquerryZfragmentZ	http_file�er��fr�rrr�url_downloadable�sF
�




r�c
CsHd}i}tj�d�dkr*tj�d�|d<n`tj�|�r�t��}t�||�|�dd�}|r�|�d�}t	|�
d��}|r�|r�d	||f|d<tj�d
�dkr�tj�d
�|d<nd|kr�|d|d<|�rD|��D](}t�
d|�s�td
|tjd�dSq�t|�}t|�}	t|	�d|k�r*t�d|d�d|k�rDt�d|d�|S)z� init proxy settings

    * use apt.conf http proxy if present,
    * otherwise look into synaptics config file,
    * otherwise the default behavior will use http_proxy environment
      if present
    z/root/.synaptic/synaptic.confzAcquire::http::Proxyrr}zSynaptic::useProxyFzSynaptic::httpProxyzSynaptic::httpProxyPortz
http://%s:%s/zAcquire::https::Proxyr~zhttps?://\w+zproxy '%s' looks invalid)�fileNZ
http_proxyZhttps_proxy)�apt_pkg�config�findr4r@rAZ
ConfigurationZread_config_fileZfind_br'Zfind_i�values�re�matchrrorpr	rr�putenv)
Z	gsettingsZSYNAPTIC_CONF_FILEZproxiesZcnfZ	use_proxyZ
proxy_hostZ
proxy_port�proxyZ
proxy_supportZopenerrrr�
init_proxy"s<


r�c
Cs�z�ddl}|�|jj�}z(|�dd�}|�|d�}|�dd�WWS|jjk
r�}z>d}|j|krf�|�dd	�}|�|d�}|�dd
�WY�WSd}~XYnXWnt	k
r�YdSXdS)z�
    Check via dbus if the system is running on battery.
    This function is using UPower per default, if UPower is not
    available it falls-back to DeviceKit.Power.
    rNzorg.freedesktop.UPowerz/org/freedesktop/UPowerzorg.freedesktop.DBus.PropertiesZ	OnBatteryz)org.freedesktop.DBus.Error.ServiceUnknownzorg.freedesktop.DeviceKit.Powerz /org/freedesktop/DeviceKit/Power�
on_batteryF)
r*ZBusZTYPE_SYSTEMZ
get_objectZ	InterfaceZGet�
exceptionsZ
DBusExceptionZ_dbus_error_namer+)r*r.ZdevobjZdevr�Z
error_unknownrrrr�Ns(�
�(r�cCs�zdddlm}m}|�|jj�}|�dddd|�dd�d	dd
d	d	�
\}}|j|�	�|dd�}|WSt
k
rzYdSXd	S)
z�
    Send a dbus signal to logind to not suspend the system, it will be
    released when the return value drops out of scope
    r)�Gio�GLibzorg.freedesktop.login1z/org/freedesktop/login1zorg.freedesktop.login1.ManagerZInhibitz(ssss))zshutdown:sleepZ
UpdateManagerzUpdating System�blockN���)�fdF)�
gi.repositoryr�r�Zbus_get_syncZBusTypeZSYSTEMZcall_with_unix_fd_list_syncZVariantZUnixInputStreamZ	steal_fdsr+)r�r�Z
connection�varZfdlistZ	inhibitorrrr�
inhibit_sleepjs*��r�cCs|dks|��dkrdSdS)N�0ZFALSEFT)�upper)r'rrr�str_to_bool�sr�cCs@ddl}zt��\}}|WStk
r:|�d�YdSXdS)Nrzgedefaultlocale() failed)r,�localeZgetdefaultlocaler+r-)r,Zlocale_s�encodingrrr�get_lang�s
r�cCst|d�}|�dd�dS)z6 try to guess the flavor based on the running desktop ��cache�-r3r)�get_ubuntu_flavor_packager;)r��pkgrrr�get_ubuntu_flavor�s
r�cCs ddlm}|d�}|�dd�S)Nr)�DistUpgradeConfigz"/usr/share/ubuntu-release-upgraderZDistroZMetaPkgs)Z#DistUpgrade.DistUpgradeConfigParserr�Zgetlist)r��parserrrr�_load_meta_pkg_list�sr�c
Cs�dg}z|�tt���Wn,tk
rF}ztd|�W5d}~XYnX|dkrXt��}|D]*}||krp||nd}|r\|jr\|Sq\dS)zB try to guess the flavor metapackage based on the running desktop zubuntu-desktopz%Could not load list of meta packages:N)�extend�sortedr�r+r�aptZCacheZis_installed)r�Z	meta_pkgsr�Zmeta_pkgZ	cache_pkgrrrr��s

r�cCsft|d�}ddi}||kr"||S|�d�r@t|�dd�d�S|�d�r^t|�dd�d�SdSd	S)
z; try to guess the flavor name based on the running desktop r�zubuntustudio-desktopz
Ubuntu Studioz-desktopr3rz-netbookZUbuntuN)r��endswith�capitalize_first_word�rsplit)r�r��lookuprrr�get_ubuntu_flavor_name�s


r�cCs�ddl}|�dd�ddlm}m}|j||jj|jj	|j
jd�}|�d||f�|�
�|���|jj�|�d�|��|��dS)	Nr�Gtkz3.0)r��Gdk)�parent�flagsrZbuttonsz<big><b>%s</b></big>

%srF)�giZrequire_versionr�r�r�Z
MessageDialogZDialogFlagsZMODALZMessageTypeZERRORZButtonsTypeZCLOSEZ
set_markupZrealizeZ
get_windowZ
set_functionsZ
WMFunctionZMOVEZ	set_title�runZdestroy)r��summary�messager�r�r��drrr�error�s�
r�cCsL|dkr0tt|td���}tdd|�d|iSt�td�|dd�SdS)zG
    Convert a given size in bytes to a nicer better readable unit
    i@Bi�z
%(size).0f kBr�z%.1f MBg@�@N)r:r�floatrr��
format_stringra)�bytesZ
size_in_kbrrr�
humanize_size�s
�r�cCstj�d�S)NzAPT::Architecture)r�r�r�rrrr�get_arch�sr�c
	Cs�d}d}d}td��p}|��D]`}|��}|s0q|��}||}||krJq||�d�d}t|d�}	|	|krW5QR�dSqW5QRXdS)	z@ check if the current system is listening on the given tcp port r3�Z0Az
/proc/net/tcp�:�TF)r6�	readlinesrsr;r:)
ZportZINDEX_LOCAL_ADDRZINDEX_STATEZSTATE_LISTENINGZnet_tcprZr��stateZlocal_port_strZ
local_portrrr�is_port_already_listening�s"

r�cCsVd}t��dkrtd��tj�d�s(dStjddgtjdd	���d}||krRdSdS)
z# Return True if iptables is active z�Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
rz%Need root to check the iptables statez/sbin/iptablesFZiptablesz-nLTrP)	r4�getuid�OSErrorr@rArRrSrTrU)Ziptables_emptyrJrrr�iptables_active
s	
��r�cCs@t|�dkr<|d��r<|d��s<|d��|dd�S|S)z3 this uppercases the first word's first letter
    r3rN)rF�isalpha�isupper�
capitalize)�stringrrrr�"s$r�cCst|jdd�}t|�S)zX this takes a package synopsis and uppercases the first word's
        first letter
    r�r)�getattr�	candidater�)r��namerrr�get_package_label*sr��__main__ZbarZbaz)N)rCr)N)N)N)N)N)AZ
__future__rrrarr=rrrZmathrr�r�Zinit_configr�r,r�r4rRrorZurllib.requestr	r
rrr
Zurllib.parser�ImportErrorZurllib2Zurlparser�objectrr)r/r>rBrLrOr[r^rfrvrwrxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r!rrrr�<module>sj




		
+
,