3 \me"@sUddlZddlZddlZddlZddlmZddlZddlmZm Z y,ddl Z e j Z ej e j e je dZeWnLeefk ryddlmZejZWnek rddZYnXYnXejeZGdd d ejjjZGd d d eZdS) N)Any)subputil)salt)bcryptcCs tddS)zRaise 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 dependencyN) ImportError)_r /usr/lib/python3.6/netbsd.py blowfish_hashsr csneZdZdZdZdgZfddZddZdd Zdd d Z d dZ ddZ dddZ ddZ ddZZS)NetBSDzS Distro subclass for NetBSD. (N.B. OpenBSD inherits from this class.) z*/usr/pkg/etc/sudoers.d/90-cloud-init-usersZgroupaddcsdtj|||tjjdrNdddg|_dddg|_dddg|_dddg|_ndd g|_d g|_dS) Nz/usr/pkg/bin/pkginZpkginz-yZinstallremoveupdatez full-upgradeZpkg_addz-UZ pkg_delete) super__init__ospathexistsZpkg_cmd_install_prefixZpkg_cmd_remove_prefixZpkg_cmd_update_prefixZpkg_cmd_upgrade_prefix)selfnameZcfgpaths) __class__r r r4s     zNetBSD.__init__cCs dd||gS)Nusermodz-Gr )r member_nameZ group_namer r r _get_add_member_to_group_cmd?sz#NetBSD._get_add_member_to_group_cmdc KsRtj|rtjd|dSdg}dg}dddddd }d d d d }xf|jD]Z\}}||kr~|r~t|tr~|j|||gqL||krL|rL|j|||j||qLWd|ksd|kr|dg7}|dg7}||g7}||g7}tjd|yt j ||dWn&t k r&tj td|YnX|j dd} | dk rN|j || dddS)Nz!User %s already exists, skipping.FZuseraddz-dz-cz-gz-Gz-s)ZhomedirZgecosZ primary_groupgroupsshellz--no-user-groupz--systemz --no-log-init)Z no_user_groupsystemZ no_log_initZno_create_homerz-mzAdding user %s)Z logstringzFailed to create user %spasswdT)hashed)rZis_userLOGinfoitems isinstancestrextendappendr Exceptionlogexcget set_passwd) rrkwargsZ adduser_cmdZlog_adduser_cmdZ adduser_optsZ adduser_flagskeyvalZ passwd_valr r r add_userBsB          zNetBSD.add_userFc Cs\|r |}nt|}ytjdd||gWn$tk rLtjtd|YnX|j|dS)Nrz-pzFailed to set password for %s)r rr'rr(r unlock_passwd)ruserrrZ hashed_pwr r r r*sszNetBSD.set_passwdc Cs@ytjddd|gWn$tk r:tjtd|YnXdS)Nrz-CyeszFailed to lock user %s)rr'rr(r )rrr r r lock_passwds zNetBSD.lock_passwdc Cs@ytjddd|gWn$tk r:tjtd|YnXdS)Nrz-CnozFailed to unlock user %s)rr'rr(r )rrr r r r/s zNetBSD.unlock_passwdNcCstjddS)NzCannot set the locale.)r debug)rZlocaleZout_fnr r r apply_localeszNetBSD.apply_localecCs.tj}tj}tjj}d||f|d<|S)z9Return env vars used in NetBSD package_command operationsz:http://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/AllZPKG_PATH)platformreleasemachinerenvironcopy)rZ os_releaseZos_archer r r _get_pkg_cmd_environs  zNetBSD._get_pkg_cmd_environcCsdS)Nr )rr r r update_package_sourcesszNetBSD.update_package_sources)F)N)__name__ __module__ __qualname____doc__Z ci_sudoers_fnZgroup_add_cmd_prefixrrr.r*r2r/r5r<r= __classcell__r r )rr r *s 1   r c@s eZdZdS)DistroN)r>r?r@r r r r rCsrC) functoolsZloggingrr6ZtypingrZcloudinit.distros.bsdZ cloudinitrrZcryptZMETHOD_BLOWFISHrpartialZmksaltr rAttributeErrorZ passlib.hashrhashZ getLoggerr>r ZdistrosZbsdZBSDr rCr r r r s,    x