o
    *bR  ã                   @   s4   d dl mZmZmZ d dlZG dd„ deeeƒZdS )é    )ÚPluginÚRedHatPluginÚUbuntuPluginNc                   @   s,   e Zd ZdZdZdZdZdd„ Zdd„ Zd	S )
ÚNetworkManagerz$NetworkManager service configurationZnetworkmanager)ZnetworkZhardwareÚsystem)r   znetwork-managerc           
         s<  ˆ   g d¢¡ ˆ jdd d}d}d‡ fdd„	}|dd	r-ˆ  g d
¢¡ |d }|d }n|dd	rBˆ  g d¢¡ |d }|d }nd}d}t|ƒdkr˜ˆ  d¡}|d dkrr|d  ¡ D ]}|dd… dkrhq]ˆ  d||f ¡ q]ˆ  d¡}|d dkrš|d  ¡ D ]}	|	dd… dkrŽqƒˆ  d||	f ¡ qƒd S d S d S )N)z'/etc/NetworkManager/NetworkManager.confú&/etc/NetworkManager/system-connectionsz /etc/NetworkManager/dispatcher.dr   )Zunitsznmcli con %s idznmcli dev %sé   c                    s<   d}ddg}ˆ   |||   ¡}|d dko|d  ¡  d¡S )Nz(nmcli --terse --fields RUNNING %s statusZnmZgeneralÚstatusr   ÚoutputÚrunning)Úexec_cmdÚlowerÚ
startswith)ÚversionZstatus_templateZ	obj_tabler	   ©Úself© úC/usr/lib/python3/dist-packages/sos/report/plugins/networkmanager.pyÚtest_nm_status)   s   þÿz,NetworkManager.setup.<locals>.test_nm_status)r   )znmcli general statusú	nmcli conznmcli con show --activeú	nmcli devZshowr   )znmcli nm statusr   znmcli con statusr   zlist idz
list ifaceÚ znmcli --terse --fields NAME conr	   r
   é   ÚWarningz%s "%s"z!nmcli --terse --fields DEVICE dev)r   )Zadd_copy_specZadd_journalZadd_cmd_outputÚlenr   Ú
splitlines)
r   Znmcli_con_details_templateZnmcli_dev_details_templater   Znmcli_con_details_cmdZnmcli_dev_details_cmdZnmcli_con_show_resultZconZnmcli_dev_status_resultZdevr   r   r   Úsetup   sN   	



ÿÿÿÿãzNetworkManager.setupc                 C   s6   t  d¡D ]\}}}|D ]}|  d| dd¡ qqd S )Nr   z'/etc/NetworkManager/system-connections/z(psk|password)=(.*)z\1=***)ÚosÚwalkZdo_file_sub)r   ÚrootÚdirsÚfilesZnet_confr   r   r   Úpostprocl   s   ÿþÿþzNetworkManager.postprocN)	Ú__name__Ú
__module__Ú__qualname__Z
short_descZplugin_nameZprofilesZpackagesr   r"   r   r   r   r   r      s    Wr   )Zsos.report.pluginsr   r   r   r   r   r   r   r   r   Ú<module>   s   