p!ranha?
Server IP : 103.169.32.36  /  Your IP : 216.73.217.13
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 :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
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