� u��g����dZddlZddlZddlZddlZddlZ ddlmZn #ddlmZYnxYwddlm Z ej e ��Z d�Z d�Zd d�ZdS) zPThis module wraps Cloud Shell's IMDS-like interface inside an OAuth2-like helper�N)�urlparse�)� decode_partc�h�tj�dd���d��S)N�AZUREPS_HOST_ENVIRONMENT�z cloud-shell)�os�environ�get� startswith���_/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/msal/cloudshell.py�_is_running_in_cloud_shellrs'�� �:�>�>�4�b� 9� 9� D� D�]� S� S�Src�P�ddg}|D]}|�|��r|cS�t|��}|js'|js |j�d��dS|jr?|j�d��rdnd}d�|j|j|��S|S)Nz(https://analysis.windows.net/powerbi/apiz4https://pas.windows.net/CheckMyAccess/Linux/.default�/rz//rz {}://{}{})r r�scheme�netloc�path�split�format)�scope�cloud_shell_supported_audiences�a�u�trailers r�_scope_to_resourcers���2�>�' �#�-���� � � �A� � � ��H�H�H� �����A� �8�$�A�H�$��v�|�|�C� � ��#�#��x�?��6�$�$�T�*�*� 2�C�C�� ��!�!�!�(�A�H�g�>�>�>� �Lrc �R�|�dt|pid�tt|�������ddi���}|jdkr�t �d|j��tj |j��� d i��}d �|� d ��|� d ��d �� ��D��Stj |j��}d}|dt|d��|� d|��d�}|pi� d|��} |d| krdd�| ��d �S|d�d��} ddd�} t!j��} d} dd|| dz| | d�|d<t#| ��dkr� tj t%| d����}|� dd��|� d d��d�} |d!|d"||d#|d$|� d%��p|� d&��p| d�|d<n1#t&$r$t �d'| d��YnwxYwt)jtj| ���d(�����d(��|d)<| d*|dd <|� d+��r |d+|d+<|S),Nz#http://localhost:50342/oauth2/token� )�resource�Metadata�true)�data�headersi,zCloud Shell IMDS error: %s�errorc��i|] \}}|�||�� Sr r )�.0�k�vs r� <dictcomp>z!_obtain_token.<locals>.<dictcomp>7s4�������A����1���r�code�message)r%�error_description�Bearer� access_token� expires_in� token_type)r/r0r1� broker_errorz>token_type {} is not supported by this version of Azure Portal�.�user� cloudshell)�uid�utidzcurrentuser@cloudshelli)�iss�sub�aud�exp�iat�preferred_username�id_token_claims�r�oid�tidr8r9r;r<r=� unique_namez Unable to decode jwt payload: %szutf-8� client_infor7� refresh_token)�post�dict�join�mapr� status_code�logger�debug�text�json�loadsr �items�intrr�time�lenr� ValueError�base64� b64encode�dumps�encode�decode)� http_client�scopes� client_idr#�resp�cs_error� imds_payload�BEARER�oauth2_response�expected_token_type�partsrC�nowr=� jwt_payloads r� _obtain_tokenre,s��� � � �-� � �J�B��X�X�c�"4�f�=�=�>�>�@�@�@��V�$� � � �D� ��3���� � �1�4�9�=�=�=��:�d�i�(�(�,�,�W�b�9�9�����\�\�&�)�)�!)���i�!8�!8�"�"��e�g�g���� ��:�d�i�(�(�L� �F�$�^�4��,�|�4�5�5�"�&�&�|�V�<�<� � �O�  �:�2�*�*�<��@�@���|�$�(;�;�;�#�!a�!h�!h�#�"%�"%��� � �� (� .� .�s� 3� 3�E��� � �K� �)�+�+�C�1������T�z��0� * �* �O�%�&� �5�z�z�Q��� G��*�[��q��%:�%:�;�;�K�#���u�f�5�5�#����|�<�<� ��K�#�5�)�"�5�)� �"�5�)�"�5�)�&1�o�o�6J�&K�&K�'*�"���}�5�5�'*�)� 2� 2�O�-� .� .��� G� G� G� �L�L�;�U�1�X� F� F� F� F� F� G����%+�%5� � �;���&�&�w�/�/�&1�&1�17������M�"�1<�F�0C�O�%�&�u�-�����(�(�I�+7��+H���(� �s�B"I6�6+J$�#J$)NN)�__doc__rTrM�loggingr rQr� urllib.parse�oauth2cli.oidcr� getLogger�__name__rJrrrer rr�<module>rls��� W�V� � � � � � � � ����� � � � � � � � �&�!�!�!�!�!�!�!��&�%�%�%�%�%�%�%�%����'�'�'�'�'�'� �� �8� $� $��T�T�T����$Q�Q�Q�Q�Q�Qs��)
Memory