+
    Û1jt)  ã                   ó˜   € ^ RI t ^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RI	H
t
 ^ RIHt  ^ RItRt ! R	 R
]4      tR#   ] d    Rt Li ; i)é    N)ÚUploadTarget)Úconvert_bytesÚTIMEOUT_DEFAULT)ÚDeviceAuthorizationClass)Ú
RHELPolicy)Ú_sosTFc                   óÆ   a a€ ] tR t^t oRtRtRtRtRV 3R lltRt	Rt
]
tR	tRtR
tR tV 3R ltR tR tR tR tRR ltR tR tR tRV 3R lltR tV 3R ltRtVtV ;t# )ÚRHELUploadTargetzVhttps://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/auth/devicezPhttps://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/tokenzRed Hat Upload TargetÚredhatNc                ó*   <€ \         SV `  WVR 7       R# ))ÚparserÚargsÚcmdlineN)ÚsuperÚ__init__)Úselfr   r   r   Ú	__class__s   &&&&€Ú;/usr/lib/python3/dist-packages/sos/upload/targets/redhat.pyr   ÚRHELUploadTarget.__init__!   s   ø€ ä‰Ñ ¸7ÐÖCó    zhttps://api.access.redhat.comzsftp://sftp.access.redhat.comÚposti   @c                óD   € \        V P                  R,          \        4      # )z.Return true if we are running in a RHEL systemÚpolicy)Ú
isinstanceÚcommonsr   ©r   s   &r   Úcheck_distributionÚ#RHELUploadTarget.check_distribution-   s   € ä˜$Ÿ,™, xÕ0´*Ó=Ð=r   c                ój   <€ \         SV `  V4       V P                  R ,          P                  V n        R# )ÚcmdlineoptsN)r   Úpre_workr   Úupload_directory)r   Úhook_commonsr   s   &&€r   r!   ÚRHELUploadTarget.pre_work1   s'   ø€ ä‰Ñ˜Ô&à $§¡¨]Õ ;× LÑ LˆÖr   c                ó6  € V P                   R ,          P                  '       d%   V P                  P                  \	        R4      4       V P                   R ,          P
                  '       g/   V P                  V n        V P                  P                  R4       R# R# )r    zVThe option --upload-user has been deprecated in favour of device authorization in RHELz&No case id provided, uploading to SFTPN)r   Úupload_userÚui_logÚinfoÚ_Úcase_idÚRH_SFTP_HOSTÚ
upload_urlr   s   &r   Úprompt_for_upload_userÚ'RHELUploadTarget.prompt_for_upload_user7   sr   € Ø�<‰<˜Õ&×2×2Ð2Ø�K‰K×ÑÜð 5ó 6ôð �|‰|˜MÕ*×2×2Ð2à"×/Ñ/ˆDŒOØ�K‰K×ÑÐEÖFñ 3r   c                ó˜   € V P                   R ,          P                  '       d'   V P                  P                  \	        R4      4       R# R# )r    zVThe option --upload-pass has been deprecated in favour of device authorization in RHELN)r   Úupload_passr'   r(   r)   r   s   &r   Úprompt_for_upload_passwordÚ+RHELUploadTarget.prompt_for_upload_passwordB   s;   € à�<‰<˜Õ&×2×2Ð2Ø�K‰K×ÑÜð 5ó 6öñ 3r   c                óJ  € R V P                   R,          P                   R2p V P                  '       d   V P                  # V P                   R,          P                  '       d   V P                   R,          P                  # V P                   R,          P                  R8X  d   V P                  # V P                   R,          P                  '       g   V P                  #  V P                   V 2#   \
         d)   pT P                  P                  RT 24        Rp?L>Rp?ii ; i)z/support/v1/cases/r    z/attachmentsÚsftpz=There was a problem while setting the remote upload target:  N)	r   r*   r,   Úupload_protocolr+   Ú	Exceptionr'   r(   ÚRH_API_HOST)r   Úrh_case_apiÚes   &  r   Úget_upload_urlÚRHELUploadTarget.get_upload_urlJ   sÿ   € Ø*ØŸ™ ]Õ3×;Ñ;Ð<¸LðJˆð	Ø��ˆØ—‘Ð&Ø�|‰|˜MÕ*×5×5Ð5Ø—|‘| MÕ2×=Ñ=Ð=Ø�|‰|˜MÕ*×:Ñ:¸fÔDØ×(Ñ(Ð(Ø—<‘< Õ.×6×6Ð6Ø×(Ñ(Ð(ð 7ð ×"Ñ"Ð# K =Ð1Ð1øô ô 	Ø�K‰K×Ñð*Ø*+¨ð.÷ñ ûð	ús:   £C/ µC/ Á"C/ Á$C/ Â-C/ Â/"C/ ÃC/ Ã/D"Ã:DÄD"c                ó(   € R V P                    2pRV/# )zBearer ÚAuthorization)Ú_device_token)r   Ústr_auths   & r   Ú_get_upload_https_authÚ'RHELUploadTarget._get_upload_https_auth^   s    € Ø˜T×/Ñ/Ð0Ð1ˆØ Ð*Ð*r   c                ó¤  € RVP                   P                  R4      R,          VV P                  4       3/p\        V P                  V P
                  4      pVP                  4       V n        V P                  P                  RV P                  4        24       \        P                  ! V P                  4       VV P                  4       V\        R7      # )z¼If upload_https() needs to use requests.post(), use this method.

Policies should override this method instead of the base upload_https()

:param archive:     The open archive file object
ÚfileÚ/ú/Device authorized correctly. Uploading file to )ÚfilesÚheadersÚverifyÚtimeoutéÿÿÿÿ)ÚnameÚsplitÚ_get_upload_headersr   Úclient_identifier_urlÚtoken_endpointÚget_access_tokenr>   r'   r(   Úget_upload_url_stringÚrequestsr   r:   r@   r   )r   ÚarchiverH   rF   ÚRHELAuths   &&&  r   Ú_upload_https_postÚ#RHELUploadTarget._upload_https_postb   sÂ   € ð �W—\‘\×'Ñ'¨Ó,¨RÕ0°'Ø×-Ñ-Ó/ð1ð
ˆô ,Ø×*Ñ*Ø×#Ñ#óˆð &×6Ñ6Ó8ˆÔØ�‰×ÑÐJØ ×6Ñ6Ó8Ð9ð;ô 	<ä�}Š}˜T×0Ñ0Ó2¸%Ø%)×%@Ñ%@Ó%BØ$*´OôEð 	Er   c                óp   € V P                  4       P                  V P                  4      '       d   R RRR/# / # )Ú	isPrivateÚfalsezcache-controlzno-cache)r:   Ú
startswithr7   r   s   &r   rM   Ú$RHELUploadTarget._get_upload_headers{   s6   € Ø×ÑÓ ×+Ñ+¨D×,<Ñ,<×=Ò=Ø ¨/¸:ÐFÐFØˆ	r   c                óü   € V P                  4       P                  V P                  4      '       d   R # V P                  4       P                  V P                  4      '       d   R# V P	                  V P
                  4      # )zRed Hat Customer PortalzRed Hat Secure FTP)r:   rZ   r7   r+   Ú_get_obfuscated_upload_urlr,   r   s   &r   rQ   Ú&RHELUploadTarget.get_upload_url_string€   s]   € Ø×ÑÓ ×+Ñ+¨D×,<Ñ,<×=Ò=Ù,Ø×ÑÓ ×+Ñ+¨D×,=Ñ,=×>Ò>Ù'Ø×.Ñ.¨t¯©Ó?Ð?r   c                óL  € V P                   P                  R4      R,          pV P                  R,          P                  '       d#   V P                  R,          P                   RV 2pV P                  '       d+   \
        P                  P                  V P                  V4      pV# )zwThe RH SFTP server will only automatically connect file uploads to
cases if the filename _starts_ with the case number
rD   r    r)   rJ   )Úupload_archive_namerL   r   r*   r"   ÚosÚpathÚjoin)r   Úfnames   & r   Ú_get_sftp_upload_nameÚ&RHELUploadTarget._get_sftp_upload_name‡   s   € ð ×(Ñ(×.Ñ.¨sÓ3°BÕ7ˆà�<‰<˜Õ&×.×.Ð.Ø—|‘| MÕ2×:Ñ:Ð;¸1¸U¸GÐDˆEØ× × Ð Ü—G‘G—L‘L ×!6Ñ!6¸Ó>ˆEØˆr   c                óp  <€ V P                   P                  R4      ^,          V P                  4       9  d   \        SV `  4       # \
        '       g   \        R4      hRpRpRpV P                  '       g7    \        V P                  V P                  4      pVP                  4       V n        V P                  '       d-   V P                  P                  RV P                  4        24       V P                   R,           p	Rp
V P                  '       dä   V P#                  4       p\$        P&                  ! W›^
R7      p
V
P(                  ^È8X  dV   \*        P,                  ! V
P.                  4      R	,          p\*        P,                  ! V
P.                  4      R
,          pRV 2pEM+V P                  P1                  RV
P(                   RV
P+                  4        24       V P                  P3                  R4       MÖRR/p\$        P&                  ! V	\*        P4                  ! V4      ^
R7      pVP(                  ^È8X  d\   \*        P,                  ! VP.                  4      pVR	,          pVR
,          pV P                  P                  \7        RV R24      4       M9V P                  P1                  RVP(                   RVP+                  4        24       V'       d   V'       d   \        SV `  WTVR7      # \        R4      h  \         d7   pR\        T4      9   d   T P                  P                  R4        Rp?EL†Rp?ii ; i)zšOverride the base upload_sftp to allow for setting an on-demand
generated anonymous login for the RH SFTP server if a username and
password are not given
z//zPpython3-requests is not installed and is required for obtaining SFTP auth token.Nzend user deniedz:Device token authorization has been cancelled by the user.rE   z/support/v2/sftp/token)rG   rI   ÚusernameÚtokenz/users/z$DEBUG: auth attempt failed (status: z): zUUnable to retrieve Red Hat auth token using provided credentials. Will try anonymous.ÚisAnonymousT)ÚdatarI   zUser z^ used for anonymous upload. Please inform your support engineer so they may retrieve the data.z)DEBUG: anonymous request failed (status: )ÚuserÚpasswordÚuser_dirz1Could not retrieve valid or anonymous credentials)r+   rL   r:   r   Úupload_sftpÚREQUESTS_LOADEDr6   r>   r   rN   rO   rP   Ústrr'   r(   rQ   r7   r@   rR   r   Ústatus_codeÚjsonÚloadsÚtextÚdebugÚerrorÚdumpsr)   )r   rl   rm   rn   Ú_tokenÚ_userÚ	_user_dirrT   r9   ÚurlÚretrG   ÚadataÚanonÚrespr   s   &&&&           €r   ro   ÚRHELUploadTarget.upload_sftp”   sÐ  ø€ ð
 ×Ñ×"Ñ" 4Ó(¨Õ+°4×3FÑ3FÓ3HÔHÜ‘7Ñ&Ó(Ð(ç‹Üð >ó ?ð ?àˆØˆØˆ	ð
 ×!×!Ð!ðAÜ3Ø×.Ñ.Ø×'Ñ'ó�ð &.×%>Ñ%>Ó%@�Ô"Ø××ÐØ�K‰K×Ñð !Ø!%×!;Ñ!;Ó!=Ð >ð@ô Að ×ÑÐ!9Õ9ˆØˆØ××ÐØ×1Ñ1Ó3ˆGÜ—-’- ¸bÔAˆCØ�‰ #Ô%äŸ
š
 3§8¡8Ó,¨ZÕ8�ÜŸš C§H¡HÓ-¨gÕ6�Ø% e WÐ-’	à—‘×!Ñ!Ø:¸3¿?¹?Ð:KÈ3Ø—x‘x“z�lð$ôð —‘×!Ñ!ð7õð
 # DÐ)ˆEÜ—=’= ¬4¯:ª:°eÓ+<ÀbÔIˆDØ×Ñ 3Ô&Ü—z’z $§)¡)Ó,�Ø˜ZÕ(�Ø˜g��Ø—‘× Ñ Ü˜˜e˜Wð %Mð Nó Oõð
 —‘×!Ñ!Ø?Ø×'Ñ'Ð(¨¨D¯I©I«K¨=ð:ô÷ —VÜ‘7Ñ&¨EØ09ð 'ó ;ð ;äÐKÓLÐLøôi ô ð %¬¨A«Ô.Ø—K‘K×$Ñ$ð:ôÿùð	ús   Á5 K4 Ë4L5Ë?+L0Ì0L5c                ó   € \         P                  P                  V4      pW P                  8¼  dO   V P                  P                  \        R \        V P                  4       R24      4       V P                  V n	        R# R# )zLSize of archive is bigger than Red Hat Customer Portal limit for uploads of z  via sos http upload. 
N)
ra   rb   ÚgetsizeÚ_max_size_requestr'   Úwarningr)   r   r+   r,   )r   rS   Úsizes   && r   Úcheck_file_too_bigÚ#RHELUploadTarget.check_file_too_bigâ   sp   € Ü�w‰w�‰˜wÓ'ˆð
 ×)Ñ)Ô)Ø�K‰K×ÑÜð *ä" 4×#9Ñ#9Ó:Ð;ð <-ð-ó .ôð #×/Ñ/ˆDŽOñ *r   c           	     óÞ  <€  V P                  4       P                  V P                  4      '       d   V P                  V4       \        SV `  V4      pV#   \         dŽ   pRpT P                  P                  T P                  4      '       g   h T P                  P                  \        RT RT P                   24      4       T P                  T n        \        ST `  T4      p Rp?T# Rp?ii ; i)zoOverride the base upload_archive to provide for automatic failover
from RHCP failures to the public RH dropbox
Fz0Upload to Red Hat Customer Portal failed due to z	. Trying N)r:   rZ   r7   r‡   r   Úupload_archiver6   r,   r'   rw   r)   r+   )r   rS   Úuploadedr9   r   s   &&  €r   rŠ   ÚRHELUploadTarget.upload_archiveñ   sØ   ø€ ð	7Ø×"Ñ"Ó$×/Ñ/°×0@Ñ0@×AÒAØ×'Ñ'¨Ô0Ü‘wÑ-¨gÓ6ˆHð ˆøô ô 		7ØˆHØ—?‘?×-Ñ-¨d×.>Ñ.>×?Ò?ØØ�K‰K×ÑÜÐDØ�C�y ×!2Ñ!2Ð 3ð5ó 6ôð #×/Ñ/ˆDŒOÜ‘wÑ-¨gÓ6ŒHØˆûð		7ús   ƒ.A ² A ÁC,ÁBC'Ã'C,)r>   r"   r,   )NNN)T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rN   rO   Úupload_target_nameÚupload_target_idr   r7   r+   Ú_upload_urlÚ_upload_methodr>   r„   r   r!   r-   r1   r:   r@   rU   rM   rQ   re   ro   r‡   rŠ   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r
   r
      s•   ù‡ € ðEÐð8€Nà0ÐØÐ÷Dð 2€KØ2€LØ€KØ€NØ€Mà"Ðò>õMò	Gòò2ò(+ôEò2ò
@ò
÷LMò\0÷õ r   r
   )ra   rs   Úsos.upload.targetsr   Úsos.utilitiesr   r   Úsos.policies.authr   Úsos.policies.distros.redhatr   Úsosr   r)   rR   rp   ÚImportErrorr
   © r   r   Ú<module>r       sM   ðó 
Û Ý +ß 8Ý 6Ý 2Ý ðÛØ€Oô
k�|ö køð	 ô Ø‚Oðús   ª= ½	A	ÁA	