a «°iy?ã@s`ddlZddlZddlZddlZddlmZddlmZddlm Z gd¢Z Gdd„de ƒZ dS)éN)Úconfig)Úlog)Úerrors)Ú DefaultZoneÚ MinimalMarkÚ CleanupOnExitÚCleanupModulesOnExitÚLockdownÚ IPv6_rpfilterÚIndividualCallsÚ LogDeniedÚAutomaticHelpersÚFirewallBackendÚFlushAllOnReloadÚ RFC3964_IPv4ÚAllowZoneDriftingÚ ReloadPolicyÚNftablesTableOwnerc@steZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z e dd„ƒZe dd„ƒZdS)Úfirewalld_confcCsi|_g|_||_| ¡dS©N)Ú_configÚ_deletedÚfilenameÚclear)Úselfr©rúC/usr/lib/python3.9/site-packages/firewall/core/io/firewalld_conf.pyÚ__init__&szfirewalld_conf.__init__cCsi|_g|_dSr)rr©rrrrr,szfirewalld_conf.clearcCs|j ¡g|_dSr)rrrrrrrÚcleanup0s zfirewalld_conf.cleanupcCs|j | ¡¡Sr)rÚgetÚstrip)rÚkeyrrrr 4szfirewalld_conf.getcCs0| ¡}| ¡|j|<||jvr,|j |¡dSr)r!rrÚremove)rr"ÚvalueZ_keyrrrÚset7s zfirewalld_conf.setcCs8d}|j ¡D]$\}}|r"|d7}|d||f7}q|S)NÚÚ z%s=%s)rÚitems)rÚsr"r$rrrÚ__str__=s zfirewalld_conf.__str__cCs| dtj¡| dttjƒ¡| dtjr0dnd¡| dtjrFdnd¡| dtjr\dnd¡| dtj¡| d tj r€dnd¡| d tj ¡| d tj ¡| d tj ¡| d tj rÀdnd¡| dtj¡| dtjrädnd¡| dtjrúdnd¡| dtjrdnd¡dS)NrrrÚyesÚnorr r r r r rrrrrr)r%rÚ FALLBACK_ZONEÚstrÚFALLBACK_MINIMAL_MARKÚFALLBACK_CLEANUP_ON_EXITÚ FALLBACK_CLEANUP_MODULES_ON_EXITÚFALLBACK_LOCKDOWNÚFALLBACK_IPV6_RPFILTERÚFALLBACK_INDIVIDUAL_CALLSÚFALLBACK_LOG_DENIEDÚFALLBACK_AUTOMATIC_HELPERSÚFALLBACK_FIREWALL_BACKENDÚFALLBACK_FLUSH_ALL_ON_RELOADÚFALLBACK_RELOAD_POLICYÚFALLBACK_RFC3964_IPV4ÚFALLBACK_ALLOW_ZONE_DRIFTINGZFALLBACK_NFTABLES_TABLE_OWNERrrrrÚ set_defaultsEs$þzfirewalld_conf.set_defaultscCs<| d¡dkr8| d¡dvr8t tjd| d¡›d¡‚dS)NrZiptablesr )z loose-forwardzstrict-forwardzIPv6_rpfilter=z] is incompatible with FirewallBackend=iptables. This is a limitation of the iptables backend.)r rZ FirewallErrorZ INVALID_VALUErrrrÚ sanity_checkYs þzfirewalld_conf.sanity_checkc Csà| ¡zt|jdƒ}Wn>tyV}z&t d|j|¡| ¡‚WYd}~n d}~00|D]à}|sjq>| ¡}t|ƒdks\|ddvrŒq\dd„|  d¡Dƒ}t|ƒd krÀt d | ¡¡q\nj|dt vràt d | ¡¡q\nJ|dd krt d | ¡¡q\n(|j   |d¡dur*t d| ¡¡q\|d|j |d<q\|  ¡|  d¡srt dtj¡| dttjƒ¡|  d¡}z t|ƒWnNttfyÖ|durÀt d|r¶|nd tj¡| dttjƒ¡Yn0|  d¡}|rö| ¡dvr2|durt d|r|nd tj¡| dtjr,dnd¡|  d¡}|rP| ¡dvrŒ|durtt d|rj|nd tj¡| dtjr†dnd¡|  d¡}|rª| ¡dvræ|durÎt d|rÄ|nd tj¡| dtjràdnd¡|  d¡}|r| ¡tjvr8|dur*t d|r |nd tj¡| dtj¡|  d¡}|rV| ¡dvr’|durzt d |rp|nd tj¡| dtjrŒdnd¡|  d!¡}|r®|tjvrÚ|durÈt d"|tj¡| d!ttjƒ¡|  d#¡}|rú| ¡tj vr0|durt d$|r|nd tj!¡| d#ttj!ƒ¡|  d%¡}|rP| ¡tj"vr†|durtt d&|rj|nd tj#¡| d%ttj#ƒ¡|  d'¡}|r¤| ¡dvrÚ|durÈt d(|r¾|nd tj$¡| d'ttj$ƒ¡|  d)¡}z| %|¡}Wn2ty$t d*|tj&¡| d)tj&¡Yn0|  d+¡}|rD| ¡dvrz|durht d,|r^|nd tj'¡| d+ttj'ƒ¡|  d-¡}|r˜| ¡dvrÔ|dur¼t d.|r²|nd tj(¡| d-tj(rÎdnd¡| )¡dS)/NÚrzFailed to load '%s': %sér)ú#ú;cSsg|] }| ¡‘qSr)r!)Ú.0ÚxrrrÚ vóz'firewalld_conf.read..ú=ézInvalid option definition: '%s'zInvalid option: '%s'r&zMissing value: '%s'z!Duplicate option definition: '%s'rz0DefaultZone is not set, using default value '%s'rz7MinimalMark '%s' is not valid, using default value '%d'r)r,Úfalser+Útruez7CleanupOnExit '%s' is not valid, using default value %sr+r,rz>CleanupModulesOnExit '%s' is not valid, using default value %sr )r+rIr,rHz2Lockdown '%s' is not valid, using default value %sr z7IPv6_rpfilter '%s' is not valid, using default value %sr z9IndividualCalls '%s' is not valid, using default value %sr z3LogDenied '%s' is invalid, using default value '%s'r z:AutomaticHelpers '%s' is not valid, using default value %srz9FirewallBackend '%s' is not valid, using default value %srz:FlushAllOnReload '%s' is not valid, using default value %srz8ReloadPolicy '%s' is not valid, using default value '%s'rz6RFC3964_IPv4 '%s' is not valid, using default value %srz;AllowZoneDrifting '%s' is not valid, using default value %s)*rÚopenrÚ ExceptionrÚerrorr<r!ÚlenÚsplitÚ valid_keysrr Úcloserr-r%r.ÚintÚ ValueErrorÚ TypeErrorZwarningr/Úlowerr0r1r2ZIPV6_RPFILTER_VALUESr3r4ZLOG_DENIED_VALUESr5ZAUTOMATIC_HELPERS_VALUESr6ZFIREWALL_BACKEND_VALUESr7r8Ú_parse_reload_policyr9r:r;r=)rÚfÚmsgÚlineZpairr$rrrÚreadfs   ÿ    þ   þ   þ   þ   ý   þ  ÿ   þ   þ   þ ý   þ   þzfirewalld_conf.readc Cs¬t|jƒdkrdSg}tj tj¡s2t tjd¡z.tj ddtj  |j ¡tj  |j ¡dd}Wn4t y”}zt d|¡‚WYd}~n d}~00d}d}ztj|j dd d }WnRt y}z8tj |j ¡rìt d |j |f¡‚nd}WYd}~n}z*t |j¡td|j |fƒ‚WYd}~n d}~00zt |j|j ¡WnDt y˜}z*t |j¡td|j |fƒ‚WYd}~nd}~00t |j d¡dS)Nr?ièZwtz%s.F)ÚmodeÚprefixÚdirÚdeletez!Failed to open temporary file: %sZrtzUTF-8)rZÚencodingzFailed to open '%s': %sr'Trr@rFrGz%s=%s )rr rz%s.oldzBackup of '%s' failed: %szFailed to create '%s': %si€) rMrÚosÚpathÚexistsrZ ETC_FIREWALLDÚmkdirÚtempfileZNamedTemporaryFileÚbasenamerÚdirnamerKrrLÚiorJr!ÚwriterNrÚappendr(rPr#ÚnameÚshutilÚcopy2ÚIOErrorÚmoveÚchmod) rZdoneZ temp_filerWZmodifiedÚemptyrVrXÚpr"r$rrrrgsªþ            ÿ ÿ       ( (zfirewalld_conf.writecCsàd}ddddœ}|rÐ| ¡}| ¡}|dvr@|D] }|||<q0n| dd¡ d¡D]|}| ¡}|sdqR| dd¡ dd ¡}t|ƒd krŠd }qR|d  ¡ ¡}||vr¨d }qR|d  ¡ ¡}|dvrÆd }qR|||<qR|sÜtd ƒ‚|S)NTÚDROP)ZINPUTZFORWARDZOUTPUT)ZACCEPTZREJECTrqrAú,rFú:rGFrr?zInvalid ReloadPolicy)r!ÚupperÚreplacerNrMrR)r$ZvalidÚresultÚvÚkÚaZa2rrrrUos>ý   z#firewalld_conf._parse_reload_policycCsd dd„| ¡Dƒ¡S)Nrrcss |]\}}|›d|›VqdS)rsNr)rBrxrwrrrÚ —rEz8firewalld_conf._unparse_reload_policy..)Újoinr()r$rrrÚ_unparse_reload_policy•sz%firewalld_conf._unparse_reload_policyN)Ú__name__Ú __module__Ú __qualname__rrrr r%r*r<r=rYrgÚ staticmethodrUr|rrrrr%s  j %r) Zos.pathr_rfrcrjZfirewallrZfirewall.core.loggerrrrOÚobjectrrrrrÚs