a c8hß.ã@sVddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z dd l mZz$ddlZddlZddlZddlZWnBeyæddlmZddlmZddlmZddlmZYn0ddlZejd d d Zeed ƒseje_ejZ dd„Z!Gdd„de j"ƒZ#Gdd„dƒZ$ddd„Z%dd„Z&dS)éN)Úconfig)Ú clientCaps)Ú up2dateLog)Ú up2dateErrors)Ú up2dateUtils)ÚSSL)Úrpclib)Ú raise_with_tbzrhn-client-toolsT)ÚfallbackÚugettextcCs t|ƒdS©N)Úprint)Úmsg©rúLóz)RetryServer._request1..z>Errors occurred while trying to connect to the remote servers.z!An error occurred talking to %s: z%s %s rézTrying the next serverURL: %s é)ÚhttpÚhttpsz%Redirected to unsupported protocol %sz/RPC2)!rÚinitLogÚlogZ_requestrZInvalidRedirectionErrorÚ xmlrpclibZFaultÚhttplibZ BadStatusLineÚlog_merÚ_ÚsysÚexitrÚnextÚresetServerIndexÚ_error_messagesÚjoinÚitemsZ_hostÚexc_infoÚserverÚurlparseÚurlsplitZ_handlerÚlowerr Z _orig_handlerZ_typeZ_uriZ_allow_redirect) rZ methodnameÚparamsÚretr/Zerror_combined_msgrZ exception_msgZ parse_resÚtyprrrÚ _request11sX     ÿ         zRetryServer._request1cCstj |j|¡Sr )rr#Z_Methodr6)rÚnamerrrÚ __getattr__sszRetryServer.__getattr__N)Ú__name__Ú __module__Ú __qualname__r+rr6r8rrrrr*sBrc@s0eZdZgfdd„Zdd„Zdd„Zdd„Zd S) Ú ServerListcCs||_d|_dS©Nr)rÚindex)rZ serverlistrrrÚ__init__zszServerList.__init__cCs|j|j|_|jSr )rr>Z serverurl©rrrrr/~szServerList.servercCs(|jd|_|jt|jƒkr dS| ¡S)Nr)r>Úlenrr/r@rrrr)‚s zServerList.nextcCs d|_dSr=)r>r@rrrr*ˆszServerList.resetServerIndexN)r9r:r;r?r/r)r*rrrrr<ys r<FcCsàt ¡}t ¡}|d}t|tƒs(|g}|p0dg}|drDt ¡}nd}|s†tj|d} tj|d} | rŠ| D]} | | vrl|   | ¡qln|} t | ƒ} d} d}|drº|dp¬d} |dp¸d}d}dD]B}|t j vrÂt j |sÜqÂt j |  d ¡d }|  d ¡d }qqÂt|  ¡||| ||d }| | ¡| d t ¡¡|rH| |¡dd„|jjDƒ}|r®|D]H}t  |t j¡s dtdƒ|f}| d|¡t |¡‚| |¡qdt ¡tj  ¡}|D]\}}| ||¡qÄ|S)NZ sslCACertz'/usr/share/rhn/CLN-ORG-TRUSTED-SSL-CERTZ enableProxy)Ú registrationZenableProxyAuthÚ proxyUserÚ proxyPassword)ÚLANGUAGEÚLC_ALLÚ LC_MESSAGESÚLANGú:rÚ.)ÚrefreshCallbackÚproxyÚusernameÚpasswordÚtimeoutzX-Up2date-VersioncSs"g|]}t |¡ddkrd‘qS)rr T)r0)rÚirrrrÐrzgetServer..z%s: %sz ERROR: can not find RHNS CA filez%s)!rr!rÚinitUp2dateConfigÚ isinstanceÚlistZgetProxySettingZ getServerURLZgetFallbackServerURLÚappendr<ÚosÚenvironÚsplitrr/rZ add_headerrÚversionZsetlangrÚaccessÚR_OKr&r%rZSSLCertificateFileNotFoundZadd_trusted_certrZ loadLocalCapsZcapsZ headerFormat)rKZserverOverriderOrBr"ÚcfgÚcaZ rhns_ca_certsZ proxyHostZ serverUrlsZ fallbackURLÚurlrrCrDÚlangÚenvÚsZneed_caZ rhns_ca_certrZ headerlistZ headerNameÚvaluerrrÚ getServerŒsp         ú     rbc Os¬t ¡}| d|jd¡t ¡}d}d}zt|dƒ}WntyRd}Yn0|dkr`d}d}d}z||i|¤Ž}Wnêty¢t t   t dƒ¡ƒYnÆt jtjfy.| dt ¡d|f¡||kr$t ¡d} t| jƒdkrt t   | jd¡ƒnt t   | jd¡ƒnd}Yn:tjyZtdƒt t   d¡ƒYntjyÂt ¡d} d } | d | j} | d | j} | d | j} | | ¡t t   | ¡ƒYn¦tjyDt ¡d} | d | j |f¡| j!dkr| d| j"¡| d¡t# $| j%¡\} } d} t&| ƒdkr\| d| ¡ddl'm(}| )¡t&| ƒdkrˆ| t dƒ¡t t   | j ¡ƒt&| ƒdkrt*|dƒt*gƒkr¶|d}n|d}t*|ƒt*gƒkròd|d|d|d|df}n|}d|| f} | | ¡t t  +| ¡ƒ| s@||krsF              Oü X