GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
File: //usr/share/netplan/netplan/cli/__pycache__/utils.cpython-38.pyc
U

ci�_�'�@s>ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	ZdZ
dZGdd�dej�Z
e�ej�d��Zeje�e�e
��gej_dd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Zd,dd�Zdgfdd�Zdd�Zdd�Zdd�Z d-dd�Z!d d!�Z"d"d#�Z#d$d%�Z$d&d'�Z%d(d)�Z&Gd*d+�d+ej'�Z(dS).�NzNetworkManager.servicez+snap.network-manager.networkmanager.servicec@s(eZdZdejfdejfdejfgZdS)�_GErrorZdomain�code�messageN)�__name__�
__module__�__qualname__�ctypesZc_uint32Zc_int�c_char_pZ_fields_�r
r
�'/usr/share/netplan/netplan/cli/utils.pyr#sr�netplancCsnt��t�t��}tt�|��t�|���}|sDt	|j
j�d���t�
t�|��|rjt	|j
j�d���dS)Nzutf-8T)�libZnetplan_clear_netdefsr�POINTERr�bool�netplan_parse_yaml�encodeZbyref�	Exception�contentsr�decodeZnetplan_finish_parse)�path�errZretr
r
r�
netplan_parse+srcCstj�dd�S)NZNETPLAN_GENERATE_PATHz/lib/netplan/generate)�os�environ�getr
r
r
r�get_generator_path8srcCstjdddtgtjd�dkS)N�	systemctl�--quietz
is-enabled)�stderrr)�
subprocess�call�NM_SNAP_SERVICE_NAME�DEVNULLr
r
r
r�is_nm_snap_enabled<sr#cCs,d}t�rd}tj|g|tjtjd�dS)N�nmcliznetwork-manager.nmcli��stdoutr)r#r�
check_callr")�argsZbinary_namer
r
rr$@sr$c	Cs2ztdg�WdSttjfk
r,YdSXdS)z"Check if NetworkManager is runningZgeneralTFN)r$�OSErrorrZSubprocessErrorr
r
r
r�
nm_runningIs

r*cCslt�d�}t�}|D]R}t|d��>}|D]2}|�|�}|r(|�tt�||�d����q\q(W5QRXq|S)Nz^interface-name=(.*)$�r�)	�re�compile�set�open�match�update�fnmatch�filter�group)�pathsZdevicesZpat�
interfacesr�f�line�mr
r
r�
nm_interfacesSs

r;FcCs<t}d|g}|s|�d�t�r$t}|�|�t�|�dS)Nr�
--no-block)�NM_SERVICE_NAME�appendr#r!rr')�action�syncZservice_name�commandr
r
r�systemctl_network_manageras

rBcCsBd|g}|s|�d�|�d�|D]}|�|�q$t�|�dS)Nrr<zsystemd-networkd.service)r>rr')r?r@Zextra_servicesrAZservicer
r
r�systemctl_networkdrs

rCcCst�ddd|g�dkrdSdS)z4Return True if at least one matching unit is runningrrz	is-activerTF)rr )Zunit_patternr
r
r�systemctl_is_active�srDcCst�ddg�dS)zEReload systemd unit files from disk and re-calculate its dependenciesrz
daemon-reloadN)rr'r
r
r
r�systemctl_daemon_reload�srEcCs tjddd|gtjtjd�dS)z8Flush all IP addresses of a given interface via iproute2Zip�addr�flushr%N)rr'r"�Zifacer
r
r�
ip_addr_flush�srIc
Cstj�d|�}|r�zTttj�|d���8}|����}|dkrZt�d||�W5QR�WdSW5QRXWn:tk
r�}zt�	d|t
|��WY�dSd}~XYnXz(tj�tj�|dd��}tj�|�}Wn>tk
�r}zt�d||t
|��WY�dSd}~XYnX|S)	Nz/sys/class/netZ	operstateZdownz'device %s operstate is %s, not changingz$Cannot determine operstate of %s: %sZdevice�driverz0Cannot replug %s: cannot read link %s/device: %s)
rr�joinr0�read�strip�logging�debug�IOError�error�str�realpath�basename)�	interfaceZ	only_downZdevdirr8�state�erJ�driver_namer
r
r�get_interface_driver_name�s$rYcCst�|�tjd}|�d�S)NrrF)�	netifacesZifaddressesZAF_LINKr)rU�linkr
r
r�get_interface_macaddress�sr\cCst�||�S�N)r3�fnmatchcase)rUZ
match_namer
r
r�is_interface_matching_name�sr_cCst|�}t�||�Sr])rYr3r^)rUZmatch_driverrXr
r
r�!is_interface_matching_driver_name�sr`cCst|�}|��|��kSr])r\�lower)rUZ	match_mac�
macaddressr
r
r� is_interface_matching_macaddress�srccs�t�t�st���dd�r$��d�nd}t�||�}t|�dkr`��d�r`tt�fdd�|��}t|�dkr���d�r�tt�fd	d�|��}t|�dkr�t�	|�dS|d
S)N�nameF�*r,rbcst|��d��S)Nrb)rcrrH�r1r
r�<lambda>��z%find_matching_iface.<locals>.<lambda>rJcst|��d��S)NrJ)r`rrHrfr
rrg�rhr)
�
isinstance�dict�AssertionErrorrr3r4�len�listrN�info)r7r1Z	name_globZmatchesr
rfr�find_matching_iface�s
roc@sFeZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dS)�NetplanCommandTFcCs�||_||_||_||_d|_d|_d|_i|_d|_d|_	t
jdtj
d|f|dd�|_|jjdddd	�|s�|jjd
ddd
�|_|jjdddd�}|j|jd�dS)NFz%s %srT)�prog�description�add_helpz--debug�
store_truezEnable debug messages)r?�helpzAvailable commands��
subcommand)�title�metavar�destruzShow this help message)rrru)�func)�
command_idrr�leaf_command�testing�_argsrO�commandclass�subcommandsrwr{�argparse�ArgumentParser�sys�argv�parser�add_argumentZadd_subparsers�
subparsers�
add_parser�set_defaults�print_usage)�selfr|rr�leafr~Zp_helpr
r
r�__init__�s6�
���zNetplanCommand.__init__cCs
||_dSr])r)r�r(r
r
rr2�szNetplanCommand.updatecCs>|jj|j|d�\}|_|js:|js:tdtjd�|��dS)N)r(�	namespacezYou need to specify a command��file)	r�Zparse_known_argsrrwr}�printr�rr�)r��nsr
r
r�
parse_args�szNetplanCommand.parse_argscCs8|jr|j�|j�|jr,d|jkr,|��|��dS)Nru)r�r2rr}r�r{�r�r
r
r�run_command�s
zNetplanCommand.run_commandcCs |jjtjd�t�tj�dS)Nr�)r�Z
print_helpr�r�exitr�EX_USAGEr�r
r
rr�szNetplanCommand.print_usagecCs�|�}i|j|<||j|d<||j|d<|jrDtj�dd�sDdS|jj|j|j|jdd�}|j	|j
|d�||j|d<dS)N�class�instanceZENABLE_TEST_COMMANDSF)rrrurs)r{r�r�)r�r~rrrr�r�r|rrr��run)r�rdr�r��pr
r
r�_add_subparser_from_classs

�z(NetplanCommand._add_subparser_from_classcCs@ddl}|�|�D](\}}|�|�rt|t�r|�||�qdS)Nr)�inspectZ
getmembersZisclass�
issubclassrpr�)r�Z
submodulesr�rd�objr
r
r�_import_subcommandssz"NetplanCommand._import_subcommandsN)TF)
rrrr�r2r�r�r�r�r�r
r
r
rrp�s

rp)F)F))r�rrNr3r�rrZr-rZctypes.utilr=r!Z	StructurerZCDLLZutilZfind_libraryr
r	rrZargtypesrrr#r$r*r;rBrCrDrErIrYr\r_r`rcroZ	Namespacerpr
r
r
r�<module>s@