Skip to content

Commit 12d523b

Browse files
ui,fw: rules fixes
- Select correctly fw rules by node, table, etc. - minor change to nodes.
1 parent 9b1ae17 commit 12d523b

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

ui/opensnitch/dialogs/stats.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2167,6 +2167,7 @@ def _cb_rules_tree_item_clicked(self, item, col):
21672167
parent_row = -1
21682168
node_addr = ""
21692169
fw_table = ""
2170+
item_text = item.text(0)
21702171

21712172
rulesHeader = self.rulesTable.horizontalHeader()
21722173
self._cfg.setSettings(Config.STATS_RULES_COL_STATE, rulesHeader.saveState())
@@ -2193,8 +2194,14 @@ def _cb_rules_tree_item_clicked(self, item, col):
21932194
if parent.parent() != None:
21942195
parent = parent.parent()
21952196
parent_model = self.rulesTreePanel.indexFromItem(parent.parent(), 0)
2196-
item_row = self.FILTER_TREE_FW_CHAIN
21972197
parent_row = self.RULES_TREE_FIREWALL
2198+
item_row = self.FILTER_TREE_FW_CHAIN
2199+
item_text = item.data(0, QtCore.Qt.ItemDataRole.UserRole)
2200+
# node
2201+
else:
2202+
if parent_row == self.RULES_TREE_FIREWALL:
2203+
item_row = self.FILTER_TREE_FW_NODE
2204+
node_addr = item_text
21982205

21992206
if node_addr == None:
22002207
return
@@ -2206,7 +2213,7 @@ def _cb_rules_tree_item_clicked(self, item, col):
22062213
self.rulesTable.setVisible(not showFwTable and not showAlertsTable)
22072214
self.rulesScrollBar.setVisible(not showFwTable)
22082215

2209-
self._set_rules_filter(parent_row, item_row, item.text(0), node_addr, fw_table)
2216+
self._set_rules_filter(parent_row, item_row, item_text, node_addr, fw_table)
22102217

22112218
def _cb_splitter_moved(self, tab, pos, index):
22122219
if tab == self.TAB_RULES:
@@ -2444,7 +2451,8 @@ def _add_rulesTree_fw_chains(self):
24442451
chains = self._fw.get_chains()
24452452
for addr in chains:
24462453
# add nodes
2447-
nodeRoot = QtWidgets.QTreeWidgetItem(["{0}".format(addr)])
2454+
hostname = self._nodes.get_node_hostname(addr)
2455+
nodeRoot = QtWidgets.QTreeWidgetItem([addr, hostname])
24482456
nodeRoot.setData(0, QtCore.Qt.ItemDataRole.UserRole, addr)
24492457
fwItem.addChild(nodeRoot)
24502458
for nodeChains in chains[addr]:
@@ -2460,6 +2468,12 @@ def _add_rulesTree_fw_chains(self):
24602468
chainName = "{0}-{1}".format(cc.Name, cc.Hook)
24612469
nodeChain = QtWidgets.QTreeWidgetItem([chainName, cc.Policy])
24622470
nodeChain.setData(0, QtCore.Qt.ItemDataRole.UserRole, "{0}-{1}".format(addr, chainName))
2471+
nodeChain.setData(
2472+
0,
2473+
QtCore.Qt.ItemDataRole.UserRole,
2474+
# key to identify this chain
2475+
"{0}#{1}#{2}".format(addr, cc.Hook, cc.Name)
2476+
)
24632477

24642478
items = self._find_tree_fw_items("{0}-{1}".format(addr, tableName))
24652479
if len(items) == 0:
@@ -3167,9 +3181,13 @@ def _set_rules_filter(self, parent_row=-1, item_row=0, what="", what1="", what2=
31673181
return
31683182
self.TABLES[self.TAB_FIREWALL]['view'].filterByTable(what1, parm[0], parm[1])
31693183
elif item_row == self.FILTER_TREE_FW_CHAIN: # + table
3170-
parm = what.split("-")
3171-
tbl = what1.split("-")
3172-
self.TABLES[self.TAB_FIREWALL]['view'].filterByChain(what2, tbl[0], tbl[1], parm[0], parm[1])
3184+
# 1. addr, 2. hook, 3. chainname
3185+
try:
3186+
parm = what.split("#")
3187+
tbl = what1.split("-")
3188+
self.TABLES[self.TAB_FIREWALL]['view'].filterByChain(what2, tbl[0], tbl[1], parm[2], parm[1])
3189+
except Exception as e:
3190+
print("Exception loading firewall chains:", what, ",", what1, "-", e)
31733191
return
31743192

31753193
if section == self.FILTER_TREE_APPS:

ui/opensnitch/nodes.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -373,14 +373,15 @@ def stop_notifications(self):
373373
def update(self, peer, status=ONLINE):
374374
try:
375375
proto, addr = self.get_addr(peer)
376+
naddr = "{0}:{1}".format(proto, addr)
376377
self._db.update("nodes",
377378
"hostname=?,version=?,last_connection=?,status=?",
378379
(
379-
self._nodes[proto+":"+addr]['data'].name,
380-
self._nodes[proto+":"+addr]['data'].version,
380+
self._nodes[naddr]['data'].name,
381+
self._nodes[naddr]['data'].version,
381382
datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
382383
status,
383-
"{0}:{1}".format(proto, addr)),
384+
naddr),
384385
"addr=?"
385386
)
386387
except Exception as e:

0 commit comments

Comments
 (0)