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/parsers/__pycache__/resolv_conf.cpython-310.pyc
o

�Ad��@sLddlmZddlmZddlmZddlmZe�e	�Z
Gdd�d�ZdS)�)�StringIO)�log)�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�G/usr/lib/python3/dist-packages/cloudinit/distros/parsers/resolv_conf.py�__init__s
zResolvConf.__init__cCs |jdur|�|j�|_dSdSr)r	�_parser�r
rrr
�parses
�zResolvConf.parsecCs|��|�d�S)N�
nameserver�r�_retr_optionrrrr
�nameserverss
zResolvConf.nameserverscCs"|��|�d�}|r|dSdS)N�domainrr)r
�dmrrr
�local_domains

zResolvConf.local_domaincCs0|��|�d�|j�ddt|�dgf�|S)Nr�option�)r�_remove_optionr	�append�str)r
rrrr
r's
cCsB|��|�d�}g}|D]}|�d�D]	}|r|�|�qq
|S)N�search)rr�splitr)r
�current_sds�flat_sds�sdlist�sdrrr
�search_domains.s

��zResolvConf.search_domainscCs�|��t�}|jD]:\}}|dkr|�d�q
|dkr&|�d|d�q
|dkrD|\}}}d||f}t|�r=||7}|�d|�q
|��S)N�blank�
�all_commentz%s
rrz%s %s)rrr	�write�len�getvalue)r
�contents�	line_type�
components�cfg_opt�	cfg_value�comment_tail�linerrr
�__str__9s
�zResolvConf.__str__cCs<g}|jD]\}}|dkr|\}}}||kr|�|�q|S)Nr�r	r)r
�opt_name�foundr,r-r.r/�
_comment_tailrrr
rIs

�zResolvConf._retr_optioncCs�|��|�d�}t|�}|�t|��t�|�}t|�t|�kr#|St|�dkr5t�	d|�|dd�S|�
d�|D]
}|j�dd|dgf�q<|S)Nr�z`ignoring nameserver %r: adding would exceed the maximum of '3' name servers (see resolv.conf(5))rr)rr�listrrr�	uniq_listr)�LOG�warningrr	)r
�ns�
current_ns�new_ns�nrrr
�add_nameserverRs"

�
zResolvConf.add_nameservercs8�fdd�}g}|jD]}||�s|�|�q||_dS)Ncs.|\}}|dkr
dS|\}}}|�krdSdS)NrFTr)�itemr,r-r.�
_cfg_valuer6�r4rr
�
remove_opths
z-ResolvConf._remove_option.<locals>.remove_optr3)r
r4rD�new_contents�crrCr
rgs	

�
zResolvConf._remove_optioncCs�|j}t|�}|�t|��t�|�}t|�t|�kr|St|�dkr)td|��d�|�}t|�dkr:td|��|�	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$r8rrrr9r)�
ValueError�joinrr	)r
�
search_domainr!�new_sds�s_listrrr
�add_search_domainws,
��
��
zResolvConf.add_search_domaincCs�g}t|���D]c\}}|��}|s|�d|gf�qt|d�\}}t|���s1|�d|gf�q|s5d}z
|�dd�\}}	WnttfyV}
z	t	d|d�|
�d}
~
ww|dvrat	d|��|�d	||	|gf�q|S)
Nr%z;#r'r�z)Incorrectly formatted resolv.conf line %s)rrr�sortlist�optionsz Unexpected resolv.conf option %sr)
�	enumerate�
splitlines�striprrr)r�
IndexErrorrJ�IOError)r
r+�entries�ir1�sline�head�tailr.�
cfg_values�errr
r�s4
����zResolvConf._parseN)�__name__�
__module__�__qualname__rr�propertyrr�setterr$r2rr@rrOrrrrr
rs"




	rN)�ior�	cloudinitr�loggingr�cloudinit.distros.parsersr�	getLoggerr_r:rrrrr
�<module>s