mirror of
https://github.com/evilsocket/opensnitch.git
synced 2025-03-04 16:44:46 +01:00
Merge branch 'ui2.0': allow to configure options from the UI
This commit is contained in:
commit
bf7449f303
11 changed files with 1868 additions and 544 deletions
|
@ -11,6 +11,8 @@ class Config:
|
|||
|
||||
@staticmethod
|
||||
def get():
|
||||
if Config.__instance == None:
|
||||
Config._instance = Config()
|
||||
return Config.__instance
|
||||
|
||||
def __init__(self):
|
||||
|
@ -30,6 +32,7 @@ class Config:
|
|||
|
||||
def setSettings(self, path, value):
|
||||
self.settings.setValue(path, value)
|
||||
self.settings.sync()
|
||||
|
||||
def getSettings(self, path):
|
||||
return self.settings.value(path)
|
||||
|
|
|
@ -5,6 +5,9 @@ import sys
|
|||
|
||||
class Database:
|
||||
__instance = None
|
||||
DB_IN_MEMORY = ":memory:"
|
||||
DB_TYPE_MEMORY = 0
|
||||
DB_TYPE_FILE = 1
|
||||
|
||||
@staticmethod
|
||||
def instance():
|
||||
|
@ -15,17 +18,27 @@ class Database:
|
|||
def __init__(self):
|
||||
self._lock = threading.Lock()
|
||||
self.db = None
|
||||
self.db_name = Database.DB_IN_MEMORY
|
||||
self.initialize()
|
||||
|
||||
def initialize(self):
|
||||
self.db = QSqlDatabase.addDatabase("QSQLITE", "db")
|
||||
self.db.setDatabaseName(":memory:")
|
||||
self.db.setDatabaseName(self.db_name)
|
||||
if not self.db.open():
|
||||
print("\n ** Error opening DB: SQLite driver not loaded\n")
|
||||
print("\n ** Error opening DB: SQLite driver not loaded. DB name: %s\n" % self.db_name)
|
||||
print("\n Available drivers: ", QSqlDatabase.drivers())
|
||||
sys.exit(-1)
|
||||
self._create_tables()
|
||||
|
||||
def close(self):
|
||||
self.db.close()
|
||||
|
||||
def set_db_name(self, dbname):
|
||||
if dbname != "" and dbname != self.db_name:
|
||||
self.close()
|
||||
self.db_name = dbname
|
||||
self.initialize()
|
||||
|
||||
def get_db(self):
|
||||
return self.db
|
||||
|
||||
|
@ -39,6 +52,7 @@ class Database:
|
|||
q.exec_()
|
||||
q = QSqlQuery("create table if not exists connections (" \
|
||||
"time text, " \
|
||||
"node text, " \
|
||||
"action text, " \
|
||||
"protocol text, " \
|
||||
"src_ip text, " \
|
||||
|
|
171
ui/opensnitch/dialogs/preferences.py
Normal file
171
ui/opensnitch/dialogs/preferences.py
Normal file
|
@ -0,0 +1,171 @@
|
|||
import threading
|
||||
import logging
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
from PyQt5 import QtCore, QtGui, uic, QtWidgets
|
||||
|
||||
from config import Config
|
||||
from database import Database
|
||||
from nodes import Nodes
|
||||
|
||||
import ui_pb2
|
||||
|
||||
DIALOG_UI_PATH = "%s/../res/preferences.ui" % os.path.dirname(sys.modules[__name__].__file__)
|
||||
class PreferencesDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
||||
|
||||
LOG_TAG = "[Preferences] "
|
||||
_notification_trigger = QtCore.pyqtSignal(str, ui_pb2.Notification)
|
||||
|
||||
def __init__(self, parent=None):
|
||||
QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowStaysOnTopHint)
|
||||
|
||||
self._cfg = Config.get()
|
||||
self._db = Database.instance()
|
||||
self._nodes = Nodes.instance()
|
||||
|
||||
self.setupUi(self)
|
||||
|
||||
self._accept_button = self.findChild(QtWidgets.QPushButton, "acceptButton")
|
||||
self._accept_button.clicked.connect(self._cb_accept_button_clicked)
|
||||
self._apply_button = self.findChild(QtWidgets.QPushButton, "applyButton")
|
||||
self._apply_button.clicked.connect(self._cb_apply_button_clicked)
|
||||
self._cancel_button = self.findChild(QtWidgets.QPushButton, "cancelButton")
|
||||
self._cancel_button.clicked.connect(self._cb_cancel_button_clicked)
|
||||
|
||||
self._default_timeout_button = self.findChild(QtWidgets.QSpinBox, "spinUITimeout")
|
||||
self._default_action_combo = self.findChild(QtWidgets.QComboBox, "comboUIAction")
|
||||
self._default_target_combo = self.findChild(QtWidgets.QComboBox, "comboUITarget")
|
||||
self._default_duration_combo = self.findChild(QtWidgets.QComboBox, "comboUIDuration")
|
||||
self._dialog_pos_combo = self.findChild(QtWidgets.QComboBox, "comboUIDialogPos")
|
||||
|
||||
self._nodes_combo = self.findChild(QtWidgets.QComboBox, "comboNodes")
|
||||
self._node_action_combo = self.findChild(QtWidgets.QComboBox, "comboNodeAction")
|
||||
self._node_duration_combo = self.findChild(QtWidgets.QComboBox, "comboNodeDuration")
|
||||
self._node_monitor_method_combo = self.findChild(QtWidgets.QComboBox, "comboNodeMonitorMethod")
|
||||
self._node_loglevel_combo = self.findChild(QtWidgets.QComboBox, "comboNodeLogLevel")
|
||||
self._node_intercept_unknown_check = self.findChild(QtWidgets.QCheckBox, "checkInterceptUnknown")
|
||||
self._node_name_label = self.findChild(QtWidgets.QLabel, "labelNodeName")
|
||||
self._node_version_label = self.findChild(QtWidgets.QLabel, "labelNodeVersion")
|
||||
|
||||
self._node_apply_all_check = self.findChild(QtWidgets.QCheckBox, "checkApplyToNodes")
|
||||
|
||||
def showEvent(self, event):
|
||||
super(PreferencesDialog, self).showEvent(event)
|
||||
|
||||
try:
|
||||
self._nodes_combo.clear()
|
||||
|
||||
self._node_list = self._nodes.get()
|
||||
for addr in self._node_list:
|
||||
self._nodes_combo.addItem(addr)
|
||||
|
||||
if len(self._node_list) == 0:
|
||||
self._reset_node_settings()
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + "exception loading nodes", e)
|
||||
|
||||
self._load_settings()
|
||||
|
||||
# connect the signals after loading settings, to avoid firing
|
||||
# the signals
|
||||
self._nodes_combo.currentIndexChanged.connect(self._cb_node_combo_changed)
|
||||
self._node_action_combo.currentIndexChanged.connect(self._cb_node_needs_update)
|
||||
self._node_duration_combo.currentIndexChanged.connect(self._cb_node_needs_update)
|
||||
self._node_monitor_method_combo.currentIndexChanged.connect(self._cb_node_needs_update)
|
||||
self._node_loglevel_combo.currentIndexChanged.connect(self._cb_node_needs_update)
|
||||
self._node_intercept_unknown_check.clicked.connect(self._cb_node_needs_update)
|
||||
self._node_apply_all_check.clicked.connect(self._cb_node_needs_update)
|
||||
|
||||
# True when any node option changes
|
||||
self._node_needs_update = False
|
||||
|
||||
def _load_settings(self):
|
||||
self._default_action = self._cfg.getSettings("global/default_action")
|
||||
self._default_duration = self._cfg.getSettings("global/default_duration")
|
||||
self._default_target = self._cfg.getSettings("global/default_target")
|
||||
self._default_timeout = self._cfg.getSettings("global/default_timeout")
|
||||
|
||||
self._default_duration_combo.setCurrentText(self._default_duration)
|
||||
self._default_action_combo.setCurrentText(self._default_action)
|
||||
self._default_target_combo.setCurrentIndex(int(self._default_target))
|
||||
self._default_timeout_button.setValue(int(self._default_timeout))
|
||||
|
||||
self._load_node_settings()
|
||||
|
||||
def _load_node_settings(self):
|
||||
addr = self._nodes_combo.currentText()
|
||||
if addr != "":
|
||||
try:
|
||||
node_data = self._node_list[addr]['data']
|
||||
self._node_version_label.setText(node_data.version)
|
||||
self._node_name_label.setText(node_data.name)
|
||||
self._node_loglevel_combo.setCurrentIndex(node_data.logLevel)
|
||||
|
||||
node_config = json.loads(node_data.config)
|
||||
self._node_action_combo.setCurrentText(node_config['DefaultAction'])
|
||||
self._node_duration_combo.setCurrentText(node_config['DefaultDuration'])
|
||||
self._node_monitor_method_combo.setCurrentText(node_config['ProcMonitorMethod'])
|
||||
self._node_intercept_unknown_check.setChecked(node_config['InterceptUnknown'])
|
||||
self._node_loglevel_combo.setCurrentIndex(int(node_config['LogLevel']))
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + "exception loading config: ", e)
|
||||
|
||||
def _reset_node_settings(self):
|
||||
self._node_action_combo.setCurrentIndex(0)
|
||||
self._node_duration_combo.setCurrentIndex(0)
|
||||
self._node_monitor_method_combo.setCurrentIndex(0)
|
||||
self._node_intercept_unknown_check.setChecked(False)
|
||||
self._node_loglevel_combo.setCurrentIndex(0)
|
||||
self._node_name_label.setText("")
|
||||
self._node_version_label.setText("")
|
||||
|
||||
def _save_settings(self):
|
||||
self._cfg.setSettings("global/default_action", self._default_action_combo.currentText())
|
||||
self._cfg.setSettings("global/default_duration", self._default_duration_combo.currentText())
|
||||
self._cfg.setSettings("global/default_target", self._default_target_combo.currentIndex())
|
||||
self._cfg.setSettings("global/default_timeout", self._default_timeout_button.value())
|
||||
|
||||
addr = self._nodes_combo.currentText()
|
||||
if (self._node_needs_update or self._node_apply_all_check.isChecked()) and addr != "":
|
||||
try:
|
||||
# TODO: move to Nodes()
|
||||
node_config = "{\"DefaultAction\": \"" + self._node_action_combo.currentText() + "\"" \
|
||||
+ ", \"DefaultDuration\": \"" + self._node_duration_combo.currentText() + "\"" \
|
||||
+ ", \"ProcMonitorMethod\": \"" + self._node_monitor_method_combo.currentText() + "\"" \
|
||||
+ ", \"InterceptUnknown\": " + str(self._node_intercept_unknown_check.isChecked()).lower() \
|
||||
+ ", \"LogLevel\": " + str(self._node_loglevel_combo.currentIndex()) \
|
||||
+ "}"
|
||||
notif = ui_pb2.Notification(
|
||||
type=ui_pb2.CHANGE_CONFIG,
|
||||
data=node_config,
|
||||
rules=[])
|
||||
if self._node_apply_all_check.isChecked():
|
||||
self._nodes.save_nodes_config(node_config)
|
||||
self._nodes.send_notifications(notif)
|
||||
else:
|
||||
self._nodes.save_node_config(addr, node_config)
|
||||
self._nodes.send_notification(addr, notif)
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + "exception saving config: ", e)
|
||||
|
||||
self._node_needs_update = False
|
||||
|
||||
def _cb_accept_button_clicked(self):
|
||||
self._save_settings()
|
||||
self.accept()
|
||||
|
||||
def _cb_apply_button_clicked(self):
|
||||
self._save_settings()
|
||||
|
||||
def _cb_cancel_button_clicked(self):
|
||||
self.reject()
|
||||
|
||||
def _cb_node_combo_changed(self, index):
|
||||
self._load_node_settings()
|
||||
|
||||
def _cb_node_needs_update(self):
|
||||
self._node_needs_update = True
|
|
@ -169,10 +169,7 @@ class PromptDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
self._duration_combo.setCurrentIndex(7)
|
||||
|
||||
def _render_connection(self, con):
|
||||
if self._local:
|
||||
app_name, app_icon, _ = self._apps_parser.get_info_by_path(con.process_path, "terminal")
|
||||
else:
|
||||
app_name, app_icon = "", "terminal"
|
||||
app_name, app_icon, _ = self._apps_parser.get_info_by_path(con.process_path, "terminal")
|
||||
|
||||
if app_name == "":
|
||||
app_name = "Unknown process"
|
||||
|
@ -191,7 +188,7 @@ class PromptDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
con.protocol,
|
||||
con.dst_port )
|
||||
else:
|
||||
message = "The process <b>%s</b> running on the computer <b>%s</b> is connecting to <b>%s</b> on %s port %d" % ( \
|
||||
message = "<b>Remote</b> process <b>%s</b> running on <b>%s</b> is connecting to <b>%s</b> on %s port %d" % ( \
|
||||
app_name,
|
||||
self._peer.split(':')[1],
|
||||
con.dst_host or con.dst_ip,
|
||||
|
|
|
@ -14,6 +14,7 @@ import ui_pb2
|
|||
from database import Database
|
||||
from config import Config
|
||||
from version import version
|
||||
from dialogs.preferences import PreferencesDialog
|
||||
|
||||
DIALOG_UI_PATH = "%s/../res/stats.ui" % os.path.dirname(sys.modules[__name__].__file__)
|
||||
class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
||||
|
@ -22,6 +23,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
|
||||
_trigger = QtCore.pyqtSignal()
|
||||
_shown_trigger = QtCore.pyqtSignal()
|
||||
_notification_trigger = QtCore.pyqtSignal(ui_pb2.Notification)
|
||||
|
||||
SORT_ORDER = ["ASC", "DESC"]
|
||||
LAST_ORDER_TO = 1
|
||||
|
@ -36,7 +38,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
"tipLabel": None,
|
||||
"cmd": None,
|
||||
"view": None,
|
||||
"display_fields": "time as Time, action as Action, dst_host || ' -> ' || dst_port as Destination, protocol as Protocol, process as Process, rule as Rule",
|
||||
"display_fields": "time as Time, node as Node, action as Action, dst_host || ' -> ' || dst_port as Destination, protocol as Protocol, process as Process, rule as Rule",
|
||||
"group_by": LAST_GROUP_BY
|
||||
},
|
||||
1: {
|
||||
|
@ -107,6 +109,13 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
self._stats = None
|
||||
self._trigger.connect(self._on_update_triggered)
|
||||
|
||||
self._start_button = self.findChild(QtWidgets.QToolButton, "startButton")
|
||||
self._start_button.clicked.connect(self._cb_start_clicked)
|
||||
|
||||
self._prefs_button = self.findChild(QtWidgets.QPushButton, "prefsButton")
|
||||
self._prefs_button.clicked.connect(self._cb_prefs_clicked)
|
||||
self._prefs_dialog = PreferencesDialog()
|
||||
|
||||
self._save_button = self.findChild(QtWidgets.QToolButton, "saveButton")
|
||||
self._save_button.clicked.connect(self._on_save_clicked)
|
||||
self._tabs = self.findChild(QtWidgets.QTabWidget, "tabWidget")
|
||||
|
@ -186,12 +195,14 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
'users.csv'
|
||||
)
|
||||
|
||||
if address is not None:
|
||||
self.setWindowapply_Title("OpenSnitch Network Statistics for %s" % address)
|
||||
|
||||
def showEvent(self, event):
|
||||
super(StatsDialog, self).showEvent(event)
|
||||
self._shown_trigger.emit()
|
||||
window_title = "OpenSnitch Network Statistics - %s " % version
|
||||
if self._address is not None:
|
||||
self.setWindowTitle("OpenSnitch Network Statistics for %s - %s" % (self._address, self._stats.daemon_version))
|
||||
self.setWindowTitle(window_title)
|
||||
|
||||
|
||||
def _load_settings(self):
|
||||
dialog_geometry = self._cfg.getSettings("statsDialog/geometry")
|
||||
|
@ -276,11 +287,11 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
data = row.data()
|
||||
idx = row.column()
|
||||
cur_idx = 1
|
||||
if idx == 4:
|
||||
if idx == 5:
|
||||
cur_idx = 3
|
||||
self._tabs.setCurrentIndex(cur_idx)
|
||||
self._set_process_query(data)
|
||||
elif idx == 5:
|
||||
elif idx == 6:
|
||||
self._tabs.setCurrentIndex(cur_idx)
|
||||
self._set_rules_query(data)
|
||||
|
||||
|
@ -314,6 +325,26 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
elif cur_idx == 6:
|
||||
self._set_users_query(data)
|
||||
|
||||
def _cb_prefs_clicked(self):
|
||||
self._prefs_dialog.show()
|
||||
|
||||
def _cb_start_clicked(self):
|
||||
if self.daemon_connected == False:
|
||||
self._start_button.setChecked(False)
|
||||
return
|
||||
self._status_label.setStyleSheet('color: green')
|
||||
|
||||
# TODO: move to a new class
|
||||
notType = ui_pb2.UNLOAD_FIREWALL
|
||||
if self._start_button.isChecked():
|
||||
self._status_label.setText("running")
|
||||
notType = ui_pb2.LOAD_FIREWALL
|
||||
else:
|
||||
self._status_label.setText("running/disabled")
|
||||
|
||||
noti = ui_pb2.Notification(clientName="", serverName="", type=notType, data="", rules=[])
|
||||
self._notification_trigger.emit(noti)
|
||||
|
||||
def _get_limit(self):
|
||||
return " " + self.LIMITS[self._limit_combo.currentIndex()]
|
||||
|
||||
|
@ -348,6 +379,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
model = self._get_active_table().model()
|
||||
self.setQuery(model, "SELECT " \
|
||||
"c.time as Time, " \
|
||||
"c.node as Node, " \
|
||||
"c.action as Action, " \
|
||||
"c.uid as UserID, " \
|
||||
"c.protocol as Protocol, " \
|
||||
|
@ -364,6 +396,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
model = self._get_active_table().model()
|
||||
self.setQuery(model, "SELECT " \
|
||||
"c.time as Time, " \
|
||||
"c.node as Node, " \
|
||||
"c.action as Action, " \
|
||||
"c.uid as UserID, " \
|
||||
"c.dst_host || ' -> ' || c.dst_port as Destination, " \
|
||||
|
@ -372,7 +405,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
"count(c.dst_host) as Hits, " \
|
||||
"c.rule as Rule " \
|
||||
"FROM procs as p, connections as c " \
|
||||
"WHERE p.what = c.process AND p.what = '%s' GROUP BY c.dst_host " % data)
|
||||
"WHERE p.what = c.process AND p.what = '%s' GROUP BY c.node, c.dst_host " % data)
|
||||
|
||||
def _set_addrs_query(self, data):
|
||||
model = self._get_active_table().model()
|
||||
|
@ -409,6 +442,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
model = self._get_active_table().model()
|
||||
self.setQuery(model, "SELECT " \
|
||||
"c.time as Time, " \
|
||||
"c.node as Node, " \
|
||||
"c.action as Action, " \
|
||||
"c.protocol as Protocol, " \
|
||||
"c.dst_ip as DstIP, " \
|
||||
|
@ -429,6 +463,9 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
|
|||
self._trigger.emit()
|
||||
|
||||
def update_status(self):
|
||||
self._start_button.setDown(self.daemon_connected)
|
||||
self._start_button.setChecked(self.daemon_connected)
|
||||
self._start_button.setDisabled(not self.daemon_connected)
|
||||
if self.daemon_connected:
|
||||
self._status_label.setText("running")
|
||||
self._status_label.setStyleSheet('color: green')
|
||||
|
|
112
ui/opensnitch/nodes.py
Normal file
112
ui/opensnitch/nodes.py
Normal file
|
@ -0,0 +1,112 @@
|
|||
from queue import Queue
|
||||
from datetime import datetime
|
||||
|
||||
class Nodes():
|
||||
__instance = None
|
||||
LOG_TAG = "[Nodes]: "
|
||||
|
||||
@staticmethod
|
||||
def instance():
|
||||
if Nodes.__instance == None:
|
||||
Nodes.__instance = Nodes()
|
||||
return Nodes.__instance
|
||||
|
||||
def __init__(self):
|
||||
self._nodes = {}
|
||||
|
||||
def count(self):
|
||||
return len(self._nodes)
|
||||
|
||||
def add(self, context, client_config=None):
|
||||
try:
|
||||
proto, addr = self.get_addr(context.peer())
|
||||
addr = "%s:%s" % (proto, addr)
|
||||
if addr not in self._nodes:
|
||||
self._nodes[addr] = {
|
||||
'notifications': Queue(),
|
||||
'online': True,
|
||||
'last_seen': datetime.now()
|
||||
}
|
||||
self.add_data(addr, client_config)
|
||||
return self._nodes[addr]
|
||||
|
||||
self._nodes[addr]['last_seen'] = datetime.now()
|
||||
self.add_data(addr, client_config)
|
||||
|
||||
return self._nodes[addr]
|
||||
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + " exception adding/updating node: ", e, addr, client_config)
|
||||
|
||||
return None
|
||||
|
||||
def add_data(self, addr, client_config):
|
||||
if client_config != None:
|
||||
self._nodes[addr]['data'] = client_config
|
||||
|
||||
def delete_all(self):
|
||||
self.send_notifications(None)
|
||||
self._nodes = {}
|
||||
|
||||
def delete(self, peer):
|
||||
proto, addr = self.get_addr(peer)
|
||||
addr = "%s:%s" % (proto, addr)
|
||||
# Force the node to get one new item from queue,
|
||||
# in order to loop and exit.
|
||||
self.send_notification(addr, None)
|
||||
if addr in self._nodes:
|
||||
del self._nodes[addr]
|
||||
|
||||
def get(self):
|
||||
return self._nodes
|
||||
|
||||
def get_addr(self, peer):
|
||||
peer = peer.split(":")
|
||||
return peer[0], peer[1]
|
||||
|
||||
def get_notifications(self):
|
||||
notlist = []
|
||||
try:
|
||||
for c in self._nodes:
|
||||
if self._nodes[c]['online'] == False:
|
||||
continue
|
||||
if self._nodes[c]['notifications'].empty():
|
||||
continue
|
||||
notif = self._nodes[c]['notifications'].get(False)
|
||||
if notif != None:
|
||||
self._nodes[c]['notifications'].task_done()
|
||||
notlist.append(notif)
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + " exception get_notifications(): ", e)
|
||||
|
||||
return notlist
|
||||
|
||||
def save_node_config(self, addr, config):
|
||||
try:
|
||||
self._nodes[addr]['data'].config = config
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + " exception saving node config: ", e, addr, config)
|
||||
|
||||
def save_nodes_config(self, config):
|
||||
try:
|
||||
for c in self._nodes:
|
||||
self._nodes[c]['data'].config = config
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + " exception saving nodes config: ", e, config)
|
||||
|
||||
def send_notification(self, addr, notification):
|
||||
try:
|
||||
self._nodes[addr]['notifications'].put(notification)
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + " exception sending notification: ", e, addr, notification)
|
||||
|
||||
def send_notifications(self, notification):
|
||||
"""
|
||||
Enqueues a notification to the clients queue.
|
||||
It'll be retrieved and delivered by get_notifications
|
||||
"""
|
||||
try:
|
||||
for c in self._nodes:
|
||||
self._nodes[c]['notifications'].put(notification)
|
||||
except Exception as e:
|
||||
print(self.LOG_TAG + " exception sending notifications: ", e, notification)
|
637
ui/opensnitch/res/preferences.ui
Normal file
637
ui/opensnitch/res/preferences.ui
Normal file
|
@ -0,0 +1,637 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>PreferencesDialog</class>
|
||||
<widget class="QDialog" name="PreferencesDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>599</width>
|
||||
<height>334</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="cancelButton">
|
||||
<property name="text">
|
||||
<string>Cancel</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="window-close"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="applyButton">
|
||||
<property name="text">
|
||||
<string>Apply</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="acceptButton">
|
||||
<property name="text">
|
||||
<string>Save</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="emblem-default"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="tabPosition">
|
||||
<enum>QTabWidget::North</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>UI</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="2" column="3">
|
||||
<widget class="QComboBox" name="comboUIDuration">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>once</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>30s</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>5m</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>15m</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>30m</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>1h</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>for this session</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>forever</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Default target</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Default action</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Default duration</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="QComboBox" name="comboUITarget">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>by executable</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>by command line</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>by destination port</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>by destination ip</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>by user id</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QSpinBox" name="spinUITimeout">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>15</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QComboBox" name="comboUIAction">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>deny</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="emblem-important"/>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>allow</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="emblem-default"/>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Default timeout</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QComboBox" name="comboUIDialogPos">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>center</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>top right</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>bottom right</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>top left</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>bottom left</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Prompt dialog default position on screen</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_3">
|
||||
<attribute name="title">
|
||||
<string>Nodes</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="0" column="2">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Preferred</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="10" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>Intercept Unknown Connections</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QComboBox" name="comboNodes">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>Default duration</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="3">
|
||||
<widget class="QCheckBox" name="checkInterceptUnknown">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="3">
|
||||
<widget class="QComboBox" name="comboNodeMonitorMethod">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>proc</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>audit</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>ftrace</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLabel" name="labelNodeName">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>Default action</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Version</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Preferred</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>60</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QCheckBox" name="checkApplyToNodes">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Apply configuration to all nodes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="QLabel" name="labelNodeVersion">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QComboBox" name="comboNodeDuration">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>once</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>until restart</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>always</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="QComboBox" name="comboNodeAction">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>deny</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="emblem-important"/>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>allow</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="emblem-default"/>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="text">
|
||||
<string>Process monitor method</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="text">
|
||||
<string>Default log level</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>HostName</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="3">
|
||||
<widget class="QComboBox" name="comboNodeLogLevel">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>DEBUG</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>INFO</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>IMPORTANT</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>WARNING</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>ERROR</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>FATAL</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_2">
|
||||
<attribute name="title">
|
||||
<string>Database</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_3" rowstretch="0,0">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="2">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Database name</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QComboBox" name="comboDBType">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>In memory</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>File</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="4">
|
||||
<widget class="QLineEdit" name="lineFileDB">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>/path/to/the/file.db</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -40,7 +40,7 @@
|
|||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="1" column="0">
|
||||
<item row="3" column="0">
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
|
@ -50,344 +50,7 @@
|
|||
<string>General</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_10">
|
||||
<item row="0" column="2">
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="consLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Ubuntu</family>
|
||||
<pointsize>11</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Dropped</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Ubuntu</family>
|
||||
<pointsize>11</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Connections</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="droppedLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="3">
|
||||
<widget class="QTreeView" name="eventsTable">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">*[action="deny"] { text-color: rgb(239, 41, 41);}
|
||||
*[action="allow"] { text-color: rgb(115, 210, 22);}</string>
|
||||
</property>
|
||||
<property name="autoScroll">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="uniformRowHeights">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Ubuntu</family>
|
||||
<pointsize>11</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Version</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Ubuntu</family>
|
||||
<pointsize>11</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Uptime</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Ubuntu</family>
|
||||
<pointsize>11</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Status</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="statusLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="daemonVerLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="uptimeLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Ubuntu</family>
|
||||
<pointsize>11</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Rules</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLabel" name="rulesLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="3">
|
||||
<item row="1" column="1" colspan="4">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
|
@ -409,7 +72,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="emblem-default">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -418,7 +81,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="emblem-important">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
|
@ -487,27 +150,26 @@
|
|||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="edit-clear"/>
|
||||
<iconset theme="edit-clear">
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
<item row="2" column="1" colspan="4">
|
||||
<widget class="QTreeView" name="eventsTable">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">*[action="deny"] { text-color: rgb(239, 41, 41);}
|
||||
*[action="allow"] { text-color: rgb(115, 210, 22);}</string>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::MinimumExpanding</enum>
|
||||
<property name="autoScroll">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
<property name="uniformRowHeights">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</spacer>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
@ -541,7 +203,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="back">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -593,7 +255,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="back">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -680,7 +342,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="back">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -748,7 +410,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="back">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -813,7 +475,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="back">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -878,7 +540,7 @@
|
|||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="back">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
<normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -915,22 +577,422 @@
|
|||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Connections</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="consLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Dropped</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="droppedLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Uptime</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="uptimeLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Rules</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="rulesLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_10">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Version</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="daemonVerLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>DejaVu Sans</family>
|
||||
<pointsize>8</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QToolButton" name="saveButton">
|
||||
<property name="toolTip">
|
||||
<string>Save to CSV.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="document-save-as">
|
||||
<normaloff>../../../../../../../../../../../../../../.designer/backup</normaloff>../../../../../../../../../../../../../../.designer/backup</iconset>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Ctrl+S</string>
|
||||
</property>
|
||||
</widget>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||
<item>
|
||||
<widget class="QToolButton" name="saveButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Save to CSV.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="document-save"/>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Ctrl+S</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="prefsButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="preferences-desktop"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="startButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="media-playback-start"/>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_9">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>60</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Ubuntu</family>
|
||||
<pointsize>11</pointsize>
|
||||
<weight>75</weight>
|
||||
<italic>false</italic>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Status</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="statusLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>11</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
|
|
@ -2,7 +2,8 @@ from PyQt5 import QtWidgets, QtGui, QtCore, Qt
|
|||
from PyQt5.QtSql import QSqlDatabase, QSqlDatabase, QSqlQueryModel, QSqlQuery
|
||||
|
||||
from datetime import datetime
|
||||
from threading import Thread, Lock
|
||||
from threading import Thread, Lock, Event
|
||||
from queue import Queue
|
||||
import time
|
||||
import os
|
||||
import socket
|
||||
|
@ -20,7 +21,9 @@ import ui_pb2_grpc
|
|||
|
||||
from dialogs.prompt import PromptDialog
|
||||
from dialogs.stats import StatsDialog
|
||||
from dialogs.preferences import PreferencesDialog
|
||||
|
||||
from nodes import Nodes
|
||||
from database import Database
|
||||
from config import Config
|
||||
from version import version
|
||||
|
@ -44,6 +47,7 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
self._path = os.path.abspath(os.path.dirname(__file__))
|
||||
self._app = app
|
||||
self._on_exit = on_exit
|
||||
self._exit = False
|
||||
self._msg = QtWidgets.QMessageBox()
|
||||
self._prompt_dialog = PromptDialog()
|
||||
self._stats_dialog = StatsDialog()
|
||||
|
@ -59,6 +63,8 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
self.check_thread.daemon = True
|
||||
self.check_thread.start()
|
||||
|
||||
self._nodes = Nodes.instance()
|
||||
|
||||
self.last_stats = None
|
||||
|
||||
# https://gist.github.com/pklaus/289646
|
||||
|
@ -85,6 +91,7 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
self._version_warning_trigger.connect(self._on_diff_versions)
|
||||
self._status_change_trigger.connect(self._on_status_change)
|
||||
self._new_remote_trigger.connect(self._on_new_remote)
|
||||
self._stats_dialog._notification_trigger.connect(self._on_new_notification)
|
||||
self._stats_dialog._shown_trigger.connect(self._on_stats_dialog_shown)
|
||||
|
||||
def _setup_icons(self):
|
||||
|
@ -116,16 +123,24 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
)
|
||||
|
||||
self._stats_action.triggered.connect(self._show_stats_dialog)
|
||||
self._menu.addAction("Close").triggered.connect(self._on_exit)
|
||||
self._menu.addAction("Close").triggered.connect(self._on_close)
|
||||
|
||||
self._tray.show()
|
||||
if not self._tray.isSystemTrayAvailable():
|
||||
self._stats_dialog.show()
|
||||
|
||||
def _on_close(self):
|
||||
self._exit = True
|
||||
self._on_exit()
|
||||
|
||||
def _show_stats_dialog(self):
|
||||
self._tray.setIcon(self.white_icon)
|
||||
self._stats_dialog.show()
|
||||
|
||||
@QtCore.pyqtSlot(ui_pb2.Notification)
|
||||
def _on_new_notification(self, notification):
|
||||
self._nodes.send_notifications(notification)
|
||||
|
||||
@QtCore.pyqtSlot()
|
||||
def _on_status_change(self):
|
||||
self._stats_dialog.daemon_connected = self._connected
|
||||
|
@ -146,9 +161,8 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
self._msg.show()
|
||||
self._version_warning_shown = True
|
||||
|
||||
@QtCore.pyqtSlot(str,ui_pb2.Statistics)
|
||||
@QtCore.pyqtSlot(str, ui_pb2.Statistics)
|
||||
def _on_new_remote(self, addr, stats):
|
||||
print("_on_new_remote()")
|
||||
dialog = StatsDialog(address = addr)
|
||||
dialog.daemon_connected = True
|
||||
dialog.update(stats)
|
||||
|
@ -205,7 +219,7 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
|
||||
return False
|
||||
|
||||
def _populate_stats(self, db, stats):
|
||||
def _populate_stats(self, db, node, stats):
|
||||
fields = []
|
||||
values = []
|
||||
|
||||
|
@ -213,8 +227,8 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
if self.last_stats != None and event in self.last_stats.events:
|
||||
continue
|
||||
db.insert("connections",
|
||||
"(time, action, protocol, src_ip, src_port, dst_ip, dst_host, dst_port, uid, process, process_args, rule)",
|
||||
(event.time, event.rule.action, event.connection.protocol, event.connection.src_ip, str(event.connection.src_port),
|
||||
"(time, node, action, protocol, src_ip, src_port, dst_ip, dst_host, dst_port, uid, process, process_args, rule)",
|
||||
(str(datetime.now()), node, event.rule.action, event.connection.protocol, event.connection.src_ip, str(event.connection.src_port),
|
||||
event.connection.dst_ip, event.connection.dst_host, str(event.connection.dst_port),
|
||||
str(event.connection.user_id), event.connection.process_path, " ".join(event.connection.process_args),
|
||||
event.rule.name),
|
||||
|
@ -295,21 +309,29 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
self.last_stats = stats
|
||||
|
||||
def Ping(self, request, context):
|
||||
if self._is_local_request(context):
|
||||
try:
|
||||
self._last_ping = datetime.now()
|
||||
self._populate_stats(self._db, request.stats)
|
||||
self._stats_dialog.update(request.stats)
|
||||
|
||||
if request.stats.daemon_version != version:
|
||||
self._version_warning_trigger.emit(request.stats.daemon_version, version)
|
||||
else:
|
||||
with self._remote_lock:
|
||||
_, addr, _ = context.peer().split(':')
|
||||
if addr in self._remote_stats:
|
||||
self._populate_stats(self._db, request.stats)
|
||||
self._remote_stats[addr].update(request.stats)
|
||||
else:
|
||||
self._new_remote_trigger.emit(addr, request.stats)
|
||||
|
||||
if self._is_local_request(context):
|
||||
peer = context.peer().split(':')
|
||||
self._populate_stats(self._db, peer[1], request.stats)
|
||||
self._stats_dialog.update(request.stats)
|
||||
|
||||
else:
|
||||
with self._remote_lock:
|
||||
_, addr, _ = context.peer().split(':')
|
||||
self._populate_stats(self._db, addr, request.stats)
|
||||
# XXX: disable this option for now
|
||||
#if addr in self._remote_stats:
|
||||
# self._remote_stats[addr].update(request.stats)
|
||||
#
|
||||
#else:
|
||||
# self._new_remote_trigger.emit(addr, request.stats)
|
||||
except Exception as e:
|
||||
print("Ping exception: ", e)
|
||||
|
||||
return ui_pb2.PingReply(id=request.id)
|
||||
|
||||
def AskRule(self, request, context):
|
||||
|
@ -325,4 +347,37 @@ class UIService(ui_pb2_grpc.UIServicer, QtWidgets.QGraphicsObject):
|
|||
|
||||
self._last_ping = datetime.now()
|
||||
self._asking = False
|
||||
|
||||
return rule
|
||||
|
||||
def Notifications(self, node_iter, context):
|
||||
"""
|
||||
Accept and collect nodes. It keeps a connection open with each
|
||||
client, in order to send them notifications.
|
||||
"""
|
||||
try:
|
||||
_node = self._nodes.add(context, node_iter.next())
|
||||
|
||||
stop_event = Event()
|
||||
def _on_client_closed():
|
||||
stop_event.set()
|
||||
self._nodes.delete(context.peer())
|
||||
context.add_callback(_on_client_closed)
|
||||
except Exception as e:
|
||||
print("[Notifications] exception adding new node", e)
|
||||
|
||||
while self._exit == False:
|
||||
if stop_event.is_set():
|
||||
break
|
||||
|
||||
try:
|
||||
noti = _node['notifications'].get()
|
||||
if noti != None:
|
||||
_node['notifications'].task_done()
|
||||
yield noti
|
||||
except Exception as e:
|
||||
print("[Notifications] exception getting notification from queue", e)
|
||||
context.cancel()
|
||||
|
||||
return node
|
||||
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: ui.proto
|
||||
|
||||
import sys
|
||||
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
|
||||
from google.protobuf.internal import enum_type_wrapper
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
@ -19,9 +20,65 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
|||
name='ui.proto',
|
||||
package='protocol',
|
||||
syntax='proto3',
|
||||
serialized_pb=_b('\n\x08ui.proto\x12\x08protocol\"]\n\x05\x45vent\x12\x0c\n\x04time\x18\x01 \x01(\t\x12(\n\nconnection\x18\x02 \x01(\x0b\x32\x14.protocol.Connection\x12\x1c\n\x04rule\x18\x03 \x01(\x0b\x32\x0e.protocol.Rule\"\xd3\x06\n\nStatistics\x12\x16\n\x0e\x64\x61\x65mon_version\x18\x01 \x01(\t\x12\r\n\x05rules\x18\x02 \x01(\x04\x12\x0e\n\x06uptime\x18\x03 \x01(\x04\x12\x15\n\rdns_responses\x18\x04 \x01(\x04\x12\x13\n\x0b\x63onnections\x18\x05 \x01(\x04\x12\x0f\n\x07ignored\x18\x06 \x01(\x04\x12\x10\n\x08\x61\x63\x63\x65pted\x18\x07 \x01(\x04\x12\x0f\n\x07\x64ropped\x18\x08 \x01(\x04\x12\x11\n\trule_hits\x18\t \x01(\x04\x12\x13\n\x0brule_misses\x18\n \x01(\x04\x12\x33\n\x08\x62y_proto\x18\x0b \x03(\x0b\x32!.protocol.Statistics.ByProtoEntry\x12\x37\n\nby_address\x18\x0c \x03(\x0b\x32#.protocol.Statistics.ByAddressEntry\x12\x31\n\x07\x62y_host\x18\r \x03(\x0b\x32 .protocol.Statistics.ByHostEntry\x12\x31\n\x07\x62y_port\x18\x0e \x03(\x0b\x32 .protocol.Statistics.ByPortEntry\x12/\n\x06\x62y_uid\x18\x0f \x03(\x0b\x32\x1f.protocol.Statistics.ByUidEntry\x12=\n\rby_executable\x18\x10 \x03(\x0b\x32&.protocol.Statistics.ByExecutableEntry\x12\x1f\n\x06\x65vents\x18\x11 \x03(\x0b\x32\x0f.protocol.Event\x1a.\n\x0c\x42yProtoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a\x30\n\x0e\x42yAddressEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a-\n\x0b\x42yHostEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a-\n\x0b\x42yPortEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a,\n\nByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a\x33\n\x11\x42yExecutableEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\">\n\x0bPingRequest\x12\n\n\x02id\x18\x01 \x01(\x04\x12#\n\x05stats\x18\x02 \x01(\x0b\x32\x14.protocol.Statistics\"\x17\n\tPingReply\x12\n\n\x02id\x18\x01 \x01(\x04\"\xc5\x01\n\nConnection\x12\x10\n\x08protocol\x18\x01 \x01(\t\x12\x0e\n\x06src_ip\x18\x02 \x01(\t\x12\x10\n\x08src_port\x18\x03 \x01(\r\x12\x0e\n\x06\x64st_ip\x18\x04 \x01(\t\x12\x10\n\x08\x64st_host\x18\x05 \x01(\t\x12\x10\n\x08\x64st_port\x18\x06 \x01(\r\x12\x0f\n\x07user_id\x18\x07 \x01(\r\x12\x12\n\nprocess_id\x18\x08 \x01(\r\x12\x14\n\x0cprocess_path\x18\t \x01(\t\x12\x14\n\x0cprocess_args\x18\n \x03(\t\"7\n\x08Operator\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0f\n\x07operand\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\t\"\\\n\x04Rule\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\t\x12\x10\n\x08\x64uration\x18\x03 \x01(\t\x12$\n\x08operator\x18\x04 \x01(\x0b\x32\x12.protocol.Operator2m\n\x02UI\x12\x34\n\x04Ping\x12\x15.protocol.PingRequest\x1a\x13.protocol.PingReply\"\x00\x12\x31\n\x07\x41skRule\x12\x14.protocol.Connection\x1a\x0e.protocol.Rule\"\x00\x62\x06proto3')
|
||||
serialized_options=None,
|
||||
serialized_pb=_b('\n\x08ui.proto\x12\x08protocol\"]\n\x05\x45vent\x12\x0c\n\x04time\x18\x01 \x01(\t\x12(\n\nconnection\x18\x02 \x01(\x0b\x32\x14.protocol.Connection\x12\x1c\n\x04rule\x18\x03 \x01(\x0b\x32\x0e.protocol.Rule\"\xd3\x06\n\nStatistics\x12\x16\n\x0e\x64\x61\x65mon_version\x18\x01 \x01(\t\x12\r\n\x05rules\x18\x02 \x01(\x04\x12\x0e\n\x06uptime\x18\x03 \x01(\x04\x12\x15\n\rdns_responses\x18\x04 \x01(\x04\x12\x13\n\x0b\x63onnections\x18\x05 \x01(\x04\x12\x0f\n\x07ignored\x18\x06 \x01(\x04\x12\x10\n\x08\x61\x63\x63\x65pted\x18\x07 \x01(\x04\x12\x0f\n\x07\x64ropped\x18\x08 \x01(\x04\x12\x11\n\trule_hits\x18\t \x01(\x04\x12\x13\n\x0brule_misses\x18\n \x01(\x04\x12\x33\n\x08\x62y_proto\x18\x0b \x03(\x0b\x32!.protocol.Statistics.ByProtoEntry\x12\x37\n\nby_address\x18\x0c \x03(\x0b\x32#.protocol.Statistics.ByAddressEntry\x12\x31\n\x07\x62y_host\x18\r \x03(\x0b\x32 .protocol.Statistics.ByHostEntry\x12\x31\n\x07\x62y_port\x18\x0e \x03(\x0b\x32 .protocol.Statistics.ByPortEntry\x12/\n\x06\x62y_uid\x18\x0f \x03(\x0b\x32\x1f.protocol.Statistics.ByUidEntry\x12=\n\rby_executable\x18\x10 \x03(\x0b\x32&.protocol.Statistics.ByExecutableEntry\x12\x1f\n\x06\x65vents\x18\x11 \x03(\x0b\x32\x0f.protocol.Event\x1a.\n\x0c\x42yProtoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a\x30\n\x0e\x42yAddressEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a-\n\x0b\x42yHostEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a-\n\x0b\x42yPortEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a,\n\nByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\x1a\x33\n\x11\x42yExecutableEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\">\n\x0bPingRequest\x12\n\n\x02id\x18\x01 \x01(\x04\x12#\n\x05stats\x18\x02 \x01(\x0b\x32\x14.protocol.Statistics\"\x17\n\tPingReply\x12\n\n\x02id\x18\x01 \x01(\x04\"\xc5\x01\n\nConnection\x12\x10\n\x08protocol\x18\x01 \x01(\t\x12\x0e\n\x06src_ip\x18\x02 \x01(\t\x12\x10\n\x08src_port\x18\x03 \x01(\r\x12\x0e\n\x06\x64st_ip\x18\x04 \x01(\t\x12\x10\n\x08\x64st_host\x18\x05 \x01(\t\x12\x10\n\x08\x64st_port\x18\x06 \x01(\r\x12\x0f\n\x07user_id\x18\x07 \x01(\r\x12\x12\n\nprocess_id\x18\x08 \x01(\r\x12\x14\n\x0cprocess_path\x18\t \x01(\t\x12\x14\n\x0cprocess_args\x18\n \x03(\t\"7\n\x08Operator\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0f\n\x07operand\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\t\"\\\n\x04Rule\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\t\x12\x10\n\x08\x64uration\x18\x03 \x01(\t\x12$\n\x08operator\x18\x04 \x01(\x0b\x32\x12.protocol.Operator\"\x95\x01\n\x0c\x43lientConfig\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x19\n\x11isFirewallRunning\x18\x04 \x01(\x08\x12\x0e\n\x06\x63onfig\x18\x05 \x01(\t\x12\x10\n\x08logLevel\x18\x06 \x01(\r\x12\x1d\n\x05rules\x18\x07 \x03(\x0b\x32\x0e.protocol.Rule\"\x8f\x01\n\x0cNotification\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x12\n\nclientName\x18\x02 \x01(\t\x12\x12\n\nserverName\x18\x03 \x01(\t\x12\x1e\n\x04type\x18\x04 \x01(\x0e\x32\x10.protocol.Action\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\t\x12\x1d\n\x05rules\x18\x06 \x03(\x0b\x32\x0e.protocol.Rule*\x89\x01\n\x06\x41\x63tion\x12\x08\n\x04NONE\x10\x00\x12\x11\n\rLOAD_FIREWALL\x10\x01\x12\x13\n\x0fUNLOAD_FIREWALL\x10\x02\x12\x11\n\rCHANGE_CONFIG\x10\x03\x12\x0f\n\x0b\x45NABLE_RULE\x10\x04\x12\x10\n\x0c\x44ISABLE_RULE\x10\x05\x12\r\n\tLOG_LEVEL\x10\x06\x12\x08\n\x04STOP\x10\x07\x32\xb4\x01\n\x02UI\x12\x34\n\x04Ping\x12\x15.protocol.PingRequest\x1a\x13.protocol.PingReply\"\x00\x12\x31\n\x07\x41skRule\x12\x14.protocol.Connection\x1a\x0e.protocol.Rule\"\x00\x12\x45\n\rNotifications\x12\x16.protocol.ClientConfig\x1a\x16.protocol.Notification\"\x00(\x01\x30\x01\x62\x06proto3')
|
||||
)
|
||||
|
||||
_ACTION = _descriptor.EnumDescriptor(
|
||||
name='Action',
|
||||
full_name='protocol.Action',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
values=[
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='NONE', index=0, number=0,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='LOAD_FIREWALL', index=1, number=1,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='UNLOAD_FIREWALL', index=2, number=2,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='CHANGE_CONFIG', index=3, number=3,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='ENABLE_RULE', index=4, number=4,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='DISABLE_RULE', index=5, number=5,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='LOG_LEVEL', index=6, number=6,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='STOP', index=7, number=7,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
],
|
||||
containing_type=None,
|
||||
serialized_options=None,
|
||||
serialized_start=1710,
|
||||
serialized_end=1847,
|
||||
)
|
||||
_sym_db.RegisterEnumDescriptor(_ACTION)
|
||||
|
||||
Action = enum_type_wrapper.EnumTypeWrapper(_ACTION)
|
||||
NONE = 0
|
||||
LOAD_FIREWALL = 1
|
||||
UNLOAD_FIREWALL = 2
|
||||
CHANGE_CONFIG = 3
|
||||
ENABLE_RULE = 4
|
||||
DISABLE_RULE = 5
|
||||
LOG_LEVEL = 6
|
||||
STOP = 7
|
||||
|
||||
|
||||
|
||||
|
@ -38,28 +95,28 @@ _EVENT = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='connection', full_name='protocol.Event.connection', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='rule', full_name='protocol.Event.rule', index=2,
|
||||
number=3, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -83,21 +140,21 @@ _STATISTICS_BYPROTOENTRY = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='protocol.Statistics.ByProtoEntry.value', index=1,
|
||||
number=2, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
serialized_options=_b('8\001'),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -120,21 +177,21 @@ _STATISTICS_BYADDRESSENTRY = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='protocol.Statistics.ByAddressEntry.value', index=1,
|
||||
number=2, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
serialized_options=_b('8\001'),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -157,21 +214,21 @@ _STATISTICS_BYHOSTENTRY = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='protocol.Statistics.ByHostEntry.value', index=1,
|
||||
number=2, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
serialized_options=_b('8\001'),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -194,21 +251,21 @@ _STATISTICS_BYPORTENTRY = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='protocol.Statistics.ByPortEntry.value', index=1,
|
||||
number=2, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
serialized_options=_b('8\001'),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -231,21 +288,21 @@ _STATISTICS_BYUIDENTRY = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='protocol.Statistics.ByUidEntry.value', index=1,
|
||||
number=2, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
serialized_options=_b('8\001'),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -268,21 +325,21 @@ _STATISTICS_BYEXECUTABLEENTRY = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='protocol.Statistics.ByExecutableEntry.value', index=1,
|
||||
number=2, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
serialized_options=_b('8\001'),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -305,126 +362,126 @@ _STATISTICS = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='rules', full_name='protocol.Statistics.rules', index=1,
|
||||
number=2, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='uptime', full_name='protocol.Statistics.uptime', index=2,
|
||||
number=3, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='dns_responses', full_name='protocol.Statistics.dns_responses', index=3,
|
||||
number=4, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='connections', full_name='protocol.Statistics.connections', index=4,
|
||||
number=5, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='ignored', full_name='protocol.Statistics.ignored', index=5,
|
||||
number=6, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='accepted', full_name='protocol.Statistics.accepted', index=6,
|
||||
number=7, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='dropped', full_name='protocol.Statistics.dropped', index=7,
|
||||
number=8, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='rule_hits', full_name='protocol.Statistics.rule_hits', index=8,
|
||||
number=9, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='rule_misses', full_name='protocol.Statistics.rule_misses', index=9,
|
||||
number=10, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='by_proto', full_name='protocol.Statistics.by_proto', index=10,
|
||||
number=11, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='by_address', full_name='protocol.Statistics.by_address', index=11,
|
||||
number=12, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='by_host', full_name='protocol.Statistics.by_host', index=12,
|
||||
number=13, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='by_port', full_name='protocol.Statistics.by_port', index=13,
|
||||
number=14, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='by_uid', full_name='protocol.Statistics.by_uid', index=14,
|
||||
number=15, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='by_executable', full_name='protocol.Statistics.by_executable', index=15,
|
||||
number=16, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='events', full_name='protocol.Statistics.events', index=16,
|
||||
number=17, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[_STATISTICS_BYPROTOENTRY, _STATISTICS_BYADDRESSENTRY, _STATISTICS_BYHOSTENTRY, _STATISTICS_BYPORTENTRY, _STATISTICS_BYUIDENTRY, _STATISTICS_BYEXECUTABLEENTRY, ],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -448,21 +505,21 @@ _PINGREQUEST = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='stats', full_name='protocol.PingRequest.stats', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -486,14 +543,14 @@ _PINGREPLY = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -517,77 +574,77 @@ _CONNECTION = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='src_ip', full_name='protocol.Connection.src_ip', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='src_port', full_name='protocol.Connection.src_port', index=2,
|
||||
number=3, type=13, cpp_type=3, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='dst_ip', full_name='protocol.Connection.dst_ip', index=3,
|
||||
number=4, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='dst_host', full_name='protocol.Connection.dst_host', index=4,
|
||||
number=5, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='dst_port', full_name='protocol.Connection.dst_port', index=5,
|
||||
number=6, type=13, cpp_type=3, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='user_id', full_name='protocol.Connection.user_id', index=6,
|
||||
number=7, type=13, cpp_type=3, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='process_id', full_name='protocol.Connection.process_id', index=7,
|
||||
number=8, type=13, cpp_type=3, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='process_path', full_name='protocol.Connection.process_path', index=8,
|
||||
number=9, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='process_args', full_name='protocol.Connection.process_args', index=9,
|
||||
number=10, type=9, cpp_type=9, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -611,28 +668,28 @@ _OPERATOR = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='operand', full_name='protocol.Operator.operand', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='data', full_name='protocol.Operator.data', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -656,35 +713,35 @@ _RULE = _descriptor.Descriptor(
|
|||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='action', full_name='protocol.Rule.action', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='duration', full_name='protocol.Rule.duration', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='operator', full_name='protocol.Rule.operator', index=3,
|
||||
number=4, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
|
@ -694,6 +751,145 @@ _RULE = _descriptor.Descriptor(
|
|||
serialized_end=1409,
|
||||
)
|
||||
|
||||
|
||||
_CLIENTCONFIG = _descriptor.Descriptor(
|
||||
name='ClientConfig',
|
||||
full_name='protocol.ClientConfig',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
containing_type=None,
|
||||
fields=[
|
||||
_descriptor.FieldDescriptor(
|
||||
name='id', full_name='protocol.ClientConfig.id', index=0,
|
||||
number=1, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='name', full_name='protocol.ClientConfig.name', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='version', full_name='protocol.ClientConfig.version', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='isFirewallRunning', full_name='protocol.ClientConfig.isFirewallRunning', index=3,
|
||||
number=4, type=8, cpp_type=7, label=1,
|
||||
has_default_value=False, default_value=False,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='config', full_name='protocol.ClientConfig.config', index=4,
|
||||
number=5, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='logLevel', full_name='protocol.ClientConfig.logLevel', index=5,
|
||||
number=6, type=13, cpp_type=3, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='rules', full_name='protocol.ClientConfig.rules', index=6,
|
||||
number=7, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1412,
|
||||
serialized_end=1561,
|
||||
)
|
||||
|
||||
|
||||
_NOTIFICATION = _descriptor.Descriptor(
|
||||
name='Notification',
|
||||
full_name='protocol.Notification',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
containing_type=None,
|
||||
fields=[
|
||||
_descriptor.FieldDescriptor(
|
||||
name='id', full_name='protocol.Notification.id', index=0,
|
||||
number=1, type=4, cpp_type=4, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='clientName', full_name='protocol.Notification.clientName', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='serverName', full_name='protocol.Notification.serverName', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='type', full_name='protocol.Notification.type', index=3,
|
||||
number=4, type=14, cpp_type=8, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='data', full_name='protocol.Notification.data', index=4,
|
||||
number=5, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='rules', full_name='protocol.Notification.rules', index=5,
|
||||
number=6, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1564,
|
||||
serialized_end=1707,
|
||||
)
|
||||
|
||||
_EVENT.fields_by_name['connection'].message_type = _CONNECTION
|
||||
_EVENT.fields_by_name['rule'].message_type = _RULE
|
||||
_STATISTICS_BYPROTOENTRY.containing_type = _STATISTICS
|
||||
|
@ -711,6 +907,9 @@ _STATISTICS.fields_by_name['by_executable'].message_type = _STATISTICS_BYEXECUTA
|
|||
_STATISTICS.fields_by_name['events'].message_type = _EVENT
|
||||
_PINGREQUEST.fields_by_name['stats'].message_type = _STATISTICS
|
||||
_RULE.fields_by_name['operator'].message_type = _OPERATOR
|
||||
_CLIENTCONFIG.fields_by_name['rules'].message_type = _RULE
|
||||
_NOTIFICATION.fields_by_name['type'].enum_type = _ACTION
|
||||
_NOTIFICATION.fields_by_name['rules'].message_type = _RULE
|
||||
DESCRIPTOR.message_types_by_name['Event'] = _EVENT
|
||||
DESCRIPTOR.message_types_by_name['Statistics'] = _STATISTICS
|
||||
DESCRIPTOR.message_types_by_name['PingRequest'] = _PINGREQUEST
|
||||
|
@ -718,62 +917,65 @@ DESCRIPTOR.message_types_by_name['PingReply'] = _PINGREPLY
|
|||
DESCRIPTOR.message_types_by_name['Connection'] = _CONNECTION
|
||||
DESCRIPTOR.message_types_by_name['Operator'] = _OPERATOR
|
||||
DESCRIPTOR.message_types_by_name['Rule'] = _RULE
|
||||
DESCRIPTOR.message_types_by_name['ClientConfig'] = _CLIENTCONFIG
|
||||
DESCRIPTOR.message_types_by_name['Notification'] = _NOTIFICATION
|
||||
DESCRIPTOR.enum_types_by_name['Action'] = _ACTION
|
||||
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
|
||||
|
||||
Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), dict(
|
||||
DESCRIPTOR = _EVENT,
|
||||
__module__ = 'ui_pb2'
|
||||
Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), {
|
||||
'DESCRIPTOR' : _EVENT,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Event)
|
||||
))
|
||||
})
|
||||
_sym_db.RegisterMessage(Event)
|
||||
|
||||
Statistics = _reflection.GeneratedProtocolMessageType('Statistics', (_message.Message,), dict(
|
||||
Statistics = _reflection.GeneratedProtocolMessageType('Statistics', (_message.Message,), {
|
||||
|
||||
ByProtoEntry = _reflection.GeneratedProtocolMessageType('ByProtoEntry', (_message.Message,), dict(
|
||||
DESCRIPTOR = _STATISTICS_BYPROTOENTRY,
|
||||
__module__ = 'ui_pb2'
|
||||
'ByProtoEntry' : _reflection.GeneratedProtocolMessageType('ByProtoEntry', (_message.Message,), {
|
||||
'DESCRIPTOR' : _STATISTICS_BYPROTOENTRY,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Statistics.ByProtoEntry)
|
||||
))
|
||||
})
|
||||
,
|
||||
|
||||
ByAddressEntry = _reflection.GeneratedProtocolMessageType('ByAddressEntry', (_message.Message,), dict(
|
||||
DESCRIPTOR = _STATISTICS_BYADDRESSENTRY,
|
||||
__module__ = 'ui_pb2'
|
||||
'ByAddressEntry' : _reflection.GeneratedProtocolMessageType('ByAddressEntry', (_message.Message,), {
|
||||
'DESCRIPTOR' : _STATISTICS_BYADDRESSENTRY,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Statistics.ByAddressEntry)
|
||||
))
|
||||
})
|
||||
,
|
||||
|
||||
ByHostEntry = _reflection.GeneratedProtocolMessageType('ByHostEntry', (_message.Message,), dict(
|
||||
DESCRIPTOR = _STATISTICS_BYHOSTENTRY,
|
||||
__module__ = 'ui_pb2'
|
||||
'ByHostEntry' : _reflection.GeneratedProtocolMessageType('ByHostEntry', (_message.Message,), {
|
||||
'DESCRIPTOR' : _STATISTICS_BYHOSTENTRY,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Statistics.ByHostEntry)
|
||||
))
|
||||
})
|
||||
,
|
||||
|
||||
ByPortEntry = _reflection.GeneratedProtocolMessageType('ByPortEntry', (_message.Message,), dict(
|
||||
DESCRIPTOR = _STATISTICS_BYPORTENTRY,
|
||||
__module__ = 'ui_pb2'
|
||||
'ByPortEntry' : _reflection.GeneratedProtocolMessageType('ByPortEntry', (_message.Message,), {
|
||||
'DESCRIPTOR' : _STATISTICS_BYPORTENTRY,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Statistics.ByPortEntry)
|
||||
))
|
||||
})
|
||||
,
|
||||
|
||||
ByUidEntry = _reflection.GeneratedProtocolMessageType('ByUidEntry', (_message.Message,), dict(
|
||||
DESCRIPTOR = _STATISTICS_BYUIDENTRY,
|
||||
__module__ = 'ui_pb2'
|
||||
'ByUidEntry' : _reflection.GeneratedProtocolMessageType('ByUidEntry', (_message.Message,), {
|
||||
'DESCRIPTOR' : _STATISTICS_BYUIDENTRY,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Statistics.ByUidEntry)
|
||||
))
|
||||
})
|
||||
,
|
||||
|
||||
ByExecutableEntry = _reflection.GeneratedProtocolMessageType('ByExecutableEntry', (_message.Message,), dict(
|
||||
DESCRIPTOR = _STATISTICS_BYEXECUTABLEENTRY,
|
||||
__module__ = 'ui_pb2'
|
||||
'ByExecutableEntry' : _reflection.GeneratedProtocolMessageType('ByExecutableEntry', (_message.Message,), {
|
||||
'DESCRIPTOR' : _STATISTICS_BYEXECUTABLEENTRY,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Statistics.ByExecutableEntry)
|
||||
))
|
||||
})
|
||||
,
|
||||
DESCRIPTOR = _STATISTICS,
|
||||
__module__ = 'ui_pb2'
|
||||
'DESCRIPTOR' : _STATISTICS,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Statistics)
|
||||
))
|
||||
})
|
||||
_sym_db.RegisterMessage(Statistics)
|
||||
_sym_db.RegisterMessage(Statistics.ByProtoEntry)
|
||||
_sym_db.RegisterMessage(Statistics.ByAddressEntry)
|
||||
|
@ -782,63 +984,71 @@ _sym_db.RegisterMessage(Statistics.ByPortEntry)
|
|||
_sym_db.RegisterMessage(Statistics.ByUidEntry)
|
||||
_sym_db.RegisterMessage(Statistics.ByExecutableEntry)
|
||||
|
||||
PingRequest = _reflection.GeneratedProtocolMessageType('PingRequest', (_message.Message,), dict(
|
||||
DESCRIPTOR = _PINGREQUEST,
|
||||
__module__ = 'ui_pb2'
|
||||
PingRequest = _reflection.GeneratedProtocolMessageType('PingRequest', (_message.Message,), {
|
||||
'DESCRIPTOR' : _PINGREQUEST,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.PingRequest)
|
||||
))
|
||||
})
|
||||
_sym_db.RegisterMessage(PingRequest)
|
||||
|
||||
PingReply = _reflection.GeneratedProtocolMessageType('PingReply', (_message.Message,), dict(
|
||||
DESCRIPTOR = _PINGREPLY,
|
||||
__module__ = 'ui_pb2'
|
||||
PingReply = _reflection.GeneratedProtocolMessageType('PingReply', (_message.Message,), {
|
||||
'DESCRIPTOR' : _PINGREPLY,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.PingReply)
|
||||
))
|
||||
})
|
||||
_sym_db.RegisterMessage(PingReply)
|
||||
|
||||
Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), dict(
|
||||
DESCRIPTOR = _CONNECTION,
|
||||
__module__ = 'ui_pb2'
|
||||
Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), {
|
||||
'DESCRIPTOR' : _CONNECTION,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Connection)
|
||||
))
|
||||
})
|
||||
_sym_db.RegisterMessage(Connection)
|
||||
|
||||
Operator = _reflection.GeneratedProtocolMessageType('Operator', (_message.Message,), dict(
|
||||
DESCRIPTOR = _OPERATOR,
|
||||
__module__ = 'ui_pb2'
|
||||
Operator = _reflection.GeneratedProtocolMessageType('Operator', (_message.Message,), {
|
||||
'DESCRIPTOR' : _OPERATOR,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Operator)
|
||||
))
|
||||
})
|
||||
_sym_db.RegisterMessage(Operator)
|
||||
|
||||
Rule = _reflection.GeneratedProtocolMessageType('Rule', (_message.Message,), dict(
|
||||
DESCRIPTOR = _RULE,
|
||||
__module__ = 'ui_pb2'
|
||||
Rule = _reflection.GeneratedProtocolMessageType('Rule', (_message.Message,), {
|
||||
'DESCRIPTOR' : _RULE,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Rule)
|
||||
))
|
||||
})
|
||||
_sym_db.RegisterMessage(Rule)
|
||||
|
||||
ClientConfig = _reflection.GeneratedProtocolMessageType('ClientConfig', (_message.Message,), {
|
||||
'DESCRIPTOR' : _CLIENTCONFIG,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.ClientConfig)
|
||||
})
|
||||
_sym_db.RegisterMessage(ClientConfig)
|
||||
|
||||
_STATISTICS_BYPROTOENTRY.has_options = True
|
||||
_STATISTICS_BYPROTOENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
_STATISTICS_BYADDRESSENTRY.has_options = True
|
||||
_STATISTICS_BYADDRESSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
_STATISTICS_BYHOSTENTRY.has_options = True
|
||||
_STATISTICS_BYHOSTENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
_STATISTICS_BYPORTENTRY.has_options = True
|
||||
_STATISTICS_BYPORTENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
_STATISTICS_BYUIDENTRY.has_options = True
|
||||
_STATISTICS_BYUIDENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
_STATISTICS_BYEXECUTABLEENTRY.has_options = True
|
||||
_STATISTICS_BYEXECUTABLEENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
Notification = _reflection.GeneratedProtocolMessageType('Notification', (_message.Message,), {
|
||||
'DESCRIPTOR' : _NOTIFICATION,
|
||||
'__module__' : 'ui_pb2'
|
||||
# @@protoc_insertion_point(class_scope:protocol.Notification)
|
||||
})
|
||||
_sym_db.RegisterMessage(Notification)
|
||||
|
||||
|
||||
_STATISTICS_BYPROTOENTRY._options = None
|
||||
_STATISTICS_BYADDRESSENTRY._options = None
|
||||
_STATISTICS_BYHOSTENTRY._options = None
|
||||
_STATISTICS_BYPORTENTRY._options = None
|
||||
_STATISTICS_BYUIDENTRY._options = None
|
||||
_STATISTICS_BYEXECUTABLEENTRY._options = None
|
||||
|
||||
_UI = _descriptor.ServiceDescriptor(
|
||||
name='UI',
|
||||
full_name='protocol.UI',
|
||||
file=DESCRIPTOR,
|
||||
index=0,
|
||||
options=None,
|
||||
serialized_start=1411,
|
||||
serialized_end=1520,
|
||||
serialized_options=None,
|
||||
serialized_start=1850,
|
||||
serialized_end=2030,
|
||||
methods=[
|
||||
_descriptor.MethodDescriptor(
|
||||
name='Ping',
|
||||
|
@ -847,7 +1057,7 @@ _UI = _descriptor.ServiceDescriptor(
|
|||
containing_service=None,
|
||||
input_type=_PINGREQUEST,
|
||||
output_type=_PINGREPLY,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
),
|
||||
_descriptor.MethodDescriptor(
|
||||
name='AskRule',
|
||||
|
@ -856,7 +1066,16 @@ _UI = _descriptor.ServiceDescriptor(
|
|||
containing_service=None,
|
||||
input_type=_CONNECTION,
|
||||
output_type=_RULE,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
),
|
||||
_descriptor.MethodDescriptor(
|
||||
name='Notifications',
|
||||
full_name='protocol.UI.Notifications',
|
||||
index=2,
|
||||
containing_service=None,
|
||||
input_type=_CLIENTCONFIG,
|
||||
output_type=_NOTIFICATION,
|
||||
serialized_options=None,
|
||||
),
|
||||
])
|
||||
_sym_db.RegisterServiceDescriptor(_UI)
|
||||
|
|
|
@ -24,6 +24,11 @@ class UIStub(object):
|
|||
request_serializer=ui__pb2.Connection.SerializeToString,
|
||||
response_deserializer=ui__pb2.Rule.FromString,
|
||||
)
|
||||
self.Notifications = channel.stream_stream(
|
||||
'/protocol.UI/Notifications',
|
||||
request_serializer=ui__pb2.ClientConfig.SerializeToString,
|
||||
response_deserializer=ui__pb2.Notification.FromString,
|
||||
)
|
||||
|
||||
|
||||
class UIServicer(object):
|
||||
|
@ -44,6 +49,13 @@ class UIServicer(object):
|
|||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def Notifications(self, request_iterator, context):
|
||||
# missing associated documentation comment in .proto file
|
||||
pass
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
|
||||
def add_UIServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
|
@ -57,6 +69,11 @@ def add_UIServicer_to_server(servicer, server):
|
|||
request_deserializer=ui__pb2.Connection.FromString,
|
||||
response_serializer=ui__pb2.Rule.SerializeToString,
|
||||
),
|
||||
'Notifications': grpc.stream_stream_rpc_method_handler(
|
||||
servicer.Notifications,
|
||||
request_deserializer=ui__pb2.ClientConfig.FromString,
|
||||
response_serializer=ui__pb2.Notification.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
'protocol.UI', rpc_method_handlers)
|
||||
|
|
Loading…
Add table
Reference in a new issue