+
    4Ssi¶Ž ã            .       ó<  € R t Rt^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ R	IHtHtHtH t H!t!H"t"H#t#H$t$H%t% ^ R
I&H't'H(t( ^ RI)H*t*H+t+ ^ RIH,t,H-t-H.t.H/t/H0t0H1t1H2t2 ^ RI3H4t4H5t5 ^ RI6H7t7 ^ RI8H9t9 ^ RI:H;t;H<t<H=t= ^ RI>H?t? ^ RI@HAtAHBtB ^ RICHDtD ^ RIEHFtFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtNHOtOHPtPHQtQHRtRHStSHTtTHUtUHVtV ^ RIWHXtXHYtYHZtZH[t[H\t\H]t] ^ RI^H_t_H`t`HataHbtb ^ RIct^ RIdt^ RIeHftf ^ RIgHhth ^ RIiHjtj ^ RIkHltl ^ RIgHmtm ^ RIHntn RtoRtpRtqR tr^ts ! R! R"]t4      tu ! R# R$]t4      tvR% twRmR' ltxR( tyR) tzR* t{ ! R+ R,]t4      t|R- t}R. t~R/ tR0 t€R1 t�R2 t‚RnR3 ltƒRoR4 lt„R5 t…RpR6 lt†RRR^]+3R7 lt‡R8 tˆR9 t‰R: tŠR; t‹R< tŒR= t�RqR> ltŽR? t�R@ t�RA t‘Rrt’RsRB lt“RtRC lt”RDt•REt–RFt—]—3RG lt˜RH t™RI tšRJ t›RK tœRL t�RM tžRmRN ltŸRO t R][RRRPRRRRRRRRRRRRRRR&R&3RQ lt¡RRRSRTRURVRWRXRWRYRWRZRUR[RWRWRWRURUR\RSRSRS/t¢R] t£R^ t¤RuR_ lt¥RvR` lt¦RvRa lt§RR][RRRRRRRRRRRRPRRRRRRRRRRRRRRRRRRRR&R&RR&R&RbRc]1R&RRR&3.Rd lt¨RwRe lt©Rf tª ! Rg Rh]«4      t¬ ! Ri Rj]«4      t­ ! Rk Rl]¬4      t®R# )xz/Functions for setting up a Samba configuration.ÚrestructuredText)Ú	b64encodeN)Úsystem_sessionÚadmin_session)Úsystem_session_unix)Úauth)ÚsmbdÚpassdb)Úparam)	ÚLdbÚMAX_NETBIOS_NAME_LENÚcheck_all_substitutedÚis_valid_netbios_charÚ
setup_fileÚsubstitute_varÚvalid_netbios_nameÚversionÚis_heimdal_built)ÚsecurityÚmisc)ÚSEC_CHAN_BDCÚSEC_CHAN_WKSTA)ÚDS_DOMAIN_FUNCTION_2000ÚDS_DOMAIN_FUNCTION_2008ÚDS_DOMAIN_FUNCTION_2008_R2ÚDS_DOMAIN_FUNCTION_2012ÚDS_DOMAIN_FUNCTION_2012_R2ÚDS_DOMAIN_FUNCTION_2016ÚENC_ALL_TYPES)ÚKEY_CYCLE_DURATIONÚMAX_CLOCK_SKEW)ÚIDmapDB)Úread_ms_ldif)ÚsetntaclÚgetntaclÚdsacl2fsacl)Únt_now)Úndr_packÚ
ndr_unpack)Ú
LDBBackend)Úget_deletedobjects_descriptorÚget_config_descriptorÚ get_config_partitions_descriptorÚget_config_sites_descriptorÚ!get_config_ntds_quotas_descriptorÚ'get_config_delete_protected1_descriptorÚ)get_config_delete_protected1wd_descriptorÚ'get_config_delete_protected2_descriptorÚget_domain_descriptorÚ$get_domain_infrastructure_descriptorÚget_domain_builtin_descriptorÚget_domain_computers_descriptorÚget_domain_users_descriptorÚ!get_domain_controllers_descriptorÚ'get_domain_delete_protected1_descriptorÚ'get_domain_delete_protected2_descriptorÚ'get_managed_service_accounts_descriptor)Ú
setup_pathÚsetup_add_ldifÚsetup_modify_ldifÚ	FILL_FULLÚFILL_SUBDOMAINÚFILL_DRS)Úget_dnsadmins_sidÚsetup_ad_dnsÚcreate_dns_dir_keytab_linkÚcreate_dns_update_list)ÚSchema)ÚSamDB)Údbcheck)Úcreate_kdc_conf)Úget_default_backend_store)Úfunctional_levelz$31B2F340-016D-11D2-945F-00C04FB984F9z$6AC1786C-016F-11D2-945F-00C04FB984F9zDefault-First-Site-NameÚlastProvisionUSNc                   ó&   a € ] tR t^‹t o R tRtV tR# )ÚProvisionPathsc                óô   € R V n         R V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n	        R V n
        R V n        R V n        R V n        R V n        R V n        R V n        R # ©N)Ú	shareconfÚhklmÚhkcuÚhkcrÚhkuÚhkpdÚhkptÚsamdbÚidmapdbÚsecretsÚkeytabÚ
dns_keytabÚdnsÚwinsdbÚprivate_dirÚbinddns_dirÚ	state_dir©Úselfs   &Ú:/usr/lib/python3/dist-packages/samba/provision/__init__.pyÚ__init__ÚProvisionPaths.__init__�   s{   € ØˆŒØˆŒ	ØˆŒ	ØˆŒ	ØˆŒØˆŒ	ØˆŒ	ØˆŒ
ØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆÔØˆÔØˆŽó    )r_   r\   r[   rS   rR   rQ   rU   rV   rT   rX   rZ   r^   rW   rY   rP   r`   r]   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rd   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @rc   rM   rM   ‹   s   ø‡ € ÷ð rf   rM   c                   ó&   a € ] tR t^¡t o R tRtV tR# )ÚProvisionNamesc                ó  € R V n         R V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n	        R V n
        R V n        R V n        R V n        R V n        R V n        R V n        R V n        / V n        R # rO   )ÚncsÚrootdnÚdomaindnÚconfigdnÚschemadnÚdnsforestdnÚdnsdomaindnÚldapmanagerdnÚ	dnsdomainÚrealmÚnetbiosnameÚdomainÚhostnameÚsitenameÚsmbconfÚ	domainsidÚ	forestsidÚ
domainguidÚname_mapra   s   &rc   rd   ÚProvisionNames.__init__£   s‹   € ØˆŒØˆŒØˆŒØˆŒØˆŒØˆÔØˆÔØ!ˆÔØˆŒØˆŒ
ØˆÔØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆŽrf   )rv   r{   ry   rx   r~   ru   r„   r‚   rƒ   r   rz   r…   rs   r}   r|   rt   rw   r€   r�   Nrg   rn   s   @rc   rq   rq   ¡   s   ø‡ € ÷ð rf   rq   c                ó(  € \        4       pRVn        VP                  R4      P                  4       Vn        VP                  R4      Vn        VP
                  P                  4       Vn        \        P                  ! VP                  4      pVP
                  P                  4       Vn        VP                  RVP                  ,          R\        P                  R.R7      p\        V^ ,          R,          4      P                  RR	4      Vn        WFn        V P                  R
R	\        P"                  . RAOR7      p	\        V	^ ,          R,          ^ ,          4      Vn        \        V	^ ,          R,          ^ ,          4      Vn        \        P(                  ! W4      \        P(                  ! V V	^ ,          R,          ^ ,          P+                  R4      4      8X  g^   \-        RVP.                  : R\        V	^ ,          R,          ^ ,          P+                  R4      4      : RVP                   : RV: R2	4      h\        V	^ ,          R,          ^ ,          4      Vn        \        V	^ ,          R,          ^ ,          4      Vn        V	^ ,          R,          Vn        RVn        RVn        \;        ^ \=        VP4                  4      4       Fs  p
\        VP4                  V
,          4      pR\        VP2                  4      ,          pW¼8X  d	   WÆn        KI  R\        VP0                  4      ,          pW½8X  g   Km  WÖn        Ku  	  V P                  RR\        VP$                  4      ,           \        P>                  R.R7      p\        V^ ,          R,          4      Vn         V P                  RVP                  ,          RV,          \        P>                  R.R7      p\=        V4      ^ 8X  d   \-        RVP                  : RV: 24      h\        V^ ,          R,          4      P                  RVP                  ,           R	4      Vn!        V P                  R V^ ,          PD                  ,          . VP$                  R!7      p\        V^ ,          PD                  4      Vn#        V P                  R
R"\        VPF                  4      ,          \        P"                  R#R$.R7      p\        \I        \J        PL                  V^ ,          R%,          ^ ,          4      4      Vn'        \        \I        \J        PL                  V^ ,          R$,          ^ ,          4      4      Vn(        V P                  R
V\        P"                  . RBOR7      p\        \I        \J        PL                  V^ ,          R$,          ^ ,          4      4      Vn)        \I        \T        PV                  V^ ,          R&,          ^ ,          4      Vn,        \I        \T        PV                  V^ ,          R&,          ^ ,          4      Vn-        V^ ,          P                  R'4      e*   \]        V^ ,          R',          ^ ,          4      \^        8  d   \^        Vn0        M%\]        V^ ,          R',          ^ ,          4      Vn0        V P                  R(\b        ,          R)V,           \        P>                  RR*.R7      p\        V^ ,          R,          4      P                  R+R	4      P                  R,R	4      Vn2        V P                  R(\f        ,          R)V,           \        P>                  RR*.R7      p\=        V4      ^8X  d@   \        V^ ,          R,          4      P                  R+R	4      P                  R,R	4      Vn4        MRVn4        VP                  R-\        VPX                  4      : R.\T        Pj                  : R/2R0R1.R27      p\=        V4      ^8w  d5   \-        R3\        VPX                  4      : R.\T        Pj                  : 24      h\        V^ ,          R1,          ^ ,          4      R48X  d'   \]        V^ ,          R0,          ^ ,          4      Vn6        MC\n        Pp                  ! \]        V^ ,          R0,          ^ ,          4      4      Pr                  Vn6        V P                  R5\        P                  R6.R7.R87      p\=        V4      ^ 8”  d   R9pMR:pV P                  R;VP                  ,          \        P                  R6.R7.R87      p\=        V4      ^ 8”  d   R9pMR:pVP8                  e   V'       d	   R<Vn:        M'R=Vn:        MV'       g	   V'       d	   R>Vn:        MR?Vn:        \w        WP0                  4      p\        V4      VPx                  R@&   V# )Ca¨  Get key provision parameters (realm, domain, ...) from a given provision

:param samdb: An LDB object connected to the sam.ldb file
:param secretsdb: An LDB object connected to the secrets.ldb file
:param idmapdb: An LDB object connected to the idmap.ldb file
:param paths: A list of path to provision object
:param smbconf: Path to the smb.conf file
:param lp: A LoadParm object
:return: A list of key provision parameters
NÚ	workgroupr|   z(flatname=%s)zCN=Primary DomainsÚsAMAccountName©Ú
expressionÚbaseÚscopeÚattrsÚ$Ú z(objectClass=*)ÚdefaultNamingContextÚschemaNamingContextÚconfigurationNamingContextÚrootDomainNamingContextÚnamingContextsÚutf8z
basedn in z (z) and from z)is not the same ...zDC=ForestDnsZones,%szDC=DomainDnsZones,%sz(objectClass=site)z	CN=Sites,Úcnz(CN=%s)zOU=Domain Controllers,%sÚdNSHostNamezUnable to find DC called CN=z under OU=Domain Controllers,Ú.zserverReference=%s)r‹   rŽ   rŒ   úCN=NTDS Settings,%sÚinvocationIDÚ
objectGUIDÚinvocationIdÚ	objectSidúmsDS-Behavior-Versionz(name={%s})zCN=Policies,CN=System,ÚdisplayNameÚ{Ú}z(cn=Ú-Ú)Ú	xidNumberÚtype)r‹   rŽ   z.Unable to find uid/gid for Domain Admins rid (ÚID_TYPE_BOTHz(samaccountname=dns)Údnúsearch_options:1:2)r‹   r�   rŽ   ÚcontrolsTFz(samaccountname=dns-%s)Ú	BIND9_DLZÚSAMBA_INTERNALÚBIND9_FLATFILEÚNONEÚ	DnsAdmins)r‘   r’   r“   r”   r•   )rœ   rž   rŸ   )=rq   Ú	adminpassÚgetÚupperr~   r|   Úlowerr{   ÚsambaÚdn_from_dns_nameÚsearchÚldbÚSCOPE_SUBTREEÚstrÚreplacer}   r�   Ú
SCOPE_BASErv   rw   ÚDnÚdecodeÚProvisioningErrorrW   ru   rt   rs   rx   ry   ÚrangeÚlenÚSCOPE_ONELEVELr€   r   r¨   Úserverdnr(   r   ÚGUIDÚ
invocationÚntdsguidr„   r   Údom_sidr‚   rƒ   Úintr   ÚdomainlevelÚDEFAULT_POLICY_GUIDÚpolicyidÚDEFAULT_DC_POLICY_GUIDÚpolicyid_dcÚDOMAIN_RID_ADMINISTRATORÚroot_gidÚpwdÚgetpwuidÚpw_gidÚdns_backendrA   r…   )rW   Ú	secretsdbrX   Úpathsr�   ÚlpÚnamesÚbasednÚresÚcurrentÚiÚncrx   ry   Úres3Úres4Ú
server_resÚres5Úres6Úres7Úres8Úres9Úres10Úhas_legacy_dns_accountÚres11Úhas_dns_accountÚdns_admins_sids   &&&&&&                     rc   Úfind_provision_key_parametersré   ¹   s©  € ô Ó€EØ€E„Oð —6‘6˜+Ó&×,Ñ,Ó.€E„LØ—&‘&˜“/€E„KØ—k‘k×'Ñ'Ó)€E„OÜ×#Ò# E§O¡OÓ4€FØ—+‘+×#Ñ#Ó%€E„Kð ×
Ñ
 oØ Ÿ<™<õ'(Ø.BÜ!$×!2Ñ!2Ð;KÐ:Lð ó N€Cô ˜C �FÐ#3Õ4Ó5×=Ñ=¸cÀ2ÓF€EÔà„Mð �l‰lÐ&7Ø "¬#¯.©.ò"4ð ó 5€Gô ˜ �Ð$@ÕAÀ!ÕDÓE€E„NÜ˜ �Ð$9Õ:¸1Õ=Ó>€E„NÜ�FŠF�5Ó!¤c§f¢f¨UØ-4°Q­ZÐ8NÕ-OÐPQÕ-R×-YÑ-YÐZ`Ó-aó'cô dåØ:?¿+¼+Ü:=¸gÀa½jÐI_Õ>`ÐabÕ>c×>jÑ>jÐkqÓ>rÖ:sØ:?¿-¼-Ëð"Qó Sð 	Sô
 ˜ �Ð$:Õ;¸AÕ>Ó?€E„NÜ�w˜q•zÐ";Õ<¸QÕ?Ó@€E„LØ˜•
Ð+Õ,€E„IØ€EÔØ€EÔä�1”c˜%Ÿ)™)“nÖ%ˆÜ�—‘˜1•Óˆà,´°E·L±LÓ0AÕBˆØÔØ +ÔÙà,´°E·N±NÓ0CÕDˆØÖØ +ÔÙñ &ð �<‰<Ð#7Ø(¬3¨u¯~©~Ó+>Õ>Äc×FXÑFXÐaeÐ`fð ó h€Dä˜˜a� �Ó'€E„Nð �<‰< 9¨u×/@Ñ/@Õ#@Ø7¸&Õ@Ü!×0Ñ0¸¸ð ó I€Dô ˆ4ƒy�A„~ÝÐch×ctÔctÒv|Ð }Ó~Ð~ä˜˜a� Õ/Ó0×8Ñ8¸¸u¿¹Õ9NÐPRÓS€E„Nà—‘Ð)=ÀÀQÅÇ
Á
Õ)JØ$&¨U¯^©^ð ó =€Jä˜ A�×)Ñ)Ó*€E„Nð �<‰<Ð#4Ø2´S¸¿¹Ó5HÕHÜ!Ÿn™nØ-¨|Ð<ð ó >€Dô œ:¤d§i¡i°°aµ¸Õ1HÈÕ1KÓLÓM€EÔÜœ¤D§I¡I¨t°A­w°|Õ/DÀQÕ/GÓHÓI€E„Nð �<‰<Ð#4¸6Ü!Ÿn™nò 5[ð ó \€Dô œ:¤d§i¡i°°aµ¸Õ1FÀqÕ1IÓJÓK€EÔÜ ¤×!1Ñ!1°4¸µ7¸;Õ3GÈÕ3JÓK€E„OÜ ¤×!1Ñ!1°4¸µ7¸;Õ3GÈÕ3JÓK€E„OØˆA…w‡{�{Ð*Ó+Ò3Ü��Q•Ð/Õ0°Õ3Ó4Ô7NÔNÜ3ˆÕä  Q¥Ð(?Õ @ÀÕ CÓDˆÔð �<‰< =Ô3FÕ#FØ5¸Õ>Ü!×0Ñ0¸¸}Ð8Mð ó O€Dô ˜˜a� �Ó'×/Ñ/°°RÓ8×@Ñ@ÀÀbÓI€E„Nà�<‰< =Ô3IÕ#IØ5¸Õ>Ü!×0Ñ0Ø# ]Ð3ð ó 5€Dô ˆ4ƒy�A„~Ü  Q¥¨¥Ó.×6Ñ6°s¸BÓ?×GÑGÈÈRÓPˆÕà ˆÔà�>Š>Ü˜uŸ™Ö/´×1RÔ1Rð&Tà!,¨fÐ 5ð ó 7€Dô ˆ4ƒy�A„~ÝÔY\Ð]b×]lÑ]lÖYmÔow÷  pQó  pQð  !Ró  Sð  	SÜ
ˆ4��7�6�?˜1ÕÓ .Ô0Ü˜T !�W [Õ1°!Õ4Ó5ˆ�äŸš¤c¨$¨q­'°+Õ*>¸qÕ*AÓ&BÓC×JÑJˆŒà�L‰LÐ$:Ü"×0Ñ0¸¸Ø#7Ð"8ð ó :€Eô 	ˆE‹
�QŒØ!%Ñà!&Ðà�L‰LÐ$=À×@QÑ@QÕ$QÜ"×0Ñ0¸¸Ø#7Ð"8ð ó :€Eô 	ˆE‹
�QŒØ‰àˆà×ÑÒ$ßØ +ˆEÕà 0ˆEÕß	×2Ø,ˆÕà"ˆÔä& u¯n©nÓ=€NÜ"% nÓ"5€E‡N�N�;Ñà€Lrf   Fc                óJ  € . pV'       g–   V P                  R\        P                  \        R.R7      pV^ ,          \        ,           FU  p\        P                   ! R\        V4      4      '       g   \        V4      : RV: 2pVP                  \        V4      4       KW  	  VP                  V: RV: RV: 24       \        P                  ! 4       p\        P                  ! V R4      Vn	        \        P                  ! V\        P                  \        4      V\        &   V P                  RR\        P                  R.R7      p\        V4      ^ 8X  g   \        V^ ,          4      ^ 8X  d*   \        P                  ! V\        P                  R4      VR&   V P                  V4       R	# )
a3  Update the field provisionUSN in sam.ldb

This field is used to track range of USN modified by provision and
upgradeprovision.
This value is used afterward by next provision to figure out if
the field have been modified since last provision.

:param samdb: An LDB object connect to sam.ldb
:param low: The lowest USN modified by this upgrade
:param high: The highest USN modified by this upgrade
:param id: The invocation id of the samba's dc
:param replace: A boolean indicating if the range should replace any
                existing one or appended (default)
ú
@PROVISIONr¨   )rŒ   r�   rŽ   Ú;r£   zprovisionnerID=*ÚprovisionnerIDrŠ   N)r¶   r·   r»   ÚLAST_PROVISION_USN_ATTRIBUTEÚrer¹   ÚappendÚMessager¼   r¨   ÚMessageElementÚFLAG_MOD_REPLACErÀ   ÚFLAG_MOD_ADDÚmodify)	rW   ÚlowÚhighÚidrº   ÚtabÚentryÚeÚdeltas	   &&&&&    rc   Úupdate_provision_usnrý   [  sF  € ð  €CßØ—‘ ,Ü#&§>¡>Ü$@À$Ð#Gð ó Iˆð �q•Ô6×7Ð7ˆAÜ—9’9˜S¤# a£&×)Ò)Ü" 1žv¢rÐ*�Ø�J‰J”s˜1“vÖñ 8ð
 ‡J�J›S£$ªÐ+Ô,Ü�KŠK‹M€EÜ�vŠv�e˜\Ó*€E„Hä×Ò˜3Ü×/Ñ/Ü7ó	9ð 
Ô
&Ñ'ð �L‰LÐ$6Ø*´#·.±.Ø 0Ð1ð ó 3€Eô ˆ5ƒz�Q„œ#˜e A�h›-¨1Ô,Ü"%×"4Ò"4°R¼×9IÑ9IÐK[Ó"\ˆÐÑØ	‡L�L�Örf   c                ó(  € . pVP                  V: RV: RV: 24       \        P                  ! 4       p\        P                  ! V R4      Vn        \        P
                  ! V\        P                  \        4      V\        &   V P                  V4       R# )a´  Set the field provisionUSN in sam.ldb
This field is used to track range of USN modified by provision and
upgradeprovision.
This value is used afterward by next provision to figure out if
the field have been modified since last provision.

:param samdb: An LDB object connect to sam.ldb
:param low: The lowest USN modified by this upgrade
:param high: The highest USN modified by this upgrade
:param id: The invocationId of the provisionr£   rì   rë   N)	rð   r·   rñ   r¼   r¨   rò   rô   rî   Úadd)rW   rö   r÷   rø   rù   rü   s   &&&&  rc   Úset_provision_usnr   „  sn   € ð €CØ‡J�J›S£$ªÐ+Ô,ä�KŠK‹M€EÜ�vŠv�e˜\Ó*€E„Hä×Ò˜3Ü×+Ñ+Ü7ó	9ð 
Ô
&Ñ'ð 
‡I�IˆeÖrf   c                óp   € V P                  RV\        P                  R.. ROR7      pV^ ,          R,          # )a   This function return the biggest USN present in the provision

:param samdb: A LDB object pointing to the sam.ldb
:param basedn: A string containing the base DN of the provision
                (ie. DC=foo, DC=bar)
:return: The biggest USN in the provisionzobjectClass=*Ú
uSNChanged)r‹   rŒ   r�   rŽ   rª   )r©   zserver_sort:1:1:uSNChangedzpaged_results:1:1)r¶   r·   r¸   )rW   r×   rØ   s   && rc   Úget_max_usnr  œ  s>   € ð �,‰, /¸Ü ×.Ñ.°|°nò!6ð ó 7€Cð
 ˆq�6�,ÕÐrf   c                óž  €  V P                  R\        ,          R\        P                  \        R.R7      p\        T4      ^ 8”  Ed@   . p/ p\        P                  ! R4      pT^ ,          P                  R4      '       d2   T^ ,          R,           F  pTP                  \        T4      4       K  	  T^ ,          \        ,           F¼  p	\        T	4      P                  R4      p
\        T
4      ^8X  d   T
^,          pMRp\        T4      ^ 8”  d	   Yµ9  d   KQ  TP                  T
^ ,          4      pTP                  T4      f   . Yk&   Yk,          P                  T^ ,          4       Yk,          P                  T^,          4       K¾  	  T# R#   \        P                   d0   pTP
                  w  r4T\        P                  8X  d    Rp?R# h Rp?ii ; i)	zóGet USNs ranges modified by a provision or an upgradeprovision

:param sam: An LDB object pointing to the sam.ldb
:return: a dictionary which keys are invocation id and values are an array
         of integer representing the different ranges
z%s=*rë   rí   rŠ   Nr£   rì   Údefault)r¶   rî   r·   r»   ÚLdbErrorÚargsÚERR_NO_SUCH_OBJECTrÀ   rï   Úcompiler±   rð   r¹   Úsplit)Úsamrú   Úe1ÚecodeÚemsgÚmyidsr¿   Úprû   ÚrÚtab1rø   Útab2s   &            rc   Úget_last_provision_usnr  ¬  sw  € ðØ—
‘
 fÔ/KÕ&KØ ,´C·N±NÜ">Ð@PÐ!Qð ó Sˆô ˆ5ƒz�A…~ØˆØˆÜ�JŠJ�tÓˆØ��8�<‰<Ð(×)Ò)Ø˜1•XÐ.×/Ð/�Ø—‘œS ›VÖ$ñ 0à�q•Ô6×7Ð7ˆAÜ�q“6—<‘< Ó$ˆDÜ�4‹y˜AŒ~Ø˜!•W‘à�Ü�E“
˜Q” 2¤?ÙØ—7‘7˜4 �7Ó#ˆDØ�y‰y˜‹}Ò$Ø�‘	Ø�I×Ñ˜T !�WÔ%Ø�I×Ñ˜T !�WÖ%ñ 8ð ˆáøô7 �<‰<ô ØŸ™‰ˆØ”C×*Ñ*Ô*ÝØûð	ús   ‚4F ÆGÆ#GÇGÇGc                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚProvisionResultiÕ  z‰Result of a provision.

:ivar server_role: The server role
:ivar paths: ProvisionPaths instance
:ivar domaindn: The domain dn, as string
c                ó    € R V n         R V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n	        R V n
        R # rO   )Úserver_rolerÔ   ru   rÕ   rW   ÚidmaprÖ   r‚   Úadminpass_generatedr°   Úbackend_resultra   s   &rc   rd   ÚProvisionResult.__init__Ý  sR   € ØˆÔØˆŒ
ØˆŒØˆŒØˆŒ
ØˆŒ
ØˆŒ
ØˆŒØ#'ˆÔ ØˆŒØ"ˆÖrf   c                ó6  € VP                  R4       V P                  '       d   VP                  RV P                  4       VP                  RV P                  4       VP                  RV P                  P
                  4       VP                  RV P                  P                  4       VP                  RV P                  P                  4       VP                  RV P                  4       V P                  '       d   V P                  P                  V4       R# R# )	z)Report this provision result to a logger.zMOnce the above files are installed, your Samba AD server will be ready to usezAdmin password:        %szServer Role:           %szHostname:              %szNetBIOS Domain:        %szDNS Domain:            %szDOMAIN SID:            %sN)Úinfor  r°   r  rÖ   r   r~   r{   r‚   r  Úreport_logger)rb   Úloggers   &&rc   r  ÚProvisionResult.report_loggerê  sÌ   € à�‰ðô	ð ×#×#Ð#Ø�K‰KÐ3°T·^±^ÔDØ�‰Ð/°×1AÑ1AÔBØ�‰Ð/°·±×1DÑ1DÔEØ�‰Ð/°·±×1BÑ1BÔCØ�‰Ð/°·±×1EÑ1EÔFØ�‰Ð/°·±Ô@à××ÐØ×Ñ×-Ñ-¨fÖ5ñ rf   )r°   r  r  ru   r‚   r  rÕ   rÖ   rÔ   rW   r  N)	rh   ri   rj   rk   Ú__doc__rd   r  rl   rm   rn   s   @rc   r  r  Õ  s   ø‡ € ñò#÷6ð 6rf   r  c                ón   € V F  p V ! V4      u # 	  \        RV,          4      h  \          d     K0  i ; i)zÄFind a user or group from a list of possibilities.

:param nssfn: NSS Function to try (should raise KeyError if not found)
:param names: Names to check.
:return: Value return by first names list.
zUnable to find user/group in %r)ÚKeyError)ÚnssfnrÖ   Únames   && rc   Úfindnssr'  û  sD   € ó ˆð	Ù˜“;Òñ ô
 Ð4°uÕ<Ó
=Ð=øô ô 	Úð	ús   ‡%¥4³4c                 óD   € \        \        P                  V 4      ^,          # ©é   )r'  rÏ   Úgetpwnam©rÖ   s   &rc   Úfindnss_uidr-  
  ó   € Ü”3—<‘< Ó'¨Õ*Ð*rf   c                 óD   € \        \        P                  V 4      ^,          # r)  )r'  ÚgrpÚgetgrnamr,  s   &rc   Úfindnss_gidr2    r.  rf   c                 ó˜   €  \        V 4      pV#   \         d0   pTP                  T4       TP                  R 4       ^ p Rp?T# Rp?ii ; i)zAssuming root user has UID zeroN)r-  r$  r  )Úrootr   Úroot_uidrû   s   &&  rc   Úget_root_uidr6    sL   € ðÜ˜tÓ$ˆð
 €Oøô	 ô Ø�‰�AŒØ�‰Ð5Ô6ØŒØ€Oûð	ús   ‚ �A	š$AÁA	c                ó|  € \        4       pV P                  R4      Vn        V P                  R4      Vn        V P                  R4      Vn        RVn        RVn        \        P                  P                  VP                  R4      Vn
        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R	4      Vn        \        P                  P                  VP                  R
4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  RVR,           4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        \        P                  P                  VP                  R4      Vn        RVn        RVn        RVn        RVn        RVn        RVn        V P                  RR4      Vn         V P                  RR4      Vn!        V PD                  Vn#        V# ) zhSet the default paths for provisioning.

:param lp: Loadparm context.
:param dnsdomain: DNS Domain name
úprivate dirúbinddns dirústate directoryz
dns.keytabúsecrets.keytabz	share.ldbzsam.ldbz	idmap.ldbzsecrets.ldbzprivilege.ldbÚdns_update_listÚspn_update_listú	krb5.confzkdc.confzwins.ldbÚldapizencrypted_secrets.keyr\   z.zonez
named.confznamed.conf.updatez	named.txtzhklm.ldbzhkcr.ldbzhkcu.ldbzhku.ldbzhkpd.ldbzhkpt.ldbÚpathÚsysvolÚnetlogon)$rM   r±   r^   r_   r`   r[   rZ   Úosr@  ÚjoinrP   rW   rX   rY   Ú	privileger<  r=  Úkrb5confÚkdcconfr]   Ús4_ldapi_pathÚencrypted_secrets_key_pathr\   Ú	namedconfÚnamedconf_updateÚnamedtxtrQ   rS   rR   rT   rU   rV   rA  rB  Ú
configfiler�   )rÕ   r{   rÔ   s   && rc   Úprovision_paths_from_lprN    sƒ  € ô Ó€EØŸ™˜}Ó-€EÔØŸ™˜}Ó-€EÔØ—f‘fÐ.Ó/€E„Oð $€EÔØ#€E„Lä—g‘g—l‘l 5×#4Ñ#4°kÓB€E„OÜ—'‘'—,‘,˜u×0Ñ0°)Ó<€E„KÜ—G‘G—L‘L ×!2Ñ!2°KÓ@€E„MÜ—G‘G—L‘L ×!2Ñ!2°MÓB€E„MÜ—g‘g—l‘l 5×#4Ñ#4°oÓF€E„OÜŸG™GŸL™L¨×):Ñ):Ð<MÓN€EÔÜŸG™GŸL™L¨×):Ñ):Ð<MÓN€EÔÜ—W‘W—\‘\ %×"3Ñ"3°[ÓA€E„NÜ—G‘G—L‘L ×!2Ñ!2°JÓ?€E„MÜ—7‘7—<‘< × 1Ñ 1°:Ó>€E„LÜŸ'™'Ÿ,™, u×'8Ñ'8¸'ÓB€EÔÜ')§w¡w§|¡|Ø×ÑØó(!€EÔ$ô —‘—‘˜U×.Ñ.°°yÀ7Õ7JÓK€E„IÜ—g‘g—l‘l 5×#4Ñ#4°lÓC€E„OÜŸW™WŸ\™\¨%×*;Ñ*;Ð=PÓQ€EÔÜ—W‘W—\‘\ %×"3Ñ"3°[ÓA€E„Nà€E„JØ€E„JØ€E„JØ€E„IØ€E„JØ€E„JØ—6‘6˜& (Ó+€E„LØ—V‘V˜F JÓ/€E„NØ—M‘M€E„MØ€Lrf   c                ó¢   € RP                  V  Uu. uF  p\        V4      '       g   K  VNK  	  up4      pVR\         P                  4       # u upi )z)Determine a netbios name from a hostname.r�   N)rD  r   r   r²   )r   Úxr}   s   &  rc   Údetermine_netbios_namerQ  L  sI   € ð —'‘'¡hÓK¡h Ô2GÈ×2JŸ1˜1¡hÑKÓL€KØÐ,Ô,Ð-×3Ñ3Ó5Ð5ùò Ls
   �A¨Ac           	     ó6  € Vf,   \         P                  ! 4       P                  R4      ^ ,          pV P                  R4      pVf   \	        V4      pVP                  4       p\        V4      '       g   \        V4      hVf9   V P                  R4      pVe   VR8X  d   \        RV P                  ,          4      hVP                  4       pVf2   V P                  R4      pVf   \        RV P                  ,          4      hVP                  4       pVP                  4       pV P                  R4      R8X  d   \        RV P                  ,          4      hV P                  R4      P                  4       V8w  d@   \        R	V P                  R4      P                  4       : R
V P                  : RV: R24      hV P                  R4      P                  4       V8w  d2   \        RV P                  R4      : R
V P                  : RV: R24      hVR8X  d¾   Vf   V P                  R4      pVP                  4       pV P                  R4      P                  4       V8w  d@   \        RV P                  R4      P                  4       : RV: RV P                  : R24      hVf   \        P                  ! V4      pW,8X  d   \        RV: RV: R24      hMTpVf
   RV,           p\        V4      '       g   \        V4      hVP                  4       V8X  d   \        RV: RV: R24      hVP                  4       V8X  d   \        RV: RV: R24      hW-8X  d   V'       g   \        RV: RV: R24      hVR8w  d   TpVP                  4       pVf   TpVf
   RV,           pVf
   RV,           pV
f   \        p
V	f   RV: R V
: R!V: 2p	\        4       pW^n        Wnn        W~n        WŽn        R"V,           Vn        W>n        W.n        WÞn        WÎn        Wn        W®n        Wžn        V# )#z$Guess configuration settings to use.r™   únetbios namer|   r�   z2guess_names: 'realm' not specified in supplied %s!úserver rolez8guess_names: 'server role' not specified in supplied %s!zwguess_names: 'realm =' was not specified in supplied %s.  Please remove the smb.conf file and let provision generate itzguess_names: 'realm=z' in z must match chosen realm 'zA'!  Please remove the smb.conf file and let provision generate itzguess_names: 'server role=z  must match chosen server role 'ú"active directory domain controllerrˆ   zguess_names: Workgroup 'z(' in smb.conf must match chosen domain 'z'!  Please remove the z# file and let provision generate itzguess_names: Domain 'z(' must not be equal to short host name 'z'!zDC=zguess_names: Realm 'z!' must not be equal to hostname 'z)' must not be equal to NetBIOS hostname 'z*' must not be equal to short domain name 'zCN=Configuration,z
CN=Schema,zCN=z,CN=Servers,CN=z
,CN=Sites,zCN=Manager,)ÚsocketÚgethostnamer
  r±   rQ  r²   r   ÚInvalidNetbiosNamer¾   rM  r³   r´   rµ   ÚDEFAULTSITErq   rt   ru   rv   rw   rz   r{   r~   r|   r}   r   r€   rÂ   )rÕ   r   r~   r{   Ú
serverrolert   ru   rv   rw   rÂ   r€   Údomain_names_forcedr}   r|   rÖ   s   &&&&&&&&&&&&   rc   Úguess_namesr\  S  s_  € ð ÒÜ×%Ò%Ó'×-Ñ-¨cÓ2°1Õ5ˆà—&‘&˜Ó(€KØÒÜ,¨XÓ6ˆØ×#Ñ#Ó%€KÜ˜k×*Ò*Ü  Ó-Ð-àÒØ—F‘F˜7“Oˆ	ØÒ 	¨R¤Ü#ØDØ—‘õóð ð —‘Ó!€IàÒØ—V‘V˜MÓ*ˆ
ØÒÜ#Ð$^Ðac×anÑanÕ$nÓoÐoà×!Ñ!Ó#€Jà�O‰OÓ€Eà	‡v�vˆgƒ˜"ÔÜð  !Zð  ]_÷  ]jñ  ]jõ  !jó  kð  	kà	‡v�vˆgƒ×ÑÓ %Ô'Ýð  ac÷  agñ  agð  hoó  ap÷  avñ  avö  axð  z|÷  zGô  zGó  INð  !Oó  Pð  	Pà	‡v�vˆmÓ×"Ñ"Ó$¨
Ô2Ýð  mo÷  msñ  msð  tAö  mBð  DF÷  DQô  DQó  S]ð  !^ó  _ð  	_àÐ9Ô9ØŠ>à—V‘V˜KÓ(ˆFØ—‘“ˆà�6‰6�+Ó×$Ñ$Ó&¨&Ô0Ý#ð  jl÷  jpñ  jpð  q|ó  j}÷  jCñ  jCö  jEó  GMð  OQ÷  O\ô  O\ð  %]ó  ^ð  ^àÒÜ×-Ò-¨iÓ8ˆHàÔ Ý#Ómsó  vAð  %Bó  Cð  Cð !ð ˆØÒØ˜{Õ*ˆHä˜f×%Ò%Ü  Ó(Ð(à‡~�~Ó˜5Ô ÝÓafÓhpÐ qÓrÐrØ×ÑÓ˜eÔ#ÝÓinÓp{Ð |Ó}Ð}Ø„×2ÝÓjoÓqwÐ xÓyÐyàÐ9Ô9ð ˆØ×%Ñ%Ó'ˆ	à‚~ØˆàÒØ&¨Õ/ˆØÒØ (Õ*ˆàÒÜˆàÓã›¢8ð-ˆô Ó€EØ„LØ„NØ„NØ„NØ'¨&Õ0€EÔØ„OØ„LØ„KØ#ÔØ„NØ„NØ„Nà€Lrf   c
           	     ó8  € V f   Q hVf,   \         P                  ! 4       P                  R4      ^ ,          p\        V4      p
Vf   RpVf   Q hVP	                  4       pVf   Q hVP	                  4       pRV
RVRVRV/pVf   \
        P                  P                  4       p\        P                  P                  V 4      '       d   VP                  V 4       V	e/   V	 F(  pWœ,          f   K  RP                  Wœ,          4      W¼&   K*  	  VEe�   \        P                  P                  \        P                  P                  VR	4      4      VR
&   \        P                  P                  V4      VR&   \        P                  P                  \        P                  P                  VR4      4      VR&   \        P                  P                  \        P                  P                  VR4      4      VR&   \        P                  P                  \        P                  P                  VR4      4      VR&   VP                  R\        P                  P                  V4      4       VP                  RVR,          4       VP                  RVR,          4       VP                  RVR,          4       V'       EdÙ   V'       dê   Vep   \        P                  P                  VR	4      pVP                  R\        P                  P                  \        P                  P                  VR4      4      4       EM]VP                  R4      '       g_   VP                  R
4      pVP                  R\        P                  P                  \        P                  P                  VR4      4      4       MçVeo   \        P                  P                  VR4      pVP                  R\        P                  P                  \        P                  P                  VR4      4      4       MuVP                  R4      '       g_   VP                  R4      pVP                  R\        P                  P                  \        P                  P                  VR4      4      4       / pVR8X  dm   \        P                  P                  VP                  R4      R4      VR&   \        P                  P                  VR,          VP!                  4       R4      VR&   MRVR&   \#        V R4      p VP%                  R4       VP'                  4        F   w  ppVP%                  RV: RV: R 24       K"  	  VP%                  R 4       VP'                  4        FX  w  ppVP%                  R!V,          4       VP%                  R"V,          4       VP%                  R#4       VP%                  R 4       KZ  	  VP)                  4        VP                  V 4       VP+                  R$V 4       R#   TP)                  4        i ; i)%zDCreate a new smb.conf file based on a couple of basic settings.
    Nr™   ústandalone serverrS  rˆ   r|   rT  Ú Úprivater8  zlock dirÚstater:  Úcachezcache directoryzbind-dnsr9  z
posix:eadbzeadb.tdbzxattr_tdb:filez	xattr.tdbrU  rA  ÚscriptsrB  Ú
samba_dsdbúpassdb backendÚwz
[globals]
Ú	z = Ú
z[%s]
z	path = %s
z	read only = no
F)rV  rW  r
  rQ  r²   r´   r
   ÚLoadParmrC  r@  ÚexistsÚloadrD  ÚabspathÚsetr±   r³   ÚopenÚwriteÚitemsÚcloseÚdump)r�   r   r~   r|   Ú	targetdirrZ  ÚeadbÚ	use_ntvfsrÕ   Úglobal_paramr}   Úglobal_settingsÚentÚprivdirÚstatedirÚsharesÚfÚkeyÚvalr&  r@  s   &&&&&&&&&&           rc   Úmake_smbconfr  Ë  s}  € ð
 ÒÐÐàÒÜ×%Ò%Ó'×-Ñ-¨cÓ2°1Õ5ˆä(¨Ó2€KàÒØ(ˆ
àÒÐÐØ�\‰\‹^€FàÒÐÐØ�K‰K‹M€Eð 	˜Ø�VØ�Ø�zð	€Oð 
‚zÜ�[‰[×!Ñ!Ó#ˆä	‡w�w‡~�~�g×ÒØ
�‰�ÔàÒÛˆCØÕ Ô,Ø'*§x¡x°Õ0AÓ'B�Ó$ñ  ð ÓÜ)+¯©¯©¼¿¹¿¹ÀiÐQZÓ9[Ó)\ˆ˜Ñ&Ü&(§g¡g§o¡o°iÓ&@ˆ˜
Ñ#Ü-/¯W©W¯_©_¼R¿W¹W¿\¹\È)ÐU\Ó=]Ó-^ˆÐ)Ñ*Ü-/¯W©W¯_©_¼R¿W¹W¿\¹\È)ÐU\Ó=]Ó-^ˆÐ)Ñ*Ü)+¯©¯©¼¿¹¿¹ÀiÐQ[Ó9\Ó)]ˆ˜Ñ&à
�‰ˆzœ2Ÿ7™7Ÿ?™?¨9Ó5Ô6Ø
�‰Ð  /Ð2CÕ"DÔEØ
�‰Ð  /Ð2CÕ"DÔEØ
�‰ˆ}˜o¨mÕ<Ô=ç€tßØÒ$ÜŸ'™'Ÿ,™, y°)Ó<�Ø—‘�|Ü—w‘w—‘¤r§w¡w§|¡|°G¸ZÓ'HÓIöKà—V‘V˜L×)Ò)ØŸ&™& Ó/�Ø—‘�|Ü—w‘w—‘¤r§w¡w§|¡|°G¸ZÓ'HÓIôKøð Ò$ÜŸ7™7Ÿ<™<¨	°7Ó;�Ø—‘Ð'Ü—w‘w—‘¤r§w¡w§|¡|°H¸kÓ'JÓKõMà—V‘VÐ,×-Ò-ØŸ6™6Ð"3Ó4�Ø—‘Ð'Ü—w‘w—‘¤r§w¡w§|¡|°H¸kÓ'JÓKôMð €FØÐ9Ô9ÜŸ7™7Ÿ<™<¨¯©Ð/@Ó(AÀ8ÓLˆˆxÑÜŸW™WŸ\™\¨&°Õ*:¸E¿K¹K»MØ*3ó5ˆˆzÒð -9ˆÐ(Ñ)äˆW�cÓ€AðØ	�‰�ÔØ'×-Ñ-Ö/‰HˆC�Ø�GŠG£S«#Ð.Ö/ñ 0à	�‰�Œà Ÿ,™,ž.‰JˆD�$Ø�G‰G�H˜t•OÔ$Ø�G‰G�O dÕ*Ô+Ø�G‰GÐ(Ô)Ø�G‰G�DŽMñ	 )ð 	
�‰Œ	à‡G�GˆGÔð
 ‡G�GˆE�7Öøð 	
�‰�	ús   ÔCX ØXc                óÐ   € V P                  RV P                  V4       V P                  VR,           V P                  V4       V P                  VR,           V P                  V4       R# )a?  setup reasonable name mappings for sam names to unix names.

:param samdb: SamDB object.
:param idmap: IDmap db object.
:param sid: The domain sid.
:param domaindn: The domain DN.
:param root_uid: uid of the UNIX root user.
:param nobody_uid: uid of the UNIX nobody user.
:param users_gid: gid of the UNIX users group.
zS-1-5-7z-500z-513N)Úsetup_name_mappingÚTYPE_UIDÚTYPE_GID)r  Úsidr5  Ú
nobody_uidÚ	users_gids   &&&&&rc   Úsetup_name_mappingsr‡  1  sN   € ð 
×Ñ˜Y¨¯©¸
ÔCà	×Ñ˜S 6�\¨5¯>©>¸8ÔDØ	×Ñ˜S 6�\¨5¯>©>¸9ÖErf   c	           
     ó¨  € Vf   Q h \         P                  ! V 4       \        WVR.R7      p	Rp
VP                  R8w  d   RVP
                  ,          p
RpV'       g   RpVf   \        4       pRV,          pVR	8X  d   Ve   VR
,          pMRpVR,          pVf   RpV	P                  4         VP                  R4       \        V	\        R4      RV
RV/4       \        V	\        R4      RVP                  RVRV/4       VP                  R4       \        W•4       V	P                  4        R#   \         d     ELi ; i   T	P                  4        h ; i)aS  Setup the partitions for the SAM database.

Alternatively, provision() may call this, and then populate the database.

:note: This will wipe the Sam Database!

:note: This function always removes the local SAM LDB file. The erase
    parameter controls whether to erase the existing data, which
    may not be stored locally but in LDAP.

Nzmodules:)ÚurlÚsession_inforÕ   Úoptionsz# No LDAP backendr·   zldapBackend: %sz"requiredFeatures: encryptedSecretszbackendStore: %sÚmdbrh  r�   zrequiredFeatures: lmdbLevelOnez# No required featuresz*Setting up sam.ldb partitions and settingszprovision_partitions.ldifÚLDAP_BACKEND_LINEÚBACKEND_STOREzprovision_init.ldifÚBACKEND_TYPEÚSERVER_ROLEÚREQUIRED_FEATURESzSetting up sam.ldb rootDSE)rC  ÚunlinkÚOSErrorr   r¦   Úldap_urirI   Útransaction_startr  r<   r;   Úsetup_samdb_rootdseÚtransaction_commitÚtransaction_cancel)Ú
samdb_pathr   rÕ   rŠ  Úprovision_backendrÖ   rZ  Úplaintext_secretsÚbackend_storerW   Úldap_backend_lineÚrequired_featuresÚbackend_store_lines   &&&&&&&&&    rc   Úsetup_samdb_partitionsr   C  s€  € ð Ò#Ð#Ð#ð
Ü
�	Š	�*Ôô �JØ 
˜|ô-€Eð ,ÐØ×Ñ Ô&Ø-Ð0A×0JÑ0JÕJÐàÐßØ@ÐàÒÜ1Ó3ˆØ+¨mÕ;Ðà˜ÔØÒ(Ø Õ%Ñà "ÐØÐ=Õ=ÐàÒ Ø4Ðà	×ÑÔð#Ø�‰Ð@ÔAÜ�uœjÐ)DÓEØ#Ð%6ØÐ!3ðH
ô 	ô
 	�uœjÐ)>Ó?ØÐ 1× 6Ñ 6Ø˜zØ#Ð%6ðBô 	ð 	�‰Ð0Ô1Ü˜EÔ)ð
 	× Ñ Ö"øôa ô ÚðûðXØ× Ñ Ô"Øús   ˆD, Â-A-D> Ä,D;Ä:D;Ä>Ec	                ón  € . R#Op	Ve;   Vf   VP                  4       pVP                  4       : RVP                  4       : 2p
MRp
VP                  4       p\        P                  ! \        P                  ! V RV,          4      4      p\	        V4      .VR	&   R
R.VR&   V
e?   . R$OVR&   V.VR&   RV
: RVP                  4       : 2.VR&   \	        V4      .VR&   R.VR&   VP                  R4      .VR&   RV,          .VR&   \	        V4      .VR	&   Ve   \        V4      .VR&   V P                  RV	RV: RV: R\	        V4      : R\	        VP                  4      : R2	\        P                  R7      pV F  pV P                  VP                  4       K   	  V P                  VP                  V	\        P                  R7      p\        V4      ^8X  dç   V^ ,          R,          ^ ,          .VR&    V^ ,          R,          ^ ,          .VR&    V^ ,          R,          ^ ,          .VR&    V^ ,          R,          ^ ,          .VR&   V F1  pVR 8w  g   K  WÏ,          P                  \        P                   4       K3  	  V P#                  V4       V P%                  V^ ,          P                  VP                  4       R# R!V,          .pV\&        8X  d   V
e   VP)                  R!V
,          .4       VVR"&   V P+                  V4       R#   \         d     ELi ; i  \         d     Lüi ; i  \         d     Lñi ; i)%z�Add domain join-specific bits to a secrets database.

:param secretsdb: Ldb Handle to the secrets database
:param machinepass: Machine password
ÚwhenChangedÚsecretÚpriorSecretÚ
krb5KeytabÚprivateKeytabNr™   zflatname=%s,cn=Primary DomainsÚsecureChannelTypeÚtopÚprimaryDomainÚobjectClassr|   zhost/Ú@ÚsaltPrincipalzmsDS-KeyVersionNumberr;  úutf-8z%s$ÚsamAccountNamerž   zcn=Primary Domainsz(&(|(flatname=z)(realm=z)(objectSid=z2))(objectclass=primaryDomain)(!(distinguishedName=z)))©rŒ   rŽ   r‹   r�   )rŒ   rŽ   r�   ÚpriorWhenChangedr¨   zHOST/%sÚservicePrincipalName)r¢  r£  r¤  ÚpriorChangedr¥  r¦  )r¨  r©  ÚkerberosSecret)r³   r·   rñ   r¼   r¹   r²   Úencoder'   r¶   r¨   rÁ   Údeleter»   rÀ   r$  Ú	set_flagsró   rõ   Úrenamer   Úextendrÿ   )rÓ   r~   r}   Úmachinepassr‚   r|   r{   Úkey_version_numberÚsecure_channel_typerŽ   ÚdnsnameÚ	shortnameÚmsgrØ   Údel_msgÚelÚspns   &&&&&&&&&        rc   Úsecretsdb_self_joinrÂ  Œ  sJ  € ò€Eð ÒØÒØŸ™›ˆIØ(×.Ñ.Ö0°)·/±/Õ2CÐD‰àˆØ×!Ñ!Ó#€Iô �+Š+”c—f’f˜YÐ(HÈ6Õ(QÓRÓ
S€CÜ #Ð$7Ó 8Ð9€CÐÑØ Ð1€CˆÑØÒÚGˆˆMÑØ�wˆˆGŠÛ07¸¿¹½Ð GÐHˆˆOÑÜ(+Ð,>Ó(?Ð'@ˆÐ#Ñ$Ø 0Ð1ˆˆOÑà ×'Ñ'¨Ó0Ð1€Cˆ�MØ" [Õ0Ð1€CÐÑÜ #Ð$7Ó 8Ð9€CÐÑØÒÜ$ YÓ/Ð0ˆˆKÑð ×
Ñ
Ð 4¹Eó MSó  UZô  \_ð  `iö  \jô  loð  ps÷  pvñ  pvö  lwð  (xÜ!$×!3Ñ!3ð ó 5€Có ˆØ×Ñ˜Ÿ™Ö$ñ ð ×
Ñ
 §¡¨e¼3¿>¹>Ð
Ó
J€Cä
ˆ3ƒx�1„}Ø! !�f XÕ.¨qÕ1Ð2ˆˆMÑð	Ø'*¨1¥v¨mÕ'<¸QÕ'?Ð&@ˆCÐ"Ñ#ð	Ø$'¨¥F¨?Õ$;¸AÕ$>Ð#?ˆC�Ñ ð	Ø!$ Q¥¨Õ!5°aÕ!8Ð 9ˆC�Ñó ˆBØ�TŽzØ•×!Ñ!¤#×"6Ñ"6Ö7ñ ð 	×Ñ˜ÔØ×Ñ˜˜Q�Ÿ™ C§F¡FÖ+à˜9Õ$Ð%ˆØ¤,Ô.°7Ò3Fð �J‰J˜	 GÕ+Ð,Ô-Ø&)ˆÐ"Ñ#à�‰�cÖøô5 ô 	Úð	ûô
 ô 	Ùð	ûô
 ô 	Ùð	ús6   Ç/L ÈL È'L& ÌLÌLÌL#Ì"L#Ì&L4Ì3L4c                ó`  € \         P                  P                  V P                  4      '       d!   \         P                  ! V P                  4       \         P                  P                  V P                  V P                  4      p\         P                  P                  V4      '       d   \         P                  ! V4       \         P                  P                  V P                  V P                  4      p\         P                  P                  V4      '       d   \         P                  ! V4       \         P                  P                  V P                  V P                  4      p\         P                  P                  V4      '       d   \         P                  ! V4       V P                  p\        WaVR7      pVP                  4        VP                  \        R4      4       \        WaVR7      pVP                  4         VP                  \        R4      4       V#    TP                  4        h ; i)a2  Setup the secrets database.

:note: This function does not handle exceptions and transaction on purpose,
   it's up to the caller to do this job.

:param path: Path to the secrets database.
:param session_info: Session info.
:param lp: Loadparm context
:return: LDB handle for the created secrets database
©rŠ  rÕ   zsecrets_init.ldifzsecrets.ldif)rC  r@  rj  rY   r’  rD  r^   rZ   r_   r[   r   ÚeraseÚload_ldif_file_addr;   r•  r˜  )rÔ   rŠ  rÕ   Úkeytab_pathÚbind_dns_keytab_pathÚdns_keytab_pathr@  Úsecrets_ldbs   &&&     rc   Úsetup_secretsdbrË  å  sl  € ô 
‡w�w‡~�~�e—m‘m×$Ò$Ü
�	Š	�%—-‘-Ô ä—'‘'—,‘,˜u×0Ñ0°%·,±,Ó?€KÜ	‡w�w‡~�~�k×"Ò"Ü
�	Š	�+ÔäŸ7™7Ÿ<™<¨×(9Ñ(9¸5×;KÑ;KÓLÐÜ	‡w�w‡~�~Ð*×+Ò+Ü
�	Š	Ð&Ô'ä—g‘g—l‘l 5×#4Ñ#4°e×6FÑ6FÓG€OÜ	‡w�w‡~�~�o×&Ò&Ü
�	Š	�/Ô"à�=‰=€Dä�d¸"Ô=€KØ×ÑÔØ×"Ñ"¤:Ð.AÓ#BÔCÜ�d¸"Ô=€KØ×!Ñ!Ô#ðØ×&Ñ&¤z°.Ó'AÔBð ÐøðØ×&Ñ&Ô(Øús   Ç>H ÈH-c                óê   € \         P                  P                  V 4      '       d   \         P                  ! V 4       \	        WVR7      pVP                  4        VP                  \        R4      4       R# )zÂSetup the privileges database.

:param path: Path to the privileges database.
:param session_info: Session info.
:param lp: Loadparm context
:return: LDB handle for the created secrets database
rÄ  zprovision_privilege.ldifN)rC  r@  rj  r’  r   rÅ  rÆ  r;   )r@  rŠ  rÕ   Úprivilege_ldbs   &&& rc   Úsetup_privilegesrÎ    sN   € ô 
‡w�w‡~�~�d×ÒÜ
�	Š	�$ŒÜ˜¸BÔ?€MØ×ÑÔØ×$Ñ$¤ZÐ0JÓ%KÖLrf   c                ó¾  € \         P                  P                  V 4      '       d   \         P                  ! V 4       \         P                  \         P
                  ,          \         P                  ,          p\        P                  \        P                  ,          p\         P                  ! ^ 4      p \         P                  ! WV4      p\         P                  ! V4       \         P                  ! VR4      ;_uu_ 4       p\        P                  ! ^4      pVP                  V4       RRR4       R#   \         P                  ! T4       i ; i  + '       g   i     R# ; i)zšSetup the encrypted secrets key file.

Any existing key file will be deleted and a new random key generated.

:param path: Path to the secrets key file.

ÚwbN)rC  r@  rj  r’  ÚO_WRONLYÚO_CREATÚO_EXCLÚstatÚS_IRUSRÚS_IWUSRÚumaskrn  Úfdopenr´   Úgenerate_random_bytesro  )r@  ÚflagsÚmodeÚumask_originalÚfdr|  r}  s   &      rc   Úsetup_encrypted_secrets_keyrÞ    sÍ   € ô 
‡w�w‡~�~�d×ÒÜ
�	Š	�$Œä�K‰Kœ"Ÿ*™*Õ$¤r§y¡yÕ0€EÜ�<‰<œ$Ÿ,™,Õ&€Dä—X’X˜a“[€Nð!Ü�WŠW�T $Ó'ˆä
�Š�Ô ä	�Š�2�t×	Ô	 Ü×)Ò)¨"Ó-ˆØ	�‰�Œ÷ 
Ñ	øô 	�Š�Õ úç	×	Ð	ús   Â2D0 Ã>(EÄ0EÅE	c                ó^  € \         P                  P                  4       p\         P                  P                  WVR7      pVP	                  V\         P                  P
                  4       \        R4      p\        P                  P                  V4      '       g   Q hVP                  V4       R# )z…Setup the registry.

:param path: Path to the registry database
:param session_info: Session information
:param lp: Loadparm context
)rŠ  Úlp_ctxzprovision.regN)r´   ÚregistryÚRegistryÚopen_ldbÚ
mount_hiveÚHKEY_LOCAL_MACHINEr;   rC  r@  rj  Ú
diff_apply)r@  rŠ  rÕ   ÚregÚhiveÚprovision_regs   &&&   rc   Úsetup_registryrê  6  sv   € ô �.‰.×
!Ñ
!Ó
#€CÜ�>‰>×"Ñ" 4È2Ð"ÓN€DØ‡N�N�4œŸ™×:Ñ:Ô;Ü˜Ó/€MÜ�7‰7�>‰>˜-×(Ò(Ð(Ð(Ø‡N�N�=Ö!rf   c                óê   € \         P                  P                  V 4      '       d   \         P                  ! V 4       \	        WVR7      pVP                  4        VP                  \        R4      4       V# )zˆSetup the idmap database.

:param path: path to the idmap database
:param session_info: Session information
:param lp: Loadparm context
rÄ  zidmap_init.ldif)rC  r@  rj  r’  r!   rÅ  rÆ  r;   )r@  rŠ  rÕ   Ú	idmap_ldbs   &&& rc   Úsetup_idmapdbrí  E  sR   € ô 
‡w�w‡~�~�d×ÒÜ
�	Š	�$Œä˜¸BÔ?€IØ‡O�OÔØ× Ñ ¤Ð,=Ó!>Ô?ØÐrf   c                óª   € \        V \        R4      RVP                  RVP                  RVP                  RVP
                  RVP                  /4       R# )z<Setup the SamDB rootdse.

:param samdb: Sam Database handle
zprovision_rootdse_add.ldifÚSCHEMADNÚDOMAINDNÚROOTDNÚCONFIGDNÚSERVERDNN)r<   r;   rw   ru   rt   rv   rÂ   )rW   rÖ   s   &&rc   r–  r–  U  sI   € ô
 �5œ*Ð%AÓBØ�E—N‘NØ�E—N‘NØ�%—,‘,Ø�E—N‘NØ�E—N‘NðEö rf   c                 ó¶  € \        V	\        4      '       g   Q hVe   RV,          pMRpVf   Tp\        P                  P	                  V4      p\        V \        R4      / RVP                  bRVP                  bRVP                  bRVP                  bR	V	bR
VP                  bRVP                  : RVP                  : 2bR\        VP                  R4      4      P!                  R4      bR\        V4      bR\        V4      bRR\"        ,          bRVbRVbR\        V4      bR\        V^d,           4      bR\        V^d,           R,           4      b4       \        V \        R4      RV
RVRVP                  RVP                  /4       V\$        8X  Ed<   \        V \        R4      RVP                  RVP                  RVP                  RVP                  R	V	R
VP                  RVP                  : RVP                  : 2R\        VP                  R4      4      P!                  R4      R\        V4      R\        V4      R\"        RVR\        V4      /4       \'        V \        R 4      RVP                  RVP                  /R!R".R#7       \'        V \        R$4      RVP                  R%VP(                  R
VP                  RVP                  /4       \+        4       pV P-                  V4       \'        V \        R&4      RVP                  RVP                  R
VP                  /4       V P-                  V4       VR'8w  dŸ   \        V \        R(4      RVP                  RVP                  R)\        VP                  R4      4      P!                  R4      R*VP                  RVP                  P/                  4       : RVP                  P/                  4       : 2/4       R# R# )+zJoin a host to its own domain.NzobjectGUID: %s
r�   zprovision_self_join.ldifrò  rï  rð  ró  ÚINVOCATIONIDÚNETBIOSNAMEÚDNSNAMEr™   ÚMACHINEPASS_B64ú	utf-16-ler–   Ú	DOMAINSIDÚDCRIDÚOPERATING_SYSTEMzSamba-%sÚOPERATING_SYSTEM_VERSIONÚNTDSGUIDÚDOMAIN_CONTROLLER_FUNCTIONALITYÚRIDALLOCATIONSTARTÚRIDALLOCATIONENDió  zprovision_group_policy.ldifÚ
POLICYGUIDÚPOLICYGUID_DCÚ	DNSDOMAINzprovision_self_join_config.ldifÚSAMBA_VERSION_STRINGz&provision_self_join_modify_schema.ldifúprovision:0úrelax:0©rª   z&provision_self_join_modify_config.ldifrY  zprovision_self_join_modify.ldifr¬   zprovision_dns_add_samba.ldifÚDNSPASS_B64ÚHOSTNAME)Ú
isinstancer¹   r´   ÚdsdbÚdc_operatingSystemVersionr<   r;   rv   rw   ru   rÂ   r}   r   r{   r   r´  r½   r   r>   r=   r€   r   Úset_session_infor³   )rW   Úadmin_session_inforÖ   Úfillr¹  rÒ   Údnspassr‚   Únext_ridÚinvocationidÚ
policyguidÚpolicyguid_dcÚdomainControllerFunctionalityrÅ   Údc_ridÚntdsguid_lineÚoperatingSystemVersionÚsystem_session_infos   &&&&&&&&&&&&&&&   rc   Úsetup_self_joinr  c  së  € ô
 �l¤C×(Ò(Ð(Ð(ØÒØ*¨XÕ5‰àˆà‚~Øˆô #ŸZ™Z×AÑAÐB_Ó`Ðä�5œ*Ð%?Ó@ð C=Ø˜%Ÿ.™.ðC=à˜%Ÿ.™.ðC=ð ˜%Ÿ.™.ðC=ð ˜%Ÿ.™.ð	C=ð
 ˜lðC=ð ˜U×.Ñ.ðC=ð  E§N¤N°E·O³OÐDðC=ð  ¤¨;×+=Ñ+=¸kÓ+JÓ!K×!RÑ!RÐSYÓ!ZðC=ð œ3˜y›>ðC=ð ”s˜6“{ðC=ð ! *¬wÕ"6ðC=ð )Ð*@ðC=ð ˜-ðC=ð 0´Ø/ó21ðC=ð  #¤C¨°3­Ó$7ð!C=ð" !¤# h°¥n°sÕ&:Ó";ð#C=ô >ô& �5œ*Ð%BÓCØ˜JØ˜}Ø˜5Ÿ?™?Ø˜%Ÿ.™.ð	F*ô +ð ŒyÕÜ�uœjÐ)JÓKØ˜EŸN™NØ˜EŸN™NØ˜EŸN™NØ˜EŸN™NØ Ø˜u×0Ñ0Ø e§n¤n°e·o³oÐFØ!¤9¨[×-?Ñ-?ÀÓ-LÓ#M×#TÑ#TÐU[Ó#\ØœS ›^Øœ˜V›Ø&¬Ø˜MØ1´3Ø1ó43ðN4ô 	5ô" 	˜%Ü$Ð%MÓNØ(¨%¯.©.Ø(¨%¯.©.ðQð %2°9Ð#=õ	?ô 	˜%Ü$Ð%MÓNØ(¨%¯.©.Ø+¨U¯^©^Ø+¨U×->Ñ->Ø(¨%¯.©.ð	Qô	ô )Ó*ÐØ	×ÑÐ.Ô/ô �eœZÐ(IÓJØ˜%Ÿ.™.Ø˜%Ÿ.™.Ø˜U×.Ñ.ðMô ð 
×ÑÐ-Ô.àÐ&Ô&ô 	�uœjÐ)GÓHØ˜5Ÿ?™?Ø˜%Ÿ.™.ØœY w§~¡~°kÓ'BÓC×JÑJÈ6ÓRØ˜%Ÿ.™.ØØ×#Ñ#×)Ñ)Ö+¨U¯_©_×-BÑ-BÕ-DðFðKö 	ñ 'rf   c                óv   € V^ ,          R8w  d
   RV,          p\         P                  P                  WRV4      pV# )zïReturn the physical path of policy given its guid.

:param sysvolpath: Path to the sysvol folder
:param dnsdomain: DNS name of the AD domain
:param guid: The GUID of the policy
:return: A string with the complete path to the policy folder
r¡   z{%s}ÚPolicies)rC  r@  rD  )Ú
sysvolpathr{   ÚguidÚpolicy_paths   &&& rc   Úgetpolicypathr!  Î  s4   € ð ˆA…w�#„~Ø˜�}ˆÜ—'‘'—,‘,˜z°jÀ$ÓG€KØÐrf   c                 ó´  € \         P                  P                  V 4      '       g   \         P                  ! V R 4       \	        \         P                  P                  V R4      R4      p VP                  R4       VP                  4        \         P                  P                  V R4      p\         P                  P                  V4      '       g   \         P                  ! VR 4       \         P                  P                  V R4      p\         P                  P                  V4      '       g   \         P                  ! VR 4       R# R#   TP                  4        i ; i)éý  zGPT.INIrf  z[General]
Version=0ÚMACHINEÚUSERN)rC  r@  rj  Úmakedirsrn  rD  ro  rq  )r   r|  r  s   &  rc   Úcreate_gpo_structr'  Ü  sÕ   € Ü�7‰7�>‰>˜+×&Ò&Ü
�Š�K Ô'ÜŒR�W‰W�\‰\˜+ yÓ1°3Ó7€AðØ	�‰Ð(Ô)à	�‰Œ	Ü
�‰�‰�[ )Ó,€AÜ�7‰7�>‰>˜!×ÒÜ
�Š�A�uÔÜ
�‰�‰�[ &Ó)€AÜ�7‰7�>‰>˜!×ÒÜ
�Š�A�uÖñ øð 	
�‰�	ús   Á(E ÅEc                ób   € \        WV4      p\        V4       \        WV4      p\        V4       R# )a  Create the default GPO for a domain

:param sysvolpath: Physical path for the sysvol folder
:param dnsdomain: DNS domain name of the AD domain
:param policyguid: GUID of the default domain policy
:param policyguid_dc: GUID of the default domain controller policy
N)r!  r'  )r  r{   r  r  r   s   &&&& rc   Úcreate_default_gpor)  ì  s,   € ô   
°zÓB€KÜ�kÔ"ä 
°}ÓE€KÜ�kÖ"rf   c                ó’  € \        WVW!WFV	V
R7	       \        pV'       d   Tp. pV
R8X  d"   VP                  R\        V4      ,           4       V'       d   VP                  R4       VP                  R4       \	        VRRVRWŽR7      pVP                  R	4       VP                  VRR
7       VP                  RVP                  ,          4        VP                  WR7       TP                  TRR
7       T#   \        P                   d=   pTP                  w  ppT\        P                  8X  d   \        RT ,          4      hh Rp?ii ; i)zRSetup a complete SAM Database.

:note: This will wipe the main SAM database file!
)r   rÕ   rš  rŠ  rÖ   rZ  r›  rœ  rŒ  zlmdb_env_size:zbatch_mode:1z#transaction_index_cache_size:200000NF)rŠ  r‰  Úauto_connectrÕ   Úglobal_schemaÚam_rodcr‹  z%Pre-loading the Samba 4 and AD schema)Úwrite_indices_and_attributesrš   )r‹  z<Permission denied connecting to %s, are you running as root?T)r   ÚDEFAULT_BACKEND_SIZErð   r¹   rF   r  Ú
set_schemaÚset_ntds_settings_dnrÂ   Úconnectr·   r  r  ÚERR_INSUFFICIENT_ACCESS_RIGHTSr¾   )r@  rŠ  rš  rÕ   rÖ   r   rZ  Úschemar-  r›  rœ  Úbackend_store_sizeÚ
batch_modeÚ
store_sizer‹  rW   Úe2ÚnumÚstring_errors   &&&&&&&&&&&&&      rc   Úsetup_samdbr;  þ  s9  € ô ˜4°2Ø->Ø!&ÐQbØ)6õ8ô
 &€JßØ'ˆ
à€GØ˜ÔØ�‰Ð'¬#¨j«/Õ9Ô:ßØ�‰�~Ô&ð ‡N�NÐ8Ô9ô ˜|°ÀEØØ %¨wôI€Eð ‡K�KÐ7Ô8ð 
×Ñ�V¸%ÐÔ@ð 
×ÑÐ4°u·~±~ÕEÔFðØ�‰�dˆÔ,ð 
×Ñ�V¸$ÐÔ?à€Løô �<‰<ô Ø Ÿg™gÑˆˆlØ”3×5Ñ5Ô5Ü#Ð$bÐeiÕ$iÓjÐjàûðús   ÃC5 Ã5EÄ
7EÅEc                  ó(  € Vf   RpVR8  g   VR8”  d%   RV,          pVRRb,          ,          p\        V4      h\        P                  ! V4      pVf   \        pVV8”  d&   \        P                  ! V4      p\        RV R24      hTpTpV P                  RVP                  ,          4       V P                  RV4       V P                  R	V4       V P                  R
V4       V P                  \        VP                  4      4       V P                  V4       VP                  RVP                  ,          4       \        V\        VP                  4      4      pV P                  V4       VP                   e   RVP                   ,          pMRp\#        \%        VP                  4      4      P'                  R4      p\)        V \+        R4      RVP                  R\        VP                  4      RVRV/4       \-        V \+        R4      RVP                  R\        \.        P0                  ! \3        \4        P4                  ! 4       4      4      4      R\        V4      RVP6                  RVP8                  RVR\        V4      R\:        R\        \<        4      /	4       V\>        8X  Ed%   VP                  R4       \#        \A        VP                  4      4      P'                  R4      p\)        V \+        R4      RVP8                  RV/4       R\.        PB                  PD                  ,          pR R!V.pVP                  R"4       V PG                  VPH                  VR#7       V PK                  VPL                  VR#7       V PO                  4        V PG                  VPP                  VR#7       \)        V \+        R$4      R%VPR                  /VR#7       \T        PV                  ! \T        PX                  ! WP                  4      4      p\T        PZ                  ! VP8                  \T        P\                  R&4      VR&&   \#        \_        VP                  4      4      P'                  R4      pWÀn0        V\>        8X  Ed™   VP                  R'4       \#        \c        VP                  4      4      P'                  R4      p\#        \e        VP                  4      4      P'                  R4      p\#        \g        VP                  4      4      P'                  R4      p \#        \i        VP                  4      4      P'                  R4      p!\#        \k        VP                  4      4      P'                  R4      p"\#        \m        VP                  4      4      P'                  R4      p#R(VPn                  9   d   R)p$MRp$\)        V \+        R*4      / RVP8                  bR+VPp                  bRVP6                  bR,VPr                  bR-VPt                  bR%VPR                  bRVP                  bR.VP                  bR/\        V4      bR\        V4      bR0V bR1VbR2V"bR3V!bR4V"bR5V"bR6V#bR7VR8V/C4       \)        V \+        R94      RVP8                  R:V$/4       VP                  R;4       \w        \+        R<4      4      p%\y        V%RVP8                  /4      p%\{        V%4       V PG                  V%4       VP                  R=4       \-        V \+        R>4      RVP8                  R?V#/4       VP                  R@4       \#        \}        VP                  4      4      P'                  R4      p&\)        V \+        RA4      RVP                  RBV&/4       VP                  RC4       \-        V \+        RD4      RVP                  /4       VP                  RE4       \#        \        VP                  4      4      P'                  R4      p'\)        V \+        RF4      RVP                  RGV'/4       VP                  RH4       \-        V \+        RI4      RVP                  /4       VP                  RJ4       \#        \�        VP                  4      4      P'                  R4      p(\#        \ƒ        VP                  4      4      P'                  R4      p)\#        \…        VP                  4      4      P'                  R4      p*\#        \‡        VP                  4      4      P'                  R4      p+\#        \‰        VP                  4      4      P'                  R4      p,\)        V \+        RK4      R\        \.        P0                  ! \3        \4        P4                  ! 4       4      4      4      RVP                  R+VPp                  RVP6                  RVP8                  R.VP                  RL\        VRM,           4      RNVROV(R1VR2V)RPV*RQV+RRV,/4       V\>        8X  dÂ   \#        \‹        VP                  4      4      P'                  R4      p-\-        V \+        RS4      RVP8                  R%VPR                  /4       VP                  RT4       \#        \k        VP                  4      4      P'                  R4      p"\)        V \+        RU4      RVP8                  RVV"/R!R .R#7       V\>        8X  g   V\Œ        8X  Edc   \-        V \+        RW4      RVP                  RXX-/4       VP                  RY4       \)        V \+        RZ4      RVP                  R\        VP                  4      R[\#        VP�                  R\4      4      P'                  R4      R]\#        VP�                  R\4      4      P'                  R4      /R!R .R#7       VP                  R^4       \‘        V VW&VV
VV	VP                  VVVVVVR_7       RVP                  ,          p.V P“                  V.R`R\T        P”                  Ra7      P'                  R4      VnK        \™        VP–                  \        4      '       g   Q hV # )cNéè  é Êš;z/You want to run SAMBA 4 with a next_rid of %u, z,the valid range is %u-%u. The default is %u.zxYou want to run SAMBA 4 on a domain and forest function level which itself is higher than its actual DC function level (z). This won't work!rš   ÚdomainFunctionalityÚforestFunctionalityr  zAdding DomainDN: %szobjectGUID: %s
-r�   r–   zprovision_basedn.ldifrð  rú  Ú
DESCRIPTORÚ
DOMAINGUIDzprovision_basedn_modify.ldifÚ	CREATTIMEÚNEXTRIDrY  rò  r  ÚDOMAIN_FUNCTIONALITYr  ÚMIN_PWD_LENGTHzAdding configuration containerz#provision_configuration_basedn.ldifzlocal_oid:%s:0r  r  zSetting up sam.ldb schemar  zaggregate_schema.ldifrï  ÚsubRefsz%Setting up sam.ldb configuration dataÚ2008Ú#zprovision_configuration.ldifrö  r  ÚDOMAINró  ÚFOREST_FUNCTIONALITYÚNTDSQUOTAS_DESCRIPTORÚDELETEDOBJECTS_DESCRIPTORÚLOSTANDFOUND_DESCRIPTORÚSERVICES_DESCRIPTORÚPHYSICALLOCATIONS_DESCRIPTORÚFORESTUPDATES_DESCRIPTORÚEXTENDEDRIGHTS_DESCRIPTORÚPARTITIONS_DESCRIPTORÚSITES_DESCRIPTORzextended-rights.ldifÚINC2012zSetting up display specifiersz1display-specifiers/DisplaySpecifiers-Win2k8R2.txtz0Modifying display specifiers and extended rightsz#provision_configuration_modify.ldifÚDISPLAYSPECIFIERS_DESCRIPTORzAdding users containerzprovision_users_add.ldifÚUSERS_DESCRIPTORzModifying users containerzprovision_users_modify.ldifzAdding computers containerzprovision_computers_add.ldifÚCOMPUTERS_DESCRIPTORzModifying computers containerzprovision_computers_modify.ldifzSetting up sam.ldb datazprovision.ldifÚRIDAVAILABLESTARTiX  r  ÚINFRASTRUCTURE_DESCRIPTORÚSYSTEM_DESCRIPTORÚBUILTIN_DESCRIPTORÚDOMAIN_CONTROLLERS_DESCRIPTORz'provision_configuration_references.ldifz)Setting up well known security principalsz#provision_well_known_sec_princ.ldifÚWELLKNOWNPRINCIPALS_DESCRIPTORz provision_basedn_references.ldifÚMANAGEDSERVICE_DESCRIPTORz#Setting up sam.ldb users and groupszprovision_users.ldifÚADMINPASS_B64rù  ÚKRBTGTPASS_B64zSetting up self join)rÖ   r  r  rÒ   r  r¹  r‚   r  r  r  r  r  rÅ   rœ   )r×   Ú	attributer‹   r�   )r=  r>  r=  )Mr¾   rJ   Údc_level_from_lpr   Úlevel_to_stringr1  rÂ   Ú
set_opaqueÚset_domain_sidr¹   r‚   Úset_invocation_idr  ru   r   r  r„   r   r2   r½   r<   r;   r=   r´   Úunix2nttimerÇ   Útimer€   rv   r   ÚDEFAULT_MIN_PWD_LENGTHr>   r+   r  Ú&DSDB_CONTROL_SKIP_DUPLICATES_CHECK_OIDÚadd_ldifÚschema_dn_addÚmodify_ldifÚschema_dn_modifyÚwrite_prefixes_from_schemaÚschema_datarw   r·   rñ   r¼   rò   rô   r*   Úinvocation_idr,   r-   r.   r/   r0   r1   Úbase_schemar}   r{   r~   r"   r   r   r6   r5   r3   r9   r8   r4   r7   r:   r?   r´  r  Ú	searchoner»   rÅ   r  )/rW   rÕ   rÖ   r   r  r  r  r°   Ú
krbtgtpassr¹  rÒ   r  r  rÅ   Údom_for_fun_levelr4  r  r  Úerrorr  Úlevelr?  r@  r  Údomainguid_lineÚdescrÚignore_checks_oidÚschema_controlsr¾  Údeletedobjects_descrÚpartitions_descrÚsites_descrÚntdsquotas_descrÚprotected1_descrÚprotected1wd_descrÚprotected2_descrÚ	incl_2012Údisplay_specifiers_ldifÚ
users_descÚcomputers_descÚinfrastructure_descÚlostandfound_descÚsystem_descÚbuiltin_descÚcontrollers_descÚmanagedservice_descrÚntds_dns/   &&&&&&&&&&&&&&&&&&                             rc   Ú
fill_samdbr�  <  s9  € ð
 ÒØˆð
 �$„˜( ZÔ/ØAÀXÕNˆØÐ?ð C$õ $õ 	$ˆä Ó&Ð&ä$4×$EÒ$EÀbÓ$IÐ!ð Ò Ü6ÐàÐ8Ô8Ü ×0Ò0Ð1NÓOˆÜð  #[ð  \að  [bð  buð  !vó  wð  	wà+ÐØ+Ðð 
×ÑÐ4°u·~±~ÕEÔFð 
×ÑÐ*Ð,?Ô@Ø	×ÑÐ*Ð,?Ô@Ø	×ÑÐ4Ø2ô4ð 
×Ñœ˜UŸ_™_Ó-Ô.Ø	×Ñ˜LÔ)à
‡K�KÐ%¨¯©Õ6Ô7ô ' r¬3¨u¯©Ó+?Ó@ÐØ	×ÑÐ-Ô.Ø×ÑÒ#Ø-°×0@Ñ0@Õ@‰àˆäÔ+¨E¯O©OÓ<Ó=×DÑDÀVÓL€EÜ�5œ*Ð%<Ó=Ø˜Ÿ™Øœ˜UŸ_™_Ó-Ø˜%Ø˜/ð	@ô ô �eœZÐ(FÓGØ�E—N‘NØ”Sœ×*Ò*¬3¬t¯yªy«{Ó+;Ó<Ó=Ø”3�x“=Ø�u—~‘~Ø�E—N‘NØ�jØ¤Ð$7Ó 8Ø¤Øœ#Ô4Ó5ð
Jô 
ð ŒyÕØ�‰Ð4Ô5ÜÔ/°·±Ó@ÓA×HÑHÈÓPˆÜ�uœjÐ)NÓOØ˜EŸN™NØ˜eðRô 	ð -¬u¯z©z×/`Ñ/`Õ`ÐàØØð
ˆð 	�‰Ð/Ô0Ø�‰�v×+Ñ+°oˆÔFØ×Ñ˜&×1Ñ1¸OÐÔLØ×(Ñ(Ô*Ø�‰�v×)Ñ)°OˆÔDÜ�uœjÐ)@ÓAØ" E§N¡NÐ3Ø /õ	1ô
 �+Š+”c—f’f˜U§N¡NÓ3Ó
4€CÜ×'Ò'¨¯©¼×8HÑ8HØ(1ó3€Cˆ	�Nô %Ô%BÀ5Ç?Á?Ó%SÓT×[Ñ[Ð\bÓcÐà&Ôð ŒyÕØ�‰Ð;Ô<ä$Ô%EÀeÇoÁoÓ%VÓW×^Ñ^Ð_eÓfÐÜÔ ;¸E¿O¹OÓ LÓM×TÑTÐU[Ó\ˆÜ$Ô%FÀuÇÁÓ%WÓX×_Ñ_Ð`fÓgÐÜ$Ô%LÈUÏ_É_Ó%]Ó^×eÑeÐflÓmÐÜ&Ô'PÐQV×Q`ÑQ`Ó'aÓb×iÑiÐjpÓqÐÜ$Ô%LÈUÏ_É_Ó%]Ó^×eÑeÐflÓmÐà�V×'Ñ'Ô'à‰IàˆIä�uœjÐ)GÓHð KØ˜EŸN™NðKà˜u×0Ñ0ðKð ˜uŸ~™~ðKð ˜UŸ_™_ð	Kð
 ˜%Ÿ,™,ðKð ˜EŸN™NðKð ˜EŸN™NðKð ˜EŸN™NðKð '¬Ð,?Ó(@ðKð '¬Ð,?Ó(@ðKð (Ð)9ðKð ,Ð-AðKð *Ð+=ðKð &Ð'7ðKð /Ð0BðKð  +Ð,>ð!Kð" ,Ð-=ð#Kð$ (Ð)9Ø" Kñ'Kô 	ô, 	�uœjÐ)?Ó@Ø˜EŸN™NØ˜9ðCô 	ð
 	�‰Ð3Ô4Ü".ÜÐJÓKó#MÐä"0Ð1HØ2<¸e¿n¹nÐ1Mó#OÐäÐ5Ô6Ø�‰Ð.Ô/à�‰ÐFÔGÜ˜%Ü$Ð%JÓKØ(¨%¯.©.Ø<Ð>NðNô	ð ‡K�KÐ(Ô)ÜÔ6°u·±ÓGÓH×OÑOÐPVÓW€JÜ�5œ*Ð%?Ó@Ø˜Ÿ™Ø 
ðCô ð ‡K�KÐ+Ô,Ü�eœZÐ(EÓFØ˜Ÿ™ðI(ô )à
‡K�KÐ,Ô-ÜÔ>¸u¿¹ÓOÓP×WÑWÐX^Ó_€NÜ�5œ*Ð%CÓDØ˜Ÿ™Ø" NðGô ð ‡K�KÐ/Ô0Ü�eÜ Ð!BÓCØ$ e§n¡nðF6ô7ð ‡K�KÐ)Ô*Ü#Ô$HÈÏÉÓ$YÓZ×aÑaÐbhÓiÐÜ!Ô"IÈ%Ï/É/Ó"ZÓ[×bÑbÐciÓjÐÜÔCÀEÇOÁOÓTÓU×\Ñ\Ð]cÓd€KÜÔ:¸5¿?¹?ÓKÓL×SÑSÐTZÓ[€LÜ Ô!BÀ5Ç?Á?Ó!SÓT×[Ñ[Ð\bÓcÐÜ�5œ*Ð%5Ó6Ø”Sœ×*Ò*¬3¬t¯yªy«{Ó+;Ó<Ó=Ø�E—N‘NØ�u×(Ñ(Ø�u—~‘~Ø�E—N‘NØ�E—N‘NØœS ¨C¥Ó0Ø˜Ø#Ð%8Ø#Ð%9Ø!Ð#4Ø˜[Ø˜lØ'Ð)9ð9ô ð$ ŒyÔÜ(Ô)PÐQV×Q`ÑQ`Ó)aÓb×iÑiÐjpÓqÐÜ˜%Ü$Ð%NÓOØ(¨%¯.©.Ø(¨%¯.©.ðR:ô	;ð
 	�‰Ð?Ô@Ü&Ô'PÐQV×Q`ÑQ`Ó'aÓb×iÑiÐjpÓqÐÜ�uœjÐ)NÓOØ˜Ÿ™Ø,Ð.@ðR
ð  Ð.õ	0ð
 ŒyÔ˜D¤NÕ2Ü˜%Ü$Ð%GÓHØ(¨%¯.©.Ø9Ð;OðKô	ð 	�‰Ð9Ô:Ü�uœjÐ)?Ó@Ø˜Ÿ™Øœ˜UŸ_™_Ó-ØœY y×'7Ñ'7¸Ó'DÓE×LÑLÈVÓTØœi¨
×(9Ñ(9¸+Ó(FÓG×NÑNÈvÓVð	C
ð
  Ð.õ	0ð 	�‰Ð*Ô+Ü˜Ð1¸Ø%1Ø$/Ø 'Ø$/Ø"'§/¡/Ø!)Ø%Ø#-Ø&3Ø6SØ!)õ	+ð (¨%¯.©.Õ8ˆØŸ™°Ø3?ÈBÔVY×VdÑVdð )ó fßflÑflÐmsÓftð 	Œä˜%Ÿ.™.¬#×.Ò.Ð.Ð.à€Lrf   zWO:LAG:BAD:P(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;SO)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;AU)zmO:LAG:BAD:P(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;SO)(A;OICI;FA;;;SY)(A;OICI;0x1200a9;;;AU)(A;OICI;0x1301bf;;;PA)rA  c                 ó^  € \        4       p\        W WWtR WVR7	       \        P                  ! V RR7       Fv  w  r‰p
V
 F2  p\        V\        P                  P                  W‹4      WVVR WVR7	       K4  	  V	 F2  p\        V\        P                  P                  W‹4      WVVR WVR7	       K4  	  Kx  	  R# )T©ru  Úskip_invalid_chownr	   ÚserviceF©ÚtopdownN)r   r#   rC  Úwalkr@  rD  )r@  ÚaclrÕ   Údomsidru  r	   r“  rŠ  r4  ÚdirsÚfilesr&  s   &&&&&&&     rc   Úset_dir_aclr›  L  s–   € Ü&Ó(€LÜˆR�s LÐZ^ÐgmÕÜŸWšW T°5×9Ñˆ�EÛˆDÜ�RœŸ™Ÿ™ dÓ1°3ÀØ(¸TÈ&÷cñ ó ˆDÜ�RœŸ™Ÿ™ dÓ1°3ÀØ(¸TÈ&÷có ó	 :rf   c                óú  € \         P                  P                  WR4      p\        4       p	\	        WX\
        \        V4      V	VRV\        R7	       VP                  RV,          RR.R\        P                  R7      p
V
 Fz  p\        \        P                  VR,          ^ ,          4      P                  4       p\        W\        VR,          4      4      p\!        V\#        WÂR	R
7      V\        V4      VVR7       K|  	  R# )áN  Set ACL on the sysvol/<dnsname>/Policies folder and the policy
folders beneath.

:param sysvol: Physical path for the sysvol folder
:param dnsdomain: The DNS name of the domain
:param domainsid: The SID of the domain
:param domaindn: The DN of the domain (ie. DC=...)
:param samdb: An LDB object on the SAM db
:param lp: an LP object
r  Tr‘  úCN=Policies,CN=System,%sr—   ÚnTSecurityDescriptorr�   r¯  F)Úas_sddl©r	   N)rC  r@  rD  r   r#   ÚPOLICIES_ACLr¹   ÚSYSVOL_SERVICEr¶   r·   rÁ   r(   r   Ú
descriptorr   r!  r›  r%   )rA  r{   r‚   ru   rW   rÕ   ru  r	   Úroot_policy_pathrŠ  rØ   Úpolicyr—  r   s   &&&&&&&&      rc   Úset_gpos_aclr§  X  sÞ   € ô —w‘w—|‘| F°zÓBÐÜ&Ó(€LäˆR¤<´°Y³ÀØ °TÀ&ÔR`õbð �,‰,Ð6¸ÕBØ"Ð$:Ð;Ø"$¬C×,>Ñ,>ð ó @€Có ˆÜœ×,Ñ,ØÐ 6Õ7¸Õ:ó<ß<C¹G»Ið 	ä# F´s¸6À$½<Ó7HÓIˆÜ�K¤¨SÀUÔ!KÈRÜ˜	“N IØ!÷	#ó	 rf   c	                óZ	  aaaaa€ RoS'       Eg6   \         P                  ! 4       p	V	P                  SP                  4       \        P
                  ! \        P                  P                  V4      R7      p
  \        P                  ! V
P                  R\        4       V4        \        P                   ! T
P                  Y#\        4       4        T
P#                  4        \         P                  ! 4       p	T	P                  SP                  4       T	P%                  RRT P&                  ,          4       \(        P*                  ! 4        \(        P,                  ! T	P/                  R4      4      o\(        P0                  ! 4       S8w  d(   \        R	\(        P0                  ! 4       : R
S: R24      hSP3                  4       pTR,          S8w  d   \        RTR,          : R
S: R24      hTR,          P5                  4       TP5                  4       8w  d8   \        RTR,          P5                  4       : RTP5                  4       : R24      h S'       d   \        P                   ! VRV4       RpRP7                  S\8        P:                  4      p\<        P>                  \<        P@                  ,          \<        PB                  ,          p\<        PD                  ! V SVVR7      o\<        PF                  ! SSRVVR7       VVVVV3R lpV! V4       \        PH                  ! VRR7       Fñ  w  pppV Fo  pS'       d?   V'       d7   \        P                   ! \        P                  PK                  VV4      RV4       V! \        P                  PK                  VV4      4       Kq  	  V Fo  pS'       d?   V'       d7   \        P                   ! \        P                  PK                  VV4      RV4       V! \        P                  PK                  VV4      4       Kq  	  Kó  	  \M        WSW`SSSR7       R#   \         d3    \        P                  ! 4       '       g   \        R4      h\        R4      hi ; i  \         d    \        R4      hi ; i  T
P#                  4        i ; i  \         d    Rp EL@i ; i)aƒ  Set the ACL for the sysvol share and the subfolders

:param samdb: An LDB object on the SAM db
:param sysvol: Physical path for the sysvol folder
:param uid: The UID of the "Administrator" user
:param gid: The GID of the "Domain administrators" group
:param domainsid: The SID of the domain
:param dnsdomain: The DNS name of the domain
:param domaindn: The DN of the domain (ie. DC=...)
N)Údiréí  z‘Samba was compiled without the posix ACL support that s3fs requires.  Try installing libacl1-dev or libacl-devel, then re-run configure and make.z‚Your filesystem or build does not support posix ACLs, which s3fs requires.  Try the mounting the filesystem with the 'acl' option.zUUnable to chown a file on your filesystem.  You may not be running provision as root.re  úsamba_dsdb:%súSID as seen by smbd [ú6] does not match SID as seen by the provision script [ú]!rÆ   úSID as seen by pdb_samba_dsdb [Ú
dns_domainú!Realm as seen by pdb_samba_dsdb [ú8] does not match Realm as seen by the provision script [TFz<SID={}-{}>)rà  r¨   Úsession_info_flagsÚAdministrator)rà  Ú	user_nameÚuidÚgidc                óN   <€ \        SV \        \        S4      SSRS\        R7	      # )zA helper to reuse argsTr‘  )r#   Ú
SYSVOL_ACLr¹   r£  )r@  r‚   rÕ   Ú	s4_passdbrŠ  ru  s   &€€€€€rc   Ú	_setntaclÚsetsysvolacl.<locals>._setntaclÏ  s)   ø€ äØ�”j¤# i£.°,Ø°DÀÜ"ô$ð 	$rf   r”  r¡  éÿÿÿÿ)'Ús3paramÚget_contextrk  rM  ÚtempfileÚNamedTemporaryFilerC  r@  rl  r   Úset_simple_aclr&  r   r“  Úhave_posix_aclsr¾   Úchownrq  rm  r‰  r	   Úreload_static_pdbÚPDBr±   Úget_global_sam_sidÚdomain_infor²   Úformatr   rÍ   r   Ú AUTH_SESSION_INFO_DEFAULT_GROUPSÚAUTH_SESSION_INFO_AUTHENTICATEDÚ#AUTH_SESSION_INFO_SIMPLE_PRIVILEGESÚuser_sessionÚsession_info_set_unixr–  rD  r§  )rW   rA  r¶  r·  r‚   r{   ru   rÕ   ru  Ús3confÚfilerÈ  ÚcanchownÚuserdnrÚ  r»  r4  r™  rš  r&  rº  rŠ  s   &&&&f&&ff           @@rc   ÚsetsysvolaclrÓ  x  s  ü€ ð €Içˆ9Ü×$Ò$Ó&ˆØ�‰�B—M‘MÔ"ä×*Ò*¬r¯w©w¯©¸vÓ/FÔGˆð	ðbÜ×#Ò# D§I¡I¨uÔ6IÓ6KÈSÔQðUÜ—
’
˜4Ÿ9™9 cÔ0CÓ0EÕFð
 �J‰JŒLô ×$Ò$Ó&ˆØ�‰�B—M‘MÔ"à�
‰
Ð# _°u·y±yÕ%@ÔAÜ× Ò Ô"ô —J’J˜vŸz™zÐ*:Ó;Ó<ˆ	ô ×$Ò$Ó&¨)Ô3Ý#ô  |B÷  |Uò  |Uö  |Wó  Ybð  %có  dð  dà×+Ñ+Ó-ˆØ�yÕ! YÔ.Ý#ð  FQð  R[÷  F\ð  F\ó  ^gð  %hó  ið  ià�|Õ$×*Ñ*Ó,°	·±Ó0AÔAÝ#ð  JUð  Vbõ  Jc÷  Jiñ  Jiö  Jkð  mv÷  m|ñ  m|ö  m~ð  %ó  @ð  @ðßÜ�HŠH�V˜R Ô%ð ˆð ×!Ñ! )¬X×-NÑ-NÓO€Fä×2Ñ2Ü×1Ñ1õ2ä×5Ñ5õ6€Eô ×$Ò$ U°2¸&Ø8=ô?€Lä×Ò˜|Ø&(Ø)8Ø#&Ø#&õ	(÷$ñ $ñ ˆfÔÜŸWšW V°U×;Ñˆˆd�EÛˆDßŸXÜ—’œŸ™Ÿ™ d¨DÓ1°2°sÔ;Ù”b—g‘g—l‘l 4¨Ó.Ö/ñ ó ˆDßŸXÜ—’œŸ™Ÿ™ d¨DÓ1°2°sÔ;Ù”b—g‘g—l‘l 4¨Ó.Ö/ó ñ <ô � I¨xÀÀIÐV_×`øôk ô 	bÜ×+Ò+×-Ò-ô ,ð -zó {ð {ô (ð )aó bð bð	bûô ô UÜ'ð )Tó Uð UðUûð �J‰J�Lûô8 ô Ø‹ðúsH   Á7+P* Â#*Q* ÉR ÉR Ð*%Q'ÑQ'Ñ'R Ñ*RÒR ÒRÒR*Ò)R*c                 ó   € V '       d   R # R# )ÚDBÚVFS© )Údirect_db_accesss   &rc   Úacl_typerÙ  æ  s   € ßÙárf   c                 ó8  € \        4       p\        W WT\        R 7      pVP                  V4      pWq8w  d%   \	        \        V4      : RV : RV: RV: R24      h\        P                  ! V RR7       EF¥  w  r‰p
V
 FÉ  p\        V\        P                  P                  W‹4      VV\        R 7      pVf:   \	        \        V4      : R\        P                  P                  W‹4      : R	24      hVP                  V4      pWq8w  g   KŠ  \	        \        V4      : R\        P                  P                  W‹4      : RV: RV: R24      h	  V	 FÉ  p\        V\        P                  P                  W‹4      VV\        R 7      pVf:   \	        \        V4      : R\        P                  P                  W‹4      : R	24      hVP                  V4      pWq8w  g   KŠ  \	        \        V4      : R\        P                  P                  W‹4      : RV: RV: R24      h	  EK¨  	  R# )
©rØ  r“  z ACL on GPO directory r_  ú does not match expected value z from GPO objectFr”  Nz ACL on GPO file ú not found!)
r   r$   r£  r   r¾   rÙ  rC  r–  r@  rD  )r@  r—  rÕ   r‚   rØ  rŠ  ÚfsaclÚ
fsacl_sddlr4  r™  rš  r&  s   &&&&&       rc   Úcheck_dir_aclrà  í  sA  € Ü&Ó(€LÜ�R˜|ÔXfÔg€EØ—‘˜yÓ)€JØÔÜÔt|ð  ~Nö  uOó  QUó  Waó  cfð  !gó  hð  	häŸWšW T°5×9Ð9Ñˆ�EÛˆDÜ˜R¤§¡§¡¨dÓ!9¸<Ø.>ÌôXˆEàŠ}Ü'Ü)1Ð2BÖ)CÜ)+¯©¯©°dÖ)Að)Có Dð Dð Ÿ™ yÓ1ˆJØÖ Ü'Ôwð  AQö  xRô  TV÷  T[ñ  T[÷  T`ñ  T`ð  aeö  Tló  nxó  z}ð  )~ó  ð  ñ ó ˆDÜ˜R¤§¡§¡¨dÓ!9¸<Ø.>ÌôXˆEàŠ}Ü'Ü+3Ð4DÖ+EÜ+-¯7©7¯<©<¸Ö+Cð)Eó Fð Fð Ÿ™ yÓ1ˆJØÖ Ü'ô  }Eð  FVö  }Wô  Y[÷  Y`ñ  Y`÷  Yeñ  Yeð  fjö  Yqó  s}ó  Bð  )Có  Dð  Dô ó :rf   c           
     ó~  € \         P                  P                  WR4      p\        4       p\	        WWVV\
        R7      p	V	f   \        R\        V4      : RV: R24      hV	P                  V4      p
V
\        8w  d%   \        \        V4      : RV: RV
: RV	: R	24      hVP                  R
V,          RR.R\        P                  R7      pV Fl  p\        \        P                  VR,          ^ ,          4      P                  4       p\!        W\#        VR,          4      4      p\%        V\'        WÒ4      VW&4       Kn  	  R# )r�  r  rÛ  NzDB ACL on policy root r_  rÝ  z ACL on policy root rÜ  ú from provisionrž  r—   rŸ  r�   r¯  )rC  r@  rD  r   r$   r£  r¾   rÙ  r   r¢  r¶   r·   rÁ   r(   r   r¤  r!  r¹   rà  r%   )rA  r{   r‚   ru   rW   rÕ   rØ  r¥  rŠ  rÞ  rß  rØ   r¦  r—  r   s   &&&&&&&        rc   Úcheck_gpos_aclrã    s3  € ô —w‘w—|‘| F°zÓBÐÜ&Ó(€LÜ�R¨<Ø&6ÄôP€Eà‚}ÝÌHÐUeÖLfÓhxÐ yÓzÐzØ—‘˜yÓ)€JØ”\Ô!ÜÔqyð  {Kö  rLó  N^ó  `jó  lqð  !ró  sð  	sØ
�,‰,Ð6¸ÕBØ"Ð$:Ð;Ø"$¬C×,>Ñ,>ð ó @€Có ˆÜœ×,Ñ,ØÐ 6Õ7¸Õ:ó<ß<C¹G»Ið 	ä# F´s¸6À$½<Ó7HÓIˆÜ�k¤;¨sÓ#>ÀØö	3ó	 rf   c                ó*  € \         P                  ! 4       pVP                  VP                  4       VP	                  RRV P
                  ,          4       \        P                  ! VP                  R4      4      p\        P                  ! 4       V8w  d(   \        R\        P                  ! 4       : RV: R24      hVP                  4       p	V	R,          V8w  d   \        RV	R,          : RV: R24      hV	R,          P                  4       VP                  4       8w  d8   \        R	V	R,          P                  4       : R
VP                  4       : R24      h\        4       p
R F¯  p\        P                  P!                  W$4      V3 Fy  p\#        WlW«\$        R7      pVf   \        \'        V4      : RV: R24      hVP)                  V4      pV\*        8w  g   KS  \        \'        V4      : RV: RV: R\*        : R24      h	  \-        W$W5WV4       K±  	  R# )aº  Set the ACL for the sysvol share and the subfolders

:param samdb: An LDB object on the SAM db
:param netlogon: Physical path for the netlogon folder
:param sysvol: Physical path for the sysvol folder
:param uid: The UID of the "Administrator" user
:param gid: The GID of the "Domain administrators" group
:param domainsid: The SID of the domain
:param dnsdomain: The DNS name of the domain
:param domaindn: The DN of the domain (ie. DC=...)
re  r«  r¬  r­  r®  rÆ   r¯  r°  r±  r²  rÛ  Nz ACL on sysvol directory rÝ  r_  rÜ  râ  )TF)r¾  r¿  rk  rM  rm  r‰  r	   rÆ  r±   rÇ  r¾   rÈ  r²   r   rC  r@  rD  r$   r£  rÙ  r   r¹  rã  )rW   rB  rA  r‚   r{   ru   rÕ   rÏ  rº  rÈ  rŠ  rØ  Údir_pathrÞ  rß  s   &&&&&&&        rc   Úchecksysvolaclræ  /  s*  € ô × Ò Ó"€FØ
‡K�K�—‘Ôà
‡J�JÐ °5·9±9Õ!<Ô=ä—
’
˜6Ÿ:™:Ð&6Ó7Ó8€Iô × Ò Ó" iÔ/ÝÔw}÷  xQò  xQö  xSó  U^ð  !_ó  `ð  	`à×'Ñ'Ó)€KØ�9Õ Ô*Ýð  BMð  NW÷  BXð  BXó  Zcð  !dó  eð  	eà�<Õ ×&Ñ&Ó(¨I¯O©OÓ,=Ô=Ýð  FQð  R^õ  F_÷  Feñ  Feö  Fgð  ir÷  ixñ  ixö  izð  !{ó  |ð  	|ô 'Ó(€LÛ)ÐäŸ™Ÿ™ fÓ8¸(ÓCˆHÜ˜R¨<ÔdrÔsˆEØŠ}Ü'ÔV^Ð_oÖVpÓrzÐ({Ó|Ð|ØŸ™ yÓ1ˆJØœZÖ'Ü'ô  Gð  HXö  Yó  [có  eo÷  q{ð  )|ó  }ð  }ñ Dô 	�v¨)¸uØ'ö	)ó *rf   c                óš   € \         P                  ! W4      p. pV F,  pVP                  R4      R8X  g   K  VP                  V4       K.  	  V# )zreturn only IPv4 IPsÚ:r½  ©r´   Úinterface_ipsÚfindrð   )rÕ   Úall_interfacesÚipsÚretrÚ   s   &&   rc   Úinterface_ips_v4rï  a  sC   € ä
×
Ò
˜bÓ
1€CØ
€CÛˆØ�6‰6�#‹;˜"ÖØ�J‰J�qŽMñ ð €Jrf   c                óœ   € \         P                  ! V R4      p. pV F,  pVP                  R4      R8w  g   K  VP                  V4       K.  	  V# )zreturn only IPv6 IPsFrè  r½  ré  )rÕ   rí  rî  rÚ   s   &   rc   Úinterface_ips_v6rñ  k  sE   € ä
×
Ò
˜b %Ó
(€CØ
€CÛˆØ�6‰6�#‹;˜"ÖØ�J‰J�qŽMñ ð €Jrf   r=  c           !      óš	  € Vf   \         pVP                  4       pVf   \        pVP                  4       pVf   \        \        P
                  ! 4       4      pVf   \        P                  ! ^€^ÿ4      pVf   \        P                  ! ^x^x4      pVf   \        P                  ! ^x^x4      pV P                  4         \        V VV3RVRVRVRVRVRVRVRVR	VR
VRVRVRVRV	RV
/ p VR8X  d#   \        VP                  VP                  VV4       V P                  4        TR8X  EdÂ   T'       gP   \!        YP                  TP"                  TP$                  TP&                  TP                  TP(                  TT4	       MTP+                  R4       \-        YP.                  TP0                  TP                  TP2                  TP&                  T\4        R7       \        \6        4      p \8        P:                  ! \8        P<                  ! T T P?                  RRTP2                  ,          \8        P@                  R7      PC                  R4      4      4      p\8        PD                  ! T\8        PF                  RR7      TR&   T PI                  T4       \Q        YY4TYxTTTTR7       T P?                  T PS                  4       RR7      PC                  R4      p\U        T\        4      '       g   Q h\W        T 4      p\Y        T \        TPZ                  4      4      p Te   \]        T ^ T T^4       M\_        T ^ T T4       TP+                  R4       \a        T \c        R4      RTPd                  /4       TP+                  R4       \g        Y R R!R!R!R"7      p!T P                  4         R* F7  p"T!Pi                  T": R#TPj                  : 2\8        Pl                  R$.R%7       K9  	  T!Pi                  R&TP(                  ,          \8        Pn                  . R+OR%7       T!Pi                  TPj                  \8        P@                  R'R(.R%7      ^ 8w  d   \q        R)4      h T P                  4        R #    T P                  4        h ; i  \8        PJ                   d1   pTPL                  w  ppT\8        PN                  8w  d   h  R p?EL%R p?ii ; i   T P                  4        h ; i),Nr   r4  r  r  r  r°   ru  r  r¹  rÒ   r  rÅ   rv  r  r  rU  zSetting acl on sysvol skipped)r~   r|   r{   r}   r‚   r¹  r»  ÚdistinguishedNamezsamAccountName=%s$)r‹   r�   r–   zmsDS-SupportedEncryptionTypes)ÚelementsrÚ  r&  )ÚhostipÚhostip6rÒ   r  Úos_levelÚ
fill_levelrœ   )r×   rb  z2Setting up sam.ldb rootDSE marking as synchronizedzprovision_rootdse_modify.ldifrþ  zFixing provision GUIDsFT)Úsamdb_schemaÚverboseÚfixÚyesÚquietÚ,ÚdefaultObjectCategory)ÚDNr�   rŽ   zCN=IP Security,CN=System,%sÚattributeIdÚ	governsIdzFDuplicate attributeId or governsId in schema. Must be fixed manually!!)z	CN=DomainzCN=Organizational-Personz
CN=ContactzCN=inetOrgPerson)ÚipsecOwnersReferenceÚipsecFilterReferenceÚipsecISAKMPReferenceÚipsecNegotiationPolicyReferenceÚipsecNFAReference)9rÉ   r²   rË   r¹   ÚuuidÚuuid4r´   Ú generate_random_machine_passwordÚgenerate_random_passwordr•  r�  r)  rA  r{   r—  r˜  rÓ  r5  rÎ   r‚   ru   r  rÂ  r~   r|   r}   r   r   r·   rñ   r¼   rt  r¸   r½   rò   ró   rõ   r  r  ÚERR_NO_SUCH_ATTRIBUTErB   Úget_default_basednr  r  r  rt   rý   r   r=   r;   rÅ   rG   Úcheck_databaserw   r»   rÁ   r¾   )#rW   rÊ  r   rÖ   rÔ   r4  Ú
samdb_fillrõ  rö  r  r  r°   ru  r„   r  r  r  r¹  rÅ   rÒ   r  rZ  rv  rÕ   ru  Úskip_sysvolaclÚkerberos_enctypesr¾  rû   ÚenumÚestrÚlastProvisionUSNsÚmaxUSNÚchkÚ
schema_objs#   &&&&&&&&&&&&&&&&&&&&&&&&&&         rc   Úprovision_fillr  u  s¼  € ð ÒÜ(ˆ
Ø×!Ñ!Ó#€JØÒÜ.ˆØ!×'Ñ'Ó)€MàÒÜœ4Ÿ:š:›<Ó(ˆàÒô ×;Ò;¸CÀÓEˆ
ØÒÜ×<Ò<¸SÀ#ÓFˆØ‚Ü×0Ò0°°cÓ:ˆà	×ÑÔð#Ü˜5 " eñ =°Fð =Ø"(ð=à&0ð=à@Mð=ð !+ð=ð 7@ð=ð MWð=ð )5ð	=ð CNð	=ð
 (3ð=ð
 =Dð=ð %-ð=ð .?ð=ð %-ð=ð 6<ñ=ˆð Ð=Ô=Ü˜uŸ|™|¨U¯_©_¸jØ,ô.ð 	× Ñ Ô"àÐ9Õ9÷ Ü˜§¡¨e¯n©nØŸ™¨¯©¸%¿/¹/ØŸ™¨¨Yõ8ð �K‰KÐ7Ô8ä˜K·±Ø"'§+¡+¸¿¹Ø(-×(9Ñ(9ÀUÇ_Á_Ø(3Ìõ	Wô  ¤Ó.Ðð	Ü—+’+œcŸfšf UØ%*§_¡_Ð5HØ@TÐW\×WhÑWhÕ@hÜ;>×;LÑ;Lð &5ó &NçNTÉfÐU[Ënó^ó _ˆCô 47×3EÒ3EØ*´#×2FÑ2FØ4ô46ˆCÐ/Ñ0ð �L‰L˜Ôô 	�U¨°vØ"ÀØ$Ð/@Ø *õ	,ð
 —_‘_¨E×,DÑ,DÓ,FØ/;ð %ó =ß=C¹VÀF»^ð 	ä˜*¤c×*Ò*Ð*Ð*ä.¨uÓ5ÐÜ˜¤ E§L¡LÓ 1Ó2€FØÒ$Ü˜U A v¨|¸QÕ?ä˜%  F¨LÔ9à
‡K�KÐDÔEÜ�eœZÐ(GÓHØ! 5§>¡>Ð2ô4ð ‡K�KÐ(Ô)Ü
�%°UÀÈ$Øô€Cà	×ÑÔð#ó fˆJØ×Ñ«Z¸¿»Ð"HÜ%(§^¡^Ø&=Ð%>ð ö @ñ fð 	×ÑÐ;¸e¿n¹nÕLÜ!$×!3Ñ!3ò"7ð 	ô 	8ð ×Ñ §¡´s×7HÑ7HØ%2°KÐ$@ð ó BØEFôGä#Ð$lÓmÐmðGð 	× Ñ Ö"øðmØ× Ñ Ô"Øûô@ �|‰|ô 	ØŸ6™6‰LˆT�4Ø”s×0Ñ0Ô0àõ 1ûð	ûð`Ø× Ñ Ô"Øús3   Â9AQ Ç$B&Q/ ÎB0R7 ÑQ,Ñ/R4Ò%R/Ò/R4Ò7S
ÚROLE_STANDALONEr^  ÚROLE_DOMAIN_MEMBERzmember serverÚROLE_DOMAIN_BDCrU  ÚROLE_DOMAIN_PDCÚdcÚmemberzdomain controllerÚ
standalonec                óR   €  \         V ,          #   \         d    \        T 4      hi ; i)zäSanitize a server role name.

:param role: Server role
:raise ValueError: If the role can not be interpreted
:return: Sanitized server role (one of "member server",
    "active directory domain controller", "standalone server")
)Ú
_ROLES_MAPr$  Ú
ValueError)Úroles   &rc   Úsanitize_server_roler$    s,   € ðÜ˜$ÕÐøÜô Ü˜ÓÐðús   ‚ �&c           
     óÎ   € VP                  4         V P                  R4       \        V\        R4      RVRVRV/4       VP	                  4        R#    TP                  4        h ; i)zlCreate AD entries for the fake ypserver.

This is needed for being able to manipulate posix attrs via ADUC.
z"Setting up fake yp server settingszypServ30.ldifrð  rö  Ú	NISDOMAINN)r•  r  r<   r;   r—  r˜  ©r   rW   ru   r}   Ú	nisdomains   &&&&&rc   Úprovision_fake_ypserverr)    sk   € ð
 
×ÑÔð#Ø�‰Ð8Ô9Ü�uœj¨Ó9Ø˜Ø˜;Ø˜ð<
ô 	ð 	× Ñ Ö"øð	Ø× Ñ Ô"Øús   ’-A ÁA$c                 ó.  € \         P                  P                  V 4      '       g    \         P                  ! W4       R# R#   \         dI   pTP
                  \
        P                  39   d    Rp?R# \        R T : RTP                  : 24      hRp?ii ; i)zFailed to create directory z: N)	rC  r@  rj  Úmkdirr“  ÚerrnoÚEEXISTr¾   Ústrerror)r@  rÛ  rû   s   && rc   Údirectory_create_or_existsr/  3  sl   € Ü�7‰7�>‰>˜$×Òð	bÜ�HŠH�TÖ ñ  øô ô 	bØ�w‰wœ5Ÿ<™<˜.Ô(Ýå'ËtÐUV×U_ÓU_Ð(`ÓaÐaûð		bús   §A ÁBÁ BÁ2BÂBc                 óø   € VfX   V P                  R4       \        V4      p\        V4      ^ 8”  d,   V^ ,          p\        V4      ^8”  d   V P                  RV4       VR8X  d   R pVf   V P                  R4       V# )NzLooking up IPv4 addressesz*More than one IPv4 address found. Using %sz	127.0.0.1z No IPv4 address will be assigned)r  rï  rÀ   Úwarning)r   rÕ   rõ  Úhostipss   &&& rc   Údetermine_host_ipr3  >  su   € Ø‚~Ø�‰Ð/Ô0Ü" 2Ó&ˆÜˆw‹<˜!ÔØ˜Q•ZˆFÜ�7‹|˜aÔØ—‘ÐKØ%ô'à�ÔØˆØ‚~Ø�‰Ð9Ô:à€Mrf   c                 óÖ   € VfP   V P                  R4       \        V4      pV'       d
   V^ ,          p\        V4      ^8”  d   V P                  RV4       Vf   V P                  R4       V# )NzLooking up IPv6 addressesz*More than one IPv6 address found. Using %sz No IPv6 address will be assigned)r  rñ  rÀ   r1  )r   rÕ   rö  r2  s   &&& rc   Údetermine_host_ip6r5  O  s\   € Ø‚Ø�‰Ð/Ô0Ü" 2Ó&ˆßØ˜a•jˆGÜˆw‹<˜!ÔØ�N‰NÐGÈÔQØ‚Ø�‰Ð9Ô:à€Nrf   TÚ2019c0                ó.  €  \        V"4      p"T#f   \        p#T*R[9   d   \        p0M"T*R\9   d   \        p0MT*R]9   d   \
        p0M\        p0T0T#8  d   \        RT#T*3,          4      hT+e   T0T+8  d   \        RT*T+3,          4      hT+e   T+T#8  d   \        RT#T+3,          4      hTf   \        P                  ! ^€^ÿ4      pT-f   \        4       p-Tf   \        P                  ! 4       p\        T;'       g    R.T 4      p1\        T;'       g    R.4      p2\        T ;'       g    RRR	R
.4      p3\        P                   ! T14      P"                  p4 \        RR.4      p5Te#   \&        P(                  P+                  TRR4      pM"Tf   \        P,                  P/                  4       p\&        P(                  P1                  \&        P(                  P3                  T4      4      '       g4   \&        P4                  ! \&        P(                  P3                  T4      4       . p6/ p7T('       d   R.T7R&   TR8w  d   T6P7                  R4       M
Te   T.T7R&   T''       d*   T6P7                  R4       T6P7                  R4       RR.T7R&   \9        T64      ^ 8”  d   T6T7R&   \&        P(                  P1                  T4      '       d[   \;        TR4      p8 T8P=                  4       P?                  4       p9T8PA                  4        T9e   T9R8X  d   \C        Y,YµTT"T$T'T&T7R7
       M\C        Y,YµTT"T$T'T&T7R7
       T&f   \        P,                  PE                  4       p&T&PG                  T4       \I        T&YËTT"TY˜T
T!Yd\J        8H  R7      p:\M        T&T:PN                  4      p;T5T;n(        T1T;n)        T4T;n*        \W        T T&T4      p\Y        T T&T4      pTT:n-        TT:n.        TT:n/        TT:n0        TT:n1        T"f   T&Pe                  R4      p"\g        T;Ph                  R4       \g        T;Pj                  R 4       \g        \&        P(                  P+                  T;Ph                  R!4      4       \g        T;Pl                  4       T,'       g   \o        T;Pp                  4       T;Pr                  '       dQ   \&        P(                  P1                  T;Pr                  4      '       g"   \&        P4                  ! T;Pr                  R"4       \u        TTT:Pv                  T*R#7      p<\y        T;T&T:T R$7      p=T=P{                  4        T=P}                  4        \&        P(                  P1                  T;P~                  4      '       gD   T P�                  R%4       \ƒ        T;P~                  TT&R&7      p>T>P…                  \‡        R'4      4       T P�                  R(4       \‰        T;TT&R&7      p? T P�                  R)4       \‹        T;PŒ                  TT&R*7       T P�                  R+4       \�        T;P�                  TT&R*7       T P�                  R,4       \“        T;P”                  TT&R&7      p@\—        T@\™        T4      T1T2T3R-7       T P�                  R.4       \›        T;Pœ                  TT=T&T:T T"T<T%T,T-T.T/R/7      pAT"R08X  d™   T;Pž                  f   \¡        R1T;P¢                  4      hT;Pr                  f   \¡        R2T;P¢                  4      h\&        P(                  P¥                  T;Pž                  4      '       g"   \&        P4                  ! T;Pž                  R34       Tf   \        P                  ! ^^ 4      pR4pBM)\§        T\¨        4      '       d   TP«                  R54      pR6pBT\¬        8X  Ed™   \¯        XAT?T T:T;3/ R7T<bR8TbR9TbR:TbR;TbR<TbR=TbR>TbR?TbR@TbRATbRBTbRCTbRDTbRETbRFT"bRGT#bRHT&bRIT'bRJT)b  T+EeJ   R6pCT&Pe                  RK4      f    T&P±                  RKR4       \³        RL4       R4pCXAPµ                  4         ^ RMI[H\pD TD! TAR4RN7      pETEP»                  . R^O4       TEP½                  T+\        R4RO7       TAP¿                  4        XAPµ                  4         ^ RPIbHcpG TG! TAR4R4RQ7      P½                  T+\È        R4RO7       TAP¿                  4        XC'       d   T&P±                  RKRR4       \Ë        4       pHTH\Ì        ,
          \Î        ,
          pIXAPÑ                  THTIRS7      pJT P�                  RTTJPÓ                  4        24       \Õ        4       '       g`   \×        T;PØ                  Y[\&        P(                  P3                  T&Pe                  RU4      4      4       T P�                  RVT;PØ                  4       \Û        T;PÜ                  T:PN                  T:PÞ                  T:Pà                  RW7       T P�                  RXT;PÜ                  4       T P�                  RY4       T"R08X  d   \ã        T;4       T=På                  4       pKT=Pç                  4        T?P¿                  4        \é        T T;4       \ë        4       pLT"TLnv        TTLnw        T;TLnx        T:TLny        T&TLnz        XATLnN        X@TLn{        \™        T4      TLn0        T\¬        8X  d   XBXLn|        TTLn}        MR6XLn|        RTLn}        XKXLn~        T('       d@   \ÿ        T XAT:Pî                  T:EP                   T:EP                  EP                  4       RZ7       XL#   \         d    \        RT",          4      hi ; i  \$         d    Rp5 E	LÈi ; i  T8PA                  4        i ; i  \À         d   pFXAPÃ                  4        TFhRpF?Fii ; i  \À         d   pFXAPÃ                  4        TFhRpF?Fii ; i   T?PÃ                  4        h ; i)_z@Provision samba4

:note: caution, this wipes all existing data!
zlserver role (%s) should be one of "active directory domain controller", "member server", "standalone server"Nz7dom_for_fun_level[%u] incompatible with base_schema[%s]z2base_schema[%s] incompatible with adprep_level[%u]z8dom_for_fun_level[%u] incompatible with adprep_level[%u]r4  ÚnobodyÚusersÚotherÚstaffÚbindÚnamedÚetczsmb.confrü  zidmap_ldb:use rfc2307r¬   z-dnszdns forwarderz+smbz-s3fsz+winregz+srvsvczdcerpc endpoint serverszserver servicesr  r�   )rZ  rt  ru  rÕ   rv  )rÕ   r   r~   r{   rZ  ru   rv   rw   rÂ   r€   rt   r[  rT  iÀ  iø  Útlsr#  )r  rw   rs  )rÔ   rÕ   rÖ   r   zSetting up share.ldbrÄ  z
share.ldifzSetting up secrets.ldbzSetting up the registry)rÕ   z"Setting up the privileges databasezSetting up idmap db)r„  r5  r…  r†  zSetting up SAM db)r   rZ  r4  r-  r›  rœ  r5  r6  rU  rB  rA  rª  Tr­  Fr4  r  rõ  rö  r  r  r°   ru  r  r  r  r¹  rÅ   rÒ   r  rZ  rv  rÕ   ru  r  zdsdb:schema update allowedz;Temporarily overriding 'dsdb:schema update allowed' setting)ÚForestUpdate)rû  )Úupdate_revision)ÚDomainUpdate)Únew_installrû  Úno)Úcurrent_timeÚuse_start_timez#gkdi/gmsa root key added with guid zlog filez<The Kerberos KDC configuration for Samba AD is located at %s)r{   r   r|   zGA Kerberos configuration suitable for Samba AD has been generated at %szpMerge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!r'  )Ú2008_R2Ú2008_R2_old)Ú2012)Ú2012_R2)é   é6   éO   éP   éQ   éR   éS   )ƒr$  r"  r¾   r   r   r   r   r´   r  rI   r   Ú
random_sidr6  r-  r2  rÏ   rÐ   rÑ   r$  rC  r@  rD  r
   Údefault_pathrj  Údirnamer&  rð   rÀ   rn  ÚreadÚlstriprq  r  ri  rk  r\  r@   rN  r{   Úbind_gidr5  rÎ   r3  r5  rõ  rö  r„   r‚   rƒ   r±   r/  r^   r_   r`   rÞ  rI  rA  rE   rw   r)   ÚinitÚstartrP   r  r   rÆ  r;   rË  rê  rQ   rÎ  rE  rí  rX   r‡  r¹   r;  rW   rB  ÚMissingShareErrorr�   Úisdirr  Úbytesr½   r>   r  rm  Úprintr•  Úsamba.forest_updater@  Úcheck_updates_iteratorÚcheck_updates_functional_levelr—  Ú	Exceptionr˜  Úsamba.domain_updaterB  r   r&   r   r    Únew_gkdi_root_keyÚget_rdn_valuer   rH   rG  Úcreate_krb5_confrF  r   r|   rD   Ú
post_setupÚshutdownrC   r  r  ru   rÔ   rÖ   rÕ   r  r  r°   r  r)  r}   r~   r³   )Mr   rŠ  r�   rs  r  r|   rt   ru   rw   rv   rÂ   r~   r   rõ  rö  r‚   r  r  r°   Úldapadminpassru  r„   r  r  rÒ   Údns_forwarderr  r  r¹  rÅ   r4  r8  r9  r€   rZ  rv  Úuseeadbr-  rÕ   ru  Úuse_rfc2307r  rs  Úadprep_levelr›  rœ  r5  r6  Úmax_adprep_levelr5  r…  r†  rÎ   rW  Úserver_servicesrv  r|  ÚdatarÖ   rÔ   r4  rš  Ú	share_ldbrÊ  r  rW   r  Úupdates_allowed_overriddenr@  Úforestrû   rB  rE  rF  Úgkdi_root_key_dnr  ÚresultsM   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&                             rc   Ú	provisionru  ]  sÙ
  € ð(]Ü)¨*Ó5ˆ
ð Ò Ü6ÐàÐ0Ô0Ü5ÑØ	˜Ô	 Ü2ÑØ	˜Ô	#Ü5Ñä2ÐàÐ+Ô+ÜÐ YØ!2°KÐ @õ!Aó Bð 	Bð ÒÐ$4°|Ô$CÜÐ TØ!,¨lÐ ;õ!<ó =ð 	=ð Ò LÐ3DÔ$DÜÐ ZØ!2°LÐ Aõ!Bó Cð 	Cð Òä×6Ò6°s¸CÓ@ˆàÒÜ1Ó3ˆàÒÜ×'Ò'Ó)ˆ	ä˜TŸ^˜^ VÐ,¨fÓ5€HÜ˜f×0Ð0¨Ð1Ó2€JÜ˜U×-Ð- g¨w¸ÀÐIÓJ€IÜ�|Š|˜HÓ%×,Ñ,€HðÜ ¨Ð0Ó1ˆð ÒÜ—'‘'—,‘,˜y¨%°Ó<‰Ø	ŠÜ—+‘+×*Ñ*Ó,ˆÜ�7‰7�>‰>œ"Ÿ'™'Ÿ/™/¨'Ó2×3Ò3Ü
�Š”B—G‘G—O‘O GÓ,Ô-à€OØ€LßØ16°ˆÐ,Ñ-àÐ&Ô&Ø×Ñ˜vÕ&àÒ$Ø-:¨OˆL˜Ñ)çØ×Ñ˜vÔ&Ø×Ñ˜wÔ'Ø3<¸iÐ2HˆÐ.Ñ/ä
ˆ?Ó˜aÔØ*9ˆÐ&Ñ'ô 
‡w�w‡~�~�g×Òô �˜#Óˆð	Ø—6‘6“8—?‘?Ó$ˆDà�G‰GŒIØŠ<˜4 2œ:Ü˜¨FØ"¨zØ%°Ø¨\õ;øô
 	�W¨°yØ *Ø!¨Y¸2ÈLõ	Zð 
‚zÜ�[‰[×!Ñ!Ó#ˆØ‡G�GˆGÔÜ˜2¨Ø"'°JÈØ!)ÀxØ!)°&Ô]eÑOeôh€Eô $ B¨¯©Ó8€Eà€E„NØ€E„NØ€E„Nä˜v r¨6Ó2€FÜ  ¨¨WÓ5€GØ€E„LØ€E„MØ!€EÔØ€E„OØ€E„OàÒØ—V‘V˜MÓ*ˆ
ä˜u×0Ñ0°%Ô8Ü˜u×0Ñ0°%Ô8ÜœrŸw™wŸ|™|¨E×,=Ñ,=¸uÓEÔFÜ˜uŸ™Ô/ßÜ# E×$DÑ$DÔEà‡|‡|€|œBŸG™GŸN™N¨5¯<©<×8Ò8Ü
�Š�E—L‘L %Ô(ä�I¨LØ"Ÿ^™^¸ôF€Fô #¨Ø&(Ø).°vô?Ðð ×ÑÔØ×ÑÔô �7‰7�>‰>˜%Ÿ/™/×*Ò*Ø�‰Ð*Ô+Ü˜Ÿ™°lÀrÔJˆ	Ø×$Ñ$¤Z°Ó%=Ô>à
‡K�KÐ(Ô)Ü! %Ø/;ÀôD€KðAØ�‰Ð-Ô.Ü�u—z‘z <°BÕ7à�‰Ð8Ô9Ü˜Ÿ™¨,¸2Õ>à�‰Ð)Ô*Ü˜eŸm™m¸,È2ÔNˆä˜E¤s¨9£~Ø%-¸*Ø&/õ	1ð 	�‰Ð'Ô(Ü˜EŸK™K¨Ø-¨r°5ÀØ'1Ø#)°7Ø.?Ø*7Ø/AØ'1ô3ˆð Ð=Ô=Ø�~‰~Ò%Ü'¨
°E·M±MÓBÐBà�|‰|Ò#Ü'¨°%·-±-Ó@Ð@ä—7‘7—=‘= §¡×0Ò0Ü—’˜EŸN™N¨EÔ2àÒÜ×6Ò6°r¸2Ó>ˆIØ"&Ñä˜)¤U×+Ò+Ø%×,Ñ,¨WÓ5�	Ø"'ÐàœÕ"Ü˜5 +¨v°u¸eò :Ù"(ð:Ù5?ð:á"(ð:á29ð:ñ %-ð:ñ 6<ð:ñ HQð:ñ '1ð	:ñ
 '1ð:ñ
 ANð:ñ )5ð:ñ CNð:ñ %-ð:ñ ;Fð:ñ $+ð:ñ 8Bð:ñ .?ð:ñ !ð:ñ -6ð:ñ +9ñ:ð Ó'Ø-2Ð*Ø—6‘6Ð6Ó7Ò?Ø—F‘FÐ7¸Ô?ÜÐWÔXØ15Ð.à×'Ñ'Ô)ðÝ@Ù)¨%°TÔ:�Fà×1Ñ1Ò2NÔOØ×9Ñ9¸,Ü:TØJNð :ô Pð ×,Ñ,Ô.ð
 ×'Ñ'Ô)ðÝ@á  Ø-1Ø%)ô+ç+IÑ+IØ$Ü/Ø(,ð ,Jô ,ð ×,Ñ,Ô.÷
 .Ø—F‘FÐ7¸Ô>ä%›x�à!-Ü(õ")Ü+9õ":�à#(×#:Ñ#:ÈØJXð $;ó $ZÐ à—‘ÐAØ/×=Ñ=Ó?Ð@ðBô Cô  ×!Ò!Ü˜EŸM™M¨5¼"¿'¹'¿/¹/È"Ï&É&ÐQ[ÓJ\Ó:]Ô^Ø�K‰Kð (Ø).¯©ô8ô 	˜Ÿ™Ø#(§?¡?¸U¿^¹^Ø$Ÿ{™{õ	,ð 	�‰ð &Ø',§~¡~ô	7à�‰ð ô 	 ð Ð=Ô=Ü" 5Ô)à*×5Ñ5Ó7ˆØ×"Ñ"Ô$ð ×"Ñ"Ô$ô ˜v uÔ-äÓ€FØ#€FÔØ€F„OØ€F„LØ€F„LØ€F„IØ€F„LØ€F„LÜ˜9“~€FÔà”YÔØ%8ˆÔ"Ø$ˆÕà%*ˆÔ"ØˆÔà*€FÔçÜ v°UØ).¯©ÀU×EVÒEVØ*/¯,ª,×*<Ò*<Ó*>õ	@ð €Møôi	 ô ]Üð  !Oð  R\õ  !\ó  ]ð  	]ð]ûôX ô Ø‹ðûðL �G‰G�IûôV !ô Ø×,Ñ,Ô.Ø�Gûðûô" !ô Ø×,Ñ,Ô.Ø�GûðûðHØ×&Ñ&Ô(Øús�   ‚k- Å	l Ë l" Ö8En Û=Dn àAl7 án á!7m ân â E.n ë-lìlìlì"l4ì7mímímín ím>í'm9í9m>í>n înc                 óH  € \         P                  ! R 4      p\        P                  ! V4       \	        V\        4       3/ RV bRVbR\        bRVbRVbRVbRVbRVbR	VbR
VbRV	bRRbRV
bRVbRRbRVbRVbRVbRVb pVP                  P                  R\        V4      4       V# )ru  r�   rs  r  r|   rt   ru   rw   rv   rÂ   r~   r   rõ  Nr‚   r¹  rZ  rU  r€   rÒ   r  ru  Ú
debuglevel)
ÚloggingÚ	getLoggerr´   Úset_debug_levelru  r   r@   rÕ   rm  r¹   )r�   rs  r|   rt   ru   rw   rv   rÂ   r~   r   r‚   r¹  r  rÒ   r€   rw  ru  r   rØ   s   &&&&&&&&&&&&&&&&&  rc   Úprovision_become_dcr{  ª	  s  € ô ×Ò˜{Ó+€FÜ	×Ò˜*Ô%ä
�FœNÓ,ò )Ù#ð)Ù/8ð)ÝEMð)áð)á(.ð)á9Að)áLTð)ñ &ð)ñ 19ð)ñ BHð)ñ &ð	)ñ /3ð	)ñ ?Hð	)ñ
 !,ð)ñ  Dð)ñ &ð)ñ 4?ð)ñ IPð)ñ (ð)€Cð ‡F�F‡J�Jˆ|œS ›_Ô-Ø€Jrf   c           
     ó>   € \        \        R4      V RVRVRV/4       R# )z¼Write out a file containing a valid krb5.conf file

:param path: Path of the new krb5.conf file.
:param dnsdomain: DNS Domain name
:param hostname: Local hostname
:param realm: Realm name
r>  r  r
  ÚREALMN)r   r;   )r@  r{   r   r|   s   &&&&rc   re  re  Â	  s)   € ô Œz˜+Ó&¨Ø˜Ø˜Ø�Uð/ö rf   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r¾   iÑ	  zA generic provision error.c                ó   € Wn         R # rO   ©Úvalue)rb   r�  s   &&rc   rd   ÚProvisioningError.__init__Ô	  s   € ØŽ
rf   c                ó(   € R V P                   ,           # )zProvisioningError: r€  ra   s   &rc   Ú__str__ÚProvisioningError.__str__×	  s   € Ø$ t§z¡zÕ1Ð1rf   r€  N)	rh   ri   rj   rk   r"  rd   r„  rl   rm   rn   s   @rc   r¾   r¾   Ñ	  s   ø‡ € Ù$ò÷2ð 2rf   r¾   c                   ó6   a a€ ] tR tRt oRtV 3R ltRtVtV ;t# )rX  iÛ	  z.A specified name was not a valid NetBIOS name.c                ó4   <€ \         SV `  R V,          4       R# )z)The name '%r' is not a valid NetBIOS nameN©Úsuperrd   )rb   r&  Ú	__class__s   &&€rc   rd   ÚInvalidNetbiosName.__init__Þ	  s   ø€ Ü‰ÑØ7¸$Õ>ö	@rf   r×  )	rh   ri   rj   rk   r"  rd   rl   rm   Ú__classcell__©rŠ  ro   s   @@rc   rX  rX  Û	  s   ù‡ € Ù8÷@õ @rf   rX  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )rZ  iã	  c                ó8   <€ \         SV `  R V: RV: R24       R# )z#Existing smb.conf does not have a [z5] share, but you are configuring a DC. Please remove z or add the share manually.Nrˆ  )rb   r&  r�   rŠ  s   &&&€rc   rd   ÚMissingShareError.__init__å	  s   ø€ Ü‰Òó “7ðö	rf   r×  )rh   ri   rj   rk   rd   rl   rm   rŒ  r�  s   @@rc   rZ  rZ  ã	  s   ù‡ € ÷õ rf   rZ  )F)NNNNNNNNNNNF)NFFNN)FN)NNl        )FFNNF)NNNN)rª  rO   )NNNNNNNNNNNNNNNé   F)¯r"  Ú__docformat__Úbase64r   r,  rC  rÔ  rï   rÏ   r0  rx  ri  r  rV  rÀ  Ú
samba.dsdbr´   r·   Ú
samba.authr   r   Úsamba.auth_utilr   r   Úsamba.samba3r   r	   r
   r¾  r   r   r   r   r   r   r   r   r   Úsamba.dcerpcr   r   Úsamba.dcerpc.miscr   r   r   r   r   r   r   r   r   Ú
samba.gkdir   r    Úsamba.idmapr!   Úsamba.ms_display_specifiersr"   Úsamba.ntaclsr#   r$   r%   Úsamba.nt_timer&   Ú	samba.ndrr'   r(   Úsamba.provision.backendr)   Úsamba.descriptorr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   Úsamba.provision.commonr;   r<   r=   r>   r?   r@   Úsamba.provision.sambadnsrA   rB   rC   rD   Úsamba.paramÚsamba.registryÚsamba.schemarE   Úsamba.samdbrF   Úsamba.dbcheckerrG   Úsamba.provision.kerberosrH   rI   rJ   rÉ   rË   rY  rî   rj  ÚobjectrM   rq   ré   rý   r   r  r  r  r'  r-  r2  r6  rN  rQ  r\  r  r‡  r   rÂ  rË  rÎ  rÞ  rê  rí  r–  r  r!  r'  r)  r/  r;  r�  r¹  r¢  r£  r›  r§  rÓ  rÙ  rà  rã  ræ  rï  rñ  r  r!  r$  r)  r/  r3  r5  ru  r{  re  ra  r¾   rX  rZ  r×  rf   rc   Ú<module>r«     sg  ðñ2 6à"€å Û Û 	Û Û 	Û 
Û 
Û Û Û Û Û Û ã 
ç 4Ý /Û Ý ß %Ý )÷
÷ 
õ 
÷ (÷÷÷ ñ ÷õ  Ý 4ß 8Ñ 8Ý  ß *õ÷÷ ÷ ÷ õ ÷&÷ ÷ó ó Û Ý Ý Ý #Ý 4Ý 1Ý "à<Ð Ø?Ð Ø'€Ø1Ð àÐ ô�Vô ô,�Vô ò0_ôD&òRò0 ò &ôR#6�fô #6òL>ò+ò+òò-ò`6ôuôpcòLFô$F#ðT =AØ"¨dØ+,Ø,:ô	Vòr&òRMòò2"òò ôhòVòò #ð  -Ð ô;ô|HðV g€
Ø~€Ø€ð CQô 	cò#ò@kaò\òDò> 3òF/)ôdòð Ø'Ø¨Ø ¨¸È$Ø"¨tÀ4Ø $°$ÀØ#¨TØ"°dØ eØ"'ôJ#ð\ Ð*Ø˜/ØÐ;ØÐ;ØÐ
.ØˆoØÐ=Ø(Ð*NØ�_ØÐ%ØÐ,ð€
òò#ô(bôô"ð -1Ø¨¸$ÀtØ d°TÀDØ D°¸tÈtØ D°DÈØ¨$¸4ÈtØ¨d¸DØ¨T¸DØ ¨DØ¨ÀØ U¨t¸uØ°Ø Ð/FØ %°TØ!%°%ôJôZ
ò0ô2˜	ô 2ô@˜ô @ôÐ)ö rf   