a
«°it ã @ sL d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl m
Z
d dlmZ d dl
mZmZmZmZmZmZ d dlmZ d d lmZ d d
lmZ d dlmZ d dlmZ d d
lmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dlm3Z3 d dl4m5Z5 G dd„ deƒZ6dS )é N)Úconfig)ÚDEFAULT_ZONE_TARGET)ÚWatcher)Úlog)ÚDbusServiceObject)Úhandle_exceptionsÚdbus_handle_exceptionsÚdbus_service_methodÚdbus_service_method_deprecatedÚdbus_service_signal_deprecatedÚdbus_polkit_require_auth)ÚFirewallDConfigIcmpType)ÚFirewallDConfigService)ÚFirewallDConfigZone)ÚFirewallDConfigPolicy)ÚFirewallDConfigIPSet)ÚFirewallDConfigHelper)ÚIcmpType)ÚIPSet)ÚHelper)ÚLockdownWhitelist)ÚDirect)Údbus_to_pythonÚcommand_of_senderÚcontext_of_senderÚ
uid_of_senderÚuser_of_uidÚ%dbus_introspection_prepare_propertiesÚ!dbus_introspection_add_propertiesÚ!dbus_introspection_add_deprecated)Úerrors)Ú
FirewallErrorc s e Zd ZdZdZejjZe ‡ fdd„ƒZ
e dd„ ƒZe dd„ ƒZe d d
„ ƒZ
e dd„ ƒZe d
d„ ƒZe dd„ ƒZe dd„ ƒZe dd„ ƒZe dd„ ƒZe dd„ ƒZe dd„ ƒZe dd„ ƒZe dd„ ƒZe dd „ ƒZe d!d"„ ƒZe d#d$„ ƒZe d%d&„ ƒZe d'd(„ ƒZe d)d*„ ƒZe d+d,„ ƒZe d-d.„ ƒZe d/d0„ ƒZ e!d1d2„ ƒZ"e!d3d4„ ƒZ#e!d5d6„ ƒZ$e%ej&d7d8d9e!dîd;d<„ƒƒZ'e%ej&d=d>d9e!dïd?d@„ƒƒZ(e)ejjƒe%ej&dAdBe!dðdCdD„ƒƒƒZ*ej+j,ej&dEdFdGdH„ ƒZ-e)ejj.ƒe%ej/d=dIe!dñ‡ fdJdK„ ƒƒƒZ0e%ejj1e2j3dIe!dòdLdM„ƒƒZ4e%ejj1e2j3dBe!dódNdO„ƒƒZ5ej+ ,ejj1¡e!dPdQ„ ƒƒZ6e%ejj1d=dBe!dôdRdS„ƒƒZ7e%ejj1d=dBe!dõdTdU„ƒƒZ8e%ejj1d=dVd9e!dödWdX„ƒƒZ9e%ejj1dYdIe!d÷dZd[„ƒƒZ:e%ejj1d=dBe!død\d]„ƒƒZ;e%ejj1d=dBe!dùd^d_„ƒƒZe%ejj1d=dBe!düddde„ƒƒZ?e%ejj1d=dBe!dýdfdg„ƒƒZ@e%ejj1d=dVd9e!dþdhdi„ƒƒZAe%ejj1dYdIe!dÿdjdk„ƒƒZBe%ejj1dldBe!d dmdn„ƒƒZCe%ejj1dldBe!ddodp„ƒƒZDe%ejj1dldVd9e!ddqdr„ƒƒZEe%ejj1dsdIe!ddtdu„ƒƒZFe%ejjGdvdIe!ddwdx„ƒƒZHe%ejjGdYdIe!ddydz„ƒƒZIe%ejjGd=d{d9e!dd|d}„ƒƒZJe%ejjGd=eKj3 d{d9e!dd~d„ƒƒZLej+j,ejjGd=dFe!d€d„ ƒƒZMe%ejjGdvdIe!dd‚dƒ„ƒƒZNe%ejjGdYdIe!d d„d…„ƒƒZOe%ejjGd=d{d9e!d
d†d‡„ƒƒZPe%ejjGd=eQj3 d{d9e!ddˆd‰„ƒƒZRej+j,ejjGd=dFe!dŠd‹„ ƒƒZSe%ejjGdvdIe!ddŒd„ƒƒZTe%ejjGdYdIe!d
dŽd„ƒƒZUe%ejjGd=d{d9e!ddd‘„ƒƒZVe%ejjGd’d{d9e!dd“d”„ƒƒZWe%ejjGd•d{d9e!dd–d—„ƒƒZXej+j,ejjGd=dFe!d˜d™„ ƒƒZYe%ejjGdvdIe!ddšd›„ƒƒZZe%ejjGdYdIe!ddœd„ƒƒZ[e%ejjGd=d{d9e!ddždŸ„ƒƒZ\e%ejjGd=d=d9e!dd d¡„ƒƒZ]e%ejjGd=d=d9e!dd¢d£„ƒƒZ^e%ejjGd¤d{d9e!dd¥d¦„ƒƒZ_e%ejjGd•d{d9e!dd§d¨„ƒƒZ`ej+j,ejjGd=dFe!d©dª„ ƒƒZae%ejjGdvdIe!dd«d¬„ƒƒZbe%ejjGdYdIe!ddd®„ƒƒZce%ejjGd=d{d9e!dd¯d°„ƒƒZde%ejjGd•d{d9e!dd±d²„ƒƒZeej+j,ejjGd=dFe!d³d´„ ƒƒZfe%ejjGdvdIe!ddµd¶„ƒƒZge%ejjGdYdIe!dd·d¸„ƒƒZhe%ejjGd=d{d9e!dd¹dº„ƒƒZie%ejjGd=ejj3 d{d9e!dd»d¼„ƒƒZkej+j,ejjGd=dFe!d½d¾„ ƒƒZlemejjnƒe%ejjneoj3dIe!d d¿dÀ„ƒƒƒZpemejjnƒe%ejjneoj3dBe!d!dÁd„ƒƒƒZqerejjnƒej+ ,ejjn¡e!dÃdÄ„ ƒƒƒZsemejjnƒe%ejjndÅdBe!d"dÆdÇ„ƒƒƒZtemejjnƒe%ejjndÅdBe!d#dÈdÉ„ƒƒƒZuemejjnƒe%ejjndÅdVd9e!d$dÊdË„ƒƒƒZvemejjnƒe%ejjnd7dYd9e!d%dÌdÍ„ƒƒƒZwemejjnƒe%ejjndÎdÏd9e!d&dÐdÑ„ƒƒƒZxemejjnƒe%ejjndÒdBe!d'dÓdÔ„ƒƒƒZyemejjnƒe%ejjndÒdBe!d(dÕdÖ„ƒƒƒZzemejjnƒe%ejjndÒdVd9e!d)d×dØ„ƒƒƒZ{emejjnƒe%ejjndÅdBe!d*dÙdÚ„ƒƒƒZ|emejjnƒe%ejjndÅdÛd9e!d+dÜdÝ„ƒƒƒZ}emejjnƒe%ejjndÎdÞd9e!d,dßdà„ƒƒƒZ~emejjnƒe%ejjndádBe!d-dâd㄃ƒƒZemejjnƒe%ejjndádBe!d.däd儃ƒƒZ€emejjnƒe%ejjndádVd9e!d/dæd焃ƒƒZemejjnƒe%ejjnd=dèd9e!d0dédꄃƒƒZ‚emejjnƒe%ejjndëdIe!d1dìd턃ƒƒZƒ‡ Z„S (2 ÚFirewallDConfigzFirewallD main classTc sš t t| ƒj|i |¤Ž || _|d | _|d | _| ¡ t| jdƒ| _ | j
tj¡ | j
tj¡ | j
tj
¡ | j
tj¡ | j
tj¡ | j
tj¡ | j
tj¡ | j
tj¡ | j
tj¡ | j
tj¡ | j
tj¡ | j
tj¡ tj tj¡r>tt tj¡ƒD ].}dtj|f }tj |¡r| j
|¡ q| j tj¡ | j tj¡ | j tj¡ t | tj!j"dddddddddddddddœƒ d S )Nr é é z%s/%sZ readwrite)Ú
CleanupOnExitÚCleanupModulesOnExitÚ
IPv6_rpfilterÚIPv6_rpfilter2ÚLockdownÚMinimalMarkÚIndividualCallsÚ LogDeniedÚAutomaticHelpersÚFirewallBackendÚFlushAllOnReloadÚRFC3964_IPv4ÚAllowZoneDriftingÚNftablesTableOwner)#Úsuperr" Ú__init__r ÚbusnameÚpathÚ
_init_varsr Ú
watch_updaterÚwatcherÚ
add_watch_dirÚFIREWALLD_IPSETSÚETC_FIREWALLD_IPSETSÚFIREWALLD_ICMPTYPESÚETC_FIREWALLD_ICMPTYPESÚFIREWALLD_HELPERSÚETC_FIREWALLD_HELPERSÚFIREWALLD_SERVICESÚETC_FIREWALLD_SERVICESÚFIREWALLD_ZONESÚETC_FIREWALLD_ZONESÚFIREWALLD_POLICIESÚETC_FIREWALLD_POLICIESÚosÚexistsÚsortedÚlistdirÚisdirZadd_watch_fileÚLOCKDOWN_WHITELISTÚFIREWALLD_DIRECTÚFIREWALLD_CONFr ÚdbusÚDBUS_INTERFACE_CONFIG)ÚselfZconfÚargsÚkwargsÚfilenamer6 ©Ú __class__© ú:/usr/lib/python3.9/site-packages/firewall/server/config.pyr4 D sV
òÿzFirewallDConfig.__init__c C s g | _ d| _g | _d| _g | _d| _g | _d| _g | _d| _ g | _
d| _| j
¡ D ]}| | j |¡¡ qR| j ¡ D ]}| | j |¡¡ qt| j ¡ D ]}| | j |¡¡ q–| j ¡ D ]}| | j |¡¡ q¸| j ¡ D ]}| | j |¡¡ qÚ| j ¡ D ]}| | j |¡¡ qüd S ©Nr )ÚipsetsÚ ipset_idxÚ icmptypesÚicmptype_idxÚservicesÚservice_idxÚzonesÚzone_idxÚhelpersÚ
helper_idxÚpolicy_objectsÚpolicy_object_idxr Z
get_ipsetsÚ _addIPSetZ get_ipsetZ
get_icmptypesÚ_addIcmpTypeZget_icmptypeZget_servicesÚ_addServiceZget_serviceZ get_zonesÚ_addZoneZget_zoneZget_helpersÚ
_addHelperZ
get_helperZget_policy_objectsÚ
_addPolicyZget_policy_object)rQ ÚipsetÚicmptypeÚserviceÚzoneÚhelperÚpolicyrW rW rX r7 u s0 zFirewallDConfig._init_varsc C s d S ©NrW ©rQ rW rW rX Ú__del__‘ s zFirewallDConfig.__del__c C sä t | jƒdkr$| j ¡ }| ¡ ~q t | jƒdkrH| j ¡ }| ¡ ~q$t | jƒdkrl| j ¡ }| ¡ ~qHt | jƒdkr| j ¡ }| ¡ ~qlt | jƒdkr´| j ¡ }| ¡ ~qt | jƒdkrØ| j ¡ }| ¡ ~q´| ¡ d S rY )
ÚlenrZ ÚpopÚ
unregisterr\ r^ r` rb rd r7 )rQ ÚitemrW rW rX Úreload• s2
zFirewallDConfig.reloadc
C s~ |t jkrÒ| t jj¡}t dt j¡ z| j ¡ W n8 tyl } z t d||f ¡ W Y d }~d S d }~0 0 | t jj¡
¡ }t| ¡ ƒD ]"}||v rŒ|| || krŒ||= qŒt
|ƒdkrÎ| t jj|g ¡ d S | t j¡sì| t j¡rŒ| d¡rŒz| j |¡\}}W n: tyF } z t d||f ¡ W Y d }~d S d }~0 0 |dkr^| |¡ n*|dkrt| |¡ n|dkrz| |¡ nî| t j¡s¨| t j¡rH| d¡rHz| j |¡\}}W n: ty } z t d ||f ¡ W Y d }~d S d }~0 0 |dkr| |¡ n*|dkr0| |¡ n|dkrz| |¡ n2| t j¡sd| t j¡rˆ| d¡rz| j |¡\}}W n: ty¾ } z t d
||f ¡ W Y d }~d S d }~0 0 |dkrÖ| |¡ n*|dkrì| !|¡ n|dkr„| "|¡ n‚| t j¡rz| #t jd¡ $d¡}t
|ƒd
k s