
    b                     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	 d dl
mZmZ d dlmZ  G d d	e          ZdS )
    N)
gp_xml_ext)	b64encode)NamedTemporaryFile)PopenPIPE)visudointro)logc                   $    e Zd Zd Z	 ddZd ZdS )vgp_sudoers_extc                     dS )NzVGP/Unix Settings/Sudo Rights )selfs    :/usr/lib/python3/dist-packages/samba/gp/vgp_sudoers_ext.py__str__zvgp_sudoers_ext.__str__   s    ..    /etc/sudoers.dc           	      ~   |D ]\  }}| j                             |           t          |           |v r|t          |                                                    D ]`\  }}t          j                            |          rt	          j        |           | j                             t          |           |           a| j         	                                 |D ]d}|j
        rY| j                             |j                   d}	t          j                            |j
        |	          }
|                     |
          }|si|                    d          }|                    d          }|                    d          D ]}|                    d          j        }|                    d          j        }|                    d          }g }|D ]*}|                    |                    d                     +t%          |          d	k    r d
                    d |D                       }nd}|                    d          d u }|rdnd}|d|d|d|}t'          |                                                                          }| j                             t          |           |          }|sit.          }|d|z  z  }t1                      5 }t3          |j        d          5 }|                    |           d d d            n# 1 swxY w Y   t7          t8          dd|j        gt:          t:                                                    }d d d            n# 1 swxY w Y   |d	k    rt1          dd|          5 }t3          |j        d          5 }|                    |           d d d            n# 1 swxY w Y   | j                             t          |           ||j                   d d d            n# 1 swxY w Y   ntA          j!        d|           | j         	                                 fd S )N7MACHINE/VGP/VTLA/Sudo/SudoersConfiguration/manifest.xmlpolicysettingdatasudoers_entrycommanduserlistelement	principalr   ,c                 R    g | ]$}|j         d          dk    r|j        n	d|j        z  %S typer   z%s%%attribtext.0us     r   
<listcomp>z8vgp_sudoers_ext.process_group_policy.<locals>.<listcomp>:   sL     *F *F *F56 56HV4D4N4N!&&!'!&*F *F *Fr   ALLpassword
 NOPASSWD:  ALL=() z%s
wz-cz-f)stdoutstderrgp_F)prefixdeletedirzSudoers apply failed)"gp_dbset_guidstritemsospathexistsunlinkr4   commitfile_sys_pathnamejoinparsefindfindallr#   extendlenr   encodedecoderetriever	   r   openwriter   r   r   waitstorer
   error)r   deleted_gpo_listchanged_gpo_listsdirguidsettings	attributesudoersgpoxmlr;   xml_confpolicyr   entryr   r   listelements
principalsr   uname
nopasswordnp_entrypold_valcontentsfr/   sudo_validations                                r   process_group_policyz$vgp_sudoers_ext.process_group_policy   s<   . 	  	 ND(J%%%4yyH$$*23t99*=*C*C*E*E < <&Iww~~g.. +	'***J%%c$ii;;;;J# /	( /	(C  .(
##CH---Ow||C$5s;;::d++ !77{{6**!\\/:: %( %(E#jj338G ::f--2D#(==#?#?L!#J'3 L L"))+*=*=k*J*JKKKK:** # *F *F:D*F *F *F !G !G !&!&J!7!74!?J/9A||rH.3eeTTT888WWMA )!((** 5 5 < < > >I"j11#d))YGGG" A#( FQJ./11 IQ!%afc!2!2 2a ! 1 1 12 2 2 2 2 2 2 2 2 2 2 2 2 2 2 %*64qv*F/3D%B %B %BBF$&& ,I I I I I I I I I I I I I I I +a//!35;@8<"> "> "> 9AB%)!&#%6%6 !6!$%GGH$5$5$5!6 !6 !6 !6 !6 !6 !6 !6 !6 !6 !6 !6 !6 !6 !6 $
 0 0T1:12!9 !9 !99 9 9 9 9 9 9 9 9 9 9 9 9 9 9  I&<a@@@J%%''''_/	( /	(sl   M*L	 MLML?MM#&M#O?N:	.O?:N>>O?N>1O??PPc                    i }d}|j         rt          j                            |j         |          }|                     |          }|s|S |                    d          }|                    d          }|                    d          D ]7}|                    d          j        }	|                    d          j        }
|                    d          }g }|D ]*}|                    |                    d                     +t          |          d	k    r d
                    d |D                       }nd}|                    d          d u }|rdnd}|d|
d|d|	}t          |           |                                vrg |t          |           <   |t          |                                        |           9|S )Nr   r   r   r   r   r   r   r   r   r   c                 R    g | ]$}|j         d          dk    r|j        n	d|j        z  %S r   r!   r$   s     r   r'   z(vgp_sudoers_ext.rsop.<locals>.<listcomp>k   sL     &B &B &B12 120@F0J0Jaff#af_&B &B &Br   r(   r)   r*   r+   r,   r-   r.   )r?   r:   r;   rA   rB   rC   rD   r#   rE   rF   r8   keysappend)r   rV   outputrW   r;   rX   rY   r   rZ   r   r   r[   r\   r   r]   r^   r_   r`   s                     r   rsopzvgp_sudoers_ext.rsopY   s   G 	,7<< 1377Dzz$''H ]]?33F;;v&&Do66 , ,**Y//4zz&)).$}}];;
#/ H HK%%k&9&9+&F&FGGGGz??Q&&HH &B &B6@&B &B &B C CEE "E"ZZ
33t;
+5=<<2*/%%xxxIt99FKKMM11(*F3t99%s4yy!((++++r   N)r   )__name__
__module____qualname__r   re   rk   r   r   r   r   r      sL        / / / ":( :( :( :(x    r   r   )r:   samba.gp.gpclassr   base64r   tempfiler   
subprocessr   r   samba.gp.gp_sudoers_extr   r	   samba.gp.util.loggingr
   r   r   r   r   <module>ru      s   " 
			 ' ' ' ' ' '       ' ' ' ' ' ' " " " " " " " " 1 1 1 1 1 1 1 1 % % % % % %\ \ \ \ \j \ \ \ \ \r   