a è i›ã@sJdZdgZddlZddlZddlZddlZddlmZGdd„de ƒZ dS)zifcfg file parserÚifcfgéN)Úlogc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)rcCsi|_g|_||_| ¡dS©N)Ú_configÚ_deletedÚfilenameÚclear)Úselfr©r ú:/usr/lib/python3.9/site-packages/firewall/core/io/ifcfg.pyÚ__init__"szifcfg.__init__cCsi|_g|_dSr)rr©r r r r r(sz ifcfg.clearcCs|j ¡dSr)rrr r r r Úcleanup,sz ifcfg.cleanupcCs|j | ¡¡Sr)rÚgetÚstrip)r Úkeyr r r r/sz ifcfg.getcCs0| ¡}| ¡|j|<||jvr,|j |¡dSr)rrrÚremove)r rÚvalueZ_keyr r r Úset2s z ifcfg.setcCs8d}|j ¡D]$\}}|r"|d7}|d||f7}q|S)NÚÚ z%s=%s)rÚitems)r Úsrrr r r Ú__str__8s z ifcfg.__str__c CsD| ¡zt|jdƒ}Wn6tyN}zt d|j|¡‚WYd}~n d}~00|D]â}|sbq8| ¡}t|ƒdksT|ddvr„qTdd„| dd¡Dƒ}t|ƒd kr¨qTt|dƒd krè|d  d ¡rè|d  d ¡rè|ddd …|d<|dd krøqTn,|j   |d¡dur$t  d |j| ¡¡qT|d|j |d<qT| ¡dS)NÚrzFailed to load '%s': %sér)ú#ú;cSsg|] }| ¡‘qSr )r)Ú.0Úxr r r Ú Pózifcfg.read..ú=éú"éÿÿÿÿrz%%s: Duplicate option definition: '%s')rÚopenrÚ ExceptionrÚerrorrÚlenÚsplitÚ startswithÚendswithrrZwarningÚclose)r ÚfÚmsgÚlineZpairr r r ÚreadAs8  ÿ ÿ z ifcfg.readc Cs¤t|jƒdkrdSg}z.tjddtj |j¡tj |j¡dd}Wn4t yx}zt   d|¡‚WYd}~n d}~00d}d}zt j |jddd }WnPt yè}z8tj |j¡rÎt   d |j|f¡‚nd}WYd}~njd}~00|D]X}|sþqJ| d ¡}t|ƒdkr,|sH| d ¡d }qî|d dkrTd}| |¡| d ¡qî| dd¡}t|ƒdkr‚d}| |d ¡qî|d  ¡} |d ¡} t| ƒdkrÌ|  d¡rÌ|  d¡rÌ| dd…} | |vrD| |jvr|j| | krd}| d| |j| f¡d }n$| |jvr&d }nd}| |d ¡| | ¡qîd }qît|jƒd krž|j ¡D]8\} } | |vrzqd|s„d }| d| | f¡d }qd|r¬| ¡| ¡|sÊt |j¡dStj |j¡r8zt |jd|j¡WnDt y6}z*t |j¡td|j|fƒ‚WYd}~n d}~00zt |j|j¡WnDt y}z*t |j¡td|j|fƒ‚WYd}~nd}~00t |jd¡dS)NrZwtz%s.F)ÚmodeÚprefixÚdirÚdeletez!Failed to open temporary file: %sZrtzUTF-8)r2ÚencodingzFailed to open '%s': %srTrrr"r#r$r%z%s=%s z%s.bakzBackup of '%s' failed: %szFailed to create '%s': %si€)r)rÚtempfileZNamedTemporaryFileÚosÚpathÚbasenamerÚdirnamer'rr(Úior&ÚexistsrÚwriter*r+r,rÚappendrr-rÚnameÚshutilÚcopy2ÚIOErrorÚmoveÚchmod) r ZdoneZ temp_filer/ZmodifiedÚemptyr.r0Úprrr r r r>^sªý         ÿÿ  ÿ     ( (z ifcfg.writeN) Ú__name__Ú __module__Ú __qualname__r rrrrrr1r>r r r r r!s ) Ú__doc__Ú__all__Zos.pathr8r<r7rAZfirewall.core.loggerrÚobjectrr r r r Ús