3 0Q=j4.ã @s:ddlZddlZddlZddlZddlZddlZddlmZddlm Z ddlm Z ddlm Z ddl m Z y$ddlZddlZddlZddlZWn<ek rÌddljZddljZddljZddljZYnXddlZejddd �Zeed ƒsöeje_ejZd d „ZGd d„de j ƒZ!Gdd„dƒZ"ddd„Z#dd„Z$dS)éN)Úconfig)Ú up2dateLog)Ú up2dateErrors)Ú up2dateUtils)Úrpclibzrhn-client-toolsT)ZfallbackÚugettextcCs t|ƒdS)N)Úprint)Úmsg©r ú/usr/lib/python3.6/rpcServer.pyÚstdoutMsgCallback%sr cs0eZdZiZdd„Z‡fdd„Zdd„Z‡ZS)Ú RetryServercCs ||_dS)N)Ú serverList)Úselfrr r r Ú addServerList-szRetryServer.addServerListc s°tjƒ|_�xžytƒj||ƒ}W�n‚tjk r<‚Y�njtjk rt|jj dƒt t dƒƒt j dƒY�n2|jjƒ}|dkrÌ|jjƒ|jrÊdjdd„|jjƒDƒƒ}t t dƒƒt |ƒ‚d|j}dt jƒd t jƒdf}||j|j<||}|d |jjƒ}|jj |ƒtj|jjƒƒ}|d } |d|_|d |_| jƒ} | dk�rptjd| ƒ‚|j|_| |_|jjƒ|_|j�s˜d|_d|_ wYnXPqW|S)Nz,Error: Server Unavailable. Please try later.éÚ cSsg|]\}}d||f‘qS)z%s: %sr )Ú.0ÚhostÚerrorr 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 éÚhttpÚhttpsz%Redirected to unsupported protocol %sz/RPC2éÿÿÿÿ)rr)!rÚinitLogÚlogÚsuperZ_ServerProxy__requestÚ xmlrpclibZFaultÚhttplibZ BadStatusLineÚlog_mer Ú_ÚsysÚexitrÚnextÚresetServerIndexÚ_error_messagesÚjoinÚitemsZ_hostÚexc_infoÚserverÚurlparseZurlsplitZ_handlerÚlowerrZInvalidRedirectionErrorZ _orig_handlerZ_typeZ_uriZ_allow_redirect) rZ methodnameZparamsÚretr*Zerror_combined_msgr Z exception_msgZ parse_resÚtyp)Ú __class__r r Ú _request10sT             zRetryServer._request1cCstjj|j|ƒS)N)ÚxmlrpcÚclientZ_Methodr0)rÚnamer r r Ú __getattr__pszRetryServer.__getattr__)Ú__name__Ú __module__Ú __qualname__r&rr0r4Ú __classcell__r r )r/r r )s @r c@s0eZdZgfdd„Zdd„Zdd„Zdd„Zd S) Ú ServerListcCs||_d|_dS)Nr)rÚindex)rZ serverlistr r r Ú__init__wszServerList.__init__cCs|j|j|_|jS)N)rr:Z serverurl)rr r r r*{szServerList.servercCs(|jd|_|jt|jƒkr dS|jƒS)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}|sštj |d�}tj|d�} | ržx$| D]} | |kr~|j| ƒq~Wn|}t|ƒ} d} d} |drÎ|dpÀd} |dpÌd} t| jƒ|| | |d �}|j| ƒ|jd tjƒƒd d „|jjDƒ}|�rXtj|tjƒ�sNd 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)ÚproxyZusernameZpasswordÚtimeoutzX-Up2date-VersioncSs"g|]}tj|ƒddkrd‘qS)rrT)r+)rÚir r r rÁszgetServer..z%s: %sz ERROR: can not find RHNS CA filez%s)rrrÚinitUp2dateConfigÚurllib3Zdisable_warningsÚ exceptionsZSubjectAltNameWarningÚ isinstanceÚlistrZValidationErrorZgetProxySettingZ getServerURLZgetFallbackServerURLÚappendr9r r*rZ add_headerrÚversionrÚosÚaccessÚR_OKr!r ZSSLCertificateFileNotFoundZset_trusted_cert)ZserverOverriderAr=rÚcfgZcaZ rhns_ca_certZ proxyHostZ serverUrlsZ fallbackURLÚurlrr>r?ÚsZneed_car r r r Ú getServer‰sR           rPcOs¶tjƒ}|jd|jdƒtjƒ}d}d}yt|dƒ}Wntk rTd}YnX|dkrbd}�xLd}d}y|||Ž}W�nòtk r¢t j t dƒƒ‚Y�nÐt j k �rH} z†|jdtjƒd|fƒ||k�r2tjƒd} t| jƒdk�r t j t| jdƒƒ‚n$t j | j�r&t| jdƒnt| ƒƒ‚nd}WYdd} ~ X�n*tjk �rrtdƒt j dƒ‚Y�ntjk �rØtjƒd} d } | d | j} | d | j} | d | j} |j| ƒt j | ƒ‚Y�nštjk �rPtjƒd} |jd | j|fƒ| jdk�r0|jd| j ƒ|jdƒt!j"| j#ƒ\} } d} t$| ƒdk�rt|jd| ƒddl%m&}|j'ƒt$| ƒdk�rœ|jt dƒƒt j | jƒ‚t$| ƒdk�r*t(|dƒt(gƒk�rÊ|d}n|d}t(|ƒt(gƒk�rd|d|d|d|df}n|}d|| f} |j| ƒt j)| ƒ‚| �sL||k�rHt j | jƒ‚nd}Yn"tj*k �rpt j dƒ‚YnX|dk�r€Pnd}|�rœt+j,dƒ|d}||krft j dƒ‚qfW|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,i”zCould not find URL, %sz)Check server name and/or URL, then retry é"z'Auth token timeout occurred errmsg: %s)Ú up2dateAuthé3z.Server has refused connection due to high loadéz %s-%s-%s.%srézFile Not Found: %s %sz Broken response from the server.éz0The data returned from the server was incomplete)-rrZ log_debugÚ__dict__rrCÚintÚ ValueErrorÚKeyboardInterruptrZCommunicationErrorr!Úsocketrr r"r)r<ÚargsÚstrrZIncompleteReadrÚurllib2Z HTTPErrorÚfilenameÚcoder rZ ProtocolErrorÚerrmsgZerrcoderNrZ reportErrorZheadersÚabsÚup2date_clientrRZupdateLoginInfoÚtypeÚFileNotFoundErrorZ ResponseErrorÚtimeZsleep)Úmethodr\ÚkwargsrrMr-Z attempt_countZattemptsZfailureÚer ZerrCodeZerrMsgÚresetrRZpkgZpkgNamer r r ÚdoCallÏsž   "        "      rk)NNF)%rJr"r[rfZ xmlrpc.clientr1rDrcrrrrZrhnrrr^r+rÚ ImportErrorZ http.clientr2Zurllib.requestZrequestZ urllib.parseÚparseÚgettextZ translationÚtÚhasattrrr!r ZServerr r9rPrkr r r r Ús@          M C