Server IP : 103.169.32.36 / Your IP : 216.73.216.202 Web Server : Apache System : Linux web.dpmptsp 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : apache ( 48) PHP Version : 5.6.40 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /lib/python2.7/site-packages/firewall/core/ |
Upload File : |
| Current File : /lib/python2.7/site-packages/firewall/core//fw_nm.py |
# -*- coding: utf-8 -*-
#
# Copyright (C) 2010-2016 Red Hat, Inc.
#
# Authors:
# Thomas Woerner <twoerner@redhat.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""Functions for NetworkManager interaction"""
__all__ = [ "check_nm_imported", "nm_is_imported",
"nm_get_zone_of_connection", "nm_set_zone_of_connection",
"nm_get_connections", "nm_get_connection_of_interface",
"nm_get_bus_name", "nm_get_dbus_interface" ]
import gi
from gi.repository import GLib
try:
gi.require_version('NM', '1.0')
except ValueError:
_nm_imported = False
else:
try:
from gi.repository import NM
_nm_imported = True
except (ImportError, ValueError, GLib.Error):
_nm_imported = False
_nm_client = None
from firewall import errors
from firewall.errors import FirewallError
from firewall.core.logger import log
import dbus
def check_nm_imported():
"""Check function to raise a MISSING_IMPORT error if the import of NM failed
"""
if not _nm_imported:
raise FirewallError(errors.MISSING_IMPORT, "gi.repository.NM = 1.0")
def nm_is_imported():
"""Returns true if NM has been properly imported
@return True if import was successful, False otherwirse
"""
return _nm_imported
def nm_get_client():
"""Returns the NM client object or None if the import of NM failed
@return NM.Client instance if import was successful, None otherwise
"""
global _nm_client
if not _nm_client:
_nm_client = NM.Client.new(None)
return _nm_client
def nm_get_zone_of_connection(connection):
"""Get zone of connection from NM
@param connection name
@return zone string setting of connection, empty string if not set, None if connection is unknown
"""
check_nm_imported()
con = nm_get_client().get_connection_by_uuid(connection)
if con is None:
return None
setting_con = con.get_setting_connection()
if setting_con is None:
return None
try:
if con.get_flags() & (NM.SettingsConnectionFlags.NM_GENERATED
| NM.SettingsConnectionFlags.NM_VOLATILE):
return ""
except AttributeError:
# Prior to NetworkManager 1.12, we can only guess
# that a connection was generated/volatile.
if con.get_unsaved():
return ""
zone = setting_con.get_zone()
if zone is None:
zone = ""
return zone
def nm_set_zone_of_connection(zone, connection):
"""Set the zone for a connection
@param zone name
@param connection name
@return True if zone was set, else False
"""
check_nm_imported()
con = nm_get_client().get_connection_by_uuid(connection)
if con is None:
return False
setting_con = con.get_setting_connection()
if setting_con is None:
return False
if zone == "":
zone = None
setting_con.set_property("zone", zone)
return con.commit_changes(True, None)
def nm_get_connections(connections, connections_name):
"""Get active connections from NM
@param connections return dict
@param connections_name return dict
"""
connections.clear()
connections_name.clear()
check_nm_imported()
active_connections = nm_get_client().get_active_connections()
for active_con in active_connections:
# ignore vpn devices for now
if active_con.get_vpn():
continue
name = active_con.get_id()
uuid = active_con.get_uuid()
devices = active_con.get_devices()
connections_name[uuid] = name
for dev in devices:
connections[dev.get_iface()] = uuid
def nm_get_interfaces():
"""Get active interfaces from NM
@returns list of interface names
"""
check_nm_imported()
active_interfaces = []
for active_con in nm_get_client().get_active_connections():
# ignore vpn devices for now
if active_con.get_vpn():
continue
try:
con = active_con.get_connection()
if con.get_flags() & (NM.SettingsConnectionFlags.NM_GENERATED
| NM.SettingsConnectionFlags.NM_VOLATILE):
continue
except AttributeError:
# Prior to NetworkManager 1.12, we can only guess
# that a connection was generated/volatile.
if con.get_unsaved():
continue
for dev in active_con.get_devices():
active_interfaces.append(dev.get_iface())
return active_interfaces
def nm_get_interfaces_in_zone(zone):
interfaces = []
for interface in nm_get_interfaces():
conn = nm_get_connection_of_interface(interface)
if zone == nm_get_zone_of_connection(conn):
interfaces.append(interface)
return interfaces
def nm_get_connection_of_interface(interface):
"""Get connection from NM that is using the interface
@param interface name
@returns connection that is using interface or None
"""
check_nm_imported()
device = nm_get_client().get_device_by_iface(interface)
if device is None:
return None
active_con = device.get_active_connection()
if active_con is None:
return None
try:
con = active_con.get_connection()
if con.get_flags() & NM.SettingsConnectionFlags.NM_GENERATED:
return None
except AttributeError:
# Prior to NetworkManager 1.12, we can only guess
# that a connection was generated.
if con.get_unsaved():
return None
return active_con.get_uuid()
def nm_get_bus_name():
if not _nm_imported:
return None
try:
bus = dbus.SystemBus()
obj = bus.get_object(NM.DBUS_INTERFACE, NM.DBUS_PATH)
name = obj.bus_name
del obj, bus
return name
except Exception:
log.debug2("Failed to get bus name of NetworkManager")
return None
def nm_get_dbus_interface():
if not _nm_imported:
return ""
return NM.DBUS_INTERFACE
| N4m3 |
5!z3 |
L45t M0d!f!3d |
0wn3r / Gr0up |
P3Rm!55!0n5 |
0pt!0n5 |
| .. |
-- |
December 20 2023 04:52:59 |
0 / 0 |
0755 |
|
| io |
-- |
December 20 2023 04:52:59 |
0 / 0 |
0755 |
|
| | | | | |
| __init__.py |
0 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| __init__.pyc |
0.142 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| __init__.pyo |
0.142 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| base.py |
1.936 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| base.pyc |
1.29 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| base.pyo |
1.29 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| ebtables.py |
9.128 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| ebtables.pyc |
9.036 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| ebtables.pyo |
9.036 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw.py |
43.706 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw.pyc |
30.673 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw.pyo |
30.673 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_config.py |
35.99 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_config.pyc |
30.686 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_config.pyo |
30.686 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_direct.py |
20.115 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_direct.pyc |
14.772 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_direct.pyo |
14.772 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_helper.py |
1.79 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_helper.pyc |
2.57 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_helper.pyo |
2.57 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_icmptype.py |
2.773 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_icmptype.pyc |
2.995 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_icmptype.pyo |
2.995 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_ifcfg.py |
2.502 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_ifcfg.pyc |
1.838 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_ifcfg.pyo |
1.838 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_ipset.py |
8.96 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_ipset.pyc |
9.018 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_ipset.pyo |
9.018 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_nm.py |
6.494 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_nm.pyc |
5.929 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_nm.pyo |
5.929 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_policies.py |
2.737 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_policies.pyc |
2.941 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_policies.pyo |
2.941 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_service.py |
1.601 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_service.pyc |
2.145 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_service.pyo |
2.145 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_test.py |
22.056 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_test.pyc |
17.445 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_test.pyo |
17.445 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_transaction.py |
10.539 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_transaction.pyc |
10.958 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_transaction.pyo |
10.958 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_zone.py |
75.604 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| fw_zone.pyc |
57.309 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| fw_zone.pyo |
57.309 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| helper.py |
0.785 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| helper.pyc |
0.217 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| helper.pyo |
0.217 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| icmp.py |
3.028 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| icmp.pyc |
2.894 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| icmp.pyo |
2.894 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| ipXtables.py |
47.679 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| ipXtables.pyc |
34.804 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| ipXtables.pyo |
34.804 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| ipset.py |
9.1 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| ipset.pyc |
9.15 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| ipset.pyo |
9.15 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| logger.py |
30.311 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| logger.pyc |
27.429 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| logger.pyo |
27.429 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| modules.py |
3.627 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| modules.pyc |
3.563 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| modules.pyo |
3.563 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| nftables.py |
60.549 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| nftables.pyc |
38.556 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| nftables.pyo |
38.556 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| prog.py |
1.475 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| prog.pyc |
0.965 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| prog.pyo |
0.965 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| rich.py |
29.336 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| rich.pyc |
23.73 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| rich.pyo |
23.73 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| watcher.py |
3.152 KB |
April 28 2021 13:31:12 |
0 / 0 |
0644 |
|
| watcher.pyc |
3.549 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|
| watcher.pyo |
3.549 KB |
April 28 2021 13:31:13 |
0 / 0 |
0644 |
|