QKfEddlZddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl m Z ddlmZmZmZddlmZddlmZmZmZmZmZddlZddlZej8Gd d eZGd d Zd Z dZ!d.dZ"dZ#d/dZ$dZ%dZ&dZ'dZ(dZ)dZ*GddeZ+d.dZ,d.dZ-dZ.dZ/dZ0dZ1d.d Z2d!Z3d.d"Z4d.d#Z5d$Z6d%Z7d&Z8d'Z9d(Z:d)Z;d*Zrrc(eZdZdZdZdZdZdZdZdZ y) SoftwarePropertiesPagerN) r%r&r'ubuntu_softwareother_softwareupdatesauthenticationadditional_driversdeveloper_options ubuntu_pror)rrr+r+Fs'ONGNJrr+c4t|}t|j}|jr+|jj |jd|_|j r+|jj |j d|_t |S)Nzhidden-uzhidden-p)rr uriusernamereplacepasswordstr)entrytmp url_partss r)get_string_with_no_auth_from_source_entryrBPsl u+C!I''//)"4"4jA''//)"4"4jA s8Orcd} ddl}|j}|jd}|S#t$rt j dY|SwxYw)z)return True if Unity is currently runningFrNzcom.canonical.Unityz&could not check for Unity dbus service)dbus SessionBusname_has_owner Exceptionlogging exception) unity_runningrDbuss ris_unity_runningrLZs]MDoo**+@A   DBC Ds%+A  A cd|stj}|dkDrd|z}t|5}|j}dddj ddj dd}||k(ryt |j ddjd}|dkDry#1swYjxYw) Nrz /proc/%s/stat(r-)Tr,F)osgetpidopenread partition rpartitionintsplit) processnamepid stat_filestat_fstatcommands ris_child_of_process_namer^gs iik '#c) )_ !;;=D !..%a(33C8; k !$//#&q)//1!45 '  ! !s B&&B/ctjjdrtjjdsytjdtjdk7S)z&returns True if we are inside a chrootz/procz/proc/1T/z /proc/1/root)rPpathexistsr\r)rr inside_chrootrcwsB 77>>' ""''..*C 773<277>2 22rcd}|jD]>}t||jdz t|z|kDr|d|zz }||dzz }@|S)zhelpers inspired after textwrap - unfortunately we can not use textwrap directly because it break packagenames with "-" in them into new lines r$  )rWlenrfind)twidthsubsequent_indentoutss rwraprnsd C WWY Hsyy &#a& 05 8 4++ +C q3w Jrc bd}|jd}|D]}t|fi|}||dzz }|S)Nr$re)rWrn)rmkwargsmsgparaspars rtwraprtsF C GGDME    q4x Jrc<g}tjjdsgStjdgtj d}|j djd}|d=|D]'}|s|j|jd)|S)z;return list of loaded modules (or [] if lsmod is not found)z /sbin/lsmodTstdoutuniversal_newlinesrre) rPrarb subprocessPopenPIPE communicaterWappend)modulesplineslines rlsmodrsG 77>>- (   D A MMOA  $ $T *E a,  NN4::<? +, Nrctjj|syttj|t }|t zt k(stj||t zyy)zAcheck if a given binary has the executable bit and if not, add itN)rPrarbrr\r rchmod)ramodes rcheck_and_fix_xbitrsO 77>>$  2774=) *D G^ ' tg~& (rc.ddi}dtjvrytjdj}|dd|vr||ddSd|vrC|jddjdd }d |vr|jd d}|dzS|dd dzS) z8helper to get the country mirror from the current localecr$LANGNr0_.rr,@r-)rPenvironlowerrW) lang_mirrorlangcountrys rcountry_mirrorrs)K RZZ ::f  # # %D BQx;48$$ d{**S/!$**3/2 '>mmC(+G}BQx#~rctjjd}|rtjd|z|St j }|jddS)z0return the codename of the current runing distroMETA_RELEASE_FAKE_CODENAMEzQusing fake release name '%s' (because of META_RELEASE_FAKE_CODENAME environment) VERSION_CODENAMEunknown distributionrPrgetrHwarningplatformfreedesktop_os_release)dist os_releases rget_distrs[ ::>>6 7D  79= >  002J >>,.D EErctjjd}|rtjd|z|St j }|jddS)z0return the version of the current running distroMETA_RELEASE_FAKE_VERSIONzSusing fake release version '%s' (because of META_RELEASE_FAKE_VERSION environment) VERSION_IDrr)descrs rget_dist_versionrsZ ::>>5 6D  68< =  002J >>,(> ??rceZdZdZy) HeadRequestcy)NHEADr)rs r get_methodzHeadRequest.get_methodsrN)r%r&r'rr)rrrrsrrc |sd|d|zt|\}}}}}|d|d|d|d|d|d |d vr6 tt|}|j|jd k(ry y |dk(rddl} | j|} | j| jtjj|| jtjj|} | j|r |d| z| dk7ry y y #t $r}|d |zYd}~y d}~wwxYw#t $r}|r |d|zYd}~y d}~wwxYw)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) cy)NTr))xs rz"url_downloadable..srzurl_downloadable: %szs='z' n='z' p='z' q='z' f='')httphttpsTFzerror from httplib: '%s'Nftprzftplib.size() returned: %szerror from ftplib: '%s')r rrclosecoderGftplibFTPlogincwdrPradirnamesizebasenamequit) r: debug_funcschemenetlocraquerryfragment http_fileerfrs rurl_downloadablersS %+,/7},VVT68 64 3""  C 01I OO ~~$ 5  6"A GGI EE"''//$' (66"''**401D FFH7$>?qy )  1A5 6   4q89 s03D!>BE! D?* D::D? E" EE"cd}i}tjjddk7r#tjjd|d<ntjj |rytj }tj|||jdd}|r;|jd}t|jd}|r|r d |d |d |d<tjjd dk7r#tjjd |d <n d|vr|d|d <|r|jD]8}tjd|rtd|ztj yt#|}t%|} t'| d|vrtj(d|dd |vrtj(d|d |S)zinit 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::Proxyr$rzSynaptic::useProxyFzSynaptic::httpProxyzSynaptic::httpProxyPortzhttp://:r`zAcquire::https::Proxyrz https?://\w+zproxy '%s' looks invalid)fileN http_proxy https_proxy)apt_pkgconfigfindrPrarb Configurationread_config_filefind_br>find_ivaluesrematchrsysstderrr r rputenv) gsettingsSYNAPTIC_CONF_FILEproxiescnf use_proxy proxy_host proxy_portproxy proxy_supportopeners r init_proxyrs9G~~12b8!..--.DE * +##%  &89JJ3U; "78JSZZ(ABCJj5?"L~~23r9">>../FG 7 "6?^^% E88OU3058szzJ %W- m,v W  IIlGFO 4 g  IImWW%5 6 Nrc ddl}|j|jj} |jdd}|j |d}|j ddS#|j j$rR}d}|j|k7r|jdd }|j |d}|j dd cYd}~Sd}~wwxYw#t$rYy wxYw) 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.Properties OnBatteryz)org.freedesktop.DBus.Error.ServiceUnknownzorg.freedesktop.DeviceKit.Powerz /org/freedesktop/DeviceKit/Power on_batteryF) rDBus TYPE_SYSTEM get_object InterfaceGet exceptions DBusException_dbus_error_namerG)rDrKdevobjdevr error_unknowns rrrEs hhtxx++, L^^(*CF..)JKC773[A A,, LGM!!]2^^12F..)JKC77s r str_to_boolr s czSYY[G+ rcddl} tj\}}|S#t$r|jdYywxYw)Nrzgedefaultlocale() failed)rHlocalegetdefaultlocalerGrI)rHlocale_sencodings rget_langrsE%6688 45s ==cDt|}|jdddS)z4try to guess the flavor based on the running desktopcache-r,r)get_ubuntu_flavor_packagerW)rpkgs rget_ubuntu_flavorrs$ $% 0C 99S! Q rcBddlm}|d}|jddS)Nr)DistUpgradeConfigz"/usr/share/ubuntu-release-upgraderDistroMetaPkgs)#DistUpgrade.DistUpgradeConfigParserrgetlist)rparsers r_load_meta_pkg_listrs$F C DF >>(J //rc dg} |jtt|t j }|D] }||vr||nd}|s|js|cSy#t$r}t d|Yd}~Vd}~wwxYw)z@try to guess the flavor metapackage based on the running desktopzubuntu-desktopz%Could not load list of meta packages:N)extendsortedrrGraptCache is_installed)r meta_pkgsrmeta_pkg cache_pkgs rrrs ""I: 3 567 } '/5'8E(Od //O  : 5q99:s"A## B, A==Bct|}ddi}||vr||S|jdrt|jdddS|jdrt|jdddSy) z9try to guess the flavor name based on the running desktoprzubuntustudio-desktopz Ubuntu Studioz-desktopr,rz-netbookUbuntu)rendswithcapitalize_first_wordrsplit)rrlookups rget_ubuntu_flavor_namer.sx #% 0C$o 6F f}c{ j !$SZZ A%>q%ABB j !$SZZ A%>q%ABBrcddl}|jddddlm}m}|j ||j j|jj|jj}|jd|d||j|jj|j j"|j%d|j'|j)y ) NrGtkz3.0)Gdkr0)parentflagsr buttonszz r$F)girequire_versionrr1r0 MessageDialog DialogFlagsMODAL MessageTypeERROR ButtonsTypeCLOSE set_markuprealize get_window set_functions WMFunctionMOVE set_titlerundestroy)r2summarymessager5r1r0ds rerrorrJs ue$& oo## __ " "%%  A LL'BCIIKLLN  !4!45KKOEEGIIK rc|dkr2tt|tdz }tdd|d|izSt j t d|dz dz S)zG Convert a given size in bytes to a nicer better readable unit i@Biz %(size).0f kBrz%.1f MBg@@)rVrfloatrr  format_stringr)bytes size_in_kbs r humanize_sizerPsi  {eeDk123 *E JI   ##AiL%&.62IJJrc@tjjdS)NzAPT::Architecture)rrrr)rrget_archrRs >>  2 33rc<d}d}d}td5}|jD]b}|j}|s|j}||}||k7r1||jdd}t |d} | |k(sZdddy dddy #1swYy xYw) z>check if the current system is listening on the given tcp portr,r.0Az /proc/net/tcprNTF)rR readlinesstriprWrV) portINDEX_LOCAL_ADDR INDEX_STATESTATE_LISTENINGnet_tcprrstatelocal_port_str local_ports ris_port_already_listeningr`sKO o '%%' D::> 77>>* +    UJOO kmA C n rct|dkDr?|djr,|djs|dj|ddzS|S)z-this uppercases the first word's first letterr,rN)rgisalphaisupper capitalize)strings rr+r+1sN 6{Q6!9,,.vay7H7H7Jay##%qr 22 MrcFt|jdd}t|S)zSthis takes a package synopsis and uppercases the first word's first letter rGr$)getattr candidater+)rnames rget_package_labelrp8s! 3==)R 0D  &&r__main__barbazr)Fr$)>r rHrPrrryrrrrrrmathrr\rrr urllib.parser urllib.requestr r r rrr"r init_configobjectrr+rBrLr^rcrnrtrrrrrrrrrrr rrrrr.rJrPrRr`rfr+rpr%r)rrrzs&0    **! >F>$   3 &', F @' +\)X@#L  0* *K$480' z  $u r