
    Id                         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y)    N)SamDB)system_session)_get_user_realm_domain)CommandCommandErrorSuperCommandOptionc                       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y)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                    |j                         }|j                  |      }t        |t               ||      }t	        ||      \  }	}
}| j
                  j                  |	dz          |j                  dt        j                  |	      z  t        j                  dg      }t        |      dkD  r|d   j                  d      }|Q| j
                  j                  d|d   j                  z         |D ]   }| j
                  j                  d|z         " y | j
                  j                  d	|d   j                  z         y 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 %". (>dC'H$eV		d*+jj*S->->{-KK##,B+C  E s8a<q6::45D		HFII  3AIIOOIM2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       sh    $'H ))..-- 	tW#JS	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y)cmd_spn_addzCreate a new spn.z%prog <name> <user> [options]r   r   r   r   r   r   r   namer   Nc                    |j                         }|j                  |      }t        |t               ||      }	|	j	                  dt        j                  |      z  t
        j                        }
t        |
      dk7  rt        d|z        t        ||	      \  }}}|	j	                  dt        j                  |      z  t
        j                  dg      }
t        |
      dkD  r|
d   j                   t        j                         }|
d   j                  d      }g }d	}t
        j                  }|A|D ],  }t        |      |k(  rd
}|j!                  t        |             . t
        j"                  }|j!                  |       |
d   j                  |_        t        j$                  ||d      |d<   |s|	j'                  |       y 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_   s    ##%((,AN$4 %".jj033D3DT3JJ##  % s8q=  ;=A B C C (>dC'H$eV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>   r?   r@   rN   r>   r<   rP   rP   O   sk    .H ))..-- 	tW#JS	2M &!J $*;r>   rP   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y)cmd_spn_deletezDelete a spn.z%prog <name> [user] [options]r   r   r   r   r   r   r   rQ   zuser?Nc                    |j                         }|j                  |      }t        |t               ||      }	|	j	                  dt        j                  |      z  t
        j                  ddg      }
t        |
      dkD  r<d }|Kt        |      \  }}}|
D ]$  }t        |d         j                         |k(  s#|}& |Xt        d|d|      t        |
      d	k7  r4d
}|
D ]  }|dt        |j                        } t        d|d|      |
d   }t        j                         }|j                  d      }g }|@|D ]+  }t        |      |k7  s|j!                  t        |             - t
        j"                  }|j                  |_        t        j$                  |d      |d<   |	j'                  |       y 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   s   ##%((,AN$4 %".jj033D3DT3JJ##)+;<  > s8a<F/Ed/K,eV &D4 01288:kI!%& >&48$(@ A A s8q=!H  D/7QTT#CD&>BH(N O O !VF++-C::45DC +A1v~

3q6*+ ++YYCF*-*<*<S$=S+UC&'JJsOBTIJJr>   )NNNNNr@   rN   r>   r<   r_   r_      sf    .H ))..-- 	tW#JS	2M
 '"JDH,Kr>   r_   c                   P    e Zd ZdZi Z e       ed<    e       ed<    e       ed<   y)cmd_spnz(Service Principal Name (SPN) management.addlistdeleteN)rA   rB   rC   rD   subcommandsrP   r   r_   rN   r>   r<   rj   rj      s/    2K$K&.K*,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      sU   &  
  % 6 ,;7 ,;^:;' :;z=KW =K@-l -r>   