+
    èSsiÈ  ã                   ó4  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RI	t	^ RI
Ht ^ RIHt ^ RIHtHt ^ RI	Ht ^ RIHtHtHt ^ RIHtHtHtHt ^ R	IHtHtHtHtH t H!t!H"t" ^ R
I#H$t$H%t%H&t&H't'H(t(H)t) ^ RI*H+t+ ^ RI,H-t- R t.R t/ ! R R]P`                  4      t1 ! R R]P`                  4      t2 ! R R]P`                  4      t3 ! R R]P`                  4      t4 ! R R]P`                  4      t5 ! R R]P`                  4      t6 ! R R]P`                  4      t7 ! R R]Pp                  4      t9 ! R R ]Pp                  4      t: ! R! R"]Pp                  4      t; ! R# R$]Pp                  4      t< ! R% R&]Pp                  4      t= ! R' R(]Pp                  4      t> ! R) R*]Pp                  4      t?R+ t@R, tARJR- ltBR. tCR/ tDR0 tER1 tFR2 tGR3 tHR4 tIR5 tJR6 tKR7 tLR8 tMR9 tNR: tOR; tPR< tQR= tRR> tSR? tTR@ tURA tVRB tWRC tXRD tYRE tZRF](RF3RG lt[RRR](3RH lt\RKRI lt]R# )LzDNS-related provisioningN)Ú	b64encode)Útdb_copy)Úmdb_copy)Úndr_packÚ
ndr_unpack)Ú
setup_file)ÚdnspÚmiscÚsecurity)ÚDS_DOMAIN_FUNCTION_2000ÚDS_DOMAIN_FUNCTION_2003ÚDS_DOMAIN_FUNCTION_2016ÚDS_GUID_USERS_CONTAINER)Úget_deletedobjects_descriptorÚget_domain_descriptorÚ'get_domain_delete_protected1_descriptorÚ'get_domain_delete_protected2_descriptorÚget_dns_partition_descriptorÚ'get_dns_forest_microsoft_dns_descriptorÚ'get_dns_domain_microsoft_dns_descriptor)Ú
setup_pathÚsetup_add_ldifÚsetup_modify_ldifÚ	setup_ldbÚ	FILL_FULLÚFILL_SUBDOMAIN)Úget_default_backend_store)Ú
get_stringc                 ó¼   € V P                  V\        P                  R .R7      p\        \	        \
        P                  V^ ,          R ,          ^ ,          4      4      pV# )Ú
objectGUID©ÚbaseÚscopeÚattrs)ÚsearchÚldbÚ
SCOPE_BASEÚstrr   r	   ÚGUID)ÚsamdbÚdomaindnÚresÚ
domainguids   &&  Ú:/usr/lib/python3/dist-packages/samba/provision/sambadns.pyÚget_domainguidr.   ?   sE   € Ø
�,‰,˜H¬C¯N©NÀ<À.ˆ,Ó
Q€CÜ”Z¤§	¡	¨3¨q­6°,Õ+?ÀÕ+BÓCÓD€JØÐó    c                 ó  € R V P                  \        P                  ! V V4      \        4      ,          pV P	                  V\        P
                  R.R7      p\        \        P                  V^ ,          R,          ^ ,          4      pV# )zCN=DnsAdmins,%sÚ	objectSidr    )	Úget_wellknown_dnr%   ÚDnr   r$   r&   r   r
   Údom_sid)r)   r*   Úbase_dnr+   Údnsadmins_sids   &&   r-   Úget_dnsadmins_sidr7   E   sn   € Ø %×"8Ñ"8¼¿ºÀØ,4ó:6Ü7Nó#Põ P€Gà
�,‰,˜G¬3¯>©>À+Àˆ,Ó
O€CÜœx×/Ñ/°°Qµ¸Õ1DÀQÕ1GÓH€MØÐr/   c                   óP   a a€ ] tR t^Vt o^R]P
                  3V 3R lltRtVtV ;t	# )ÚARecordé„  c                ó~   <€ \         SV `  4        \        P                  V n        W@n        W n        W0n        Wn        R # ©N)	ÚsuperÚ__init__r   Ú
DNS_TYPE_AÚwTypeÚrankÚdwSerialÚdwTtlSecondsÚdata)ÚselfÚip_addrÚserialÚttlrA   Ú	__class__s   &&&&&€r-   r>   ÚARecord.__init__X   s.   ø€ Ü‰ÑÔÜ—_‘_ˆŒ
ØŒ	ØŒØÔØŽ	r/   ©rD   rB   rC   rA   r@   ©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   ÚDNS_RANK_ZONEr>   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©rI   Ú__classdict__s   @@r-   r9   r9   V   s   ù‡ € à'(¨c¸×8JÑ8J÷ ÷ r/   r9   c                   óP   a a€ ] tR t^at o^R]P
                  3V 3R lltRtVtV ;t	# )Ú
AAAARecordr:   c                ó~   <€ \         SV `  4        \        P                  V n        W@n        W n        W0n        Wn        R # r<   )	r=   r>   r   ÚDNS_TYPE_AAAAr@   rA   rB   rC   rD   )rE   Úip6_addrrG   rH   rA   rI   s   &&&&&€r-   r>   ÚAAAARecord.__init__c   s0   ø€ Ü‰ÑÔÜ×'Ñ'ˆŒ
ØŒ	ØŒØÔØŽ	r/   rK   rL   rU   s   @@r-   rX   rX   a   s   ù‡ € à()¨s¸×9KÑ9K÷ ÷ r/   rX   c                   óP   a a€ ] tR t^lt o^R]P
                  3V 3R lltRtVtV ;t	# )ÚCNAMERecordr:   c                ó~   <€ \         SV `  4        \        P                  V n        W@n        W n        W0n        Wn        R # r<   )	r=   r>   r   ÚDNS_TYPE_CNAMEr@   rA   rB   rC   rD   )rE   ÚcnamerG   rH   rA   rI   s   &&&&&€r-   r>   ÚCNAMERecord.__init__n   s0   ø€ Ü‰ÑÔÜ×(Ñ(ˆŒ
ØŒ	ØŒØÔØŽ	r/   rK   rL   rU   s   @@r-   r^   r^   l   s   ù‡ € à%&¨C°d×6HÑ6H÷ ÷ r/   r^   c                   óP   a a€ ] tR t^wt o^R]P
                  3V 3R lltRtVtV ;t	# )ÚNSRecordr:   c                ó~   <€ \         SV `  4        \        P                  V n        W@n        W n        W0n        Wn        R # r<   )	r=   r>   r   ÚDNS_TYPE_NSr@   rA   rB   rC   rD   )rE   Ú
dns_serverrG   rH   rA   rI   s   &&&&&€r-   r>   ÚNSRecord.__init__y   s0   ø€ Ü‰ÑÔÜ×%Ñ%ˆŒ
ØŒ	ØŒØÔØŽ	r/   rK   rL   rU   s   @@r-   rd   rd   w   s   ù‡ € à*+°¸4×;MÑ;M÷ ÷ r/   rd   c                   óX   a a€ ] tR t^‚t o^RRRRR]P
                  3V 3R lltRtVtV ;t	# )Ú	SOARecordr:   iX  i€Q i  c
                óü   <€ \         SV `  4        \        P                  V n        W�n        W0n        W€n        \        P                  ! 4       p
W:n	        WJn
        WZn        Wjn        Wn        W*n        Wzn        W n        R # r<   )r=   r>   r   ÚDNS_TYPE_SOAr@   rA   rB   rC   ÚsoarG   ÚrefreshÚretryÚexpireÚmnameÚrnameÚminimumrD   )rE   rq   rr   rG   rn   ro   rp   rs   rH   rA   rm   rI   s   &&&&&&&&&& €r-   r>   ÚSOARecord.__init__„   s^   ø€ ä‰ÑÔÜ×&Ñ&ˆŒ
ØŒ	ØŒØÔÜ�hŠh‹jˆØŒ
ØŒØŒ	ØŒ
ØŒ	ØŒ	ØŒØŽ	r/   rK   rL   rU   s   @@r-   rj   rj   ‚   s%   ù‡ € à,-°sÀ#Ø t°¸D×<NÑ<N÷÷ r/   rj   c                   óT   a a€ ] tR t^–t o^ ^d^R]P
                  3V 3R lltRtVtV ;t	# )Ú	SRVRecordr:   c                óØ   <€ \         S	V `  4        \        P                  V n        Wpn        WPn        W`n        \        P                  ! 4       pWn	        W(n
        W8n        WHn        W€n        R # r<   )r=   r>   r   ÚDNS_TYPE_SRVr@   rA   rB   rC   ÚsrvÚ
nameTargetÚwPortÚ	wPriorityÚwWeightrD   )
rE   ÚtargetÚportÚpriorityÚweightrG   rH   rA   ry   rI   s
   &&&&&&&& €r-   r>   ÚSRVRecord.__init__˜   sO   ø€ ä‰ÑÔÜ×&Ñ&ˆŒ
ØŒ	ØŒØÔÜ�hŠh‹jˆØŒØŒ	Ø ŒØŒØŽ	r/   rK   rL   rU   s   @@r-   rv   rv   –   s!   ù‡ € à./¸ÀAÈ3Ø×(Ñ(÷÷ r/   rv   c                   óP   a a€ ] tR t^§t o^R]P
                  3V 3R lltRtVtV ;t	# )Ú	TXTRecordr:   c                óÔ   <€ \         SV `  4        \        P                  V n        W@n        W n        W0n        \        P                  ! 4       p\        V4      Vn
        Wn        WPn        R # r<   )r=   r>   r   ÚDNS_TYPE_TXTr@   rA   rB   rC   Ústring_listÚlenÚcountr'   rD   )rE   ÚslistrG   rH   rA   Ú
stringlistrI   s   &&&&& €r-   r>   ÚTXTRecord.__init__©   sO   ø€ Ü‰ÑÔÜ×&Ñ&ˆŒ
ØŒ	ØŒØÔÜ×%Ò%Ó'ˆ
Ü˜u›:ˆ
ÔØŒØŽ	r/   rK   rL   rU   s   @@r-   r„   r„   §   s   ù‡ € à%&¨C°d×6HÑ6H÷ 	÷ 	r/   r„   c                   óL   a a€ ] tR t^µt o]P
                  3V 3R lltRtVtV ;t	# )ÚTypePropertyc                óv   <€ \         SV `  4        ^V n        ^V n        \        P
                  V n        Wn        R# ©é   N)r=   r>   ÚwDataLengthÚversionr   ÚDSPROPERTY_ZONE_TYPEÚidrD   )rE   Ú	zone_typerI   s   &&€r-   r>   ÚTypeProperty.__init__·   s/   ø€ Ü‰ÑÔØˆÔØˆŒÜ×+Ñ+ˆŒØŽ	r/   ©rD   r•   r“   r’   )
rM   rN   rO   rP   r   ÚDNS_ZONE_TYPE_PRIMARYr>   rR   rS   rT   rU   s   @@r-   rŽ   rŽ   µ   s   ù‡ € à!%×!;Ñ!;÷ ÷ r/   rŽ   c                   óL   a a€ ] tR t^¿t o]P
                  3V 3R lltRtVtV ;t	# )ÚAllowUpdatePropertyc                óv   <€ \         SV `  4        ^V n        ^V n        \        P
                  V n        Wn        R# r�   )r=   r>   r’   r“   r   ÚDSPROPERTY_ZONE_ALLOW_UPDATEr•   rD   )rE   Úallow_updaterI   s   &&€r-   r>   ÚAllowUpdateProperty.__init__Á   s/   ø€ Ü‰ÑÔØˆÔØˆŒÜ×3Ñ3ˆŒØ Ž	r/   r˜   )
rM   rN   rO   rP   r   ÚDNS_ZONE_UPDATE_SECUREr>   rR   rS   rT   rU   s   @@r-   r›   r›   ¿   s   ù‡ € à$(×$?Ñ$?÷ !÷ !r/   r›   c                   ó6   a a€ ] tR t^Ét oRV 3R lltRtVtV ;t# )ÚSecureTimePropertyc                óv   <€ \         SV `  4        ^V n        ^V n        \        P
                  V n        Wn        R# r�   )r=   r>   r’   r“   r   ÚDSPROPERTY_ZONE_SECURE_TIMEr•   rD   )rE   Úsecure_timerI   s   &&€r-   r>   ÚSecureTimeProperty.__init__Ë   s/   ø€ Ü‰ÑÔØˆÔØˆŒÜ×2Ñ2ˆŒØŽ	r/   r˜   ©é    ©rM   rN   rO   rP   r>   rR   rS   rT   rU   s   @@r-   r¢   r¢   É   s   ù‡ € ÷ ÷  r/   r¢   c                   ó6   a a€ ] tR t^Ót oRV 3R lltRtVtV ;t# )ÚNorefreshIntervalPropertyc                óv   <€ \         SV `  4        ^V n        ^V n        \        P
                  V n        Wn        R# r�   )r=   r>   r’   r“   r   Ú"DSPROPERTY_ZONE_NOREFRESH_INTERVALr•   rD   )rE   Únorefresh_intervalrI   s   &&€r-   r>   Ú"NorefreshIntervalProperty.__init__Õ   s/   ø€ Ü‰ÑÔØˆÔØˆŒÜ×9Ñ9ˆŒØ&Ž	r/   r˜   r§   r©   rU   s   @@r-   r«   r«   Ó   s   ù‡ € ÷'÷ 'r/   r«   c                   ó6   a a€ ] tR t^Ýt oRV 3R lltRtVtV ;t# )ÚRefreshIntervalPropertyc                óv   <€ \         SV `  4        ^V n        ^V n        \        P
                  V n        Wn        R# r�   )r=   r>   r’   r“   r   Ú DSPROPERTY_ZONE_REFRESH_INTERVALr•   rD   )rE   Úrefresh_intervalrI   s   &&€r-   r>   Ú RefreshIntervalProperty.__init__ß   s/   ø€ Ü‰ÑÔØˆÔØˆŒÜ×7Ñ7ˆŒØ$Ž	r/   r˜   r§   r©   rU   s   @@r-   r±   r±   Ý   ó   ù‡ € ÷%÷ %r/   r±   c                   ó6   a a€ ] tR t^çt oRV 3R lltRtVtV ;t# )ÚAgingStatePropertyc                óv   <€ \         SV `  4        ^V n        ^V n        \        P
                  V n        Wn        R# r�   )r=   r>   r’   r“   r   ÚDSPROPERTY_ZONE_AGING_STATEr•   rD   )rE   Úaging_enabledrI   s   &&€r-   r>   ÚAgingStateProperty.__init__é   s/   ø€ Ü‰ÑÔØˆÔØˆŒÜ×2Ñ2ˆŒØ!Ž	r/   r˜   r§   r©   rU   s   @@r-   r¸   r¸   ç   s   ù‡ € ÷"÷ "r/   r¸   c                   ó6   a a€ ] tR t^ñt oRV 3R lltRtVtV ;t# )ÚAgingEnabledTimePropertyc                óv   <€ \         SV `  4        ^V n        ^V n        \        P
                  V n        Wn        R# r�   )r=   r>   r’   r“   r   Ú"DSPROPERTY_ZONE_AGING_ENABLED_TIMEr•   rD   )rE   Únext_cycle_hoursrI   s   &&€r-   r>   Ú!AgingEnabledTimeProperty.__init__ó   s/   ø€ Ü‰ÑÔØˆÔØˆŒÜ×9Ñ9ˆŒØ$Ž	r/   r˜   r§   r©   rU   s   @@r-   r¾   r¾   ñ   r¶   r/   r¾   c                 óâ  € R V,          pRV,          p\        V4      p	\        V4      p
\        V \        R4      RVR\	        V	4      P                  R4      /4       V\        8w  d3   \        V \        R4      RVR\	        V	4      P                  R4      /4       \        \        P                  ! 4       4      p\        P                  ! W4      P                  4       P                  4       p\        V4      p\        V4      p\        V \        R4      RVRVRVR	VR
VR\	        V
4      P                  R4      R\	        V4      P                  R4      R\	        V4      P                  R4      /4       \!        V \        R4      R	VR
VRV/4       V\        8w  dÝ   \        \        P                  ! 4       4      p\        P                  ! W4      P                  4       P                  4       p\        V \        R4      RVRVRVR	VR
VR\	        V
4      P                  R4      R\	        V4      P                  R4      R\	        V4      P                  R4      /4       \!        V \        R4      R	VR
VRV/4       R# R# )zDC=DomainDnsZones,%szDC=ForestDnsZones,%sz"provision_dnszones_partitions.ldifÚZONE_DNÚSECDESCÚutf8zprovision_dnszones_add.ldifÚ	ZONE_GUIDÚZONE_DNSÚCONFIGDNÚSERVERDNÚDELETEDOBJECTS_DESCRIPTORÚLOSTANDFOUND_DESCRIPTORÚINFRASTRUCTURE_DESCRIPTORzprovision_dnszones_modify.ldifN)r   r   r   r   r   Údecoder   r'   ÚuuidÚuuid4r%   r3   Úcanonical_ex_strÚstripr   r   r   )r)   Ú	domainsidr*   ÚforestdnÚconfigdnÚserverdnÚ
fill_levelÚdomainzone_dnÚforestzone_dnÚ
descriptorÚdeletedobjects_descÚdomainzone_guidÚdomainzone_dnsÚprotected1_descÚprotected2_descÚforestzone_guidÚforestzone_dnss   &&&&&&&          r-   Úsetup_dns_partitionsrâ   û   sR  € à*¨XÕ5€MØ*¨XÕ5€MÜ-¨iÓ8€JÜ7¸	ÓBÐä�5œ*Ð%IÓJØ�=Ø”9˜ZÓ(×/Ñ/°Ó7ðMô ð ”^Ô#Ü�uœjÐ)MÓNØ�}Ø”y Ó,×3Ñ3°FÓ;ðQ
ô 	ô
 œ$Ÿ*š*›,Ó'€OÜ—V’V˜EÓ1×BÑBÓD×JÑJÓL€Nä=¸iÓH€OÜ=¸iÓH€OÜ�5œ*Ð%BÓCØ�=Ø�_Ø�NØ�HØ�HØ#¤YÐ/BÓ%C×%JÑ%JÈ6Ó%RØ!¤9¨_Ó#=×#DÑ#DÀVÓ#LØ#¤Y¨Ó%?×%FÑ%FÀvÓ%Nð	Fô 	ô �eœZÐ(HÓIØ�HØ�HØ�=ðLô ð ”^Ô#ÜœdŸjšj›lÓ+ˆÜŸš Ó5×FÑFÓH×NÑNÓPˆä�uœjÐ)FÓGØ�}Ø˜Ø˜Ø˜Ø˜Ø'¬Ð3FÓ)G×)NÑ)NÈvÓ)VØ%¤y°Ó'A×'HÑ'HÈÓ'PØ'¬°?Ó)C×)JÑ)JÈ6Ó)Rð	J
ô 		ô 	˜%¤Ð,LÓ!MØ˜Ø˜Ø�}ðP
ö 	ñ $r/   c                 ó6   € \        V \        R 4      RV/4       R# )zprovision_dns_accounts_add.ldifÚDOMAINDNN)r   r   )r)   r*   s   &&r-   Úadd_dns_accountsrå   6  s   € Ü�5œ*Ð%FÓGØ�HðJö r/   c           	      óJ  € R \        V4      /pVRJ d   \        VVR7      pM\        VVR7      p\        P                  ! \        P
                  ! V RV: RV: 24      4      pRR.VR&   \        P                  ! V\        P                  R4      VR&   V P                  V4       R	# )
Ú	DnsAdminsT)Úname_mapzCN=MicrosoftDNS,Ú,ÚtopÚ	containerÚobjectClassÚnTSecurityDescriptorN)	r'   r   r   r%   ÚMessager3   ÚMessageElementÚFLAG_MOD_ADDÚadd)	r)   r*   ÚprefixÚ
domain_sidr6   Úforestrè   Úsd_valÚmsgs	   &&&&&&   r-   Úadd_dns_containerr÷   <  sœ   € ØœS Ó/Ð0€HØ�ƒ~Ü8¸ØBJôL‰ô 9¸ØBJôLˆô �+Š+”c—f’f™U»vÂxÐ$PÓQÓ
R€CØ Ð-€CˆÑä×Ò˜6¤3×#3Ñ#3Ø1ó	3ð ÐÑð 
‡I�Iˆc†Nr/   c                 ó(  € / pR VR&   RVR&   RVR&   RVR&   RVR	&   R
VR&   RVR&   RVR&   RVR&   RVR&   RVR&   RVR&   RVR&   / pRVR&   RVR&   RVR&   RVR&   RVR	&   RVR&   R VR&   R!VR&   R"VR&   R#VR&   R$VR&   R%VR&   R&VR&   R'V: R(V: 2p\         P                  ! \         P                  ! W4      4      p. pVP                  \	        \        \        P                  R)7      4      4       VP                  \	        \        \        P                  R*7      4      4       VP                  \	        \        4       4      4       VP                  \	        \        4       4      4       VP                  \	        \        4       4      4       VP                  \	        \        4       4      4       VP                  \	        \        4       4      4       R+R,.VR-&   \         P                  ! R.\         P                   R/4      VR/&   \         P                  ! V\         P                   R04      VR0&   V P#                  V4       . pV F8  p	VP                  \	        \%        V	^ ^ \        P&                  R17      4      4       K:  	  \         P                  ! \         P                  ! V R2V,          4      4      pR+R3.VR-&   \         P                  ! V\         P                   R44      VR4&   V P#                  V4       V F¤  p	\	        \)        W9,          ^ ^ \        P&                  R17      4      .p\         P                  ! \         P                  ! V R5V	: R(V: 24      4      pR+R3.VR-&   \         P                  ! V\         P                   R44      VR4&   V P#                  V4       K¦  	  R6# )7z
198.41.0.4za.root-servers.netz192.228.79.201zb.root-servers.netz192.33.4.12zc.root-servers.netz199.7.91.13zd.root-servers.netz192.203.230.10ze.root-servers.netz192.5.5.241zf.root-servers.netz192.112.36.4zg.root-servers.netz198.97.190.53zh.root-servers.netz192.36.148.17zi.root-servers.netz192.58.128.30zj.root-servers.netz193.0.14.129zk.root-servers.netz199.7.83.42zl.root-servers.netz202.12.27.33zm.root-servers.netz2001:503:ba3e::2:30z2001:500:84::bz2001:500:2::cz2001:500:2d::dz2001:500:a8::ez2001:500:2f::fz2001:500:12::d0dz2001:500:1::53z2001:7fe::53z2001:503:c27::2:30z2001:7fd::1z2001:500:9f::42z2001:dc3::35z"DC=RootDNSServers,CN=MicrosoftDNS,ré   )r–   )rž   rê   ÚdnsZonerì   ÚZoneÚcnÚdNSProperty)rG   rH   rA   zDC=@,%sÚdnsNodeÚ	dnsRecordúDC=N)r%   rî   r3   Úappendr   rŽ   r   ÚDNS_ZONE_TYPE_CACHEr›   ÚDNS_ZONE_UPDATE_OFFr¢   r«   r±   r¸   r¾   rï   rð   rñ   rd   ÚDNS_RANK_ROOT_HINTr9   )
r)   r*   rò   ÚrootserversÚrootservers_v6Úcontainer_dnrö   ÚpropsÚrecordÚrservers
   &&&       r-   Úadd_rootserversr
  M  s]  € à€KØ(4€KÐ$Ñ%Ø(8€KÐ$Ñ%Ø(5€KÐ$Ñ%Ø(5€KÐ$Ñ%Ø(8€KÐ$Ñ%Ø(5€KÐ$Ñ%Ø(6€KÐ$Ñ%Ø(7€KÐ$Ñ%Ø(7€KÐ$Ñ%Ø(7€KÐ$Ñ%Ø(6€KÐ$Ñ%Ø(5€KÐ$Ñ%Ø(6€KÐ$Ñ%à€NØ+@€NÐ'Ñ(Ø+;€NÐ'Ñ(Ø+:€NÐ'Ñ(Ø+;€NÐ'Ñ(Ø+;€NÐ'Ñ(Ø+;€NÐ'Ñ(Ø+=€NÐ'Ñ(Ø+;€NÐ'Ñ(Ø+9€NÐ'Ñ(Ø+?€NÐ'Ñ(Ø+8€NÐ'Ñ(Ø+<€NÐ'Ñ(Ø+9€NÐ'Ò(ã@FÊÐQ€Lô �+Š+”c—f’f˜UÓ1Ó
2€CØ€EØ	‡L�L”œ,´×1IÑ1IÔJÓKÔLØ	‡L�L”Ô-¼4×;SÑ;SÔTÓUÔVØ	‡L�L”Ô,Ó.Ó/Ô0Ø	‡L�L”Ô3Ó5Ó6Ô7Ø	‡L�L”Ô1Ó3Ó4Ô5Ø	‡L�L”Ô,Ó.Ó/Ô0Ø	‡L�L”Ô2Ó4Ó5Ô6Ø Ð+€CˆÑÜ×"Ò" 6¬3×+;Ñ+;¸TÓB€Cˆ�IÜ×+Ò+¨E´3×3CÑ3CÀ]ÓS€CˆÑØ	‡I�Iˆc„Nð €FÛˆØ�‰”hœx¨¸¸qÄt×G^ÑG^Ô_Ó`Öañ ô �+Š+”c—f’f˜U I°Õ$<Ó=Ó
>€CØ Ð+€CˆÑÜ×)Ò)¨&´#×2BÑ2BÀKÓP€CˆÑØ	‡I�Iˆc„Nó ˆÜœ7 ;Õ#7ÀÀqÌt×OfÑOfÔgÓhÐiˆô �kŠkœ#Ÿ&š&¡³gº|Ð(LÓMÓNˆØ# YÐ/ˆˆMÑÜ×-Ò-¨f´c×6FÑ6FÈÓTˆˆKÑØ�	‰	�#Žó r/   c                 óH  € V: R V: 2p. p\        VRV,          4      p	VP                  \        V	4      4       \        V4      p
VP                  \        V
4      4       Ve&   \	        V4      pVP                  \        V4      4       Ve&   \        V4      pVP                  \        V4      4       \        P                  ! \        P                  ! W: RV: 24      4      pRR.VR&   \        P                  ! V\        P                  R4      VR&   V P                  V4       R# )Ú.zhostmaster.%sNré   rê   rý   rì   rþ   )rj   r   r   rd   r9   rX   r%   rî   r3   rï   rð   rñ   )r)   r  rò   ÚhostnameÚ	dnsdomainÚhostipÚhostip6Úfqdn_hostnameÚ
at_recordsÚat_soa_recordÚat_ns_recordÚat_a_recordÚat_aaaa_recordrö   s   &&&&&&&       r-   Úadd_at_recordr  ”  sò   € ã'ªÐ3€Mà€Jô ˜m¨_¸yÕ-HÓI€MØ×Ñ”h˜}Ó-Ô.ô ˜MÓ*€LØ×Ñ”h˜|Ó,Ô-àÒä˜f“oˆØ×Ñœ( ;Ó/Ô0àÒä# GÓ,ˆØ×Ñœ( >Ó2Ô3ä
�+Š+”c—f’f˜Uªv²|Ð$DÓEÓ
F€CØ Ð+€CˆÑÜ×)Ò)¨*´c×6FÑ6FÈÓT€CˆÑØ	‡I�Iˆc†Nr/   c                 ó  € \        W44      p\        P                  ! \        P                  ! W: R V: 24      4      pRR.VR&   \        P                  ! \        V4      \        P                  R4      VR&   V P                  V4       R# ©ré   rê   rý   rì   rþ   N)rv   r%   rî   r3   rï   r   rð   rñ   )r)   r  rò   Úhostr   Ú
srv_recordrö   s   &&&&&  r-   Úadd_srv_recordr  ²  si   € Ü˜4Ó&€JÜ
�+Š+”c—f’f˜Uªv²|Ð$DÓEÓ
F€CØ Ð+€CˆÑÜ×)Ò)¬(°:Ó*>Ä×@PÑ@PÐR]Ó^€CˆÑØ	‡I�Iˆc†Nr/   c                 ó  € \        V4      p\        P                  ! \        P                  ! W: R V: 24      4      pRR.VR&   \        P                  ! \        V4      \        P                  R4      VR&   V P                  V4       R# r  )rd   r%   rî   r3   rï   r   rð   rñ   ©r)   r  rò   r  Ú	ns_recordrö   s   &&&&  r-   Úadd_ns_recordr   º  sh   € Ü˜“€IÜ
�+Š+”c—f’f˜Uªv²|Ð$DÓEÓ
F€CØ Ð+€CˆÑÜ×)Ò)¬(°9Ó*=¼s×?OÑ?OÐQ\Ó]€CˆÑØ	‡I�Iˆc†Nr/   c                 ó2  € \        V\        P                  R 7      p\        P                  ! \        P
                  ! W: RV: 24      4      pRR.VR&   \        P                  ! \        V4      \        P                  R4      VR&   V P                  V4       R# ))rA   ré   rê   rý   rì   rþ   N)
rd   r   ÚDNS_RANK_NS_GLUEr%   rî   r3   rï   r   rð   rñ   r  s   &&&&  r-   Úadd_ns_glue_recordr#  Â  sq   € Ü˜¤D×$9Ñ$9Ô:€IÜ
�+Š+”c—f’f˜Uªv²|Ð$DÓEÓ
F€CØ Ð+€CˆÑÜ×)Ò)¬(°9Ó*=¼s×?OÑ?OÐQ\Ó]€CˆÑØ	‡I�Iˆc†Nr/   c                 ó  € \        V4      p\        P                  ! \        P                  ! W: R V: 24      4      pRR.VR&   \        P                  ! \        V4      \        P                  R4      VR&   V P                  V4       R# r  )r^   r%   rî   r3   rï   r   rð   rñ   )r)   r  rò   r  Úcname_recordrö   s   &&&&  r-   Úadd_cname_recordr&  Ê  si   € Ü˜tÓ$€LÜ
�+Š+”c—f’f˜Uªv²|Ð$DÓEÓ
F€CØ Ð+€CˆÑÜ×)Ò)¬(°<Ó*@Ä#×BRÑBRÐT_Ó`€CˆÑØ	‡I�Iˆc†Nr/   c                 ó¶  € . pV'       d&   \        V4      pVP                  \        V4      4       V'       d&   \        V4      pVP                  \        V4      4       V'       du   \        P
                  ! \        P                  ! W: R V: 24      4      pRR.VR&   \        P                  ! V\        P                  R4      VR&   V P                  V4       R# R# r  )
r9   r   r   rX   r%   rî   r3   rï   rð   rñ   )	r)   r  rò   r  r  Úhost_recordsÚa_recordÚaaaa_recordrö   s	   &&&&&    r-   Úadd_host_recordr+  Ò  s¥   € Ø€LßÜ˜6“?ˆØ×ÑœH XÓ.Ô/ßÜ  Ó)ˆØ×ÑœH [Ó1Ô2ßÜ�kŠkœ#Ÿ&š& ²6º<Ð(HÓIÓJˆØ# YÐ/ˆˆMÑÜ×-Ò-¨l¼C×<LÑ<LÈkÓZˆˆKÑØ�	‰	�#Žñ	 r/   c                 ó’  € R V,          p\         P                  P                  Wd4      p. pVP                  \	        \        4       4      4       VP                  \	        \        4       4      4       VP                  \	        \        4       4      4       VP                  \	        \        ^¨R7      4      4       VP                  \	        \        ^¨R7      4      4       VP                  \	        \        4       4      4       VP                  \	        \        4       4      4       \        P                  ! \        P                  ! V RV: RV: RV: 24      4      p	RR.V	R&   \        P                  ! \	        V4      \        P                   R	4      V	R
&   \        P                  ! V\        P                   R4      V	R&   V P#                  V	4       R# )a{  O:SYG:BAD:AI(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;CC;;;AU)(A;;RPLCLORC;;;WD)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;CI;RPWPCRCCDCLCRCWOWDSDDTSW;;;ED)(A;CIID;RPWPCRCCDCLCRCWOWDSDDTSW;;;%s)(A;CIID;RPWPCRCCDCLCRCWOWDSDDTSW;;;ED)(OA;CIID;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;CIID;RPWPCRCCDCLCLORCWOWDSDDTSW;;;EA)(A;CIID;LC;;;RU)(A;CIID;RPWPCRCCLCLORCWOWDSDSW;;;BA)S:AI)r®   )r´   rÿ   ú,CN=MicrosoftDNS,ré   rê   rù   rì   rí   ÚntSecurityDescriptorrü   N)r
   rÚ   Ú	from_sddlr   r   rŽ   r›   r¢   r«   r±   r¸   r¾   r%   rî   r3   rï   rð   rñ   )
r)   r*   rò   r  rÓ   r6   ÚsddlÚsecr  rö   s
   &&&&&&    r-   Úadd_domain_recordr2  á  sM  € ðð õ€Dô ×
Ñ
×
'Ñ
'¨Ó
8€CØ€EØ	‡L�L”œ,›.Ó)Ô*Ø	‡L�L”Ô-Ó/Ó0Ô1Ø	‡L�L”Ô,Ó.Ó/Ô0Ø	‡L�L”Ô3ÀsÔKÓLÔMØ	‡L�L”Ô1À3ÔGÓHÔIØ	‡L�L”Ô,Ó.Ó/Ô0Ø	‡L�L”Ô2Ó4Ó5Ô6Ü
�+Š+”c—f’f™UÃYÓPVÒX`Ð$aÓbÓ
c€CØ Ð+€CˆÑä×Òœ8 C›=Ü×+Ñ+Ø1ó	3ð ÐÑô ×+Ò+¨E´3×3CÑ3CÀ]ÓS€CˆÑØ	‡I�Iˆc†Nr/   c                 ó¤   € \         P                  ! \         P                  ! V R V: RV: RV: 24      4      pRR.VR&   V P                  V4       R# )ú
DC=_msdcs.r-  ré   rê   rù   rì   N)r%   rî   r3   rñ   )r)   rÔ   rò   Ú	dnsforeströ   s   &&&& r-   Úadd_msdcs_recordr6    sF   € ä
�+Š+”c—f’f™UÛ%.³ºð%Bó Có D€Cà Ð+€CˆÑØ	‡I�Iˆc†Nr/   c           	      ó¨  € V: R V: 2p\         P                  ! V RV: RV: RV: 24      p	\        W	RWTWg4       \        W	RV,          VV4       \	        W	RV^X4       \	        W	RV,          V^X4       \	        W	RV^X4       \	        W	R	VR
4       \	        W	RVR
4       \	        W	RVR4       \	        W	RV,          VR4       \	        W	RVR4       \	        W	RV,          VR4       \        W	RV4       \	        W	RV,          VR4       \	        W	RV,          VR4       \	        W	RVR4       \	        W	RVR4       \        W	RVV4       \        W	RVV4       R# )r  rÿ   r-  ré   úDC=@úDC=%szDC=_kerberos._tcpzDC=_kerberos._tcp.%s._siteszDC=_kerberos._udpzDC=_kpasswd._tcpiÐ  zDC=_kpasswd._udpzDC=_ldap._tcpé…  zDC=_ldap._tcp.%s._siteszDC=_gc._tcpéÄ  zDC=_gc._tcp.%s._sitesz	DC=_msdcsz&DC=_ldap._tcp.%s._sites.DomainDnsZonesz&DC=_ldap._tcp.%s._sites.ForestDnsZoneszDC=_ldap._tcp.DomainDnsZoneszDC=_ldap._tcp.ForestDnsZonesúDC=DomainDnsZonesúDC=ForestDnsZonesN)r%   r3   r  r+  r  r#  )
r)   r*   rò   Úsiter  r  r  r  r  Údomain_container_dns
   &&&&&&&&  r-   Úadd_dc_domain_recordsr@    s°  € ó  (ªÐ3€Mô Ÿ&š&¡Û"+«V²Xð)?ó @Ðô �%¨f°hØô#ô �E°¸(Õ0BÀFØôô �5Ð/BØ  "ô&ô �5Ð/LØõ0Ø&¨ô,ô �5Ð/BØ  "ô&ô �5Ð/AØ  #ô'ô �5Ð/AØ  #ô'ô �5¨ÀØôô �5Ð/HØõ0Ø&¨ô-ô �5¨}¸mØôô �5Ð/FÈÕ/MØ  $ô(ô �u°;ÀÔNô �5Ø;¸dÕBÀMØôô
 �5Ø;¸dÕBÀMØôô
 �5Ð/MØ  #ô'ô �5Ð/MØ  #ô'ô �EÐ0CÀVØôô �EÐ0CÀVØör/   c
           	      óÖ  € V: R V: 2p
\         P                  ! V RV: RV: RV: 24      p\        WRWTRR4       \        WRV
^X4       \        WRV,          V
^X4       \        WRV
R	4       \        WR
V,          V
R	4       \        WRV,          V
R4       \        WRV
R4       \        WRV
R	4       \	        WRWg4       \        WRV,          V
R	4       \        WRV	,          V
4       R# )r  r4  r-  ré   r8  NzDC=_kerberos._tcp.dczDC=_kerberos._tcp.%s._sites.dczDC=_ldap._tcp.dcr:  zDC=_ldap._tcp.%s._sites.dczDC=_ldap._tcp.%s._sites.gcr;  zDC=_ldap._tcp.gczDC=_ldap._tcp.pdczDC=gczDC=_ldap._tcp.%s.domainsr9  )r%   r3   r  r  r+  r&  )r)   rÔ   rò   r>  r5  r  r  r  r,   Úntdsguidr  Úforest_container_dns   &&&&&&&&&&  r-   Úadd_dc_msdcs_recordsrD  h  s!  € ó  (ªÐ3€Mô Ÿ&š&¡Û"+«V²Xð)?ó @Ðô �%¨f°hØ˜ôô �5Ð/EØ  "ô&ô �5Ø3°dÕ:¸MÈ2ôOô �5Ð/AØ  #ô'ô �5Ð/KØõ0Ø&¨ô-ô �5Ð/KØõ0Ø&¨ô.ô �5Ð/AØ  $ô(ô �5Ð/BØ  #ô'ô �E°¸ÔIô �5Ø-°
Õ:¸MÈ3ôPô �U°¸8Õ1CØ"ö$r/   c	                ó,  €  \         P                  ! \         P                  P                  W&4      4       \         P                  ! \         P                  P                  W64      4       Vf   ^p\        V \        R4      RVRVRVR\        VP                  R4      4      P                  R4      R	\        V4      R
VP                  RVP                  P                  4       : RVP                  P                  4       : 2/4       R#   \         d     Lªi ; i)z¥Add DNS specific bits to a secrets database.

:param secretsdb: Ldb Handle to the secrets database
:param names: Names shortcut
:param machinepass: Machine password
Nzsecrets_dns.ldifÚREALMÚ	DNSDOMAINÚ
DNS_KEYTABÚDNSPASS_B64zutf-8rÆ   ÚKEY_VERSION_NUMBERÚHOSTNAMEÚDNSNAMEr  )ÚosÚunlinkÚpathÚjoinÚOSErrorr   r   r   ÚencoderÎ   r'   r  ÚnetbiosnameÚlowerr  )	Ú	secretsdbÚnamesÚprivate_dirÚbinddns_dirÚrealmr  Údns_keytab_pathÚdnspassÚkey_version_numbers	   &&&&&&&&&r-   Úsecretsdb_setup_dnsr]  �  sß   € ðÜ
�	Š	”"—'‘'—,‘,˜{Ó<Ô=Ü
�	Š	”"—'‘'—,‘,˜{Ó<Ô=ð Ò!ØÐô ˆiœÐ$6Ó7Ø�UØ˜Ø˜/Øœ9 W§^¡^°GÓ%<Ó=×DÑDÀVÓLØ ¤#Ð&8Ó"9Ø˜Ÿ™ØØ×!Ñ!×'Ñ'Ö)¨5¯?©?×+@Ñ+@Õ+BðDð	:ö 	øô ô Ùðús   ‚A&D ÄDÄDc                ó  € \         P                  P                  VP                  4      p \        P
                  ! VR4       \         P                  ! VR4       VP                  e=    \         P                  ! VRVP                  4       \         P                  ! VR4       R# R#   \         d     Lpi ; i  \         d@    R\         P                  9  d'   T P                  RY!P                  3,          4        R#  R# i ; i)zl(Re)create the DNS directory and chown it to bind.

:param logger: Logger object
:param paths: paths object
Téø  NÚSAMBA_SELFTESTú!Failed to chown %s to bind gid %uéÿÿÿÿ)rM  rO  ÚdirnameÚdnsÚshutilÚrmtreerQ  ÚmkdirÚbind_gidÚchownÚchmodÚenvironÚerror)ÚloggerÚpathsÚdns_dirs   && r-   Úcreate_dns_dirrp  ¼  sÉ   € ô �g‰g�o‰o˜eŸi™iÓ(€GðÜ�Š�g˜tÔ$ô ‡H‚HˆW�eÔà‡~�~Ò!ð	.Ü�HŠH�W˜b %§.¡.Ô1ä�HŠH�W˜eÖ$ñ	 "øô ô Ùðûô ô 	.Ø¤r§z¡zÔ1Ø—‘Ð@ØŸ^™^ðD-õ -÷ .ò 2ð	.ús$   «B% Á(9B6 Â%B3Â2B3Â6AD Ã?D c           	     ó  € \         P                  P                  VP                  VP                  4      p\         P                  P                  VP
                  VP                  4      p\         P                  P                  V4      '       dî   \         P                  P                  V4      '       d    \         P                  ! V4        \         P                  ! W#4       VP                  e‹    \         P                  ! VP
                  R4       \         P                  ! VP
                  R
VP                  4        \         P                  ! VR	4       \         P                  ! VR
VP                  4       R# R# R#   \         d.   pT P                  RT: RTP                  : 24        Rp?LæRp?ii ; i  \         d3   pT P                  RT: RT: RTP                  : 24        Rp?ELRp?ii ; i  \         dA    R\         P                  9  d(   T P!                  RTP
                  TP                  4        ELi ; i  \         d9    R\         P                  9  d    T P!                  RY1P                  4        R#  R# i ; i)z\Create link for BIND to DNS keytab

:param logger: Logger object
:param paths: paths object
zFailed to remove z: NzFailed to create link z -> r_  r`  ra  i   rb  )rM  rO  rP  rW  Ú
dns_keytabrX  ÚisfilerN  rQ  rl  ÚstrerrorÚlinkrh  rj  ri  rk  Úinfo)rm  rn  Úprivate_dns_keytab_pathÚbind_dns_keytab_pathÚes   &&   r-   Úcreate_dns_dir_keytab_linkrz  Ö  sî  € ô !Ÿg™gŸl™l¨5×+<Ñ+<¸e×>NÑ>NÓOÐÜŸ7™7Ÿ<™<¨×(9Ñ(9¸5×;KÑ;KÓLÐä	‡w�w‡~�~Ð-×.Ò.Ü�7‰7�>‰>Ð.×/Ò/ðAÜ—	’	Ð.Ô/ð	VÜ�GŠGÐ+ÔBð �>‰>Ò%ðCÜ—’˜×*Ñ*¨EÔ2Ü—’˜×*Ñ*¨B°·±Ô?ð
FÜ—’Ð-¨uÔ5Ü—’Ð-¨r°5·>±>ÖBñ &ñ! /øô ô AØ—’Û2°A·J³Jð@÷ Añ AûðAûô ô 	VØ�LŠLÛ1Ó3GÈÏËðU÷ Vò Vûð	Vûô ô CØ#¬2¯:©:Ô5Ø—K‘KÐ CØ %× 1Ñ 1°5·>±>ôCúðCûô ô FØ#¬2¯:©:Ô5Ø—K‘KÐ CØ 4·n±n÷Fò 6ðFúsV   Â4E= ÃF8 Ã0AG8 Ä>9I Å=F5Æ#F0Æ0F5Æ8G5Ç'G0Ç0G5Ç8AIÉIÉ<J	ÊJ	c
                óò  € \        V\        4      '       g   Q hVe$   RV,           p
VR,           V,           pRV,           pMRp
RpRpVe$   RV,           pVR,           V,           pRV,           pMRpRpRp\        \        R	4      VP                  R
VRVRVRVRVRVR\
        P                  ! R4      RV	RVRV
RVRVRV/4       VP                  eQ    \        P                  ! VP                  RVP                  4       \        P                  ! VP                  R4       R# R#   \         dK    R\        P                  9  d2   T P                  RTP                  TP                  3,          4        R#  R# i ; i)ap  Write out a DNS zone file, from the info in the current database.

:param paths: paths object
:param dnsdomain: DNS Domain name
:param domaindn: DN of the Domain
:param hostip: Local IPv4 IP
:param hostip6: Local IPv6 IP
:param hostname: Local hostname
:param realm: Realm name
:param domainguid: GUID of the domain.
:param ntdsguid: GUID of the hosts nTDSDSA record.
Nz            IN AAAA    z        IN AAAA    z#gc._msdcs               IN AAAA    Ú z            IN A    z        IN A    z gc._msdcs               IN A    zprovision.zonerK  rG  rF  ÚHOSTIP_BASE_LINEÚHOSTIP_HOST_LINEÚ
DOMAINGUIDÚ
DATESTRINGz%Y%m%d%HÚDEFAULTSITEÚNTDSGUIDÚHOSTIP6_BASE_LINEÚHOSTIP6_HOST_LINEÚGC_MSDCS_IP_LINEÚGC_MSDCS_IP6_LINEi´  r`  ra  rb  )Ú
isinstancer'   r   r   rd  ÚtimeÚstrftimerh  rM  ri  rj  rQ  rk  rl  )rm  rn  r  r  r  r  rY  r,   rB  r>  Úhostip6_base_lineÚhostip6_host_lineÚgc_msdcs_ip6_lineÚhostip_base_lineÚhostip_host_lineÚgc_msdcs_ip_lines   &&&&&&&&&&      r-   Úcreate_zone_filer�     s‰  € ô �j¤#×&Ò&Ð&Ð&àÒØ5¸Õ?ÐØ$Ð'<Õ<¸wÕFÐØAÀGÕKÑàÐØÐØÐàÒØ1°FÕ:ÐØ#Ð&8Õ8¸6ÕAÐØ=ÀÕFÑàÐØÐØÐäŒzÐ*Ó+¨U¯Y©YØ˜Ø˜Ø�UØÐ 0ØÐ 0Ø˜*Øœ$Ÿ-š-¨
Ó3Ø˜4Ø˜ØÐ!2ØÐ!2ØÐ 0ØÐ!2ð9ô ð  ‡~�~Ò!ð	0Ü�HŠH�U—Y‘Y  E§N¡NÔ3ä�HŠH�U—Y‘Y Ö&ñ	 "øô
 ô 	0Ø¤r§z¡zÔ1Ø—‘Ð@Ø—I‘I˜uŸ~™~ðD/õ /÷ 0ò 2ð	0ús   ÃAD! Ä!AE6Å5E6c                óì  € VP                   p\        P                  P                  VR4      p\        P                  P	                  VP
                  4      p\        P                  P                  VR4      p	/ p
V P                  R\        P                  RR.R7      pV^ ,          R,           F1  p\        V4      P                  R4      w  rÞWêVP                  4       &   K3  	  \        4       pRV^ ,          9   d!   \        V^ ,          R,          ^ ,          4      pVP                  P                  4       p\        P                  P                  WŠV,          4      p \        P                  ! V	4       \        VR4      P!                  4        V: RV: 2p\"        P$                  ! V4      pV P                  R	\        P                  R
7      pVP'                  V^ ,          4       RV,          p\)        \+        V4      4      P-                  R4      p\/        V\1        R4      RVP                  RVR\        V4      RV/4       \/        V\1        R4      R4       T
T RTP                  P                  4       ,          pRTP6                  P                  4       ,          pT
T,          pT
P9                  T4      pRp \        P:                  ! \        P                  P                  TT4      \        P                  P                  T	T4      4       \        P:                  ! \        P                  P                  TT4      \        P                  P                  TT4      4       TR8X  db   \        P:                  ! \        P                  P                  TTR,           4      \        P                  P                  TTR,           4      4       T'       d¼   \        P:                  ! \        P                  P                  TT4      \        P                  P                  TT4      4       TR8X  db   \        P:                  ! \        P                  P                  TTR,           4      \        P                  P                  TTR,           4      4       T
T T'       d   T
T  \?        \        P                  P                  TR4      \        P                  P                  TR4      4       T
 F¤  pY­,          pTR8X  dK   \A        \        P                  P                  TT4      \        P                  P                  TT4      4       K\  \?        \        P                  P                  TT4      \        P                  P                  TT4      4       K¦  	  TPB                  Ee    \        PD                  ! T4       Fä  w  ppp T F\  p!\        P                  P                  TT!4      p"\        PF                  ! T"R TPB                  4       \        PH                  ! T"R4       K^  	  T  Fu  p#T#PK                  R!4      '       g   K  \        P                  P                  TT#4      p$\        PF                  ! T$R TPB                  4       \        PH                  ! T$R4       Kw  	  Kæ  	  R# R\        PL                  9  d   TPO                  R4       R# R#   \2         d   pTP5                  RT 24       h Rp?ii ; i  \<         d   pTP5                  RT 24       h Rp?ii ; i  \2         d   pTP5                  RT 24       h Rp?ii ; i  \<         d.    R\        PL                  9  d   TP5                  R4        R#  R# i ; i)"zRCreate a copy of samdb and give write permissions to named for dns partitions
    z	sam.ldb.dz
@PARTITIONÚ	partitionÚbackendStorer    Ú:Úwz://z
@INDEXLIST)r!   r"   zobjectGUID: %s
-rÆ   zprovision_basedn.ldifrä   r  Ú	DOMAINSIDÚ
DESCRIPTORzprovision_basedn_options.ldifNz@Failed to setup database for BIND, AD based DNS cannot be used: zDC=DOMAINDNSZONES,%szDC=FORESTDNSZONES,%szmetadata.tdbÚmdbz-lockzsam.ldbr_  i°  r`  z9Failed to set permissions to sam.ldb* files, fix manuallyz\Unable to find group id for BIND,
                set permissions to sam.ldb* files manuallyrb  )z.ldbz.tdbzldb-lock)(rW  rM  rO  rP  rc  rd  r$   r%   r&   r'   ÚsplitÚupperr   r*   rg  ÚopenÚcloseÚsambaÚLdbrñ   r   r   rÎ   r   r   Ú	Exceptionrl  ÚrootdnÚgetru  rQ  r   r   rh  Úwalkri  rj  Úendswithrk  Úwarning)%r)   rm  rn  rV  rÓ   r,   rW  Ú
samldb_dirro  Údns_samldb_dirÚpartfiler+   ÚtmpÚncÚfnameÚbackend_storer*   Údomainpart_fileÚdom_urlÚdom_ldbÚ	index_resÚdomainguid_lineÚdescrÚerrÚdomainzonednÚforestzonednÚdomainzone_fileÚforestzone_fileÚmetadata_fileÚpfilerc  ÚdirsÚfilesÚdÚdpathÚfÚfpaths%   &&&&&&                               r-   Úcreate_samdb_copyr¿  >  s¥  € ð ×#Ñ#€KÜ—‘—‘˜k¨;Ó7€JÜ�g‰g�o‰o˜eŸi™iÓ(€GÜ—W‘W—\‘\ '¨;Ó7€Nð €HØ
�,‰,˜LÜ Ÿ^™^Ø)¨>Ð:ð ó <€Cð �1�v�k×"Ð"ˆÜ˜#“h—n‘n SÓ)‰ˆØ$�—‘“Óñ #ô .Ó/€MØ˜˜Q�ÔÜ˜C �F >Õ2°1Õ5Ó6ˆð �~‰~×#Ñ#Ó%€HÜ—g‘g—l‘l 7°XÕ,>Ó?€OðÜ
�Š�Ô Üˆ_˜cÓ"×(Ñ(Ô*ó  -ªoÐ>ˆÜ—)’)˜GÓ$ˆð —L‘L l¼#¿.¹.�LÓIˆ	Ø�‰�I˜a•LÔ!à-°
Õ:ˆÜÔ/°	Ó:Ó;×BÑBÀ6ÓJˆÜ�w¤
Ð+BÓ CØ˜Ÿ™Ø˜/Øœ˜Y›Ø˜%ð	F!ô 	"ô
 	�wÜ!Ð"AÓBÀDô	Jð 	�Ðð *¨E¯N©N×,@Ñ,@Ó,BÕB€LØ)¨E¯L©L×,>Ñ,>Ó,@Õ@€Là˜|Õ,€OØ—l‘l <Ó0€Oà"€MðÜ
�Š”—‘—‘˜Z¨Ó7Ü—‘—‘˜^¨]Ó;ô	=ä
�Š”—‘—‘˜[¨/Ó:Ü—‘—‘˜W oÓ6ô	8à˜EÔ!ô �GŠG”B—G‘G—L‘L ¨oÀÕ.GÓHÜ—G‘G—L‘L ¨/¸GÕ*CÓDôFçÜ�GŠG”B—G‘G—L‘L ¨oÓ>Ü—G‘G—L‘L ¨/Ó:ô<à Ô%ô —’œŸ™Ÿ™ [°/ÀGÕ2KÓLÜŸ™Ÿ™ W¨oÀÕ.GÓHôJð 	�ÐßØ�\Ð"ðÜ”—‘—‘˜k¨9Ó5Ü—‘—‘˜g yÓ1ô	3ãˆBØ•LˆEØ Ô%ÜœŸ™Ÿ™ k°5Ó9ÜŸ™Ÿ™ g¨uÓ5ö7ô œŸ™Ÿ™ k°5Ó9ÜŸ™Ÿ™ g¨uÓ5ö7ñ ð ‡~�~Ó!ð	QÜ(*¯ª°Ö(8Ñ$�˜˜uÛ�AÜŸG™GŸL™L¨°!Ó4�EÜ—H’H˜U B¨¯©Ô7Ü—H’H˜U EÖ*ñ ó �AØ—z‘zÐ">×?Ô?Ü "§¡§¡¨W°aÓ 8˜ÜŸš ¨¨E¯N©NÔ;ÜŸš ¨Ö.ó	 ó )9ð ¤2§:¡:Ô-Ø�N‰Nð >ö ?ñ .øôi ô Ø�‰ØNÈsÈeÐTô	VàûðûôP ô Ø�‰ØNÈsÈeÐTô	Vàûðûô* ô Ø�‰ØNÈsÈeÐTô	Vàûðûô$ ô 	QØ¤r§z¡zÔ1Ø—‘ØO÷Qò 2ð	Qúsl   ÅC;[ Ê7D[+ ÏB;[+ ÒC2\ ÖB\; Ø6A!\; Û[(Û[#Û#[(Û+\Û6\Ü\Ü\8Ü\3Ü3\8Ü;1]3Ý2]3c                ó†   € \        \        R4      V P                  R4       \        \        R4      V P                  R4       R# )z Write out a dns_update_list fileÚdns_update_listNÚspn_update_list)r   r   rÁ  rÂ  )rn  s   &r-   Úcreate_dns_update_listrÃ  Æ  s4   € ô ŒzÐ+Ó,¨e×.CÑ.CÀTÔJÜŒzÐ+Ó,¨e×.CÑ.CÀTÖJr/   c                óP  € ^ RI Hp VR8X  d˜   \        \        R4      V P                  RVRVRV P
                  RRR	P                  VP                  R	4      R
,          4      ,           RV P                  RV P                  /4       \        \        R4      V P                  4       R.# VR8X  Edú   \        P                  ! R.R\        P                  \        P                  R	R7      P                  4       ^ ,          p\        V4      pRpRpRp	Rp
RpRpRpRpVP                  4       P!                  R4      R/8w  d   RpEMVP                  4       P!                  R4      R/8w  d   RpEMåVP                  4       P!                  R4      R/8w  d   Rp	EM½VP                  4       P!                  R4      R/8w  d   Rp
EM•VP                  4       P!                  R4      R/8w  d   RpEMmVP                  4       P!                  R4      R/8w  d   RpEMEVP                  4       P!                  R4      R/8w  d   RpEMVP                  4       P!                  R4      R/8w  g%   VP                  4       P!                  R4      R/8w  d   RpMÒVP                  4       P!                  R4      R/8w  d	   V! R4      hVP                  4       P!                  R4      R/8w  d	   V! R 4      hVP                  4       P!                  R!4      R/8w  d	   V! R 4      hVP                  4       P!                  R"4      R/8w  d	   V! R 4      hVP#                  R#V P                  ,          4       \        \        R$4      V P                  RV P                  R%\$        P&                  P)                  4       R&VR'VR(V	R)V
R*VR+VR,VR-V/
4       R.# R.# )0aC  Write out a file containing zone statements suitable for inclusion in a
named.conf file (including GSS-TSIG configuration).

:param paths: all paths
:param realm: Realm name
:param dnsdomain: DNS Domain name
:param dns_backend: DNS backend type
:param keytab_name: File name of DNS keytab file
:param logger: Logger object
)ÚProvisioningErrorÚBIND9_FLATFILEz
named.confrG  rF  Ú	ZONE_FILEÚREALM_WCz*.r  :r‘   NNÚ
NAMED_CONFÚNAMED_CONF_UPDATEznamed.conf.updateÚ	BIND9_DLZznamed -VT)ÚshellÚstdoutÚstderrÚcwdÚ#zBIND 9.8r|  zBIND 9.9z	BIND 9.10z	BIND 9.11z	BIND 9.12z	BIND 9.14z	BIND 9.16z	BIND 9.18z	BIND 9.20zBIND 9.7z&DLZ option incompatible with BIND 9.7.z	BIND_9.13z/Only stable/esv releases of BIND are supported.z	BIND_9.15z	BIND_9.17z0BIND version unknown, please modify %s manually.znamed.conf.dlzÚ
MODULESDIRÚBIND9_8ÚBIND9_9ÚBIND9_10ÚBIND9_11ÚBIND9_12ÚBIND9_14ÚBIND9_16ÚBIND9_18Nrb  )Úsamba.provisionrÅ  r   r   Ú	namedconfrd  rP  r™  Únamedconf_updateÚ
subprocessÚPopenÚPIPEÚSTDOUTÚcommunicater   rš  Úfindr¤  r�  ÚparamÚmodules_dir)rn  rY  r  Údns_backendrm  rÅ  Ú	bind_infoÚbind9_8Úbind9_9Úbind9_10Úbind9_11Úbind9_12Úbind9_14Úbind9_16Úbind9_18s   &&&&&          r-   Úcreate_named_confrï  Î  s'  € õ" 2àÐ&Ô&Ü”:˜lÓ+¨U¯_©_Ø Ø˜UØ §¡Ø  s§x¡x°·±¸CÓ0@ÀÕ0DÓ'EÕ EØ  %§/¡/Ø'¨×)?Ñ)?ð?ô 	ô 	”:Ð1Ó2°E×4JÑ4JÖKà	˜Õ	#Ü×$Ò$ j \¸Ü,6¯O©OÜ,6×,=Ñ,=Ø),ô.÷ /:©k«m¸Aõ?ˆ	ô ˜yÓ)ˆ	ØˆØˆØˆØˆØˆØˆØˆØˆØ�?‰?Ó×!Ñ! *Ó-°Ô3ØŠGØ�_‰_Ó×#Ñ# JÓ/°2Ô5ØŠGØ�_‰_Ó×#Ñ# KÓ0°BÔ6ØŠHØ�_‰_Ó×#Ñ# KÓ0°BÔ6ØŠHØ�_‰_Ó×#Ñ# KÓ0°BÔ6ØŠHØ�_‰_Ó×#Ñ# KÓ0°BÔ6ØŠHØ�_‰_Ó×#Ñ# KÓ0°BÔ6ØŠHØ�_‰_Ó×#Ñ# KÓ0°BÔ6Ø�_‰_Ó×#Ñ# KÓ0°BÔ6Ø‰HØ�_‰_Ó×#Ñ# JÓ/°2Ô5Ù#Ð$LÓMÐMØ�_‰_Ó×#Ñ# KÓ0°BÔ6Ù#Ð$UÓVÐVØ�_‰_Ó×#Ñ# KÓ0°BÔ6Ù#Ð$UÓVÐVØ�_‰_Ó×#Ñ# KÓ0°BÔ6Ù#Ð$UÓVÐVà�N‰NÐMÐPU×P_ÑP_Õ_Ô`Ü”:Ð.Ó/°·±Ø  %§/¡/Ø ¤%§+¡+×"9Ñ"9Ó";Ø˜wØ˜wØ Ø Ø Ø Ø Ø ðCö 	ñS 
$r/   c                ó„   € \        \        R4      V RVRVRVRVR\        P                  P	                  WE4      RV/4       R# )	aF  Write out a file containing zone statements suitable for inclusion in a
named.conf file (including GSS-TSIG configuration).

:param path: Path of the new named.conf file.
:param realm: Realm name
:param dnsdomain: DNS Domain name
:param binddns_dir: Path to bind dns directory
:param keytab_name: File name of DNS keytab file
z	named.txtrG  rL  rF  rH  ÚDNS_KEYTAB_ABSÚPRIVATE_DIRN)r   r   rM  rO  rP  )rO  rY  r  ÚdnsnamerX  Úkeytab_names   &&&&&&r-   Úcreate_named_txtrõ  $  sE   € ô Œz˜+Ó&¨Ø˜Ø�wØ�UØ˜+ØœbŸg™gŸl™l¨;ÓDØ˜;ð/ö r/   c                 ó   € V R9   # )rÆ  )rÆ  rË  ÚSAMBA_INTERNALÚNONE© )rå  s   &r-   Úis_valid_dns_backendrú  9  s   € ØÐSÑSÐSr/   c                 ó>   € \         T u;8*  ;'       d
    \        8*  # u # r<   )r   r   )Úos_levels   &r-   Úis_valid_os_levelrý  =  s   € Ü" h×IÔIÔ2IÑIÐIÑIÐIr/   c                 ó8   € \        WR W4       \        WR 4       R# ©z	CN=SystemN)r÷   r
  )r)   rÓ   rÔ   r6   s   &&&&r-   Úcreate_dns_legacyr   A  s   € ä�e {°IÔMä�E [Ö1r/   c	           
      ó@   € \        WR W1V4       \        WR WCWVV4       R# rÿ  )r2  r@  )	r)   rÓ   rÔ   r  r>  r  r  r  r6   s	   &&&&&&&&&r-   Úfill_dns_data_legacyr  H  s*   € ô �e {°IØ#ô%ô ˜%¨;¸Ø"¨Gö5r/   c           	      ó¢   € \        WW4VP                  VP                  V4       \        WR VV4       V\        8w  d   \        WRVVRR7       R# R# )r<  r=  T)rô   N)râ   rÕ   rÖ   r÷   r   )r)   rÓ   rV  r*   rÔ   r6   r×   s   &&&&&&&r-   Úcreate_dns_partitionsr  S  sU   € ô ˜¨8ØŸ™¨¯©¸ôEô �eÐ':¸IØ#ô%à”^Ô#Ü˜%Ð+>À	Ø'°÷	6ñ $r/   Tc                óà   € V'       d   \        WR4       \        WRVW4       V'       d   \        WRVWWW‰4       V\        8w  d*   \	        WRV4       V'       d   \        WRVWgW‰W«4
       R# R# R# )aR  Fill data in various AD partitions

:param samdb: LDB object connected to sam.ldb file
:param domainsid: Domain SID (as dom_sid object)
:param site: Site name to create hostnames in
:param domaindn: DN of the domain
:param forestdn: DN of the forest
:param dnsdomain: DNS name of the domain
:param dnsforest: DNS name of the forest
:param hostname: Host name of this DC
:param hostip: IPv4 addresses
:param hostip6: IPv6 addresses
:param domainguid: Domain GUID
:param ntdsguid: NTDS GUID
:param dnsadmins_sid: SID for DnsAdmins group
:param autofill: Create DNS records (using fixed template)
r<  r=  N)r
  r2  r@  r   r6  rD  )r)   rÓ   r>  r*   rÔ   r  r5  r  r  r  r,   rB  r6   Úautofillr×   Úadd_roots   &&&&&&&&&&&&&&&&r-   Úfill_dns_data_partitionsr  a  s   € ÷0 Ü˜Ð)<Ô=ô �eÐ':¸IØô0÷ Ü˜eÐ/BÀDØ'°6ô	Dð ”^Ô#ô 	˜Ð*=¸yÔI÷ Ü  Ð2EÀtØ!*°fØ!+ö7ñ ñ $r/   c                ó   € \        V4      '       g   \        RV,          4      h\        V4      '       g   \        RV,          4      hVR8X  d   VP                  R4       R# VP                  R4       \	        WP
                  4       VP
                  pV P                  4       P                  4       pVP                  P                  4       pTpVP                  pVP                  P                  4       p\        W4      p\        W4      pV P                  4         VP                  RV,          4       \        WP                   VV4       V\"        8X  d4   VP                  RV,          4       \%        WP                   W½VVW‰V4	       MvVR9   dp   V\&        8¼  de   VP                  R	4       \)        WP                   W+VVV
4       VP                  R
4       \+        WP                   WûVWÞVW‰VVP,                  VV
R7       V P/                  4        TP3                  R4      '       d   \5        YY#TYVY÷TT	R7       R# R#    T P1                  4        h ; i)a¼  Provision DNS information (assuming GC role)

:param samdb: LDB object connected to sam.ldb file
:param secretsdb: LDB object connected to secrets.ldb file
:param names: Names shortcut
:param paths: Paths shortcut
:param logger: Logger object
:param dns_backend: Type of DNS backend
:param os_level: Functional level (treated as os level)
:param dnspass: Password for bind's DNS account
:param hostip: IPv4 address
:param hostip6: IPv6 address
úInvalid dns backend: %rúInvalid os level: %rrø  z'No DNS backend set, not configuring DNSNzAdding DNS accountsz%Creating CN=MicrosoftDNS,CN=System,%sz'Populating CN=MicrosoftDNS,CN=System,%sz5Creating DomainDnsZones and ForestDnsZones partitionsz7Populating DomainDnsZones and ForestDnsZones partitions)r×   ÚBIND9_)r>  r[  r  r  )r÷  rË  )rú  rŸ  rý  rv  rå   r*   Úget_root_basednÚget_linearizedr  rT  ÚsitenamerS  r7   r.   Útransaction_startr   rÓ   r   r  r   r  r  rB  Útransaction_commitÚtransaction_cancelÚ
startswithÚsetup_bind9_dns)r)   rU  rV  rn  rm  rå  rü  r[  r  r  r×   r*   rÔ   r  r5  r>  r  r6   r,   s   &&&&&&&&&&&        r-   Úsetup_ad_dnsr  ‘  s  € ô"   ×,Ò,ÜÐ1°KÕ?Ó@Ð@ä˜X×&Ò&ÜÐ.°Õ9Ó:Ð:à�fÔØ�‰Ð=Ô>Ùð ‡K�KÐ%Ô&Ü�UŸN™NÔ+ð" �~‰~€HØ×$Ñ$Ó&×5Ñ5Ó7€Hà—‘×%Ñ%Ó'€IØ€Ià�>‰>€Dà× Ñ ×&Ñ&Ó(€Hä% eÓ6€MÜ Ó0€Jà	×ÑÔð#à�‰Ð;¸hÕFÔGÜ˜%§¡°(¸MÔJàÔ.Ô.à�K‰KÐAÀHÕLÔMÜ  ¯©¸ÈdØ!)¨6¸MõKð Ð;Ô;ØÔ3Ô3ð �K‰KÐOÔPÜ! %¯©¸%È8Ø"/°ô=ð �K‰KÐQÔRÜ$ U¯O©O¸TÈXØ%.¸8ÀVØ%/°·±ÀØ0:õ<ð 	× Ñ Ô"à×Ñ˜h×'Ò'Ü˜¨%¸Ø#°DÐRXØ '÷	)ñ (øðØ× Ñ Ô"Øús   ÄC#H: È:Ic                óî  € \        V4      '       d   VP                  R4      '       g   \        RV,          4      h\        V4      '       g   \        RV,          4      hVP                  p\        W4      p\        WVP                  VP                  VP                  VP                  VP                  VVR7	       \        WC4       \        WC4       VR8X  d<   \        WCVVP                  V	W¢P                  VP                  VVP                   R7
       VR8X  d$   V\"        8¼  d   \%        WVW"P&                  V4       \)        W2P                  VP                  VVR7       \+        VP,                  VP                  VP                  VP                  : R	VP                  : 2VP                  VP                  R
7       VP/                  RVP0                  4       VP/                  RVP,                  4       R# )aö  Provision DNS information (assuming BIND9 backend in DC role)

:param samdb: LDB object connected to sam.ldb file
:param secretsdb: LDB object connected to secrets.ldb file
:param names: Names shortcut
:param paths: Paths shortcut
:param logger: Logger object
:param dns_backend: Type of DNS backend
:param os_level: Functional level (treated as os level)
:param site: Site to create hostnames in
:param dnspass: Password for bind's DNS account
:param hostip: IPv4 address
:param hostip6: IPv6 address
r  r
  r  )rY  r  rZ  r[  r\  rÆ  )r>  r  r  r  r  rY  r,   rB  rË  )rY  r  rå  rm  r  )rY  r  ró  rX  rô  z9See %s for an example configuration include file for BINDz@and %s for further documentation required for secure DNS updatesN)rú  r  rŸ  rý  r*   r.   r]  rW  rX  rY  r  rr  rp  rz  r�  r  rB  r   r¿  rÓ   rï  rõ  Únamedtxtrv  rÛ  )r)   rU  rV  rn  rm  rå  rü  r>  r[  r  r  r\  r*   r,   s   &&&&&&&&&&&&  r-   r  r  ó  s‘  € ô$ ! ×-Ò-Ø×"Ñ" 8×,Ò,ÜÐ1°KÕ?Ó@Ð@ä˜X×&Ò&ÜÐ.°Õ9Ó:Ð:à�~‰~€Hä Ó0€Jä˜	Ø×)Ñ)Ø×)Ñ)Ø#Ÿk™kØ"'§/¡/Ø(-×(8Ñ(8À'Ø+=õ?ô �6Ô!Ü˜vÔ-àÐ&Ô&Ü˜¨TØ#(§?¡?¸6Ø!(·>±>Ø$Ÿ{™{°zØ"'§.¡.õ		2ð �kÔ! hÔ2IÔ&IÜ˜%¨Ø§¡°*ô	>ô �e§;¡;Ø %§¡¸[Ø#õ%ô �U—^‘^Ø Ÿ;™;°%·/±/Ø(-¯¬¸¿»ÐHØ!&×!2Ñ!2Ø!&×!1Ñ!1õ	3ð
 ‡K�KÐKØ—‘ô!à
‡K�Kð Ø Ÿ>™>ö+r/   )F)NNNNN)^Ú__doc__rM  rÏ   re  rˆ  r%   Úbase64r   rÝ  r�  Úsamba.tdb_utilr   Úsamba.mdb_utilr   Ú	samba.ndrr   r   r   Úsamba.dcerpcr   r	   r
   Ú
samba.dsdbr   r   r   r   Úsamba.descriptorr   r   r   r   r   r   r   Úsamba.provision.commonr   r   r   r   r   r   Úsamba.samdbr   Úsamba.commonr   r.   r7   ÚDnssrvRpcRecordr9   rX   r^   rd   rj   rv   r„   ÚDnsPropertyrŽ   r›   r¢   r«   r±   r¸   r¾   râ   rå   r÷   r
  r  r  r   r#  r&  r+  r2  r6  r@  rD  r]  rp  rz  r�  r¿  rÃ  rï  rõ  rú  rý  r   r  r  r  r  r  rù  r/   r-   Ú<module>r%     s'  ðñ* ã 	Û Û Û Û 
Ý Û Û Ý #Ý #ß *Ý ß -Ñ -÷ó ÷÷ ñ ÷÷ õ 2Ý #òòô"ˆd×"Ñ"ô ô�×%Ñ%ô ô�$×&Ñ&ô ôˆt×#Ñ#ô ô�×$Ñ$ô ô(�×$Ñ$ô ô"�×$Ñ$ô ô�4×#Ñ#ô ô!˜$×*Ñ*ô !ô ˜×)Ñ)ô  ô' × 0Ñ 0ô 'ô%˜d×.Ñ.ô %ô"˜×)Ñ)ô "ô%˜t×/Ñ/ô %ò8òvôò"DòNò<òòòòòòDòZòz2$òjò>.ò4'FòT;0ò|E?òPKòSòlò*TòJò2ò5ò6ð  LPØ(1¸Dô-7ðb 15¸TÈ4Ø%ô_)öD?+r/   