Your IP : 216.73.217.13


Current Path : /usr/lib/python3/dist-packages/cloudinit/distros/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/distros/__pycache__/freebsd.cpython-38.pyc

U

�Ad��@s|ddlZddlZddlmZddlZddlmZddlmZm	Z	ddl
mZddlm
Z
e�e�ZGdd�dejjj�ZdS)	�N)�StringIO)�log)�subp�util)�FreeBSDNetworking)�PER_INSTANCEc@s�eZdZdZeZdZdZdZdZ	dddgZ
d	d
gZd	dgZd	dgZ
d	d
gZdZdZeed�dd�Zdd�Zdd�Zdd�Zd%dd�Zdd�Zd&dd �Zd!d"�Zd#d$�ZdS)'�DistrozY
    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�pw�group�add�pkg�install�remove�updateZupgradeTz	/usr/home)�action�servicec	Cs^|j}|dg|dg|dg|dg|dg|dg|dg|dgd�}t|�t||�}tj|dd	�S)
a
        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�disable�restart�status)rrrrr�reloadz
try-reloadrT)Zcapture)�init_cmd�listr)�selfrrrZcmds�cmd�r�;/usr/lib/python3/dist-packages/cloudinit/distros/freebsd.py�manage_service(s�
zDistro.manage_servicecCsddd|d|gS)Nr	�usermod�-n�-Gr)r�member_nameZ
group_namerrr�_get_add_member_to_group_cmd=sz#Distro._get_add_member_to_group_cmdc
Ks�t�|�rt�d|�dSddd|g}ddd|g}dddd	d
ddd
�}dddd�}|��D]b\}}||kr�|r�t|ttf�r�|�||t|�g�qZ||krZ|rZ|�	||�|�	||�qZd|ks�d|kr�|�	d�|�	d�n@|�	dj
|j|d��|�	d�|�	dj
|j|d��|�	d�t�d|�ztj||d�Wn&t
k
�rht�td|��YnX|�dd�}	|	dk	�r�|j||	dd�dS)Nz!User %s already exists, skipping.Fr	Zuseraddr!z-dz-cz-gr"z-sz-Ez-u)ZhomedirZgecosZ
primary_group�groups�shellZinactiveZuidz--no-user-groupz--systemz
--no-log-init)Z
no_user_group�systemZno_log_initZno_create_homer'z-d/nonexistentz-d{home_dir}/{name})�home_dir�namez-mzAdding user %s)�	logstringzFailed to create user %s�passwdT)�hashed)rZis_user�LOG�info�items�
isinstance�str�int�extend�append�formatr(r�	Exception�logexc�get�
set_passwd)
rr)�kwargsZpw_useradd_cmdZlog_pw_useradd_cmdZpw_useradd_optsZpw_useradd_flags�key�valZ
passwd_valrrr�add_user@sV
�
�
�
�

zDistro.add_usercCsBzt�dd|ddg�Wn$tk
r<t�td|��YnXdS)Nr	r z-pz01-Jan-1970z"Failed to set pw expiration for %s�rr6rr7r-)r�userrrr�
expire_passwdzs
zDistro.expire_passwdFcCsZ|r
d}nd}z"tjdd||dg|d|d�Wn$tk
rTt�td|��YnXdS)	Nz-H�-hr	r �0zchpasswd for %s)�datar*zFailed to set password for %sr>)rr?r+r,Zhash_optrrrr9�s�
zDistro.set_passwdcCsBzt�dd|ddg�Wn$tk
r<t�td|��YnXdS)Nr	r rA�-zFailed to lock user %sr>)rr)rrr�lock_passwd�s
zDistro.lock_passwdNcCs�t�}t�|j���D]&}|�t�dd||��|�d�qt�|j|j	�t�
|j|���z t�
d|�t�d|jg�Wn^tjk
r�t�td|�zt�|j	|j�Wn$tk
r�t�td|j�YnXYnXdS)Nz	^default:zdefault:lang=%s:�
zRunning cap_mkdb for %sZcap_mkdbzFailed to apply locale %szFailed to restore %s backup)rrZ	load_file�
login_conf_fn�
splitlines�write�re�sub�copy�login_conf_fn_bakZ
write_file�getvaluer-�debugrZProcessExecutionErrorr7�IOError)rZlocaleZout_fnZnewconf�linerrr�apply_locale�s*��zDistro.apply_localecCstj��}d|d<|S)zJReturn environment vars used in FreeBSD package_command
        operationsZYESZASSUME_ALWAYS_YES)�os�environrL)r�errr�_get_pkg_cmd_environ�s
zDistro._get_pkg_cmd_environcCs|jjd|jdgtd�dS)Nzupdate-sourcesr)Zfreq)Z_runner�runZpackage_commandr)rrrr�update_package_sources�s�zDistro.update_package_sources)F)N)�__name__�
__module__�__qualname__�__doc__rZnetworking_clsZusr_lib_execrGrMZ
ci_sudoers_fnZgroup_add_cmd_prefixZpkg_cmd_install_prefixZpkg_cmd_remove_prefixZpkg_cmd_update_prefixZpkg_cmd_upgrade_prefixZprefer_fqdnr(r1rr$r=r@r9rErRrVrXrrrrrs,
:

r)rSrJ�iorZcloudinit.distros.bsdZ	cloudinitrZloggingrrZcloudinit.distros.networkingrZcloudinit.settingsrZ	getLoggerrYr-ZdistrosZbsdZBSDrrrrr�<module>s