Skip to content

Commit 481574f

Browse files
pop-ups: generate better rule names
Continuation of previous commit.
1 parent ff22d94 commit 481574f

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

ui/opensnitch/database/__init__.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,3 +549,27 @@ def insert_rule(self, rule, node_addr):
549549
rule.action, rule.duration, rule.operator.type,
550550
str(rule.operator.sensitive), rule.operator.operand, rule.operator.data),
551551
action_on_conflict="IGNORE")
552+
553+
def rule_exists(self, rule, node_addr):
554+
qstr = "SELECT node, name, action, duration, operator_type, operator_operand, operator_data " \
555+
" FROM rules WHERE " \
556+
"name=? AND " \
557+
"node=? AND " \
558+
"action=? AND " \
559+
"duration=? AND " \
560+
"operator_type=? AND " \
561+
"operator_operand=? AND " \
562+
"operator_data=?"
563+
q = QSqlQuery(qstr, self.db)
564+
q.prepare(qstr)
565+
q.addBindValue(rule.name)
566+
q.addBindValue(node_addr)
567+
q.addBindValue(rule.action)
568+
q.addBindValue(rule.duration)
569+
q.addBindValue(rule.operator.type)
570+
q.addBindValue(rule.operator.operand)
571+
q.addBindValue(rule.operator.data)
572+
if not q.exec_() or q.next() == False:
573+
return None
574+
575+
return q

ui/opensnitch/dialogs/prompt.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,9 @@ def _send_rule(self):
653653
self._rule.operator.type = Config.RULE_TYPE_LIST
654654
self._rule.operator.operand = Config.RULE_TYPE_LIST
655655

656-
self._rule.name = self._rules.new_unique_name(rule_temp_name, self._peer, "")
656+
exists = self._rules.exists(self._rule, self._peer)
657+
if not exists:
658+
self._rule.name = self._rules.new_unique_name(rule_temp_name, self._peer, "")
657659

658660
self.hide()
659661
if self._ischeckAdvanceded:

ui/opensnitch/rules.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ def delete(self, name, addr, callback):
101101
def delete_by_field(self, field, values):
102102
return self._db.delete_rules_by_field(field, values)
103103

104+
def exists(self, rule, node_addr):
105+
return self._db.rule_exists(rule, node_addr)
106+
104107
def new_unique_name(self, rule_name, node_addr, prefix):
105108
"""generate a new name, if the supplied one already exists
106109
"""

0 commit comments

Comments
 (0)