HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/config/__pycache__/cc_wireguard.cpython-38.pyc
U

Ӈg��@sUdZddlZddlZddlmZmZddlmZddlm	Z	ddl
mZddlm
Z
dd	ge
d
gd�Zeed<e�e�Zed
ddg�ZdZdZdZed�dd�Zed�dd�Zeed�dd�Zed�dd�Zed�dd�Zed �d!d"�Zd#d$�Z e!e	eedd%�d&d'�Z"dS)(Z	Wireguard�N)�subp�util)�Cloud)�Config)�
MetaSchema)�PER_INSTANCEZcc_wireguardZubuntu�	wireguard)�idZdistrosZ	frequencyZactivate_by_schema_keys�meta�name�config_path�contenti��
)��)�wg_intcCs�g}t�t|����}|r8d�t|��}|�d|���t|���D]@\}}|dksd|dksd|dkrDt|t	�sD|�d|�d|���qD|r�t
dt�t�|�����d	S)
aRValidate user-provided wg:interfaces option values.

    This function supplements flexible jsonschema validation with specific
    value checks to aid in triage of invalid user-provided configuration.

    @param wg_int: Dict of configuration value under 'wg:interfaces'.

    @raises: ValueError describing invalid values provided.
    z, z%Missing required wg:interfaces keys: rrr
z$Expected a string for wg:interfaces:�. Found z*Invalid wireguard interface configuration:N)�REQUIRED_WG_INT_KEYS�
difference�set�keys�join�sorted�append�items�
isinstance�str�
ValueError�NL)r�errorsZmissingr�key�value�r"�?/usr/lib/python3/dist-packages/cloudinit/config/cc_wireguard.py�supplemental_schema_validations

��r$c
Cs�t�d|d�z,t�d|d�tj|d|dtd�WnDtk
r�}z&td|d�dt�t|����|�W5d	}~XYnXd	S)
z�Writing user-provided configuration into Wireguard
    interface configuration file.

    @param wg_int: Dict of configuration value under 'wg:interfaces'.

    @raises: RuntimeError for issues writing of configuration file.
    z"Configuring Wireguard interface %srz#Writing wireguard config to file %srr
)�modez-Failure writing Wireguard configuration file �:N)	�LOG�debugrZ
write_file�WG_CONFIG_FILE_MODE�	Exception�RuntimeErrorrr)r�er"r"r#�write_config;s�
��r-)r�cloudc
Cs�zTt�d|d�|j�dd|d���t�d|d�|j�dd|d���Wn<tjk
r�}ztdt�t|����|�W5d}~XYnXdS)	z�Enable and start Wireguard interface

    @param wg_int: Dict of configuration value under 'wg:interfaces'.

    @raises: RuntimeError for issues enabling WG interface.
    zEnabling wg-quick@%s at bootr�enablez	wg-quick@z!Bringing up interface wg-quick@%sZrestartz0Failed enabling/starting Wireguard interface(s):N)	r'r(�distroZmanage_servicer�ProcessExecutionErrorr+rr)rr.r,r"r"r#�	enable_wgPs��r2)�wg_readinessprobescCsZg}d}|D],}t|t�s|�d|�d|���|d7}q|rVtdt�t�|�����dS)z�Basic validation of user-provided probes

    @param wg_readinessprobes: List of readinessprobe probe(s).

    @raises: ValueError of wrong datatype provided for probes.
    rz(Expected a string for readinessprobe at r�z Invalid readinessProbe commands:N)rrrrrr)r3r�pos�cr"r"r#�!readinessprobe_command_validationbs
�
�r7cCs�g}|D]b}z$t�dt|��tj|ddd�Wqtjk
rh}z|�|�d|���W5d}~XYqXq|r�tdt�t�|�����dS)z�Execute provided readiness probe(s)

    @param wg_readinessprobes: List of readinessprobe probe(s).

    @raises: ProcessExecutionError for issues during execution of probes.
    zRunning readinessprobe: '%s'T�Zcapture�shellz: Nz&Failed running readinessprobe command:)	r'r(rrr1rr+rr)r3rr6r,r"r"r#�readinessprobexs(�r:)r.cCs�dg}t�d�rdSt��tkr*|�d�z|j��Wn"tk
rZt�	t
d��YnXz|j�|�Wn"tk
r�t�	t
d��YnXdS)z�Install wireguard packages and tools

    @param cloud: Cloud object

    @raises: Exception for issues during package
    installation.
    zwireguard-toolsZwgNrzPackage update failedz!Failed to install wireguard-tools)rZwhichrZkernel_version�MIN_KERNEL_VERSIONrr0Zupdate_package_sourcesr*�logexcr'Zinstall_packages)r.Zpackagesr"r"r#� maybe_install_wireguard_packages�s	

r=c
Cs�z@tjdddd�}t�d|j���s>t�d�tjdddd�Wn@tjk
r�}z t�	tdt
�t|�����W5d}~XYnXdS)	zYLoad wireguard kernel module

    @raises: ProcessExecutionError for issues modprobe
    ZlsmodTr8rzLoading wireguard kernel modulezmodprobe wireguardz Could not load wireguard module:N)r�re�search�stdout�stripr'r(r1rr<rr)�outr,r"r"r#�load_wireguard_kernel_module�s
rC)r�cfgr.�args�returncCs�d}d|kr t�d�|d}nt�d|�dSt|�t�|dD]}t|�t|�t||�qFd|kr�|ddk	r�|d}t|�t|�n
t�d�dS)Nrz!Found Wireguard section in configz<Skipping module named %s, no 'wireguard' configuration foundZ
interfacesr:z+Skipping readinessprobe - no checks defined)	r'r(r=rCr$r-r2r7r:)rrDr.rEZ
wg_sectionrr3r"r"r#�handle�s.

��
�
rG)#�__doc__Zloggingr>Z	cloudinitrrZcloudinit.cloudrZcloudinit.configrZcloudinit.config.schemarZcloudinit.settingsrr
�__annotations__Z	getLogger�__name__r'�	frozensetrr)rr;�dictr$r-r2�listr7r:r=rCrrGr"r"r"r#�<module>s2�