def check_valid_ips(self, split_tunneling_content): for ip in split_tunneling_content: if not is_valid_ip(ip): # dialog_window.update_dialog(label="<b>{0}</b> is not valid!\nNone of the IP's were added, please try again with a different IP.".format(ip)) gui_logger.debug("[!] Invalid IP \"{0}\".".format(ip)) return (False, ip) return True
def update_split_tunneling(interface, messagedialog_label, messagedialog_spinner): """Function that updates split tunneling configurations. """ result = "Split tunneling configurations <b>updated</b>!\n" split_tunneling_buffer = interface.get_object( "split_tunneling_textview").get_buffer() # Get text takes a start_iter, end_iter and the buffer itself as last param split_tunneling_content = split_tunneling_buffer.get_text( split_tunneling_buffer.get_start_iter(), split_tunneling_buffer.get_end_iter(), split_tunneling_buffer) # Split IP/CIDR by either ";" and/or "\n" split_tunneling_content = re.split('[;\n]', split_tunneling_content) # Remove empty spaces split_tunneling_content = [ content.strip() for content in split_tunneling_content ] # Remove empty list elements split_tunneling_content = list(filter(None, split_tunneling_content)) for ip in split_tunneling_content: if not is_valid_ip(ip): messagedialog_spinner.hide() messagedialog_label.set_markup( "<b>{0}</b> is not valid!\nNone of the IP's were added, please try again with a different IP." .format(ip)) gui_logger.debug("[!] Invalid IP \"{0}\".".format(ip)) return gui_logger.debug(">>> Running \"set_split_tunnel\".") if len(split_tunneling_content) == 0: set_config_value("USER", "split_tunnel", 0) if os.path.isfile(SPLIT_TUNNEL_FILE): os.remove(SPLIT_TUNNEL_FILE) result = "Split tunneling <b>disabled</b>!\n\n" if int(get_config_value("USER", "killswitch")): set_config_value("USER", "killswitch", 0) result = result + "Split Tunneling <b>can't</b> be used with Kill Switch.\nKill Switch has been <b>disabled</b>!\n\n" time.sleep(1) set_config_value("USER", "split_tunnel", 1) with open(SPLIT_TUNNEL_FILE, "w") as f: for ip in split_tunneling_content: f.write("\n{0}".format(ip)) if os.path.isfile(SPLIT_TUNNEL_FILE): change_file_owner(SPLIT_TUNNEL_FILE) if len(split_tunneling_content) > 0: result = result + "The following servers were added:\n\n{}".format( [ip for ip in split_tunneling_content]) else: # If no no config file exists, # split tunneling should be disabled again gui_logger.debug("No split tunneling file existing.") set_config_value("USER", "split_tunnel", 0) result = "No split tunneling file was found, split tunneling will be <b>disabled</b>!\n\n" messagedialog_label.set_markup(result) messagedialog_spinner.hide() gui_logger.debug(">>> Result: \"{0}\"".format(result)) gui_logger.debug(">>> Ended tasks in \"set_split_tunnel\" thread.")
def test_incorrect_ip(self, ip): assert not is_valid_ip(ip)