3 \me" @ s U d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZm Z y,d dl Z e jZe j e j e jedZeW nL eefk r yd dlmZ ejZW n ek r dd ZY nX Y nX ejeZG dd d ejjjZG d d deZdS ) N)Any)subputil)salt)bcryptc C s t ddS )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_hash s r c sn e Zd ZdZdZdgZ fddZdd Zdd ZdddZ d d Z dd ZdddZdd Z dd Z ZS )NetBSDzS Distro subclass for NetBSD. (N.B. OpenBSD inherits from this class.) z*/usr/pkg/etc/sudoers.d/90-cloud-init-usersZgroupaddc sd t j||| tjjdrNdddg| _dddg| _dddg| _dddg| _ndd g| _d g| _d S )Nz/usr/pkg/bin/pkginZpkginz-yZinstallremoveupdatezfull-upgradeZpkg_addz-UZ pkg_delete) super__init__ospathexistsZpkg_cmd_install_prefixZpkg_cmd_remove_prefixZpkg_cmd_update_prefixZpkg_cmd_upgrade_prefix)selfnameZcfgpaths) __class__r r r 4 s zNetBSD.__init__c C s dd||gS )Nusermodz-Gr )r member_nameZ group_namer r r _get_add_member_to_group_cmd? s z#NetBSD._get_add_member_to_group_cmdc K sR t j|rtjd| dS dg}dg}dddddd }d ddd }xf|j D ]Z\}}||kr~|r~t|tr~|j|| |g qL||krL|rL|j|| |j|| qLW d|ksd|kr|dg7 }|dg7 }||g7 }||g7 }tjd| yt j ||d W n& t k r& t jtd| Y nX |jdd } | d k rN| j || dd d S )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_groupsystemZno_log_initZno_create_homer z-mzAdding user %s)Z logstringzFailed to create user %spasswdT)hashed)r Zis_userLOGinfoitems isinstancestrextendappendr Exceptionlogexcget set_passwd) r r kwargsZadduser_cmdZlog_adduser_cmdZadduser_optsZ adduser_flagskeyvalZ passwd_valr r r add_userB sB zNetBSD.add_userFc C s\ |r |}nt |}ytjdd||g W n$ tk rL tjtd| Y nX | j| d S )Nr z-pzFailed to set password for %s)r r r' r r( r unlock_passwd)r userr r Z hashed_pwr r r r* s s zNetBSD.set_passwdc C s@ yt j ddd|g W n$ tk r: tjtd| Y nX d S )Nr z-CyeszFailed to lock user %s)r r' r r( r )r r r r r lock_passwd s zNetBSD.lock_passwdc C s@ yt j ddd|g W n$ tk r: tjtd| Y nX d S )Nr z-CnozFailed to unlock user %s)r r' r r( r )r r r r r r/ s zNetBSD.unlock_passwdNc C s t jd d S )NzCannot set the locale.)r debug)r ZlocaleZout_fnr r r apply_locale s zNetBSD.apply_localec C s. t j }t j }tjj }d||f |d<