3 `g% @s<ddlZddlZddlZddlZddlZddlZddlmZyddlm Z Wne k rde Z YnXddl m Z ddlmZddlmZddlmZddlmZdd lmZdd lmZdad Zd d ZddZddZddZddZd'ddZd(ddZd)ddZGdddeZdd 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 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)renvirongetrr r xmlrpclibloadsrr Z getVersionr RhnServerZ registrationZupgrade_versionrfindrW_OKmkdirF_OKrenamerwriterchmodint) ridVerZ systemVersZ newSystemIdrdirZsavePathrrrrmaybeUpdateVersion*sB   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 loginInfoZ0700rz'Unable to write pickled loginInfo to %swbrr0zX-RHN-Auth-Expire-OffsetzWrote pickled loginInfo at z with expiration of z seconds.T)r initLog log_debugr1r0rrdirnamepcklAuthFileNamerr%r&r*r+log_merpickledumprfloat)logdataZpcklDirpcklAuth expireTimerrrwriteCachedLoginXs.      r?c 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-%sr1zX-RHN-Server-Idz#system id version changed: %s vs %sr0zX-RHN-Auth-Expire-Offsetz(Checking pickled loginInfo, currentTime=z , createTime=z, expire-offset=z9Pickled loginInfo has expired, created = %s, expire = %s.zrrrreadCachedLoginxsH     rFcCs2t|tkr*tttkr$tj|q.|andadS)z, Update the global var, "loginInfo" N)typerr1update)rErrrrDs    rDFc 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 r3r4r1rFrr#rZcapsZ headerFormatZ add_headerrr/r7Zup2dateloginsocketZgetfqdn_get_panel_nameZ capabilitiesZvalidaterDr?) ZsystemId forceUpdaterIr;ZserverZ headerlistZ headerNamevaluerErrrrJs.       rJcCs0tj}|jdtd|dts,tjdtS)NzupdateLoginInfo() login infoT)rMrIzUnable to authenticate)r r3r7rJr1rZAuthenticationError)rIr;rrrupdateLoginInfos    rOc Cs8ytaWntk r daYnXtr*tSt|dtS)N)rI)r1 NameErrorrJ)rIrrr getLoginInfos  rQc@s eZdZdS)_FailedToGetPanelNameN)__name__ __module__ __qualname__rrrrrRsrRc CsLy t}Wn8tk rBts8|jtj|jdt}YnX|jS)Nz?Failed to get panel name via cldetect, using fallback mechanism) _get_panel_name_via_cldetectrR_is_cldeploy_runningZ log_exceptionsysexc_infor7_fallback_get_panel_namelower)r;Z panel_namerrrrLs   rLcCstd}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_pathrrrrWs    rWcCsrddg\}}}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 ) rrr\rR subprocessPopenPIPEZ communicate returncodejoinr])Zbinary_cmdZprocessr_r`rrrrVs   rVcCsdtjjdrdStjjdr 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)rrisdirisfilerrrrrZ&s      rZ)NFN)N)N)$rr8rXr0rKrbZup2date_clientrtypesr ImportErrordictZrhnrrrrrr r r1r6rr/r?rFrDrJrOrQ ExceptionrRrLrWrVrZrrrrs@         . , %