3 @)fzI@sddlmZddlZeejd<ddlZddlZddlZddlZddl m Z ddl m Z m Z mZddlmZddlmZmZmZmZddlmZdd lmZmZmZdd l mZdd lmZGd d d ejjj Z!dS))GObjectNZgobject)config)dbus_to_python%dbus_introspection_prepare_properties!dbus_introspection_add_properties)IPSet) IPSET_TYPESnormalize_ipset_entrycheck_entry_overlaps_existingcheck_for_overlapping_entries)log)handle_exceptionsdbus_handle_exceptionsdbus_service_method)errors) FirewallErrorcseZdZdZdZejjZe fddZ e ddZ e ddZ e d d Zeejd d d e dWddZeejddd e dXddZejjjejjeejdde dYddZejjejddddZejjjejjeejdde dZfdd Zeejjejde d[d d!Z eejjejde d\d"d#Z!eejje d]d$d%Z"ejjejjdde d&d'Z#eejje d^d(d)Z$ejjejjdde d*d+Z%eejjdde d_d,d-Z&ejjejjdde d.d/Z'eejjdde d`d0d1Z(eejjdde dad2d3Z)eejjdde dbd4d5Z*eejjdde dcd6d7Z+eejjdde ddd8d9Z,eejjdde ded:d;Z-eejjdde dfdd?Z/eejjd@de dhdAdBZ0eejjd@de didCdDZ1eejjd de djdEdFZ2eejjdde dkdGdHZ3eejjd dId e dldJdKZ4eejjdLde dmdMdNZ5eejjdLde dndOdPZ6eejjdde dodQdRZ7eejjdde dpdSdTZ8eejjddId e dqdUdVZ9Z:S)rFirewallDConfigIPSetzFirewallD main classTcs\tt|j||||_||_||_||_|d|_|d|_d|j|_ t |tj j dS)Nrzconfig.ipset.%d) superr__init__parentrobjitem_idbusnamepath _log_prefixrdbusDBUS_INTERFACE_CONFIG_IPSET)selfrZconfZipsetrargskwargs) __class__"/usr/lib/python3.6/config_ipset.pyr;s   zFirewallDConfigIPSet.__init__cCsdS)Nr")rr"r"r#__del__HszFirewallDConfigIPSet.__del__cCs |jdS)N)Zremove_from_connection)rr"r"r# unregisterLszFirewallDConfigIPSet.unregistercCs|dkrtj|jjS|dkr,tj|jjS|dkrBtj|jjS|dkrXtj|jjS|dkrntj|jjStj j d|dS)NnamefilenamerdefaultbuiltinzDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not exist) rStringrr&r'rZBooleanr(r) exceptions DBusException)r property_namer"r"r# _get_propertyTsz"FirewallDConfigIPSet._get_propertyZssv) in_signature out_signatureNcCsLt|t}t|t}tjd|j|||tjjkrBtjj d||j |S)Nz%s.Get('%s', '%s')zJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist) rstrr debug1rrrrr+r,r.)rinterface_namer-senderr"r"r#Getes    zFirewallDConfigIPSet.Getsza{sv}cCsdt|t}tjd|j||tjjkr6tjj d|i}xd D]}|j |||<q@Wtj |dd S) Nz%s.GetAll('%s')zJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not existr&r'rr(r)Zsv) signature)r&r'rr(r)) rr2r r3rrrrr+r,r.Z Dictionary)rr4r5retxr"r"r#GetAllvs   zFirewallDConfigIPSet.GetAllZssv)r0cCslt|t}t|t}t|}tjd|j||||jj||tjj krXtj j d|tj j d|dS)Nz%s.Set('%s', '%s', '%s')zJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not existzGorg.freedesktop.DBus.Error.PropertyReadOnly: Property '%s' is read-only) rr2r r3rr accessCheckrrrr+r,)rr4r-Z new_valuer5r"r"r#Sets      zFirewallDConfigIPSet.Setzsa{sv}as)r8cCs2t|t}t|}t|}tjd|j|||dS)Nz&%s.PropertiesChanged('%s', '%s', '%s'))rr2r r3r)rr4Zchanged_propertiesZinvalidated_propertiesr"r"r#PropertiesChangeds   z&FirewallDConfigIPSet.PropertiesChanged)r1cs8tjd|jtt|j|j|jj}t ||t j j S)Nz%s.Introspect()) r Zdebug2rrr IntrospectrrZget_busrrrr)rr5data)r!r"r#r?s  zFirewallDConfigIPSet.IntrospectcCstjd|j|jj|jS)zget settings for ipset z%s.getSettings())r r3rrZget_ipset_configr)rr5r"r"r# getSettingssz FirewallDConfigIPSet.getSettingscCsFt|}tjd|j|jj||jj|j||_|j |jj dS)z"update settings for ipset z%s.update('...')N) rr r3rrr<rZset_ipset_configrUpdatedr&)rsettingsr5r"r"r#updates  zFirewallDConfigIPSet.updatecCs<tjd|j|jj||jj|j|_|j|jj dS)z0load default settings for builtin ipset z%s.loadDefaults()N) r r3rrr<rZload_ipset_defaultsrrBr&)rr5r"r"r# loadDefaultss z!FirewallDConfigIPSet.loadDefaultscCstjd|j|fdS)Nz%s.Updated('%s'))r r3r)rr&r"r"r#rBszFirewallDConfigIPSet.UpdatedcCs:tjd|j|jj||jj|j|jj|jdS)zremove ipset z %s.remove()N) r r3rrr<rZ remove_ipsetrZ removeIPSet)rr5r"r"r#removes zFirewallDConfigIPSet.removecCstjd|j|fdS)Nz%s.Removed('%s'))r r3r)rr&r"r"r#RemovedszFirewallDConfigIPSet.RemovedcCsFt|t}tjd|j||jj||jj|j ||_ |j |dS)zrename ipset z%s.rename('%s')N) rr2r r3rrr<rZ rename_ipsetrRenamed)rr&r5r"r"r#renames   zFirewallDConfigIPSet.renamecCstjd|j|fdS)Nz%s.Renamed('%s'))r r3r)rr&r"r"r#rHszFirewallDConfigIPSet.RenamedcCstjd|j|jdS)Nz%s.getVersion()r)r r3rrA)rr5r"r"r# getVersionszFirewallDConfigIPSet.getVersioncCsHt|t}tjd|j||jj|t|j}||d<|j |dS)Nz%s.setVersion('%s')r) rr2r r3rrr<listrArD)rversionr5rCr"r"r# setVersions    zFirewallDConfigIPSet.setVersioncCstjd|j|jdS)Nz %s.getShort()r)r r3rrA)rr5r"r"r#getShortszFirewallDConfigIPSet.getShortcCsHt|t}tjd|j||jj|t|j}||d<|j |dS)Nz%s.setShort('%s')r) rr2r r3rrr<rKrArD)rZshortr5rCr"r"r#setShorts    zFirewallDConfigIPSet.setShortcCstjd|j|jdS)Nz%s.getDescription())r r3rrA)rr5r"r"r#getDescription(sz#FirewallDConfigIPSet.getDescriptioncCsHt|t}tjd|j||jj|t|j}||d<|j |dS)Nz%s.setDescription('%s')rP) rr2r r3rrr<rKrArD)r descriptionr5rCr"r"r#setDescription/s    z#FirewallDConfigIPSet.setDescriptioncCstjd|j|jdS)Nz %s.getType())r r3rrA)rr5r"r"r#getType=szFirewallDConfigIPSet.getTypecCs\t|t}tjd|j||jj||tkr:tt j |t |j }||d<|j |dS)Nz%s.setType('%s')rT)rr2r r3rrr<rrrZ INVALID_TYPErKrArD)rZ ipset_typer5rCr"r"r#setTypeDs    zFirewallDConfigIPSet.setTypeza{ss}cCstjd|j|jdS)Nz%s.getOptions())r r3rrA)rr5r"r"r# getOptionsSszFirewallDConfigIPSet.getOptionscCsLt|t}tjd|jt||jj|t|j }||d<|j |dS)Nz%s.setOptions('[%s]')rW) rdictr r3rreprrr<rKrArD)rZoptionsr5rCr"r"r# setOptionsZs     zFirewallDConfigIPSet.setOptionscCst|t}t|t}tjd|j|||jj|t|j}||dkrn|d||krnt t j d||f||d|<|j |dS)Nz%s.addOption('%s', '%s')rWz '%s': '%s') rr2r r3rrr<rKrArrALREADY_ENABLEDrD)rkeyvaluer5rCr"r"r# addOptionfs     zFirewallDConfigIPSet.addOptioncCsbt|t}tjd|j||jj|t|j}||dkrJt t j ||d|=|j |dS)Nz%s.removeOption('%s')rW) rr2r r3rrr<rKrArr NOT_ENABLEDrD)rr]r5rCr"r"r# removeOptionus      z!FirewallDConfigIPSet.removeOptionbcCsNt|t}t|t}tjd|j||t|j}||dkoL|d||kS)Nz%s.queryOption('%s', '%s')rW)rr2r r3rrKrA)rr]r^r5rCr"r"r# queryOptions     z FirewallDConfigIPSet.queryOptionascCstjd|j|jdS)Nz%s.getEntries())r r3rrA)rr5r"r"r# getEntriesszFirewallDConfigIPSet.getEntriescCs|t|t}t|tjd|jdj||jj|t|j }d|dkrf|dddkrft t j ||d<|j |dS)Nz%s.setEntries('[%s]'),timeoutrW0re)rrKr r r3rjoinrr<rArrIPSET_WITH_TIMEOUTrD)rZentriesr5rCr"r"r# setEntriess      zFirewallDConfigIPSet.setEntriescCst|t}t|}tjd|j||jj|t|j }d|dkr`|dddkr`t t j ||dkrxt t j |t||d|dj||j|dS)Nz%s.addEntry('%s')rhrWrire)rr2r r r3rrr<rKrArrrkr\r appendrD)rentryr5rCr"r"r#addEntrys      zFirewallDConfigIPSet.addEntrycCst|t}t|}tjd|j||jj|t|j }d|dkr`|dddkr`t t j ||dkrxt t j ||dj||j|dS)Nz%s.removeEntry('%s')rhrWrire)rr2r r r3rrr<rKrArrrkr`rFrD)rrnr5rCr"r"r# removeEntrys      z FirewallDConfigIPSet.removeEntrycCs`t|t}t|}tjd|j|t|j}d|dkrT|dddkrTtt j ||dkS)Nz%s.queryEntry('%s')rhrWrire) rr2r r r3rrKrArrrk)rrnr5rCr"r"r# queryEntrys   zFirewallDConfigIPSet.queryEntry)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N);__name__ __module__ __qualname____doc__Z persistentrrZPK_ACTION_CONFIGZdefault_polkit_auth_requiredr rrr$r%r.rZPROPERTIES_IFACEr6r;slipZpolkitZ require_authr=servicesignalr>ZPK_ACTION_INFOZINTROSPECTABLE_IFACEr?rrZDBUS_SIGNATURErArDrErBrFrGrIrHrJrMrNrOrQrSrUrVrXr[r_rarcrfrlrorprq __classcell__r"r")r!r#r3s                     r)"Z gi.repositoryrsysmodulesrZ dbus.serviceZ slip.dbusrvZslip.dbus.serviceZfirewallrZfirewall.dbus_utilsrrrZfirewall.core.io.ipsetrZfirewall.core.ipsetrr r r Zfirewall.core.loggerr Zfirewall.server.decoratorsr rrrZfirewall.errorsrrwZObjectrr"r"r"r#s