# -*- 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/>. # # signal handling and run_server derived from setroubleshoot # Copyright (C) 2006,2007,2008,2009 Red Hat, Inc. # Authors: # John Dennis <jdennis@redhat.com> # Thomas Liu <tliu@redhat.com> # Dan Walsh <dwalsh@redhat.com> __all__ = [ "run_server" ] import sys import signal # force use of pygobject3 in python-slip from gi.repository import GObject, GLib sys.modules['gobject'] = GObject import dbus import dbus.service import dbus.mainloop.glib import slip.dbus from firewall import config from firewall.core.logger import log from firewall.server.firewalld import FirewallD ############################################################################ # # signal handlers # ############################################################################ def sighup(service): service.reload() return True def sigterm(mainloop): mainloop.quit() ############################################################################ # # run_server function # ############################################################################ def run_server(debug_gc=False): """ Main function for firewall server. Handles D-Bus and GLib mainloop. """ service = None if debug_gc: from pprint import pformat import gc gc.enable() gc.set_debug(gc.DEBUG_LEAK) gc_timeout = 10 def gc_collect(): gc.collect() if len(gc.garbage) > 0: print("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n") print("GARBAGE OBJECTS (%d):\n" % len(gc.garbage)) for x in gc.garbage: print(type(x), "\n ",) print(pformat(x)) print("\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n") GLib.timeout_add_seconds(gc_timeout, gc_collect) try: dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() name = dbus.service.BusName(config.dbus.DBUS_INTERFACE, bus=bus) service = FirewallD(name, config.dbus.DBUS_PATH) mainloop = GLib.MainLoop() slip.dbus.service.set_mainloop(mainloop) if debug_gc: GLib.timeout_add_seconds(gc_timeout, gc_collect) # use unix_signal_add if available, else unix_signal_add_full if hasattr(GLib, 'unix_signal_add'): unix_signal_add = GLib.unix_signal_add else: unix_signal_add = GLib.unix_signal_add_full unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGHUP, sighup, service) unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGTERM, sigterm, mainloop) mainloop.run() except KeyboardInterrupt: log.debug1("Stopping..") except SystemExit: log.error("Raising SystemExit in run_server") except Exception as e: log.error("Exception %s: %s", e.__class__.__name__, str(e)) if service: service.stop()
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
.__init__.pyo.40009 | File | 147 B | 0644 |
|
.config.pyo.40009 | File | 48.08 KB | 0644 |
|
.config_helper.pyo.40009 | File | 15.45 KB | 0644 |
|
.config_icmptype.pyo.40009 | File | 12.94 KB | 0644 |
|
.config_ipset.pyo.40009 | File | 15.89 KB | 0644 |
|
.config_service.pyo.40009 | File | 22.86 KB | 0644 |
|
.config_zone.pyo.40009 | File | 36.55 KB | 0644 |
|
.decorators.pyo.40009 | File | 2.59 KB | 0644 |
|
.firewalld.pyo.40009 | File | 85.28 KB | 0644 |
|
.server.pyo.40009 | File | 3.02 KB | 0644 |
|
__init__.py | File | 0 B | 0644 |
|
__init__.pyc | File | 147 B | 0644 |
|
__init__.pyo | File | 147 B | 0644 |
|
config.py | File | 60.64 KB | 0644 |
|
config.pyc | File | 48.08 KB | 0644 |
|
config.pyo | File | 48.08 KB | 0644 |
|
config_helper.py | File | 17.13 KB | 0644 |
|
config_helper.pyc | File | 15.45 KB | 0644 |
|
config_helper.pyo | File | 15.45 KB | 0644 |
|
config_icmptype.py | File | 14.58 KB | 0644 |
|
config_icmptype.pyc | File | 12.94 KB | 0644 |
|
config_icmptype.pyo | File | 12.94 KB | 0644 |
|
config_ipset.py | File | 17.99 KB | 0644 |
|
config_ipset.pyc | File | 15.89 KB | 0644 |
|
config_ipset.pyo | File | 15.89 KB | 0644 |
|
config_service.py | File | 26.19 KB | 0644 |
|
config_service.pyc | File | 22.86 KB | 0644 |
|
config_service.pyo | File | 22.86 KB | 0644 |
|
config_zone.py | File | 41.8 KB | 0644 |
|
config_zone.pyc | File | 36.55 KB | 0644 |
|
config_zone.pyo | File | 36.55 KB | 0644 |
|
decorators.py | File | 2.94 KB | 0644 |
|
decorators.pyc | File | 2.59 KB | 0644 |
|
decorators.pyo | File | 2.59 KB | 0644 |
|
firewalld.py | File | 107.23 KB | 0644 |
|
firewalld.pyc | File | 85.28 KB | 0644 |
|
firewalld.pyo | File | 85.28 KB | 0644 |
|
server.py | File | 3.74 KB | 0644 |
|
server.pyc | File | 3.02 KB | 0644 |
|
server.pyo | File | 3.02 KB | 0644 |
|