3 0Q=j4. @s:ddlZddlZddlZddlZddlZddlZddlmZddlm Z ddlm Z ddlm Z ddl m Z y$ddlZddlZddlZddlZWn<ek rddljZddljZddljZddljZYnXddlZejddd Zeed seje_ejZd d ZGd dde j Z!GdddZ"dddZ#ddZ$dS)N)config) up2dateLog) up2dateErrors) up2dateUtils)rpclibzrhn-client-toolsT)ZfallbackugettextcCs t|dS)N)print)msgr /usr/lib/python3.6/rpcServer.pystdoutMsgCallback%sr cs0eZdZiZddZfddZddZZS) RetryServercCs ||_dS)N) serverList)selfrr r r addServerList-szRetryServer.addServerListc stj|_xytj||}Wntjk r<Ynjtjk rt|jj dt t dt j dYn2|jj}|dkr|jj|jrdjdd|jjD}t t dt |d|j}dt jd t jdf}||j|j<||}|d |jj}|jj |tj|jj}|d } |d|_|d |_| j} | dkrptjd| |j|_| |_|jj|_|jsd|_d|_ wYnXPqW|S)Nz,Error: Server Unavailable. Please try later. cSsg|]\}}d||fqS)z%s: %sr ).0hosterrorr r r Isz)RetryServer._request1..z>Errors occurred while trying to connect to the remote servers.z!An error occurred talking to %s: z%s %s rzTrying the next serverURL: %s httphttpsz%Redirected to unsupported protocol %sz/RPC2)rr)!rinitLoglogsuperZ_ServerProxy__request xmlrpclibZFaulthttplibZ BadStatusLinelog_mer _sysexitrnextresetServerIndex_error_messagesjoinitemsZ_hostexc_infoserverurlparseZurlsplitZ_handlerlowerrZInvalidRedirectionErrorZ _orig_handlerZ_typeZ_uriZ_allow_redirect) rZ methodnameZparamsretr*Zerror_combined_msgr Z exception_msgZ parse_restyp) __class__r r _request10sT             zRetryServer._request1cCstjj|j|S)N)xmlrpcclientZ_Methodr0)rnamer r r __getattr__pszRetryServer.__getattr__)__name__ __module__ __qualname__r&rr0r4 __classcell__r r )r/r r )s @r c@s0eZdZgfddZddZddZddZd S) ServerListcCs||_d|_dS)Nr)rindex)rZ serverlistr r r __init__wszServerList.__init__cCs|j|j|_|jS)N)rr:Z serverurl)rr r r r*{szServerList.servercCs(|jd|_|jt|jkr dS|jS)Nr)r:lenrr*)rr r r r$s zServerList.nextcCs d|_dS)Nr)r:)rr r r r%szServerList.resetServerIndexN)r5r6r7r;r*r$r%r r r r r9vs r9FcCs\tj}tj}tjtjj|d}t|t r:t j d|p@d}|drTtj }nd}|stj |d}tj|d} | rx$| D]} | |kr~|j| q~Wn|}t|} d} d} |dr|dpd} |dpd} t| j|| | |d }|j| |jd tjd d |jjD}|rXtj|tjsNd td|f}|jd|t j||j||S)NZ sslCACertz SSL certificate must be a stringz'/usr/share/rhn/CLN-ORG-TRUSTED-SSL-CERTZ enableProxy) registrationZenableProxyAuth proxyUser proxyPassword)proxyZusernameZpasswordtimeoutzX-Up2date-VersioncSs"g|]}tj|ddkrdqS)rrT)r+)rir r r rszgetServer..z%s: %sz ERROR: can not find RHNS CA filez%s)rrrinitUp2dateConfigurllib3Zdisable_warnings exceptionsZSubjectAltNameWarning isinstancelistrZValidationErrorZgetProxySettingZ getServerURLZgetFallbackServerURLappendr9r r*rZ add_headerrversionrosaccessR_OKr!r ZSSLCertificateFileNotFoundZset_trusted_cert)ZserverOverriderAr=rcfgZcaZ rhns_ca_certZ proxyHostZ serverUrlsZ fallbackURLurlrr>r?sZneed_car r r r getServersR           rPcOstj}|jd|jdtj}d}d}yt|d}Wntk rTd}YnX|dkrbd}xLd}d}y|||}Wntk rt j t dYnt j k rH} z|jdtjd|f||kr2tjd} t| jdkr t j t| jdn$t j | jr&t| jdnt| nd}WYdd} ~ Xn*tjk rrtdt j dYntjk rtjd} d } | d | j} | d | j} | d | j} |j| t j | Yntjk rPtjd} |jd | j|f| jdkr0|jd| j |jdt!j"| j#\} } d} t$| dkrt|jd| ddl%m&}|j't$| dkr|jt dt j | jt$| dkr*t(|dt(gkr|d}n|d}t(|t(gkrd|d|d|d|df}n|}d|| f} |j| t j)| | sL||krHt j | jnd}Yn"tj*k rpt j dYnX|dkrPnd}|rt+j,d|d}||krft j dqfW|S)NzrpcServer: Calling XMLRPC %sZ _Method__namerZnetworkRetriesrzConnection aborted by the userz(A socket error occurred: %s, attempt #%szhttplib.IncompleteReadz An HTTP error occurred: zURL: %s zStatus Code: %s zError Message: %s z,A protocol error occurred: %s , attempt #%s,izCould not find URL, %sz)Check server name and/or URL, then retry "z'Auth token timeout occurred errmsg: %s) up2dateAuth3z.Server has refused connection due to high loadz %s-%s-%s.%srzFile Not Found: %s %sz Broken response from the server.z0The data returned from the server was incomplete)-rrZ log_debug__dict__rrCint ValueErrorKeyboardInterruptrZCommunicationErrorr!socketrr r"r)r<argsstrrZIncompleteReadrurllib2Z HTTPErrorfilenamecoder rZ ProtocolErrorerrmsgZerrcoderNrZ reportErrorZheadersabsup2date_clientrRZupdateLoginInfotypeFileNotFoundErrorZ ResponseErrortimeZsleep)methodr\kwargsrrMr-Z attempt_countZattemptsZfailureer ZerrCodeZerrMsgresetrRZpkgZpkgNamer r r doCalls   "        "      rk)NNF)%rJr"r[rfZ xmlrpc.clientr1rDrcrrrrZrhnrrr^r+r ImportErrorZ http.clientr2Zurllib.requestZrequestZ urllib.parseparsegettextZ translationthasattrrr!r ZServerr r9rPrkr r r r s@          M C