OXIESEC PANEL
- Current Dir:
/
/
lib
/
python3.6
/
site-packages
/
firewall
/
core
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/07/2025 11:05:01 PM
rwxr-xr-x
📄
__init__.py
0 bytes
09/24/2024 02:51:44 AM
rw-r--r--
📁
__pycache__
-
02/07/2025 11:05:01 PM
rwxr-xr-x
📄
base.py
2.05 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
ebtables.py
9.17 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw.py
49.22 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_config.py
47.27 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_direct.py
21.99 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_helper.py
1.79 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_icmptype.py
2.43 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_ifcfg.py
2.5 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_ipset.py
9.45 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_nm.py
7.02 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_policies.py
2.74 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_policy.py
85.56 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_service.py
1.6 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_transaction.py
6.16 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
fw_zone.py
44.62 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
helper.py
804 bytes
09/24/2024 02:51:44 AM
rw-r--r--
📄
icmp.py
3.03 KB
09/24/2024 02:51:44 AM
rw-r--r--
📁
io
-
02/07/2025 11:05:01 PM
rwxr-xr-x
📄
ipXtables.py
60.43 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
ipset.py
12.61 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
logger.py
30.31 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
modules.py
3.73 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
nftables.py
98.77 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
prog.py
1.47 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
rich.py
33.05 KB
09/24/2024 02:51:44 AM
rw-r--r--
📄
watcher.py
3.15 KB
09/24/2024 02:51:44 AM
rw-r--r--
Editing: watcher.py
Close
# -*- coding: utf-8 -*- # # Copyright (C) 2012-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/>. # __all__ = [ "Watcher" ] from gi.repository import Gio, GLib class Watcher(object): def __init__(self, callback, timeout): self._callback = callback self._timeout = timeout self._monitors = { } self._timeouts = { } self._blocked = [ ] def add_watch_dir(self, directory): gfile = Gio.File.new_for_path(directory) self._monitors[directory] = gfile.monitor_directory(\ Gio.FileMonitorFlags.NONE, None) self._monitors[directory].connect("changed", self._file_changed_cb) def add_watch_file(self, filename): gfile = Gio.File.new_for_path(filename) self._monitors[filename] = gfile.monitor_file(\ Gio.FileMonitorFlags.NONE, None) self._monitors[filename].connect("changed", self._file_changed_cb) def get_watches(self): return self._monitors.keys() def has_watch(self, filename): return filename in self._monitors def remove_watch(self, filename): del self._monitors[filename] def block_source(self, filename): if filename not in self._blocked: self._blocked.append(filename) def unblock_source(self, filename): if filename in self._blocked: self._blocked.remove(filename) def clear_timeouts(self): for filename in list(self._timeouts.keys()): GLib.source_remove(self._timeouts[filename]) del self._timeouts[filename] def _call_callback(self, filename): if filename not in self._blocked: self._callback(filename) del self._timeouts[filename] def _file_changed_cb(self, monitor, gio_file, gio_other_file, event): filename = gio_file.get_parse_name() if filename in self._blocked: if filename in self._timeouts: GLib.source_remove(self._timeouts[filename]) del self._timeouts[filename] return if event == Gio.FileMonitorEvent.CHANGED or \ event == Gio.FileMonitorEvent.CREATED or \ event == Gio.FileMonitorEvent.DELETED or \ event == Gio.FileMonitorEvent.ATTRIBUTE_CHANGED: if filename in self._timeouts: GLib.source_remove(self._timeouts[filename]) del self._timeouts[filename] self._timeouts[filename] = GLib.timeout_add_seconds(\ self._timeout, self._call_callback, filename)