File: //usr/lib/python3/dist-packages/samba/__pycache__/forest_update.cpython-310.pyc
o
�/aO � @ s, d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dlm Z d dl
mZ d dlm
Z
mZmZmZmZ dZd Zi d
d�dd
�dd�dd�dd�dd�dd�dd�dd�dd�dd�d d!�d"d#�d$d%�d&d'�d(d)�d*d+�i d,d-�d.d/�d0d1�d2d3�d4d5�d6d7�d8d9�d:d;�d<d=�d>d?�d@dA�dBdC�dDdE�dFdG�dHdI�dJdK�dLdM��i dNdO�dPdQ�dRdS�dTdU�dVdW�dXdY�dZd[�d\d]�d^d_�d`da�dbdc�ddde�dfdg�dhdi�djdk�dldm�dndo��dpdqdrdsdtdudvdwdxdydzd{d|d}�
�Ze
d~ededed ed�iZe
d�ed�ed�ed�ed�iZd�gZG d�d�� d�e�ZG d�d�� d�e�ZdS )�� N)�sd_utils)�
ndr_unpack�ndr_pack)�security)�SECINFO_DACL)�
setup_path)�DS_DOMAIN_FUNCTION_2008�DS_DOMAIN_FUNCTION_2008_R2�DS_DOMAIN_FUNCTION_2012�DS_DOMAIN_FUNCTION_2012_R2�DS_DOMAIN_FUNCTION_2016�- � �5 z$134428a8-0043-48a6-bcda-63310d9ec4dd�O z$21ae657c-6649-43c4-bbb3-7f184fdf58c1�P z$dca8f425-baae-47cd-b424-e3f6c76ed08b�Q z$a662b036-dbbe-4166-b4ba-21abea17f9cc�R z$9d17b863-18c3-497d-9bde-45ddb95fcb65�S z$11c39bed-4bee-45f5-b195-8da0e05b573a�T z$4664e973-cb20-4def-b3d5-559d6fe123e0�U z$2972d92d-a07a-44ac-9cb0-bf243356f345�V z$09a49cb3-6c54-4b83-ab20-8370838ba149�W z$77283e65-ce02-4dc3-8c1e-bf99b22527c2�X z$0afb7f53-96bd-404b-a659-89e65c269420�Y z$c7f717ef-fdbe-4b4b-8dfc-fa8b839fbcfa�Z z$00232167-f3a4-43c6-b503-9acb7a81b01c�[ z$73a9515b-511c-44d2-822b-444a33d3bd33�\ z$e0c60003-2ed7-4fd3-8659-7655a7e79397�] z$ed0c8cca-80ab-4b6b-ac5a-59b1d317e11f�^ z$b6a6c19a-afc9-476b-8994-61f5b14b3f05�_ z$defc28cd-6cb6-4479-8bcb-aabfb41e9713�` z$d6bd96d4-e66b-4a38-9c6b-e976ff58c56d�a z$bb8efc40-3090-4fa2-8a3f-7cd1d380e695�b z$2d6abe1b-4326-489e-920c-76d5337d2dc5�c z$6b13dfb5-cecc-4fb8-b28d-0505cea24175�d z$92e73422-c68b-46c9-b0d5-b55f9c741410�e z$c0ad80b4-8e84-4cc4-9163-2f84649bcc42�f z$992fe1d0-6591-4f24-a163-c820fcb7f308�g z$ede85f96-7061-47bf-b11b-0c0d999595b5�h z$ee0f3271-eb51-414a-bdac-8f9ba6397a39�i z$587d52e0-507e-440e-9d67-e6129f33bb68�j z$ce24f0f6-237e-43d6-ac04-1e918ab04aac�k z$7f77d431-dd6a-434f-ae4d-ce82928e498f�l z$ba14e1f6-7cd1-4739-804f-57d0ea74edf4�m z$156ffa2a-e07c-46fb-a5c4-fbd84a4e5cce�n z$7771d7dd-2231-4470-aa74-84a6f56fc3b6�o z$49b2ae86-839a-4ea0-81fe-9171c1b98e83�p z$1b1de989-57ec-4e96-b933-8279a8119da4�q z$281c63f0-2c9a-4cce-9256-a238c23c0db9�r z$4c47881a-f15a-4f6c-9f49-2742f7a11f4b�s z$2aea2dc6-d1d3-4f0c-9994-66c1da21de0f�t z$ae78240c-43b9-499e-ae65-2b6e0f0e202a�u z$261b5bba-3438-4d5c-a3e9-7b871e5f57f0�v z$3fb79c05-8ea1-438c-8c7a-81f213aa61c2�w z$0b2be39a-d463-4c23-8290-32186759d3b1�x z$f0842b44-bc03-46a1-a860-006e8527fccd�y z$93efec15-4dd9-4850-bc86-a1f2c8e2ebb9�z z$9e108d96-672f-40f0-b6bd-69ee1f0b7ac4�{ z$1e269508-f862-4c4a-b01f-420d26c4ff8c�} z$e1ab17ed-5efb-4691-ad2d-0424592c5755�~ z$0e848bd4-7c70-48f2-b8fc-00fbaa82e360� z$016f23f7-077d-41fa-a356-de7cfdb01797� z$49c140db-2de3-44c2-a99a-bab2e6d2ba81� z$e0b11c80-62c5-47f7-ad0d-3734a71b8312z$2ada1a2d-b02f-4731-b4fe-59f955e24f71z$b83818c1-01a6-4f39-91b7-a3bb581c3ae3z$bbbb9db0-4009-4368-8c40-6674e980d3c3z$f754861c-3692-4a7b-b2c2-d0fa28ed0b0bz$d32f499f-3026-4af0-a5bd-13fe5a331bd2z$38618886-98ee-4e42-8cf1-d9a2cd9edf8bz$328092FB-16E7-4453-9AB8-7592DB56E9C4z$3A1C887F-DF0A-489F-B3F2-2D0409095F6Ez$232E831F-F988-4444-8E3E-8A352E2FD411z$DDDDCF0C-BEC9-4A5A-AE86-3CFE6CC6E110z$A0A45AAC-5550-42DF-BB6A-3CC5C46B52F2z$3E7645F3-3EA5-4567-B35A-87630449C70Cz$E634067B-E2C4-4D79-B6E8-73C619324D5E)
� � � � � r � � � � � � � �N rB rM � � � � � �| c @ s e Zd ZdS )�ForestUpdateExceptionN)�__name__�
__module__�__qualname__� rY rY �5/usr/lib/python3/dist-packages/samba/forest_update.pyrU � s rU c @ s� e Zd ZdZ d6dd�Z d7dd�Zd d
� Zd8dd
�Zdd� Zdd� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� Zd.d/� Zd0d1� Zd2d3� Zd4d5� ZdS )9�ForestUpdatez2Check and update a SAM database for forest updatesFTc C s� ddl m} || _|| _|| _|| _d| _| j�� | _| j� � | _ | j�
� | _t�
|�| _t�|�� �| _| j�� | _| j�d�sEtd��| j�� | _| j�d�sUtd��i | _|td�| jd � d
S )a
:param samdb: LDB database
:param verbose: Show the ldif changes
:param fix: Apply the update if the container is missing
:param add_update_container: Add the container at the end of the change
:raise ForestUpdateException:
r )�read_ms_markdownFzCN=Operations,CN=ForestUpdatesz+Failed to add forest update container childz)CN=ActiveDirectoryUpdate,CN=ForestUpdatesz#Failed to add revision object childz/adprep/WindowsServerDocs/Forest-Wide-Updates.md)�out_dictN)� samba.ms_forest_updates_markdownr\ �samdb�fix�verbose�add_update_container�check_update_applied�get_config_basedn� config_dn� domain_dn�get_schema_basedn� schema_dnr �SDUtilsr �dom_sid�get_domain_sid�
domain_sid�forestupdate_container� add_childrU �revision_object�stored_ldifr )�selfr_ ra r` rb r\ rY rY rZ �__init__� s*
�zForestUpdate.__init__Nc C s� | j j| jdgtjd�}t| }|rt| }|d7 }nt}| �||� t| }t |d d d �}|rQ||k rS| j
sBtd||f ��| j �dt
| j�|f � dS dS dS )a
Apply all updates for a given old and new functional level
:param functional_level: constant
:param old_functional_level: constant
:param update_revision: modify the stored version
:raise ForestUpdateException:
�revision)�base�attrs�scope� r zERevision is not high enough. Fix is set to False.
Expected: %dGot: %dz:dn: %s
changetype: modify
replace: revision
revision: %d
N)r_ �searchro �ldb�
SCOPE_BASE�functional_level_to_max_update�
MIN_UPDATE�check_updates_range�functional_level_to_version�intr` rU �modify_ldif�str) rq �functional_level�old_functional_level�update_revision�res�expected_update�
min_update�expected_version�
found_versionrY rY rZ �check_updates_functional_level� s,
�
��
��z+ForestUpdate.check_updates_functional_levelc C s� |D ]M}|t k s|tkrtd��d| krdkr"n n| �|� qd| kr,dkr4n n| �|� qd| kr>dkrFn n| �|� qt| d| �|� qd S )
z�
Apply a list of updates which must be within the valid range of updates
:param iterator: Iterable specifying integer update numbers to apply
:raise ForestUpdateException:
�Update number invalid.r r r r>