HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/distros/__pycache__/freebsd.cpython-310.pyc
o

�Ad��@s|ddlZddlZddlmZddlZddlmZddlmZm	Z	ddl
mZddlm
Z
e�e�ZGdd�dejjj�ZdS)	�N)�StringIO)�log)�subp�util)�FreeBSDNetworking)�PER_INSTANCEc@s�eZdZdZeZdZdZdZdZ	gd�Z
ddgZdd	gZdd
gZ
ddgZdZd
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	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)�capture)�init_cmd�listr)�selfrrr�cmds�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_name�
group_namer r r!�_get_add_member_to_group_cmd=sz#Distro._get_add_member_to_group_cmdc
Ks�t�|�r
t�d|�dSddd|g}ddd|g}dddd	d
ddd
�}dddd�}|��D]1\}}||vrJ|rJt|ttf�rJ|�||t|�g�q-||vr^|r^|�	||�|�	||�q-d|vsgd|vrr|�	d�|�	d�n |�	dj
|j|d��|�	d�|�	dj
|j|d��|�	d�t�d|�z	tj||d�Wnt
y�t�td|��w|�dd�}	|	dur�|j||	dd�dSdS)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_homer2z-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�formatr5r�	Exception�logexc�get�
set_passwd)
rr6�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_usercC�:z
t�dd|ddg�WdStyt�td|��w)Nr	r#z-pz01-Jan-1970z"Failed to set pw expiration for %s�rrDrrEr;)r�userr r r!�
expire_passwdz��zDistro.expire_passwdFcCsR|rd}nd}ztjdd||dg|d|d�WdSty(t�td|��w)	Nz-H�-hr	r#�0zchpasswd for %s)�datar7zFailed to set password for %srR)rrSr8r9�hash_optr r r!rG�s��zDistro.set_passwdcCrQ)Nr	r#rV�-zFailed to lock user %srR)rr6r r r!�lock_passwd�rUzDistro.lock_passwdNcCs�t�}t�|j���D]}|�t�dd||��|�d�qt�|j|j	�t�
|j|���zt�
d|�t�d|jg�WdStjypt�td|�zt�|j	|j�WYdStyot�td|j�YYdSww)Nz	^default:zdefault:lang=%s:�
zRunning cap_mkdb for %s�cap_mkdbzFailed to apply locale %szFailed to restore %s backup)rr�	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_localecCstj��}d|d<|S)zJReturn environment vars used in FreeBSD package_command
        operations�YES�ASSUME_ALWAYS_YES)�os�environrd)r�er r r!�_get_pkg_cmd_environ�s
zDistro._get_pkg_cmd_environcCs|jjd|jdgtd�dS)Nzupdate-sourcesr)�freq)�_runner�run�package_commandr)rr r r!�update_package_sources�s
�zDistro.update_package_sources)F)N)�__name__�
__module__�__qualname__�__doc__r�networking_cls�usr_lib_execr_re�
ci_sudoers_fn�group_add_cmd_prefix�pkg_cmd_install_prefix�pkg_cmd_remove_prefix�pkg_cmd_update_prefix�pkg_cmd_upgrade_prefix�prefer_fqdnr5r?r"r(rPrTrGr[rorurzr r r r!rs.:

r)rrrb�ior�cloudinit.distros.bsd�	cloudinitr�loggingrr�cloudinit.distros.networkingr�cloudinit.settingsr�	getLoggerr{r;�distros�bsd�BSDrr r r r!�<module>s