
    Pqh9+                     D   d Z ddlmZ ddlZddlZddlZddlZ ej                  e      Z		 ddl
Z
 e
j                  d         G d de      Z G d d	e      Z G d
 d      Zd Zd ZddZd Zd Z	 	 ddZ	 	 	 	 	 ddZ	 ddZddZd Zy# eef$ r	  ed      w xY w)zThis module is an adaptor to the underlying broker.
It relies on PyMsalRuntime which is the package providing broker's functionality.
    )EventNc                 <   t        j                  j                  t        j                  t         j                  j
                  t        j                  t         j                  j                  t        j                  ij                  |t        j                        |       S N)	pymsalruntimeLogLevelTRACEloggerdebugDEBUGFATALcriticalget)messagelevels     L/srv/www/ollama/chat-ollama/venv/lib/python3.12/site-packages/msal/broker.py<lambda>r      se    $$fll$$fll
 	$$fooD
 #eV\\
"7D,     zFYou need to install dependency by: pip install "msal[broker]>=1.20,<2"c                       e Zd Zy)RedirectUriErrorN__name__
__module____qualname__ r   r   r   r          r   r   c                       e Zd Zy)TokenTypeErrorNr   r   r   r   r   r   "   r   r   r   c                       e Zd Zd Zd Zy)_CallbackDatac                 0    t               | _        d | _        y r   )r   signalresult)selfs    r   __init__z_CallbackData.__init__'   s    gr   c                 F    | j                   j                          || _        y r   )r!   setr"   )r#   r"   s     r   completez_CallbackData.complete+   s    r   N)r   r   r   r$   r'   r   r   r   r   r   &   s    r   r   c                 B   | j                         }d|v sd|v rt        dj                  |            ddj                  || j                         | j	                         | j                               | j                         | j	                         | j                         dS )NAADSTS50011AADSTS7000218zMsalRuntime won't work unless this one more redirect_uri is registered to current app: ms-appx-web://Microsoft.AAD.BrokerPlugin/{}broker_errorz'{}. Status: {}, Error code: {}, Tag: {})errorerror_description_broker_status_broker_error_code_broker_tag)get_contextr   format
get_statusget_error_codeget_tag)r,   	client_idcontexts      r   _convert_errorr8   0   s    !GW$')::@&:KM 	M   GMM 4 4 6I  **,#224}}

 

r   c                 6   t               }t        j                  | ||fd       |j                  j	                          |j
                  j                         }|r!t        j                  dt        |d             y|j
                  j                         }|r|S y)zFReturn an instance of MSALRuntimeAccount, or log error and return Nonec                 $    |j                  |       S r   r'   r"   callback_datas     r   r   z%_read_account_by_id.<locals>.<lambda>N       M4J4J64R r   zread_account_by_id() error: %sN)r   r   read_account_by_idr!   waitr"   	get_errorr	   r
   r8   get_account)
account_idcorrelation_idr=   r,   accounts        r   _read_account_by_idrF   H   s    !OM$$%2R

   **,E5~eT7RS""..0Gr   c                 h   | j                         }|j                  dd        | j                         }|rt        t	        ||      |      S | j                         r#t        j                  | j                               ni }| j                         }|sJ d       | j                         | j                         t        t        j                               z
  | j                         ||j                         |j                         |xs ddj!                         D ci c]
  \  }}|r|| }	}}|	d   j#                  d      }
|	d   j%                         d	k(  r"|
s t'        d
j)                  |	d   d d             | j+                         }|rdj-                  |      |	d<   t        |	|      S c c}}w )Nwam_telemetry)_msalruntime_telemetryz*Account is expected to be always availableBearer)access_token
expires_inid_tokenid_token_claimsclient_info_account_id
token_typerK   AAAArQ   zssh-certz'Broker could not get an SSH Cert: {}...    scope)get_telemetry_datapoprA   dictr8   get_id_tokenjsonloadsrB   get_access_tokenget_access_token_expiry_timeinttimeget_raw_id_tokenget_client_infoget_account_iditems
startswithlowerr   r2   get_granted_scopesjoin)r"   r6   expected_token_type	telemetryr,   rN   rE   kvreturn_valuelikely_a_certgranted_scopess               r   _convert_resultro   [   s   ))+IMM/4(EN5)4YWW;A;N;N;Pdjj!4!4!67VXO  "G@@@7 //199;c$))+>NN++-*..0--/#/x&
 %'TQ  qD L  !0;;FCML!'')Z7FMM(!,. / 	/..0N # 8WY??!s   F.c                  <    t        t        j                               S r   )struuiduuid4r   r   r   _get_new_correlation_idrt   x   s    tzz|r   c                 (    | j                  dd       y )Nmsal_request_typeconsumer_passthrough)set_additional_parameter)paramss    r   _enable_msa_ptrz   |   s    
##$79OPr   c                    t        j                  ||       }|j                  |       |r|j                  |       t	               }|j                         D ]#  \  }	}
|
	|j                  |	t        |
             % |rt        |       t        j                  ||xs
 t               |fd       |j                  j                          t        |j                  ||j                  d            S )Nc                 $    |j                  |       S r   r;   r<   s     r   r   z"_signin_silently.<locals>.<lambda>   r>   r   rQ   rh   )r   MSALRuntimeAuthParametersset_requested_scopesset_decoded_claimsr   rc   rx   rq   rz   signin_silentlyrt   r!   r@   ro   r"   r   )	authorityr6   scopesrD   claimsenable_msa_ptkwargsry   r=   rj   rk   s              r   _signin_silentlyr      s     44Y	JF
'!!&)!OM 71=++As1v67 v!!313%2RT iVZZ=UW Wr   c	                    t        j                  ||       }
|
j                  |       |
j                  d       |r5|dk(  r|r.d }t        j                  d       nt        j                  d|       ||
j                  dd       |rt        |
       |	j                         D ]#  \  }}|	|
j                  |t        |             % |r|
j                  |       t               }t        j                  |xs* t        j                         xs t        j                         |
|xs
 t               ||fd       |j                   j#                          t%        |j&                  ||	j)                  d      	      S )
Nplaceholderselect_accountzKUsing both select_account and login_hint is ambiguous. Ignoring login_hint.z)prompt=%s is not supported by this modulemsal_gui_threadtruec                 $    |j                  |       S r   r;   r<   s     r   r   z'_signin_interactively.<locals>.<lambda>   r>   r   rQ   r}   )r   r~   r   set_redirect_urir	   warningrx   rz   rc   rq   r   r   signin_interactivelyget_console_windowget_desktop_windowrt   r!   r@   ro   r"   r   )r   r6   r   parent_window_handleprompt
login_hintr   rD   r   r   ry   rj   rk   r=   s                 r   _signin_interactivelyr      sQ    44Y	JF
'
M*%% "
lmNNFO#''(96Bv 71=++As1v67 !!&)!OM&&h @ @ BhmFfFfFh313%2RT iVZZ=UW Wr   c                    |xs
 t               }t        ||      }|y t        j                  ||       }|j	                  |       |r|j                  |       |j                         D ]#  \  }	}
|
	|j                  |	t        |
             % t               }t        j                  ||||fd       |j                  j                          t        |j                  ||j                  d            S )Nc                 $    |j                  |       S r   r;   r<   s     r   r   z)_acquire_token_silently.<locals>.<lambda>   r>   r   rQ   r}   )rt   rF   r   r~   r   r   rc   rx   rq   r   acquire_token_silentlyr!   r@   ro   r"   r   )r   r6   rC   r   r   rD   r   rE   ry   rj   rk   r=   s               r   _acquire_token_silentlyr      s    
 $@'>'@N!*n=G44Y	JF
'!!&) 71=++As1v67 "OM((%2R	T
 iVZZ=UW Wr   c                    |xs
 t               }t        ||      }|y t               }t        j                  | |||fd       |j
                  j                          |j                  j                         }|rt        ||       S y )Nc                 $    |j                  |       S r   r;   r<   s     r   r   z#_signout_silently.<locals>.<lambda>   r>   r   )
rt   rF   r   r   signout_silentlyr!   r@   r"   rA   r8   )r6   rC   rD   rE   r=   r,   s         r   _signout_silentlyr      s    #@'>'@N!*n=G!OM""%2R	T
   **,EeY// r   c                  .    t        j                  d       y )N   )r   set_is_pii_enabledr   r   r   _enable_pii_logr      s    $$Q'r   r   )NNF)NNNNF)NN)__doc__	threadingr   rZ   loggingr_   rr   	getLoggerr   r	   r   register_logging_callbackImportErrorAttributeError
ValueErrorr   r   r   r8   rF   ro   rt   rz   r   r   r   r   r   r   r   r   <module>r      s         
		8	$`+M++ -, - 	z 		Z 	 
0&@:Q
 CGW4 ,W` OSW60 (u 	^$ ` ^
__`s   B B