HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/samba/__pycache__/schema.cpython-310.pyc
o

�Kya�'�@s�dZddlmZddlmZmZmZddlmZddl	m
Z
ddlmZddl
mZddlmZdd	lmZdd
lmZmZifdd�ZGd
d�de�Zdd�Zdd�Z			ddd�ZdS)z(Functions for setting up a Samba Schema.�)�	b64encode)�read_and_sub_file�substitute_var�check_all_substituted)�security)�read_ms_schema)�ndr_pack)�SamDB��
get_string)�dsdb)�
SCOPE_SUBTREE�SCOPE_ONELEVELcCsd}tj�||�}t|�S)Na�O:SAG:SAD:AI(OA;;CR;e12b56b6-0a95-11d1-adbb-00c04fd8d5cd;;SA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(A;CI;RPLCLORC;;;AU)(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ER)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;ER)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ER)S:(AU;SA;WPCCDCWOWDSDDTSW;;;WD)(AU;CISA;WP;;;WD)(AU;SA;CR;;;BA)(AU;SA;CR;;;DU)(OU;SA;CR;e12b56b6-0a95-11d1-adbb-00c04fd8d5cd;;WD)(OU;SA;CR;45ec5156-db7e-47bb-b53f-dbeb2d03c40f;;WD))r�
descriptor�	from_sddlr)�
domain_sid�name_map�sddl�sec�r�./usr/lib/python3/dist-packages/samba/schema.py�get_schema_descriptor$src@sjeZdZddddd�Z			ddd�Zed	d
��Zedd��Zd
d�Zdd�Z	dd�Z
dd�Zdd�ZdS)�Schema)z"MS-AD_Schema_2K8_R2_Attributes.txtzMS-AD_Schema_2K8_R2_Classes.txt�/)z0Attributes_for_AD_DS__Windows_Server_2008_R2.ldfz-Classes_for_AD_DS__Windows_Server_2008_R2.ldfr)z)AD_DS_Attributes__Windows_Server_2012.ldfz&AD_DS_Classes__Windows_Server_2012.ldf�8)z,AD_DS_Attributes__Windows_Server_2012_R2.ldfz)AD_DS_Classes__Windows_Server_2012_R2.ldf�E)�2008_R2_old�2008_R2�2012�2012_R2Ncs�ddlm}	|durt��}||_||_tddd�|_|dur&|j�|�t	|dtj
|d�|dtj
|d��|_dd��|durSd	��fd
d�|D��|_t
|jd|i�|_t|j�tt�|��}	t|d
�||	d��|_tt|���d�}
t|d�||
d��|_|dur�||_n�|d��|_|dur�|jd	�dd�|D��7_t|j��d�|_d|j|jf}|�||j|j�dS)Nr)�
setup_pathF)�
global_schema�am_rodczad-schema/%s�cSs6t|d��}|��Wd�S1swYdS)N�rb)�open�read)�file�	data_filerrr�	read_fileqs$�z"Schema.__init__.<locals>.read_file�c3s�|]	}t�|��VqdS�Nr
)�.0r'�r)rr�	<genexpr>vs��z"Schema.__init__.<locals>.<genexpr>�SCHEMADNz#provision_schema_basedn_modify.ldif)r/�
OBJVERSION�utf8zprovision_schema_basedn.ldif)r/�
DESCRIPTORz
prefixMap.txtcss�|]}d|VqdS)z%s
Nr)r,�maprrrr.�s�zdn: %s
prefixMap:: %s

)�samba.provisionr r�default_base_schema�base_schema�schemadnr	�ldb�set_invocation_idr�base_schemas�schema_data�joinrr�str�get_versionr�schema_dn_modifyrr�decode�
schema_dn_add�prefixmap_data�
set_from_ldif)�selfr�invocationidr7�files�override_prefixmap�additional_prefixmapr6r �schema_version�descr�prefixmap_ldifrr-r�__init__RsP
�
��
��zSchema.__init__cCsdS)z&Returns the default base schema to userrrrrrr5�szSchema.default_base_schemacCstj|dS)z=Returns the base schema's object version, e.g. 47 for 2008_R2�)rr:)r6rrrr>�szSchema.get_versioncCst�|j|||�dSr+)r�_dsdb_set_schema_from_ldifr8)rD�pf�df�dnrrrrC�szSchema.set_from_ldifcCs||jj|d�|j��z!|j�d�|jd}|j�|�|j�|j�|j�|j�Wn	|j���|j�	�dS)N)�urlzpdn: @ATTRIBUTES
linkID: INTEGER

dn: @INDEXLIST
@IDXATTR: linkID
@IDXATTR: attributeSyntax
@IDXGUID: objectGUID
z1objectGUID: 24e2ca70-b093-4ae8-84c0-2d7ac652a1b8
)
r8�connect�transaction_start�add_ldifrA�modify_ldifr?r;�transaction_cancel�transaction_commit)rD�
schemadb_pathrArrr�write_to_tmp_ldb�s
	�
zSchema.write_to_tmp_ldbcC�t|j|j�Sr+)�get_linked_attributesr7r8�rDrrr�linked_attributes��zSchema.linked_attributescCr[r+)�get_dnsyntax_attributesr7r8r]rrr�dnsyntax_attributes�r_zSchema.dnsyntax_attributescCst�|j||�Sr+)r� _dsdb_convert_schema_to_openldapr8)rD�target�mappingrrr�convert_to_openldap�szSchema.convert_to_openldap)NNNNNN)
�__name__�
__module__�__qualname__r:rL�staticmethodr5r>rCrZr^rarerrrrr@s&�
�C

rcCs�ddg}|jd|t|d�}i}tdt|��D])}dt||dd�d}|j||dtd�}|dur?t|�|t||d�<q|S)	N�linkID�lDAPDisplayNamezh(&(linkID=*)(!(linkID:1.2.840.113556.1.4.803:=1))(objectclass=attributeSchema)(attributeSyntax=2.5.5.1))��
expression�base�scope�attrsrzD(&(objectclass=attributeSchema)(linkID=%d)(attributeSyntax=2.5.5.1))r#)�basednrm�	attributero)�searchr�range�len�int�	searchoner
r=)r7�	schemaldbrp�res�
attributes�irmrcrrrr\�s&����r\cCsH|jd|tddgd�}g}tdt|��D]
}|�t||d��q|S)NzF(&(!(linkID=*))(objectclass=attributeSchema)(attributeSyntax=2.5.5.1))rjrkrlr)rsrrtru�appendr=)r7rxryrzr{rrrr`�s�r`�,cn=schema,cn=configuration,dc=example,dc=comNcCs*|dur	t��}nt�|�}t|||d�S)aOLoad schema for the SamDB from the AD schema files and samba4_schema.ldif

    :param schemadn: DN of the schema
    :param serverdn: DN of the server

    Returns the schema data loaded as an object, with .ldb being a
    new ldb with the schema loaded.  This allows certain tests to
    operate without a remote or local schema.
    N)r7rG)r�
random_sid�dom_sidr)r7�	domainsidrGrrr�ldb_with_schema�s

�r�)r}NN)�__doc__�base64r�sambarrr�samba.dcerpcr�samba.ms_schemar�	samba.ndrr�samba.samdbr	�samba.commonrrr8r
rr�objectrr\r`r�rrrr�<module>s&�