| 31 | |
| 32 | DIALOG_UI_PATH = "%s/../res/ruleseditor.ui" % os.path.dirname(sys.modules[__name__].__file__) |
| 33 | class RulesEditorDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]): |
| 34 | |
| 35 | LOG_TAG = "[rules editor]" |
| 36 | classA_net = r'10\.\d{1,3}\.\d{1,3}\.\d{1,3}' |
| 37 | classB_net = r'172\.1[6-9]\.\d+\.\d+|172\.2[0-9]\.\d+\.\d+|172\.3[0-1]+\.\d{1,3}\.\d{1,3}' |
| 38 | classC_net = r'192\.168\.\d{1,3}\.\d{1,3}' |
| 39 | others_net = r'127\.\d{1,3}\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}' |
| 40 | multinets = r'2[32][23459]\.\d{1,3}\.\d{1,3}\.\d{1,3}' |
| 41 | MULTICAST_RANGE = "^(" + multinets + ")$" |
| 42 | LAN_RANGES = "^(" + others_net + "|" + classC_net + "|" + classB_net + "|" + classA_net + "|::1|f[cde].*::.*)$" |
| 43 | LAN_LABEL = "LAN" |
| 44 | MULTICAST_LABEL = "MULTICAST" |
| 45 | |
| 46 | INVALID_RULE_NAME_CHARS = '/' |
| 47 | |
| 48 | ADD_RULE = 0 |
| 49 | EDIT_RULE = 1 |
| 50 | WORK_MODE = ADD_RULE |
| 51 | |
| 52 | PW_USER = 0 |
| 53 | PW_UID = 2 |
| 54 | |
| 55 | _notification_callback = QtCore.pyqtSignal(str, ui_pb2.NotificationReply) |
| 56 | |
| 57 | def __init__(self, parent=None, modal=True, appicon=None): |
| 58 | super(RulesEditorDialog, self).__init__(parent) |
| 59 | |
| 60 | self._notifications_sent = {} |
| 61 | self._nodes = Nodes.instance() |
| 62 | self._db = Database.instance() |
| 63 | self._rules = Rules.instance() |
| 64 | self._notification_callback.connect(self._cb_notification_callback) |
| 65 | self._old_rule_name = None |
| 66 | |
| 67 | self.setupUi(self) |
| 68 | self.setModal(modal) |
| 69 | self.load_aliases_into_menu() |
| 70 | if appicon != None: |
| 71 | self.setWindowIcon(appicon) |
| 72 | |
| 73 | self.ruleNameValidator = qvalidator.RestrictChars(RulesEditorDialog.INVALID_RULE_NAME_CHARS) |
| 74 | self.ruleNameValidator.result.connect(self._cb_rule_name_validator_result) |
| 75 | self.ruleNameEdit.setValidator(self.ruleNameValidator) |
| 76 | |
| 77 | self.buttonBox.setStandardButtons( |
| 78 | QtWidgets.QDialogButtonBox.StandardButton.Help | |
| 79 | QtWidgets.QDialogButtonBox.StandardButton.Reset | |
| 80 | QtWidgets.QDialogButtonBox.StandardButton.Close | |
| 81 | QtWidgets.QDialogButtonBox.StandardButton.Save |
| 82 | ) |
| 83 | |
| 84 | self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Reset).clicked.connect(self._cb_reset_clicked) |
| 85 | self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Close).clicked.connect(self._cb_close_clicked) |
| 86 | self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Save).clicked.connect(self._cb_save_clicked) |
| 87 | self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Help).clicked.connect(self._cb_help_clicked) |
| 88 | self.selectListButton.clicked.connect(self._cb_select_list_button_clicked) |
| 89 | self.selectListRegexpButton.clicked.connect(self._cb_select_regexp_list_button_clicked) |
| 90 | self.selectIPsListButton.clicked.connect(self._cb_select_ips_list_button_clicked) |
no outgoing calls