
    g                         S SK Jr  S SKrS SKJr  S SKJr  S SKJ	r	  S SK
JrJrJrJr   " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      rg)    N)SamDB)system_session)_get_user_realm_domain)CommandCommandErrorSuperCommandOptionc            	           \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/r    SS jrSrg)cmd_spn_list    zList spns of a given user.z%prog <user> [options]	sambaoptscredoptsversionopts-H--URL%LDB URL for database or target serverURLHhelptypemetavardestuserNc                    UR                  5       nUR                  U5      n[        U[        5       XvS9n[	        X5      u  pnU R
                  R                  U	S-   5        UR                  S[        R                  " U	5      -  [        R                  S/S9n[        U5      S:  a  US   R                  S5      nUbS  U R
                  R                  SUS   R                  -  5        U H!  nU R
                  R                  SU-  5        M#     g U R
                  R                  S	US   R                  -  5        g [        S
U-  5      e)Nsession_infocredentialslp
samaccountname=%sservicePrincipalName
expressionscopeattrsr   z1User %s has the following servicePrincipalName: 
z	 %s
z$User %s has no servicePrincipalName
User %s not found)get_loadparmget_credentialsr   r   r   outfwritesearchldbbinary_encodeSCOPE_SUBTREElengetdnr   )selfr   r   r   r   r   r    credssamcleaneduserrealmdomainresspnses                  2/usr/lib/python3/dist-packages/samba/netcmd/spn.pyruncmd_spn_list.run1   s3    ##%((,AN$4 %. (>d'H$V		d*+jj*S->->{-KK##,B+C  E s8a<q6::45D		HFII AIIOOIM2  		 G #A		!* + 2T9::     NNNN__name__
__module____qualname____firstlineno____doc__synopsisoptionsSambaOptionsCredentialsOptionsVersionOptionstakes_optiongroupsr	   strtakes_options
takes_argsr>   __static_attributes__rA   r@   r=   r   r       sh    $'H ))..-- 	tW#JS	2M
 J;r@   r   c            	           \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS/r    SS jrSrg)cmd_spn_addO   zCreate a new spn.z%prog <name> <user> [options]r   r   r   r   r   r   r   namer   Nc                    UR                  5       nUR                  U5      n[        U[        5       XS9n	U	R	                  S[
        R                  " U5      -  [
        R                  S9n
[        U
5      S:w  a  [        SU-  5      e[        X)5      u  pnU	R	                  S[
        R                  " U5      -  [
        R                  S/S9n
[        U
5      S:  a  U
S   R                    [
        R                  " 5       nU
S   R                  S5      n/ nS	n[
        R                  nUbD  U H.  n[        U5      U:X  a  S
nUR!                  [        U5      5        M0     [
        R"                  nUR!                  U5        U
S   R                  Ul        [
        R$                  " UUS5      US'   U(       d  U	R'                  U5        g [        SU< SU< 35      e[        SU-  5      e)Nr   servicePrincipalName=%s)r%   r&   r   z5Service principal %s already affected to another userr"   r#   r$   FTzService principal z already affected to r(   )r)   r*   r   r   r-   r.   r/   r0   r1   r   r   r3   Messager2   FLAG_MOD_ADDrO   appendFLAG_MOD_REPLACEMessageElementmodify)r4   rV   r   r   r   r   r   r    r5   r6   r:   r7   r8   r9   msgr;   tabfoundflagr<   s                       r=   r>   cmd_spn_add.run_   s    ##%((,AN$4 %.jj033D3DT3JJ##  % s8q=  ;=A B C C (>d'H$Vjj*S->->{-KK##,B+C  E s8a<FII++-Cq6::45DCE##DA1v~ $JJs1v&  ++JJtVYYCF*-*<*<S$=S+UC&'

3"8<d$D E E 2T9::r@   rA   rB   rC   rA   r@   r=   rT   rT   O   sk    .H ))..-- 	tW#JS	2M &!J $*;r@   rT   c            	           \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS/r  SS jrSrg)cmd_spn_delete   zDelete a spn.z%prog <name> [user] [options]r   r   r   r   r   r   r   rV   zuser?Nc                    UR                  5       nUR                  U5      n[        U[        5       XS9n	U	R	                  S[
        R                  " U5      -  [
        R                  SS/S9n
[        U
5      S:  GaR  S nUbR  [        U5      u  pnU
 H'  n[        US   5      R                  5       U:X  d  M%  UnM)     Uc  [        SU< SU< 35      eON[        U
5      S	:w  a:  S
nU
 H  nU< S[        UR                  5      < 3nM!     [        SU< SU< 35      eU
S   n[
        R                  " 5       nUR                  S5      n/ nUbD  U H.  n[        U5      U:w  d  M  UR!                  [        U5      5        M0     [
        R"                  nUR                  Ul        [
        R$                  " UWS5      US'   U	R'                  U5        g [        SU-  5      e)Nr   rX   r#   samAccountNamer$   r   zUnable to find user z
 with spn     r!   zMore than one user has the spn zA and no specific user was specified, list of users with this spn:z!Service principal %s not affected)r)   r*   r   r   r-   r.   r/   r0   r1   r   rO   lowerr   r3   rY   r2   r[   r\   r]   r^   )r4   rV   r   r   r   r   r   r    r5   r6   r:   resultr7   r8   r9   elemlistUserrr_   r;   r`   r<   rb   s                          r=   r>   cmd_spn_delete.run   s   ##%((,AN$4 %.jj033D3DT3JJ##)+;<  > s8a<F/Ed/K,VD4 01288:kI!%   >&48$(@ A A " s8q=!H /7QTT#C !&>BH(N O O !VF++-C::45DCA1v~

3q6*  ++YYCF*-*<*<S$=S+UC&'JJsOBTIJJr@   rA   )NNNNNrC   rA   r@   r=   re   re      sf    .H ))..-- 	tW#JS	2M
 '"JDH,Kr@   re   c                   X    \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   Sr	g)cmd_spn   z(Service Principal Name (SPN) management.addlistdeleterA   N)
rD   rE   rF   rG   rH   subcommandsrT   r   re   rR   rA   r@   r=   rr   rr      s/    2K$K&.K*,Kr@   rr   )samba.getoptgetoptrJ   r.   samba.samdbr   
samba.authr   samba.netcmd.commonr   samba.netcmdr   r   r   r	   r   rT   re   rr   rA   r@   r=   <module>r~      sU   &  
  % 6 ,;7 ,;^:;' :;z=KW =K@-l -r@   