
    b                         d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZ  G d de          Z G d d	e          Z G d
 de          Z G d de          ZdS )    N)SamDB)system_session)_get_user_realm_domain)CommandCommandErrorSuperCommandOptionc                   z    e Zd ZdZdZej        ej        ej        dZ	 e
dddedd	          gZd
gZ	 	 	 	 ddZdS )cmd_spn_listz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                    |                                 }|                    |          }t          |t                      ||          }t	          ||          \  }	}
}| j                            |	dz              |                    dt          j	        |	          z  t          j
        dg          }t          |          dk    r|d                             d          }|L| j                            d|d         j        z             |D ]}| j                            d|z              d S | j                            d	|d         j        z             d S t          d
|z            )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runzcmd_spn_list.run1   s    ##%%((,,AN$4$4 %". . . (>dC'H'H$eV	d*+++jj*S->{-K-KK#,B+C  E E s88a<<q6::455D	HFI    3 3AIOOIM22223 3 	 G #A	!* + + + + + 2T9:::    NNNN__name__
__module____qualname____doc__synopsisoptionsSambaOptionsCredentialsOptionsVersionOptionstakes_optiongroupsr	   strtakes_options
takes_argsr=    r>   r<   r   r       s        $$'H ).-  	tW#JS	2 	2 	2M
 J; ; ; ; ; ;r>   r   c                   |    e Zd ZdZdZej        ej        ej        dZ	 e
dddedd	          gZd
dgZ	 	 	 	 ddZdS )cmd_spn_addzCreate a new spn.z%prog <name> <user> [options]r   r   r   r   r   r   r   namer   Nc                 2   |                                 }|                    |          }t          |t                      ||          }	|	                    dt          j        |          z  t
          j                  }
t          |
          dk    rt          d|z            t          ||	          \  }}}|	                    dt          j        |          z  t
          j        dg          }
t          |
          dk    r|
d         j         t          j                    }|
d                             d          }g }d	}t
          j        }|H|D ]9}t          |          |k    rd
}|                    t          |                     :t
          j        }|                    |           |
d         j        |_        t          j        ||d          |d<   |s|	                    |           d S t          d|d|          t          d|z            )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.   r/   r0   r   r   r2   Messager1   FLAG_MOD_ADDrK   appendFLAG_MOD_REPLACEMessageElementmodify)r3   rQ   r   r   r   r   r   r   r4   r5   r9   r6   r7   r8   msgr:   tabfoundflagr;   s                       r<   r=   zcmd_spn_add.run_   s6    ##%%((,,AN$4$4 %". . .jj033DT3J3JJ#  % % s88q==  ;=A B C C C (>dC'H'H$eVjj*S->{-K-KK#,B+C  E E s88a<<FII+--Cq6::455DCE#D ' 'A1vv~~ $JJs1vv&&&&+JJtVYCF*-*<S$=S+U +UC&' E

3"l8<dd$D E E E 2T9:::r>   r?   r@   rN   r>   r<   rP   rP   O   s        .H ).-  	tW#JS	2 	2 	2M &!J $*; *; *; *; *; *;r>   rP   c                   x    e Zd ZdZdZej        ej        ej        dZ	 e
dddedd	          gZd
dgZ	 	 ddZdS )cmd_spn_deletezDelete a spn.z%prog <name> [user] [options]r   r   r   r   r   r   r   rQ   zuser?Nc                    |                                 }|                    |          }t          |t                      ||          }	|	                    dt          j        |          z  t
          j        ddg          }
t          |
          dk    r_d }|]t          |          \  }}}|
D ]/}t          |d                                                   |k    r|}0|t          d|d|          nPt          |
          d	k    r5d
}|
D ]}|dt          |j                  }t          d|d|          |
d         }t          j                    }|                    d          }g }|F|D ]7}t          |          |k    r"|                    t          |                     8t
          j        }|j        |_        t          j        ||d          |d<   |	                    |           d S t          d|z            )Nr   rS   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.   r/   r0   r   rK   lowerr   r2   rT   r1   rV   rW   rX   rY   )r3   rQ   r   r   r   r   r   r   r4   r5   r9   resultr6   r7   r8   elemlistUserrrZ   r:   r[   r;   r]   s                          r<   r=   zcmd_spn_delete.run   sK   ##%%((,,AN$4$4 %". . .jj033DT3J3JJ#)+;<  > > s88a<<F/Ed/K/K,eV & &D4 012288::kII!%>&,48DD$$(@ A A A " s88q==!H  D D/7xxQT#C&,>BddHH(N O O O !VF+--C::455DC + +A1vv~~

3q66***+YCF*-*<S$=S+U +UC&'JJsOOOOOBTIJJJr>   )NNNNNr@   rN   r>   r<   r_   r_      s        .H ).-  	tW#JS	2 	2 	2M
 '"JDH,K ,K ,K ,K ,K ,Kr>   r_   c                   d    e Zd ZdZi Z e            ed<    e            ed<    e            ed<   dS )cmd_spnz(Service Principal Name (SPN) management.addlistdeleteN)rA   rB   rC   rD   subcommandsrP   r   r_   rN   r>   r<   rj   rj      sM        22K$K&,..K*N,,Kr>   rj   )samba.getoptgetoptrF   r-   samba.samdbr   
samba.authr   samba.netcmd.commonr   samba.netcmdr   r   r   r	   r   rP   r_   rj   rN   r>   r<   <module>ru      sQ  &       



       % % % % % % 6 6 6 6 6 6           ,; ,; ,; ,; ,;7 ,; ,; ,;^:; :; :; :; :;' :; :; :;z=K =K =K =K =KW =K =K =K@- - - - -l - - - - -r>   