File: //usr/lib/python3/dist-packages/cloudinit/distros/__pycache__/freebsd.cpython-310.pyc
o
�Ad� � @ s| d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZm Z d dl
mZ d dlm
Z
e�e�ZG dd� dejjj�ZdS ) � N)�StringIO)�log)�subp�util)�FreeBSDNetworking)�PER_INSTANCEc @ s� e Zd ZdZeZdZdZdZdZ g d�Z
ddgZdd gZdd
gZ
ddgZdZd
Zdedefdd�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�update�upgradeTz /usr/home�action�servicec C s^ | 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)r r r r r �reloadz
try-reloadr T)�capture)�init_cmd�listr )�selfr r r �cmds�cmd� r �;/usr/lib/python3/dist-packages/cloudinit/distros/freebsd.py�manage_service( s �
zDistro.manage_servicec C s ddd|d|gS )Nr �usermod�-n�-Gr )r �member_name�
group_namer r r! �_get_add_member_to_group_cmd= s z#Distro._get_add_member_to_group_cmdc
K s� t �|�r
t�d|� dS ddd|g}ddd|g}dddd d
ddd
�}dddd�}|�� D ]1\}}||v rJ|rJt|ttf�rJ|�|| t|�g� q-||v r^|r^|� || � |� || � q-d|v sgd|v rr|� d� |� d� n |� dj
| j|d�� |� d� |� dj
| j|d�� |� d� t�d|� z tj||d� W n t
y� t �td|� � w |�dd �} | d ur�| j|| dd� d S d S )Nz!User %s already exists, skipping.Fr �useraddr$ z-dz-cz-gr% z-sz-Ez-u)�homedir�gecos�
primary_group�groups�shell�inactive�uidz--no-user-groupz--systemz
--no-log-init)�
no_user_group�system�no_log_init�no_create_homer2 z-d/nonexistentz-d{home_dir}/{name})�home_dir�namez-mzAdding user %s)� logstringzFailed to create user %s�passwdT)�hashed)r �is_user�LOG�info�items�
isinstance�str�int�extend�append�formatr5 r � Exception�logexc�get�
set_passwd)
r r6 �kwargs�pw_useradd_cmd�log_pw_useradd_cmd�pw_useradd_opts�pw_useradd_flags�key�val�
passwd_valr r r! �add_user@ s\
�
��
�
�
��zDistro.add_userc C �: z
t � dd|ddg� W d S ty t�td|� � w )Nr r# z-pz01-Jan-1970z"Failed to set pw expiration for %s�r rD r rE r; )r �userr r r! �
expire_passwdz � �zDistro.expire_passwdFc C sR |rd}nd}zt j dd||dg|d| d� W d S ty( t�td|� � w ) Nz-H�-hr r# �0zchpasswd for %s)�datar7 zFailed to set password for %srR )r rS r8 r9 �hash_optr r r! rG � s ��zDistro.set_passwdc C rQ )Nr r# rV �-zFailed to lock user %srR )r r6 r r r! �lock_passwd� rU zDistro.lock_passwdNc C s� t � }t�| j��� D ]}|�t�dd| |�� |�d� qt�| j| j � t�
| j|�� � zt�
d|� t�d| jg� W d S tjyp t�td|� zt�| j | j� W Y d S tyo t�td| j� Y Y d S w w )Nz ^default:zdefault:lang=%s:�
zRunning cap_mkdb for %s�cap_mkdbzFailed to apply locale %szFailed to restore %s backup)r r � load_file�
login_conf_fn�
splitlines�write�re�sub�copy�login_conf_fn_bak�
write_file�getvaluer; �debugr �ProcessExecutionErrorrE �IOError)r �locale�out_fn�newconf�liner r r! �apply_locale� s* ����zDistro.apply_localec C s t j�� }d|d<