ó
    x[h  ã                   óº  • % S SK r S SKrS SKrS SKrS SKJr  S SKrS SKJrJ	r	   S SK
r
\
R                  r\ R                  " \
R                  \
R                  " \5      S9r\\S'   \R,                  " \5      r " S S	\R2                  R4                  R6                  5      r " S
 S\5      rg! \\4 a&     S SKJr  \R*                  r Nd! \ a    S r  Npf = ff = f)é    N)ÚAny)ÚsubpÚutil)ÚsaltÚblowfish_hash)Úbcryptc                 ó   • [        S5      e)z˜Raise when called so that importing this module doesn't throw
ImportError when this module is not used. In this case, crypt
and passlib are not needed.
z/crypt and passlib not found, missing dependency)ÚImportError)Ú_s    Ú:/usr/lib/python3/dist-packages/cloudinit/distros/netbsd.pyr   r      s   € ô
 ØAóð ó    c                   ó†   ^ • \ rS rSrSrSrS/r/ SQrU 4S jrS r	S\
4S	 jrSS jrS rS rSS jrS rS
S.S jrSrU =r$ )ÚNetBSDé*   zG
Distro subclass for NetBSD.

(N.B. OpenBSD inherits from this class.)
z*/usr/pkg/etc/sudoers.d/90-cloud-init-usersÚgroupadd)z^{username}::z'^{username}:\*\*\*\*\*\*\*\*\*\*\*\*\*:z1^{username}:\*LOCKED\*\*\*\*\*\*\*\*\*\*\*\*\*\*:c                 óÚ   >• [         TU ]  XU5        [        R                  R	                  S5      (       a%  / SQU l        / SQU l        / SQU l        / SQU l        g SS/U l        S/U l        g )	Nz/usr/pkg/bin/pkgin)Úpkginú-yÚinstall)r   r   Úremove)r   r   Úupdate)r   r   zfull-upgradeÚpkg_addz-UÚ
pkg_delete)	ÚsuperÚ__init__ÚosÚpathÚexistsÚpkg_cmd_install_prefixÚpkg_cmd_remove_prefixÚpkg_cmd_update_prefixÚpkg_cmd_upgrade_prefix)ÚselfÚnameÚcfgÚpathsÚ	__class__s       €r   r   ÚNetBSD.__init__?   s]   ø€ Ü‰Ñ˜ EÔ*Ü�7‰7�>‰>Ð.×/Ñ/Ú*DˆDÔ'Ú)BˆDÔ&Ú)BˆDÔ&Ú*IˆDÕ'à+4°dÐ*;ˆDÔ'Ø*6¨ˆDÕ&r   c                 ó   • SSX!/$ )NÚusermodú-G© )r#   Úmember_nameÚ
group_names      r   Ú_get_add_member_to_group_cmdÚ#NetBSD._get_add_member_to_group_cmdJ   s   € Ø˜4 Ð9Ð9r   Úreturnc                 óØ  • [         R                  " U5      (       a  [        R                  SU5        gS/nS/nSSSSSS	.nS
SSS.nUR	                  5        Hs  u  pxXu;   a3  U(       a,  [        U[        5      (       a  UR                  XW   U/5        M=  Xv;   d  MD  U(       d  MM  UR                  Xg   5        UR                  Xg   5        Mu     SU;  d  SU;  a  US/-  nUS/-  nX1/-  nXA/-  n[        R                  SU5         [        R                  " X4S9  UR                  SS5      n	U	b  U R                  XSS9  g! [         a    [         R                  " [        SU5        e f = f)zf
Add a user to the system using standard tools

Returns False if user already exists, otherwise True.
z!User %s already exists, skipping.FÚuseraddz-dz-cz-gr+   z-s)ÚhomedirÚgecosÚprimary_groupÚgroupsÚshellz--no-user-groupz--systemz--no-log-init)Úno_user_groupÚsystemÚno_log_initÚno_create_homer:   z-mzAdding user %s)Ú	logstringzFailed to create user %sÚpasswdNT)Úhashed)r   Úis_userÚLOGÚinfoÚitemsÚ
isinstanceÚstrÚextendÚappendr   Ú	ExceptionÚlogexcÚgetÚ
set_passwd)
r#   r$   ÚkwargsÚadduser_cmdÚlog_adduser_cmdÚadduser_optsÚadduser_flagsÚkeyÚvalÚ
passwd_vals
             r   Úadd_userÚNetBSD.add_userM   sx  € ô �<Š<˜×ÑÜ�H‰HÐ8¸$Ô?Øà �kˆØ$˜+ˆð ØØ!ØØñ
ˆð /Ø Ø*ñ
ˆð Ÿ™ž‰HˆCØÓ"¦s¬z¸#¼s×/CÑ/CØ×"Ñ" LÑ$5°sÐ#;Ö<àÕ%¯#¨#Ø×"Ñ" =Ñ#5Ô6Ø×&Ñ& }Ñ'9Ö:ñ 'ð  6Ó)¨X¸VÓ-CØ˜D˜6Ñ!ˆKØ ˜vÑ%ˆOà�vÑˆØ˜6Ñ!ˆô 	�‰Ð! 4Ô(ð	Ü�IŠI�kÒ=ð —Z‘Z ¨$Ó/ˆ
ØÑ!Ø�O‰O˜D°TˆOÑ:ð øô ó 	Ü�KŠKœÐ7¸Ô>Øð	ús   ÄE Å(E)Fc                 óÚ   • U(       a  UnO[        U5      n [        R                  " SSXA/5        U R                  U5        g ! [         a    [        R                  " [
        SU5        e f = f)Nr*   z-pzFailed to set password for %s)r   r   rH   r   rI   rA   Úunlock_passwd)r#   Úuserr>   r?   Ú	hashed_pws        r   rK   ÚNetBSD.set_passwd†   sa   € ÞØ‰Iä% fÓ-ˆIð	Ü�IŠI�y $¨	Ð8Ô9ð 	×Ñ˜4Õ øô ó 	Ü�KŠKœÐ<¸dÔCØð	ús   —A Á(A*c                 ó�   •  [         R                   " SSSU/5        g ! [         a    [        R                  " [        SU5        e f = f)Nr*   ú-CÚyeszFailed to lock user %s©r   rH   r   rI   rA   ©r#   r$   s     r   Úlock_passwdÚNetBSD.lock_passwd“   s?   € ð	Ü�IŠI�y $¨¨tÐ4Õ5øÜó 	Ü�KŠKœÐ5°tÔ<Øð	úó	   ‚ �(Ac                 ó�   •  [         R                   " SSSU/5        g ! [         a    [        R                  " [        SU5        e f = f)Nr*   r\   ÚnozFailed to unlock user %sr^   r_   s     r   rW   ÚNetBSD.unlock_passwdš   s?   € ð	Ü�IŠI�y $¨¨dÐ3Õ4øÜó 	Ü�KŠKœÐ7¸Ô>Øð	úrb   c                 ó.   • [         R                  S5        g )NzCannot set the locale.)rA   Údebug)r#   ÚlocaleÚout_fns      r   Úapply_localeÚNetBSD.apply_locale¡   s   € Ü�	‰	Ð*Õ+r   c                 ól   • [         R                  " 5       n[         R                  " 5       nSSU SU S30$ )z9Return env vars used in NetBSD package_command operationsÚPKG_PATHz1http://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/Ú/z/All)ÚplatformÚreleaseÚmachine)r#   Ú
os_releaseÚos_archs      r   Ú_get_pkg_cmd_environÚNetBSD._get_pkg_cmd_environ¤   sB   € ä×%Ò%Ó'ˆ
Ü×"Ò"Ó$ˆàðØ�9˜A˜j˜\¨ð/ð
ð 	
r   )Úforcec                ó   • g ©Nr,   )r#   rv   s     r   Úupdate_package_sourcesÚNetBSD.update_package_sources¯   s   € Ør   )r   r    r!   r"   )Frx   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úci_sudoers_fnÚgroup_add_cmd_prefixÚ#shadow_empty_locked_passwd_patternsr   r/   ÚboolrT   rK   r`   rW   rj   rt   ry   Ú__static_attributes__Ú__classcell__)r'   s   @r   r   r   *   s_   ø† ñð A€MØ&˜<Ðò+Ð'õ	8ò:ð7¨$ô 7ôr!òòô,ò	
ð /4÷ ó r   r   c                   ó   • \ rS rSrSrg)ÚDistroé³   r,   N)r{   r|   r}   r~   r„   r,   r   r   r‡   r‡   ³   s   † Úr   r‡   )Ú	functoolsÚloggingr   ro   Útypingr   Úcloudinit.distros.bsdÚ	cloudinitr   r   ÚcryptÚMETHOD_BLOWFISHr   ÚpartialÚmksaltr   Ú__annotations__r
   ÚAttributeErrorÚpasslib.hashr   ÚhashÚ	getLoggerr{   rA   ÚdistrosÚbsdÚBSDr   r‡   r,   r   r   Ú<module>rš      sÔ   ðô
 Û Û 	Û Ý ã ß  ðÛà× Ñ €DØ"×*Ò*Ø�‰Ø�\Š\˜$Óñ€M�3ó ð* ×Ò˜Ó!€ôFˆY×Ñ×"Ñ"×&Ñ&ô FôR	ˆVõ 	øð{ 	�^Ð$ó ðÝ'àŸ™ŠøØó 	õ	ð	úðús*   ¥A B, Â,CÂ5C	Ã		CÃCÃCÃC