+
    ˜qgj"  ã                   óÔ   € ^ RI t ^ RIt^ RIt^ RIHt ^ RIt^ RIHtHt ^ RI	H
t
 ^ RIHtHt ] P                  ! ]4      t ! R R]P"                  P$                  P&                  4      tR# )é    N)ÚStringIO)ÚsubpÚutil)ÚFreeBSDNetworking)Ú
PER_ALWAYSÚPER_INSTANCEc                   ó:  a € ] tR t^t o Rt]tRtRtRt	Rt
. R%OtRR.tRR.tRR	.tRR
.tRtRtRtRt. R&Ot]R'R l4       t]RR/V 3R lR ll4       tR tV 3R lR ltR tR(R ltR tR tR'R ltR tRR/R lt ]!V 3R  lR! l4       t"]!V 3R" lR# l4       t#R$t$V t%R# ))ÚDistrozM
Distro subclass for FreeBSD.

(N.B. DragonFlyBSD inherits from this class.)
z/usr/local/libz/etc/login.confz/etc/login.conf.origz,/usr/local/etc/sudoers.d/90-cloud-init-usersÚpkgÚinstallÚremoveÚupdateÚupgradeTz/homez/var/dbzdhclient.leases.\w+Nc                ó®   € \         P                  P                  R4      pVf   \        P	                  R4       R# \
        P
                  ! RRV.RVR7      # )zŒ
Tell rc to reload its configuration
Note that this only works while we're still in the process of booting.
May raise ProcessExecutionError
ÚRC_PIDNz0Unable to reload rc(8): no RC_PID in EnvironmentÚkillz-SIGALRMT©ÚcaptureÚrcs)ÚosÚenvironÚgetÚLOGÚwarningr   )Úclsr   Úrc_pids   && Ú;/usr/lib/python3/dist-packages/cloudinit/distros/freebsd.pyÚreload_initÚDistro.reload_init7   sE   € ô —‘—‘ Ó)ˆØŠ>Ü�K‰KÐJÔKÙä�yŠy˜& *¨fÐ5¸tÈÔMÐMó    r   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[ /# )é   ÚactionÚserviceÚ
extra_args©Ústr)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚDistro.__annotate__F   s%   ø€ ÷ 5ñ 5Ùð5Ù#&ð5Ù58ñ5r    c               óî   € V P                   pRVR.RVR.RVR.RVR.RVR.RVR.RVR.RVR.R	VR.R
VR.RVR.RVR./pWVV,          ,           \        V4      ,           p\        P                  ! VRVR7      # )zÝ
Perform the requested action on a service. This handles FreeBSD's
'service' case. The FreeBSD 'service' is closer in features to
'systemctl' than SysV init's 'service', so we override it.
May raise ProcessExecutionError
ÚstopÚstartÚenableÚenabledÚdisableÚonestartÚonestopÚrestartÚreloadz
try-reloadÚstatusÚ	onestatusTr   )Úinit_cmdÚlistr   )r   r#   r$   r   r%   r8   ÚcmdsÚcmds   &&&$*   r   Úmanage_serviceÚDistro.manage_serviceE   s·   € ð —<‘<ˆà�W˜fÐ%Ø�g˜wÐ'Ø�w Ð)Ø˜ Ð+Ø˜ Ð+Ø˜ *Ð-Ø˜ Ð+Ø˜ Ð+Ø�w 	Ð*Ø˜7 IÐ.Ø�w Ð)Ø˜' ;Ð/ð
ˆð ˜f�Õ%¬¨ZÓ(8Õ8ˆÜ�yŠy˜ d°Ô4Ð4r    c                ó   € R RRVRV.# )ÚpwÚusermodú-nú-G© )ÚselfÚmember_nameÚ
group_names   &&&r   Ú_get_add_member_to_group_cmdÚ#Distro._get_add_member_to_group_cmda   s   € Ø�i  {°D¸*ÐEÐEr    c                ó    <€ V ^8„  d   QhRS[ /# )r"   Úreturn)Úbool)r(   r)   s   "€r   r*   r+   d   s   ø€ ÷ <ñ <©$ñ <r    c                óR  € \         P                  ! V4      '       d   \        P                  RV4       R# RRRV.pRRRV.pRRRR	R
RRRRRRRRR/pRRRRRR/pVP	                  4        F“  w  rxWu9   dI   V'       dA   \        V\        \        34      '       d%   VP                  WW,          \        V4      .4       KS  Wv9   g   K[  V'       g   Ke  VP                  Wg,          4       VP                  Wg,          4       K•  	  RV9   g   RV9   d$   VP                  R4       VP                  R4       MsVP                  RV P                   RV 24      p	VP                  RV	,           4       VP                  R4       VP                  RV	,           4       VP                  R4       \        P                  RV4        \        P                  ! W4R7       TP                  R!R"4      p
T
e   T P                  YR#R$7       R##   \         d    \         P                  ! \        R T4       h i ; i)%zf
Add a user to the system using standard tools

Returns False if user already exists, otherwise True.
z!User %s already exists, skipping.Fr?   ÚuseraddrA   Úhomedirz-dÚgecosú-cÚprimary_groupz-gÚgroupsrB   Úshellz-sÚinactivez-EÚuidz-uÚno_user_groupz--no-user-groupÚsystemz--systemÚno_log_initz--no-log-initÚno_create_homez-d/nonexistentÚ/z-mzAdding user %s)Ú	logstringzFailed to create user %sÚpasswdNT)Úhashed)r   Úis_userr   ÚinfoÚitemsÚ
isinstancer'   ÚintÚextendÚappendr   Úhome_dirr   Ú	ExceptionÚlogexcÚ
set_passwd)rD   ÚnameÚkwargsÚpw_useradd_cmdÚlog_pw_useradd_cmdÚpw_useradd_optsÚpw_useradd_flagsÚkeyÚvalrN   Ú
passwd_vals   &&,        r   Úadd_userÚDistro.add_userd   sþ  € ô �<Š<˜×ÒÜ�H‰HÐ8¸$Ô?Ùà 	¨4°Ð6ˆØ" I¨t°TÐ:Ðð �tØ�TØ˜TØ�dØ�TØ˜Ø�4ð
ˆð Ð.Ø�jØ˜?ð
Ðð Ÿ™ž‰HˆCØÔ%¯#´*¸SÄ3ÌÀ*×2MÒ2MØ×%Ñ% Õ';¼SÀ»XÐ&FÖGàÖ(¯S©SØ×%Ñ%Ð&6Õ&;Ô<Ø"×)Ñ)Ð*:Õ*?Ö@ñ 'ð ˜vÔ%¨°VÔ);Ø×!Ñ!Ð"2Ô3Ø×%Ñ%Ð&6Õ7à—j‘j ¨t¯}©}¨o¸Q¸t¸fÐ,EÓFˆGØ×!Ñ! $¨¥.Ô1Ø×!Ñ! $Ô'Ø×%Ñ% d¨W¥nÔ5Ø×%Ñ% dÔ+ô 	�‰Ð! 4Ô(ð	Ü�IŠI�nÕCð —Z‘Z ¨$Ó/ˆ
ØÒ!Ø�O‰O˜D°TˆOÔ:ñ øô ô 	Ü�KŠKœÐ7¸Ô>Øð	ús   Æ;G= Ç=)H&c                ó–   €  \         P                   ! R RVRR.4       R#   \         d    \        P                  ! \        RT4       h i ; i)r?   r@   ú-pz01-Jan-1970z"Failed to set pw expiration for %sN©r   rf   r   rg   r   )rD   Úusers   &&r   Úexpire_passwdÚDistro.expire_passwd¢   sA   € ð	Ü�IŠI�t˜Y¨¨d°MÐBÖCøÜô 	Ü�KŠKœÐAÀ4ÔHØð	úó	   ‚ Ÿ)AFc                óÂ   € V'       d   R pMRp \         P                   ! RRWR.VRV,          R7       R#   \         d    \        P                  ! \        RT4       h i ; i)	z-Hz-hr?   r@   Ú0zchpasswd for %s)Údatar[   zFailed to set password for %sNrv   )rD   rw   r\   r]   Úhash_opts   &&&& r   rh   ÚDistro.set_passwd©   s\   € ßØ‰HàˆHð	Ü�IŠIØ�y $°#Ð6ØØ+¨dÕ2÷øô
 ô 	Ü�KŠKœÐ<¸dÔCØð	ús	   �$5 µ)Ac                ó–   €  \         P                   ! R RVRR.4       R#   \         d    \        P                  ! \        RT4       h i ; i)r?   r@   z-wÚnoz)Failed to lock password login for user %sNrv   ©rD   ri   s   &&r   Úlock_passwdÚDistro.lock_passwd¹   sA   € ð	Ü�IŠI�t˜Y¨¨d°DÐ9Ö:øÜô 	Ü�KŠKœÐHÈ$ÔOØð	úrz   c                ó2   € \         P                  R V4       R# )zRDragonfly BSD/FreeBSD password lock is not reversible, ignoring unlock for user %sN)r   Údebugr‚   s   &&r   Úunlock_passwdÚDistro.unlock_passwdÀ   s   € Ü�	‰	ð*àö	
r    c                ób  € \        4       p\        P                  ! V P                  4      P	                  4        FB  pVP                  \        P                  ! R RV,          V4      4       VP                  R4       KD  	  \        P                  ! V P                  V P                  4       \        P                  ! V P                  VP                  4       4        \        P                  RV4       \        P                  ! RV P                  .4       R#   \        P                   d†    \        P                   ! \        RT4        \        P                  ! T P                  T P                  4        R#   \"         d,    \        P                   ! \        RT P                  4         R# i ; ii ; i)z	^default:zdefault:lang=%s:Ú
zRunning cap_mkdb for %sÚcap_mkdbzFailed to apply locale %szFailed to restore %s backupN)r   r   Úload_text_fileÚlogin_conf_fnÚ
splitlinesÚwriteÚreÚsubÚcopyÚlogin_conf_fn_bakÚ
write_fileÚgetvaluer   r†   r   ÚProcessExecutionErrorrg   ÚIOError)rD   ÚlocaleÚout_fnÚnewconfÚlines   &&&  r   Úapply_localeÚDistro.apply_localeÇ   s7  € ä“*ˆÜ×'Ò'¨×(:Ñ(:Ó;×FÑFÖHˆDØ�M‰MÜ—’�|Ð%8¸6Õ%AÀ4ÓHôð �M‰M˜$Öñ	 Iô 	�	Š	�$×$Ñ$ d×&<Ñ&<Ô=ô 	�Š˜×*Ñ*¨G×,<Ñ,<Ó,>Ô?ð	Ü�I‰IÐ/°Ô8Ü�IŠI�z 4×#5Ñ#5Ð6Ö7øÜ×)Ñ)ô 	ä�KŠKœÐ8¸&ÔAðÜ—	’	˜$×0Ñ0°$×2DÑ2D×EøÜô Ü—’ÜÐ6¸×8JÑ8J÷ð ðúð	ús*   Ã8D Ä1F.Å+E4Å41F*Æ%F.Æ)F*Æ*F.c                ó
   € RR/# )zBReturn environment vars used in FreeBSD package_command
operationsÚASSUME_ALWAYS_YESÚYESrC   )rD   s   &r   Ú_get_pkg_cmd_environÚDistro._get_pkg_cmd_environã   s   € ð $ UÐ+Ð+r    Úforcec               ó~   € V P                   P                  R V P                  R.V'       d   \        M\        R7       R# )zupdate-sourcesr   )ÚfreqN)Ú_runnerÚrunÚpackage_commandr   r   )rD   r£   s   &$r   Úupdate_package_sourcesÚDistro.update_package_sourcesè   s1   € Ø�‰×ÑØØ× Ñ ØˆJß$•¬,ð	 	ö 	
r    c                ó>   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[ RS[/# )r"   ÚpathÚ
lease_fileÚpid_fileÚ	interfaceÚconfig_filerJ   )r'   r9   )r(   r)   s   "€r   r*   r+   ñ   sE   ø€ ÷ 	
ñ 	
Ùð	
áð	
ñ ð	
ñ ð		
ñ
 ð	
ñ 
ñ	
r    c                óD   € V R VRV.V'       d   RWC.,           # V.,           # )z-lru   rP   rC   )r¬   r­   r®   r¯   r°   s   &&&&&r   Úbuild_dhclient_cmdÚDistro.build_dhclient_cmdð   s5   € ð �d˜J¨¨hÐ7ß.9ˆT�;Ð*õ
ð 	
Ø@I¸{õ
ð 	
r    c                ó$   <€ V ^8„  d   QhRS[ RR/# )r"   ÚdevicerJ   Nr&   )r(   r)   s   "€r   r*   r+   ý   s   ø€ ÷ 3ñ 3™Cð 3 Dñ 3r    c                ó8   € \         P                   ! R RV .4       R# )Ú
camcontrolÚejectN)r   )rµ   s   &r   Úeject_mediaÚDistro.eject_mediaü   s   € ä�	Š	�< ¨&Ð1Ö2r    rC   )r?   ÚgroupÚadd)z^{username}::z^{username}:\*:z^{username}:\*LOCKED\*:)N)F)&Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Únetworking_clsÚusr_lib_execr�   r“   Úci_sudoers_fnÚgroup_add_cmd_prefixÚpkg_cmd_install_prefixÚpkg_cmd_remove_prefixÚpkg_cmd_update_prefixÚpkg_cmd_upgrade_prefixÚprefer_fqdnre   Údhclient_lease_directoryÚdhclient_lease_file_regexÚ#shadow_empty_locked_passwd_patternsÚclassmethodr   r<   rG   rr   rx   rh   rƒ   r‡   rœ   r¡   r©   Ústaticmethodr²   r¹   Ú__static_attributes__Ú__classdictcell__)r)   s   @r   r
   r
      s  ø‡ € ñð '€NØ#€LØ%€MØ.ÐØB€MÚ1ÐØ# YÐ/ÐØ" HÐ-ÐØ" HÐ-ÐØ# YÐ/ÐØ€KØ€Hð  )ÐØ 6Ðò+Ð'ð óNó ðNð ð5Ø>B÷5ñ 5ó ð5ò6F÷<ð <ò|ôò ò
ôò8,ð

¨eô 
ð ÷	
ó ð	
ð ÷3ó ö3r    r
   )Úloggingr   r�   Úior   Úcloudinit.distros.bsdÚ	cloudinitr   r   Úcloudinit.distros.networkingr   Úcloudinit.settingsr   r   Ú	getLoggerr½   r   ÚdistrosÚbsdÚBSDr
   rC   r    r   Ú<module>rÜ      sO   ðó Û 	Û 	Ý ã ß  Ý :ß 7à×Ò˜Ó!€ôj3ˆY×Ñ×"Ñ"×&Ñ&ö j3r    