3 c8h* @sDddlZddlZddlZddlZddlZddlZddlmZyddlm Z Wne k rde Z YnXddl m Z ddlmZddlmZddlmZddlmZdd lmZdd lmZdad Zd d ZddZddZddZddZddZd)ddZd*ddZd+ddZGdd d eZ d!d"Z!d#d$Z"d%d&Z#d'd(Z$dS),N) rpcServer)DictType)rpclib) clientCaps)config) rhnserver) up2dateErrors) up2dateLog) up2dateUtilsz /var/spool/up2date/loginAuth.pklcCs@tj}|d}tj|tjs"dSt|d}|j}|j|S)N systemIdPathr)rinitUp2dateConfigosaccessR_OKopenreadclose)cfgpathfretr!/usr/lib/python3.6/up2dateAuth.py getSystemIds rc Cstj}t}d}|dkr|SyDtjj|dd}|jdd}|dkrN|}n|jd||f|Stk r|jd|j t j YnX|S) z Extract the preferred_interface parameter from system_id XML Returns 'IPv4' or 'IPv6' if specified, otherwise 'IPv4' as default IPv4Nrpreferred_interfaceIPv6zGInvalid preferred_interface value '%s' in system_id, defaulting to '%s'zGFailed to parse system_id XML, preferred_interface defaulting to 'IPv4')rr) r initLogrr xmlrpclibloadsgetlog_me Exception log_exceptionsysexc_info)logsystemIdrZparamsZ cfg_interfacerrrgetPreferredInterface(s$   r)c CsBtjjdrdStj}ytjjtddd}Wn dSt j }|d oZ||kr>t j }|j jt|}|d}|d|jd}tj|tjsytj|Wn dStj|tjsdStj|tjr|d}ytj||Wn dSt|d}|j||jytj|td d Wn YnXdS) NZLEAPP_IPU_IN_PROGRESSrZ os_releaseZchannelOverrider /z.savew0600)renvironr!rr rrr rr Z getVersionrZRegistrationRhnServerZ registrationZupgrade_versionrfindrW_OKmkdirF_OKrenamerwriterchmodint) ridVerZ systemVersZ newSystemIdrdirZsavePathrrrrmaybeUpdateVersionLsB   r:c Cstj}|jdts$|jddStjtd}tjjt}tj |tj sy tj |tj |t ddWn|jd|dSttd}tj tt d dtj|||j|d ttd }|jd |d d |ddS)z Pickle loginInfo to a file Returns: True -- wrote loginInfo to a pickle file False -- did _not_ write loginInfo to a pickle file zwriteCachedLogin() invokedz1writeCachedLogin() loginInfo is None, so bailing.F)time loginInfoZ0700r-z'Unable to write pickled loginInfo to %swbr,r;zX-RHN-Auth-Expire-OffsetzWrote pickled loginInfo at z with expiration of z seconds.T)r r log_debugr<r;rrdirnamepcklAuthFileNamerr0r1r5r6r"rpickledumprfloat)r'dataZpcklDirpcklAuth expireTimerrrwriteCachedLoginzs.      rGc CsTtj}|jdtjttjs2|jdtdSttd}ytj |}Wn*t t fk rt|jd|j dSX|j yLt jjtddd}d|d d }||kr|jd ||fdSWn YnX|d }|d }tj}|t|d }|jd|d|dt|d ||kr<|jd||fdSt||jd|dS)zb Read pickle info from a file Caches authorization info for connecting to the server. zreadCachedLogin invokedz'Unable to read pickled loginInfo at: %sFrbzSUnexpected EOF. Probably an empty file, regenerate auth filerZ system_idzID-%sr<zX-RHN-Server-Idz#system id version changed: %s vs %sr;zX-RHN-Auth-Expire-Offsetz(Checking pickled loginInfo, currentTime=z , createTime=z, expire-offset=z9Pickled loginInfo has expired, created = %s, expire = %s.zrrr@rrrAloadEOFError ValueErrorrrrr rr;rC_updateLoginInfo) r'rErDr7ZcidVerZ createdTimeliZ currentTimerFrrrreadCachedLoginsH     rNcCs2t|tkr*tttkr$tj|q.|andadS)z, Update the global var, "loginInfo" N)typerr<update)rMrrrrLs    rLFc Cstj}|jd|| r,t r,tr,tStj|d}tjj }x|D]\}}|j ||qHW|dkrnt }|svdSt |j d|jj|tjt|}|jjt|ttr|j d|jdttS)Nzlogin(forceUpdate=%s) invoked)timeoutzlogging into up2date serverz?successfully retrieved authentication token from up2date serverz logininfo:)r rr>r<rNrZ RhnServerrZcapsZ headerFormatZ add_headerrr:r"Zup2dateloginsocketZgetfqdn_get_panel_nameZ capabilitiesZvalidaterLrG) r( forceUpdaterQr'ZserverZ headerlistZ headerNamevaluerMrrrrRs.       rRcCs0tj}|jdtd|dts,tjdtS)NzupdateLoginInfo() login infoT)rUrQzUnable to authenticate)r rr"rRr<rZAuthenticationError)rQr'rrrupdateLoginInfos    rWc Cs8ytaWntk r daYnXtr*tSt|dtS)N)rQ)r< NameErrorrR)rQrrr getLoginInfos  rYc@s eZdZdS)_FailedToGetPanelNameN)__name__ __module__ __qualname__rrrrrZsrZc CsLy t}Wn8tk rBts8|jtj|jdt}YnX|jS)Nz?Failed to get panel name via cldetect, using fallback mechanism) _get_panel_name_via_cldetectrZ_is_cldeploy_runningr$r%r&r"_fallback_get_panel_namelower)r'Z panel_namerrrrTs   rTcCstd}d}d}tjj|r8t|}|jj}WdQRX|rpd|}tjj|rpt|}d|jk}WdQRX|S)Nz/var/lock/cldeploy.lckFz/proc/%s/cmdlineZcldeploy)rrexistsrrstrip)Zlock_file_pathZcldeploy_runningpidrZpid_cmdline_pathrrrr_$s    r_cCsrddg\}}}tjj|s(td|tj|tjtjdd}|j\}}|jdkrjtddj ||f|j S) Nz/usr/bin/cldetectz--detect-cp-nameonlyz7Failed to obtain panel name because '%s' does not existT)stdoutstderrZuniversal_newlinesrz:Failed to obtain panel name using '%s' command; stderr: %s ) rrrbrZ subprocessPopenPIPEZ communicate returncodejoinrc)Zbinary_cmdZprocessrerfrrrr^5s   r^cCsdtjjdrdStjjdr dStjjdr0dStjjdr@dStjjd rPd Stjjd r`d Sd S)Nz/usr/local/psa/admin/Zpleskz/usr/local/interworx/Z interworxz#/usr/local/cpanel/whostmgr/docroot/Zcpanelz/usr/local/ispmgr/Zispmgrz/usr/local/directadmin/Z directadminz/usr/local/mgr5/sbin/mgrctlZispmgr5unknown)rrisdirisfilerrrrr`Hs      r`)NFN)N)N)%rrAr%r;rSrhZup2date_clientrtypesr ImportErrordictZrhnrrrrrr r r<r@rr)r:rGrNrLrRrWrYr#rZrTr_r^r`rrrrsB          $. , %