ó
    cÛ–i)  ã                   ó¼   • S r SSKJr  SSKJrJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJrJr  SS jr " S S\5      rS rS r   SS jrg)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_ONELEVELNc                 ód   • Uc  0 nSn[         R                  R                  X 5      n[        U5      $ )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ô. ×
Ñ
×
'Ñ
'¨Ó
9€CÜ�C‹=Ðó    c                   ót   • \ rS rSrSSSSSSS.r   SS
 jr\S 5       r\S 5       rS r	S r
S rS rS rSrg	)ÚSchemaéC   )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.ldfr   )z-Attributes_for_AD_DS__Windows_Server_2012.ldfz*Classes_for_AD_DS__Windows_Server_2012.ldfé8   )z,AD_DS_Attributes__Windows_Server_2012_R2.ldfz)AD_DS_Classes__Windows_Server_2012_R2.ldféE   )z*AD_DS_Attributes__Windows_Server_v1803.ldfz'AD_DS_Classes__Windows_Server_v1803.ldféW   )z)AD_DS_Attributes_Windows_Server_v1903.ldfz&AD_DS_Classes_Windows_Server_v1903.ldféX   )Ú2008_R2_oldÚ2008_R2Ú2012Ú2012_R2Ú2016Ú2019Nc                 óR  ^• SSK Jn   Uc  [        R                  5       nXpl        X0l        [        SSS9U l        Ub  U R                  R                  U5        [        U" S[        R                  U   S   -  5      U" S[        R                  U   S   -  5      5      U l        S mUb   SR                  U4S	 jU 5       5      U l        [        U R                  S
U05      U l        [        U R                  5        [        [        R!                  U5      5      n	[#        U" S5      X9S.5      U l        ['        [)        U5      5      R+                  S5      n
[#        U" S5      X:S.5      U l        Ub  XPl        OT" U" S5      5      U l        Ub+  U =R.                  SR                  S U 5       5      -  sl        ['        U R.                  5      R+                  S5      U l        SU R
                  < SU R.                  < S3nU R1                  X°R                  U R
                  5        g )Nr   )Ú
setup_pathF)Úglobal_schemaÚam_rodczad-schema/%sé   c                 óp   • [        U S5       nUR                  5       sS S S 5        $ ! , (       d  f       g = f)NÚrb)ÚopenÚread)ÚfileÚ	data_files     r   Ú	read_fileÚ"Schema.__init__.<locals>.read_filez   s$   € Ü�d˜DÔ! YØ —~‘~Ó'÷ "×!×!ús   �'§
5Ú c              3   óF   >#   • U  H  n[        T" U5      5      v •  M     g 7f©Nr   )Ú.0r1   r3   s     €r   Ú	<genexpr>Ú"Schema.__init__.<locals>.<genexpr>   s$   øé € ð ':Ú38¨4ô (2±)¸D³/×'BÐ'BÚ38ùs   ƒ!ÚSCHEMADNz#provision_schema_basedn_modify.ldif)r;   Ú
OBJVERSIONÚutf8zprovision_schema_basedn.ldif)r;   Ú
DESCRIPTORzprefixMap.txtc              3   ó,   #   • U  H
  nS U-  v •  M     g7f)z%s
N© )r8   Úmaps     r   r9   r:   –   s   é € Ð*XÒCW¸C¨6°C®<ÒCWùs   ‚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   ÚinvocationidrE   ÚfilesÚoverride_prefixmapÚadditional_prefixmaprD   r)   Úschema_versionÚdescrÚprefixmap_ldifr3   s               @r   Ú__init__ÚSchema.__init__[   s÷  ø€ õ 	/ð	ð ÑÜ ×4Ñ4Ó6ˆKà&Ôà Œô  u°eÑ<ˆŒØÑ#Ø�H‰H×&Ñ& |Ô4ä)Ù�~¬×(;Ñ(;¸KÑ(HÈÑ(KÑKÓLÙ�~¬×(;Ñ(;¸KÑ(HÈÑ(KÑKÓLóNˆÔò	(ð ÑØ!Ÿw™wô ':Ù38ó':ó  :ˆDÔô *¨$×*:Ñ*:Ø+5°xÐ*@óBˆÔä˜d×.Ñ.Ô/äœV×/Ñ/°Ó<Ó=ˆÜ 1ÙÐ<Ó=Ø!Ñ@ó!BˆÔô Ô/°
Ó;Ó<×CÑCÀFÓKˆÜ.ÙÐ5Ó6Ø!Ñ7ó9ˆÔð Ñ)Ø"4Õá"+©J°Ó,GÓ"HˆDÔàÑ+Ø×Ò 2§7¡7Ñ*XÑCWÓ*XÓ#XÑXÕä'¨×(;Ñ(;Ó<×CÑCÀFÓKˆÕð :>¿¼È×H[ÔH[Ð\ˆØ×Ñ˜>×+;Ñ+;¸T¿]¹]ÕKr   c                  ó   • g)z&Returns the default base schema to user%   r@   r@   r   r   rC   ÚSchema.default_base_schemaž   s   € ð r   c                 ó.   • [         R                  U    S   $ )z=Returns the base schema's object version, e.g. 47 for 2008_R2é   )r   rH   )rD   s    r   rL   ÚSchema.get_version£   s   € ô ×"Ñ" ;Ñ/°Ñ2Ð2r   c                 óH   • [         R                  " U R                  XU5        g r7   )r   Ú_dsdb_set_schema_from_ldifrF   )rR   ÚpfÚdfÚdns       r   rQ   ÚSchema.set_from_ldif¨   s   € Ü×'Ò'¨¯©°"¸"Õ=r   c                 óþ  • U R                   R                  US9  U R                   R                  5          U R                   R                  S5        U R                  S-   nU R                   R                  U5        U R                   R                  U R                  5        U R                   R                  U R                  5        U R                   R                  5         g !   U R                   R                  5         e = f)N)Úurlzpdn: @ATTRIBUTES
linkID: INTEGER

dn: @INDEXLIST
@IDXATTR: linkID
@IDXATTR: attributeSyntax
@IDXGUID: objectGUID
z1objectGUID: 24e2ca70-b093-4ae8-84c0-2d7ac652a1b8
)
rF   ÚconnectÚtransaction_startÚadd_ldifrO   Úmodify_ldifrM   rI   Útransaction_commitÚtransaction_cancel)rR   Úschemadb_pathrO   s      r   Úwrite_to_tmp_ldbÚSchema.write_to_tmp_ldb«   sË   € Ø�‰×Ñ˜]ÐÑ+Ø�‰×"Ñ"Ô$ð	*ð �H‰H×Ñð ô ð !×.Ñ.ØFñGˆMð �H‰H×Ñ˜mÔ,Ø�H‰H× Ñ  ×!6Ñ!6Ô7Ø�H‰H×Ñ˜d×.Ñ.Ô/ð
 �H‰H×'Ñ'Õ)øð		Ø�H‰H×'Ñ'Ô)Øús   µBC ÃC<c                 óB   • [        U R                  U R                  5      $ r7   )Úget_linked_attributesrE   rF   ©rR   s    r   Úlinked_attributesÚSchema.linked_attributesÉ   s   € Ü$ T§]¡]°D·H±HÓ=Ð=r   c                 óB   • [        U R                  U R                  5      $ r7   )Úget_dnsyntax_attributesrE   rF   rt   s    r   Údnsyntax_attributesÚSchema.dnsyntax_attributesÌ   s   € Ü& t§}¡}°d·h±hÓ?Ð?r   c                 óD   • [         R                  " U R                  X5      $ r7   )r   Ú _dsdb_convert_schema_to_openldaprF   )rR   ÚtargetÚmappings      r   Úconvert_to_openldapÚSchema.convert_to_openldapÏ   s   € Ü×4Ò4°T·X±X¸vÓOÐOr   )rD   rF   rP   rI   rO   rM   rE   )NNNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rH   rZ   ÚstaticmethodrC   rL   rQ   rp   ru   ry   r   Ú__static_attributes__r@   r   r   r   r   C   s   † ððððððñ!€Lð* @DØKOØ!ôALðF ñó ðð ñ3ó ð3ò>ò*ò<>ò@õPr   r   c                 ó"  • SS/nUR                  SU [        US9n0 n[        S[        U5      5       HY  nS[	        X5   S   S   5      S-   -  nUR                  U US[        S9nUc  M7  UR                  S	5      U[        X5   S   5      '   M[     U$ )
NÚlinkIDÚlDAPDisplayNamezh(&(linkID=*)(!(linkID:1.2.840.113556.1.4.803:=1))(objectclass=attributeSchema)(attributeSyntax=2.5.5.1))©Ú
expressionÚbaseÚscopeÚattrsr   zD(&(objectclass=attributeSchema)(linkID=%d)(attributeSyntax=2.5.5.1))r,   )Úbasednr‹   Ú	attributer�   zutf-8)	Úsearchr   ÚrangeÚlenÚintÚ	searchoner   rN   rK   )rE   Ú	schemaldbrŽ   ÚresÚ
attributesÚir‹   r}   s           r   rs   rs   Ô   sÃ   € ØÐ(Ð)€EØ
×
Ñ
ð0ð œ^°5ð ð :€Cð €JÜ�1”c˜#“hÖˆð3ä˜3™6 (Ñ+¨AÑ.Ó/°!Ñ3ñ5ˆ
ð ×$Ñ$¨HØ0:Ø/@Ü+8ð %ð :ˆð ÓØ9?¿¹ÀwÓ9OˆJ”s˜3™6Ð"3Ñ4Ó5Ó6ñ  ð Ðr   c                 ó°   • UR                  SU [        SS/S9n/ n[        S[        U5      5       H"  nUR	                  [        X$   S   5      5        M$     U$ )NzF(&(!(linkID=*))(objectclass=attributeSchema)(attributeSyntax=2.5.5.1))rˆ   r‰   rŠ   r   )r‘   r   r’   r“   ÚappendrK   )rE   r–   r—   r˜   r™   s        r   rx   rx   ë   se   € Ø
×
Ñ
Ø[Øœ^ØÐ*Ð+ð ð -€Cð €JÜ�1”c˜#“hÖˆØ×Ñœ#˜c™fÐ%6Ñ7Ó8Ö9ñ  àÐr   c                 ót   • Uc  [         R                  " 5       nO[         R                  " U5      n[        XUS9$ )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.
)rE   rU   )r   Ú
random_sidÚdom_sidr   )rE   Ú	domainsidrU   s      r   Úldb_with_schemar    ö   s:   € ð ÑÜ×'Ò'Ó)‰	ä×$Ò$ YÓ/ˆ	Ü�)Ø%7ñ9ð 9r   r7   )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   rF   r   r   r   Úobjectr   rs   rx   r    r@   r   r   Ú<module>rª      sY   ðñ. /å ß JÑ JÝ !Ý *Ý Ý Ý #Ý ß -ôô>MPˆVô MPòbò.ð LØ"Ø'+õ9r   