Ë
    x[h  ã                   ó¼  — U d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZm	Z	 	 d dl
Z
e
j                  Z e j                  e
j                   e
j                  e«      ¬«      Zeed<    ej,                  e«      Z G d„ d	ej2                  j4                  j6                  «      Z G d
„ de«      Zy# eef$ r% 	 d dlmZ ej*                  Zn# e$ r d„ ZY nw xY wY Œrw xY w)é    N)ÚAny)ÚsubpÚutil)ÚsaltÚblowfish_hash)Úbcryptc                 ó   — t        d«      ‚)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                   ót   ‡ — e Zd ZdZdZdgZg d¢Zˆ fd„Zd„ Zde	fd„Z
dd
„Zd„ Zd„ Zdd„Zd„ Zd	dœd„Zˆ xZS )ÚNetBSDzS
    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         ‰| �  |||«       t        j                  j	                  d«      r%g d¢| _        g d¢| _        g d¢| _        g d¢| _        y ddg| _        dg| _        y )	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   zNetBSD.__init__?   s\   ø€ Ü‰Ñ˜˜s EÔ*Ü�7‰7�>‰>Ð.Ô/Ú*DˆDÔ'Ú)BˆDÔ&Ú)BˆDÔ&Ú*IˆDÕ'à+4°dÐ*;ˆDÔ'Ø*6¨ˆDÕ&r   c                 ó   — dd||gS )NÚusermodú-G© )r"   Úmember_nameÚ
group_names      r   Ú_get_add_member_to_group_cmdz#NetBSD._get_add_member_to_group_cmdJ   s   € Ø˜4 ¨[Ð9Ð9r   Úreturnc                 ó¬  — t        j                  |«      rt        j                  d|«       ydg}dg}dddddd	œ}d
dddœ}|j	                  «       D ]b  \  }}||v r)|r't        |t        «      r|j                  ||   |g«       Œ3||v sŒ8|sŒ;|j                  ||   «       |j                  ||   «       Œd d|vsd|vr|dgz  }|dgz  }||gz  }||gz  }t        j                  d|«       	 t        j                  ||¬«       |j                  dd«      }	|	�| j                  ||	d¬«       y# t        $ r t        j                  t        d|«       ‚ w xY w)z~
        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_homer7   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_userzNetBSD.add_userM   s‰  € ô �<‰<˜ÔÜ�H‰HÐ8¸$Ô?Øà �kˆØ$˜+ˆð ØØ!ØØñ
ˆð /Ø Ø*ñ
ˆð Ÿ™›ò 	;‰HˆC�Ø�lÑ"¡s¬z¸#¼sÔ/CØ×"Ñ" L°Ñ$5°sÐ#;Õ<à˜Ò%ª#Ø×"Ñ" =°Ñ#5Ô6Ø×&Ñ& }°SÑ'9Õ:ð	;ð  6Ñ)¨X¸VÑ-CØ˜D˜6Ñ!ˆKØ ˜vÑ%ˆOà˜�vÑˆØ˜D˜6Ñ!ˆô 	�‰Ð! 4Ô(ð	Ü�I‰I�k¨_Õ=ð —Z‘Z ¨$Ó/ˆ
ØÐ!Ø�O‰O˜D *°TˆOÔ:ð øô ò 	Ü�K‰KœÐ7¸Ô>Øð	ús   Ã-D- Ä-&EFc                 óÌ   — |r|}nt        |«      }	 t        j                  dd||g«       | j                  |«       y # t        $ r t        j                  t
        d|«       ‚ w xY w)Nr(   z-pzFailed to set password for %s)r   r   rE   r   rF   r>   Úunlock_passwd)r"   Úuserr;   r<   Ú	hashed_pws        r   rH   zNetBSD.set_passwd†   sc   € ÙØ‰Iä% fÓ-ˆIð	Ü�I‰I�y $¨	°4Ð8Ô9ð 	×Ñ˜4Õ øô ò 	Ü�K‰KœÐ<¸dÔCØð	ús	   ’= ½&A#c                 óŠ   — 	 t        j                   ddd|g«       y # t        $ r t        j                  t        d|«       ‚ w xY w)Nr(   ú-CÚyeszFailed to lock user %s©r   rE   r   rF   r>   ©r"   r#   s     r   Úlock_passwdzNetBSD.lock_passwd“   s?   € ð	Ü�I‰I�y $¨¨tÐ4Õ5øÜò 	Ü�K‰KœÐ5°tÔ<Øð	úó	   ‚ œ&Ac                 óŠ   — 	 t        j                   ddd|g«       y # t        $ r t        j                  t        d|«       ‚ w xY w)Nr(   rW   ÚnozFailed to unlock user %srY   rZ   s     r   rS   zNetBSD.unlock_passwdš   s?   € ð	Ü�I‰I�y $¨¨dÐ3Õ4øÜò 	Ü�K‰KœÐ7¸Ô>Øð	úr\   c                 ó.   — t         j                  d«       y )NzCannot set the locale.)r>   Údebug)r"   ÚlocaleÚout_fns      r   Úapply_localezNetBSD.apply_locale¡   s   € Ü�	‰	Ð*Õ+r   c                 óh   — t        j                  «       }t        j                  «       }dd|› d|› d�iS )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_environzNetBSD._get_pkg_cmd_environ¤   sB   € ä×%Ñ%Ó'ˆ
Ü×"Ñ"Ó$ˆàðØ�9˜A˜j˜\¨ð/ð
ð 	
r   )Úforcec                 ó   — y ©Nr*   )r"   rm   s     r   Úupdate_package_sourceszNetBSD.update_package_sources¯   s   € Ør   )Fro   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úci_sudoers_fnÚgroup_add_cmd_prefixÚ#shadow_empty_locked_passwd_patternsr   r-   ÚboolrQ   rH   r[   rS   rc   rl   rp   Ú__classcell__)r&   s   @r   r   r   *   s_   ø„ ñð A€MØ&˜<Ðò+Ð'ô	8ò:ð7¨$ó 7ór!òòó,ò	
ð /4÷ ð r   r   c                   ó   — e Zd Zy)ÚDistroN)rq   rr   rs   r*   r   r   r{   r{   ³   s   „ Ør   r{   )Ú	functoolsÚloggingr   rg   Útypingr   Úcloudinit.distros.bsdÚ	cloudinitr   r   ÚcryptÚMETHOD_BLOWFISHr   ÚpartialÚmksaltr   Ú__annotations__r
   ÚAttributeErrorÚpasslib.hashr   ÚhashÚ	getLoggerrq   r>   ÚdistrosÚbsdÚBSDr   r{   r*   r   r   ú<module>r�      sÚ   ðô
 Û Û 	Û Ý ã ß  ðÛà× Ñ €DØ*˜×*Ñ*Ø�‰ØˆU�\‰\˜$Óô€M�3ó ð* €g×Ñ˜Ó!€ôFˆY×Ñ×"Ñ"×&Ñ&ô FôR	ˆVõ 	øð{ 	�^Ð$ò ðÝ'àŸ™‰øØò 	ô	ð	üðús6   ¥AB/ Â/CÂ7C
Ã	CÃ
CÃCÃCÃCÃC