File: //usr/lib/python3/dist-packages/samba/__pycache__/vgp_sudoers_ext.cpython-310.pyc
o
�/a� � @ s` d dl Z d dlmZ d dlmZ d dlmZ d dlmZm Z d dl
mZmZ G dd� de�Z
dS ) � N)�
gp_xml_ext)� b64encode)�NamedTemporaryFile)�Popen�PIPE)�visudo�introc @ s( e Zd Zdd� Z d dd�Zdd� ZdS )
�vgp_sudoers_extc C s dS )NzVGP/Unix Settings/Sudo Rights� )�selfr
r
�7/usr/lib/python3/dist-packages/samba/vgp_sudoers_ext.py�__str__ s zvgp_sudoers_ext.__str__�/etc/sudoers.dc C s� |D ]6\}}| j �|� t| �|v r3|t| � �� D ]\}}tj�|�r)t�|� | j �t| �|� q| j � � q|D �]$}|j
�r`| j �|j� d} tj�|j
| �}
| �
|
�}|s[q;|�d�}|�d�}
|
�d�D ]�}|�d�j}|�d�j}|�d�}g }|D ]
}|�|�d�� q�t|�d kr�d
�dd� |D ��}nd
}|�d�d k}|r�dnd}d||||f }t|�� ��� }| j �t| �|�}|�sZt}|d| 7 }t� �1}t|jd��
}|�|� W d � n1 s�w Y ttdd|jgttd��� }W d � n 1 �sw Y |d k�rRtdd|d��/}t|jd��
}|�|� W d � n 1 �s1w Y | j �t| �||j� W d � n 1 �sLw Y n| j �!d| � | j � � qjq;d S )N�7MACHINE/VGP/VTLA/Sudo/SudoersConfiguration/manifest.xml�
policysetting�data�
sudoers_entry�command�user�listelement� principalr �,c S �* g | ]}|j d dkr|jnd|j �qS ��typer z%s%%��attrib�text��.0�ur
r
r �
<listcomp>9 �
��z8vgp_sudoers_ext.process_group_policy.<locals>.<listcomp>�ALL�password�
NOPASSWD:� �%s ALL=(%s)%s %sz%s
�wz-cz-f)�stdout�stderr�gp_F)�prefix�delete�dirzSudoers apply "%s" failed)"�gp_db�set_guid�str�items�os�path�exists�unlinkr- �commit�
file_sys_path�name�join�parse�find�findallr �extend�lenr �encode�decode�retriever r �open�writer r r �wait�store�logger�warn)r �deleted_gpo_list�changed_gpo_list�sdir�guid�settings� attribute�sudoers�gpo�xmlr4 �xml_conf�policyr �entryr r �listelements�
principalsr �uname�
nopassword�np_entry�p�old_val�contents�fr( �sudo_validationr
r
r �process_group_policy s�
�����
����� ���z$vgp_sudoers_ext.process_group_policyc C s i }d}|j r�tj�|j |�}| �|�}|s|S |�d�}|�d�}|�d�D ]a}|�d�j} |�d�j}
|�d�}g }|D ]
}
|�|
�d�� q>t |�d krZd
�dd� |D ��}nd
}|�d�d k}|rgdnd}d||
|| f }t
| �|�� vrg |t
| �<