name : resolv_conf.cpython-39.pyc
a

'�Dgw�@sHddlZddlmZddlmZddlmZe�e�Z	Gdd�d�Z
dS)�N)�StringIO)�util)�chop_commentc@s~eZdZdd�Zdd�Zedd��Zedd��Zejd	d��Zed
d��Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�
ResolvConfcCs||_d|_dS�N)�_text�	_contents)�self�text�r�I/usr/lib/python3.9/site-packages/cloudinit/distros/parsers/resolv_conf.py�__init__szResolvConf.__init__cCs|jdur|�|j�|_dSr)r�_parser�r	rrr�parses
zResolvConf.parsecCs|��|�d�S)N�
nameserver�r�_retr_optionrrrr�nameserversszResolvConf.nameserverscCs"|��|�d�}|r|dSdS)N�domainrr)r	Zdmrrr�local_domains

zResolvConf.local_domaincCs0|��|�d�|j�ddt|�dgf�|S)Nr�option�)r�_remove_optionr�append�str)r	rrrrr's
cCsB|��|�d�}g}|D]"}|�d�D]}|r(|�|�q(q|S)N�search)rr�splitr)r	Zcurrent_sds�flat_sdsZsdlist�sdrrr�search_domains.s
zResolvConf.search_domainscCs�|��t�}|jD]t\}}|dkr0|�d�q|dkrL|�d|d�q|dkr|\}}}d||f}t|�rz||7}|�d|�q|��S)N�blank�
�all_commentz%s
rrz%s %s)rrr�write�len�getvalue)r	�contents�	line_type�
components�cfg_opt�	cfg_valueZcomment_tail�linerrr�__str__9s
zResolvConf.__str__cCs<g}|jD],\}}|dkr
|\}}}||kr
|�|�q
|S)Nr�rr)r	�opt_name�foundr(r)r*r+�
_comment_tailrrrrIs
zResolvConf._retr_optioncCst|��|�d�}t|�}|�t|��t�|�}t|�t|�krF|S|�d�|D]}|j	�dd|dgf�qT|S)Nrrr)
rr�listrrr�	uniq_listr%rr)r	�nsZ
current_nsZnew_ns�nrrr�add_nameserverRs


zResolvConf.add_nameservercs8�fdd�}g}|jD]}||�s|�|�q||_dS)Ncs.|\}}|dkrdS|\}}}|�kr*dSdS)NrFTr)�itemr(r)r*Z
_cfg_valuer1�r/rr�
remove_opt`s
z-ResolvConf._remove_option.<locals>.remove_optr.)r	r/r9Znew_contents�crr8rr_s	
zResolvConf._remove_optioncCs�|j}t|�}|�t|��t�|�}t|�t|�kr:|St|�dkrRtd|��d�|�}t|�dkrttd|��|�	d�|j
�dd|dgf�|S)	N�z8Adding %r would go beyond the '6' maximum search domains� �zEAdding %r would go beyond the 256 maximum search list character limitrrr)r r2rrrr3r%�
ValueError�joinrr)r	Z
search_domainrZnew_sdsZs_listrrr�add_search_domainos,
��
��
zResolvConf.add_search_domaincCs�g}t|���D]�\}}|��}|s6|�d|gf�qt|d�\}}t|���sb|�d|gf�q|sjd}z|�dd�\}}	Wn:ttfy�}
zt	d|d�|
�WYd}
~
n
d}
~
00|dvr�t	d|��|�d	||	|gf�q|S)
Nr!z;#r#r�z)Incorrectly formatted resolv.conf line %s)rrrZsortlist�optionsz Unexpected resolv.conf option %sr)
�	enumerate�
splitlines�striprrr%r�
IndexErrorr>�IOError)r	r'�entries�ir,Zsline�head�tailr*Z
cfg_values�errrr�s0
��zResolvConf._parseN)�__name__�
__module__�__qualname__r
r�propertyrr�setterr r-rr6rr@rrrrrrs 




	
r)Zlogging�iorZ	cloudinitrZcloudinit.distros.parsersrZ	getLoggerrMZLOGrrrrr�<module>s



© 2025 Cubjrnet7