+
    4Ssi*)                         R t ^ RIHt ^ RIHtHtHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHtHt RR lt ! R R]4      tR tR tRR ltR
# )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)OID_COMPARATOR_ANDSCOPE_SUBTREESCOPE_ONELEVELNc                 f    Vf   / pRp\         P                  P                  W 4      p\        V4      # )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;;RO)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;RO)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;RO)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secs   &&  ./usr/lib/python3/dist-packages/samba/schema.pyget_schema_descriptorr   $   s7    AD. 


'
'
9CC=    c                      a  ] tR t^Ct o RRRRRRRRRRRR/tRR lt]R	 4       t]R
 4       tR t	R t
R tR tR tRtV tR# )Schema2008_R2_old2008_R220122012_R220162019Nc                  a ^ RI Hp  Vf   \        P                  4       pWpn        W0n        \        RRR7      V n        Ve   V P                  P                  V4       \        V! R\        P                  V,          ^ ,          ,          4      V! R\        P                  V,          ^,          ,          4      4      V n        R oVe!   RP                  V3R lV 4       4      V n        \        V P                  R	V/4      V n        \        V P                  4       \        \        P!                  V4      4      p	\#        V! R
4      R	VRV	/4      V n        \'        \)        V4      4      P+                  R4      p
\#        V! R4      R	VRV
/4      V n        Ve   WPn        MS! V! R4      4      V n        Ve0   V ;P.                  RP                  R V 4       4      ,          un        \'        V P.                  4      P+                  R4      V n        RV P
                  : RV P.                  : R2pV P1                  WP                  V P
                  4       R# )    )
setup_pathNF)global_schemaam_rodczad-schema/%sc                     \        V R 4      ;_uu_ 4       pVP                  4       uuRRR4       #   + '       g   i     R# ; i)rbN)openread)file	data_files   & r   	read_file"Schema.__init__.<locals>.read_filez   s*    dD!!Y ~~' "!!!s	   0A	 c              3   F   <"   T F  p\        S! V4      4      x  K  	  R # 5iNr
   ).0r+   r-   s   & r   	<genexpr>"Schema.__init__.<locals>.<genexpr>   s$      ':384 (2)D/'B'B38s   !SCHEMADNz#provision_schema_basedn_modify.ldif
OBJVERSIONutf8zprovision_schema_basedn.ldif
DESCRIPTORzprefixMap.txtc              3   4   "   T F  pR V,          x  K  	  R# 5i)z%s
N )r2   maps   & r   r3   r4      s     *XCWC6C<<CWs   zdn: z
prefixMap:: z

)samba.provisionr$   r   default_base_schemabase_schemaschemadnr	   ldbset_invocation_idr   base_schemasschema_datajoinr   r   strget_versionr   schema_dn_modifyr   r   decodeschema_dn_addprefixmap_dataset_from_ldif)selfr   invocationidr?   filesoverride_prefixmapadditional_prefixmapr>   r$   schema_versiondescrprefixmap_ldifr-   s   &&&&&&&&    @r   __init__Schema.__init__[   s    	/	  446K&  ue<#HH&&|4)~(;(;K(H(KKL~(;(;K(H(KKLN	( !ww ':38':  :D *$*:*:+5x*@Bd../V//<= 1<=<@!B /
;<CCFK.56<79 )"4"+J,G"HD+277*XCW*X#XX'(;(;<CCFK :>H[H[\>+;+;T]]Kr   c                     R# )z&Returns the default base schema to user   r:   r:   r   r   r=   Schema.default_base_schema   s     r   c                >    \         P                  V ,          ^,          # )z=Returns the base schema's object version, e.g. 47 for 2008_R2)r   rB   )r>   s   &r   rF   Schema.get_version   s     "";/22r   c                J    \         P                  ! V P                  WV4       R # r1   )r   _dsdb_set_schema_from_ldifr@   )rL   pfdfdns   &&&&r   rK   Schema.set_from_ldif   s    ''""=r   c                   V P                   P                  VR 7       V P                   P                  4         V P                   P                  R4       V P                  R,           pV P                   P                  V4       V P                   P                  V P                  4       V P                   P                  V P                  4       V P                   P                  4        R#    T P                   P                  4        h ; i))urlzpdn: @ATTRIBUTES
linkID: INTEGER

dn: @INDEXLIST
@IDXATTR: linkID
@IDXATTR: attributeSyntax
@IDXGUID: objectGUID
z1objectGUID: 24e2ca70-b093-4ae8-84c0-2d7ac652a1b8
N)
r@   connecttransaction_startadd_ldifrI   modify_ldifrG   rC   transaction_committransaction_cancel)rL   schemadb_pathrI   s   && r   write_to_tmp_ldbSchema.write_to_tmp_ldb   s    ]+""$	* HH   !..FGM HHm,HH  !6!67HHd../
 HH'')		HH'')s   BC' 'Dc                B    \        V P                  V P                  4      # r1   )get_linked_attributesr?   r@   rL   s   &r   linked_attributesSchema.linked_attributes   s    $T]]DHH==r   c                B    \        V P                  V P                  4      # r1   )get_dnsyntax_attributesr?   r@   rm   s   &r   dnsyntax_attributesSchema.dnsyntax_attributes   s    &t}}dhh??r   c                D    \         P                  ! V P                  W4      # r1   )r    _dsdb_convert_schema_to_openldapr@   )rL   targetmappings   &&&r   convert_to_openldapSchema.convert_to_openldap   s    44TXXvOOr   )r>   r@   rJ   rC   rI   rG   r?   )z"MS-AD_Schema_2K8_R2_Attributes.txtzMS-AD_Schema_2K8_R2_Classes.txt/   )z0Attributes_for_AD_DS__Windows_Server_2008_R2.ldfz-Classes_for_AD_DS__Windows_Server_2008_R2.ldfrz   )z-Attributes_for_AD_DS__Windows_Server_2012.ldfz*Classes_for_AD_DS__Windows_Server_2012.ldf8   )z,AD_DS_Attributes__Windows_Server_2012_R2.ldfz)AD_DS_Classes__Windows_Server_2012_R2.ldfE   )z*AD_DS_Attributes__Windows_Server_v1803.ldfz'AD_DS_Classes__Windows_Server_v1803.ldfW   )z)AD_DS_Attributes_Windows_Server_v1903.ldfz&AD_DS_Classes_Windows_Server_v1903.ldfX   )NNNNNN)__name__
__module____qualname____firstlineno__rB   rT   staticmethodr=   rF   rK   ri   rn   rr   rx   __static_attributes____classdictcell__)__classdict__s   @r   r   r   C   s      	           !L*ALF   3 3>*<>@P Pr   r   c                 x   R R.pVP                  R\         R2V \        VR7      p/ p\        ^ \	        V4      4       Fy  pR\        W5,          R ,          ^ ,          4      ^,           ,          pVP                  V VR\        R7      pVf   KO  VP                  R4      V\        W5,          R,          4      &   K{  	  V# )linkIDlDAPDisplayNamez(&(linkID=*)(!(linkID:z<:=1))(objectclass=attributeSchema)(attributeSyntax=2.5.5.1))
expressionbasescopeattrszD(&(objectclass=attributeSchema)(linkID=%d)(attributeSyntax=2.5.5.1)))basednr   	attributer   zutf-8)
searchr   r   rangelenint	searchoner   rH   rE   )r?   	schemaldbr   res
attributesir   rv   s   &&      r   rl   rl      s    ()E


  23 400 ^5  :C J1c#h336(+A./!35
 $$H0:/@+8 % : 9?w9OJs36"3456   r   c                     VP                  R V \        RR.R7      p. p\        ^ \        V4      4       F*  pVP	                  \        W$,          R,          4      4       K,  	  V# )zF(&(!(linkID=*))(objectclass=attributeSchema)(attributeSyntax=2.5.5.1))r   r   r   )r   r   r   r   appendrE   )r?   r   r   r   r   s   &&   r   rq   rq      se    


[^*+  -C J1c#h#cf%6789  r   c                |    Vf   \         P                  ! 4       pM\         P                  ! V4      p\        WVR7      # )a7  Load 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.
)r?   rO   )r   
random_siddom_sidr   )r?   	domainsidrO   s   &&&r   ldb_with_schemar      s:     '')	$$Y/	)%79 9r   r1   )z,cn=schema,cn=configuration,dc=example,dc=comNN)__doc__base64r   sambar   r   r   samba.dcerpcr   samba.ms_schemar   	samba.ndrr   samba.samdbr	   samba.commonr   r   r@   r   r   r   r   objectr   rl   rq   r   r:   r   r   <module>r      sP   . /  J J ! *   #  A A>MPV MPb.9r   