def processing(self): # User-specified hosts are converted to the nearest 2 powers for hosts in self.network_hosts.split(","): if int(hosts) > 0: hosts = int(hosts) + 2 self.length_of_subnets.append(power_bit_length(int(hosts))) # The largest host network will be pre-sorting self.length_of_subnets.sort(reverse=True) sum_all_hosts = sum(self.length_of_subnets) if is_empty(self.prefix): first_octet = int(self.network_ip.split(".")[0]) # Determining what could be the default mask based on network address if 1 <= first_octet < 128: if sum_all_hosts <= pow(2, 24): self.inject_data_to_dict() else: PopupWindow("warning", self.ml.get_tr_text("tab_vlsm_warning06"), self.endpoint_numbers_per_network_input) elif 128 <= first_octet < 192: if sum_all_hosts <= pow(2, 16): self.inject_data_to_dict() else: PopupWindow("warning", self.ml.get_tr_text("tab_vlsm_warning07"), self.endpoint_numbers_per_network_input) elif 192 <= first_octet < 224: if sum_all_hosts <= pow(2, 8): self.inject_data_to_dict() else: PopupWindow("warning", self.ml.get_tr_text("tab_vlsm_warning08"), self.endpoint_numbers_per_network_input) else: if sum_all_hosts <= pow(2, 32 - int(self.prefix)): self.inject_data_to_dict() else: s1 = self.ml.get_tr_text("tab_vlsm_warning09a") s2 = self.ml.get_tr_text("tab_vlsm_warning09b") PopupWindow("warning", f"{s1} /{self.prefix} {s2}", self.endpoint_numbers_per_network_input)
def source_hex(self, hex_number): hex_number_corrected = get_corrected_number(hex_number).upper() if not is_correct_hexadecimal(hex_number_corrected): PopupWindow("warning", self.ml.get_tr_text("tab_num_conv_warning04"), self.input_number_textfield) else: if 0 <= int(hex_number_corrected, 16) <= 255: self.bin_format_base = bin(int(hex_number_corrected, 16)).replace("0b", "") self.bin_format_base_byte = self.bin_format_base.rjust(8, "0") if self.bin_format_base != self.bin_format_base_byte: bin_format = get_bin_format( self.bin_format_base, self.ml.get_tr_text("byte_format_str"), self.bin_format_base_byte) else: bin_format = self.bin_format_base else: bin_format = bin(int(hex_number_corrected, 16)).replace("0b", "") dec_format = str(int(hex_number_corrected, 16)) hex_format = hex_number_corrected self.bin_output.setText(bin_format) self.dec_output.setText(dec_format) self.hex_output.setText(hex_format)
def source_bin(self, bin_number): bin_number_corrected = get_corrected_number(bin_number) bin_number_corrected_byte = bin_number_corrected.rjust(8, "0") if not is_correct_binary(bin_number_corrected): PopupWindow("warning", self.ml.get_tr_text("tab_num_conv_warning02"), self.input_number_textfield) else: if 0 <= int(bin_number_corrected, 2) <= 255: if bin_number_corrected != bin_number_corrected_byte: self.bin_format_base = bin_number_corrected self.bin_format_base_byte = bin_number_corrected_byte bin_format = get_bin_format( self.bin_format_base, self.ml.get_tr_text("byte_format_str"), self.bin_format_base_byte) else: bin_format = self.bin_format_base else: bin_format = bin_number_corrected dec_format = str(int(bin_number_corrected, 2)) hex_format = hex(int(bin_number_corrected, 2)).replace("0x", "").upper() self.bin_output.setText(bin_format) self.dec_output.setText(dec_format) self.hex_output.setText(hex_format)
def check_input(self): # If the starting network address is empty if is_empty(self.starting_network_address_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_ipsubnet_warning01"), self.starting_network_address_input) return False else: # If the starting network address is incorrect if not is_correct_network_address(self.starting_network_address_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_ipsubnet_warning02"), self.starting_network_address_input) return False # If number of subnets is empty if is_empty(self.number_of_subnets_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_ipsubnet_warning03"), self.number_of_subnets_input) return False else: # If number of subnets is incorrect if not is_correct_number_of_subnets(self.number_of_subnets_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_ipsubnet_warning04"), self.number_of_subnets_input) return False self.storing_input_data() # If max addressable host least two and have least one needed network if self.get_max_addressable_hosts() >= 2 and int(self.needed_networks) >= 1: return True else: # Unreal subnet number PopupWindow("warning", self.ml.get_tr_text("tab_ipsubnet_warning05"), self.number_of_subnets_input) return False
def convert_action_2(self): if is_empty(self.input_textfield.text()): PopupWindow("warning", self.ml.get_tr_text("tab_num_conv_warning05"), self.input_textfield) elif self.dec_to_bin_button.isChecked(): if is_correct_any_ip_dec(self.input_textfield.text()): self.output_textfield.setText( dec_to_bin(self.input_textfield.text())) else: PopupWindow("warning", self.ml.get_tr_text("tab_num_conv_warning06"), self.input_textfield) else: if is_correct_any_ip_bin(self.input_textfield.text()): self.output_textfield.setText( bin_to_dec(self.input_textfield.text())) else: PopupWindow("warning", self.ml.get_tr_text("tab_num_conv_warning07"), self.input_textfield)
def convert_action(self): if is_empty(self.input_number_textfield.text()): PopupWindow("warning", self.ml.get_tr_text("tab_num_conv_warning01"), self.input_number_textfield) else: if self.bin_button.isChecked(): self.source_bin(self.input_number_textfield.text()) elif self.dec_button.isChecked(): self.source_dec(self.input_number_textfield.text()) else: self.source_hex(self.input_number_textfield.text())
def check_input(self): # If the starting network address is empty if is_empty(self.starting_network_address_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_vlsm_warning01"), self.starting_network_address_input) return False else: # If the starting network address is incorrect if not is_correct_network_address(self.starting_network_address_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_vlsm_warning02"), self.starting_network_address_input) return False # If endpoint numbers are empty if is_empty(self.endpoint_numbers_per_network_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_vlsm_warning03"), self.endpoint_numbers_per_network_input) return False else: # If endpoint numbers are incorrect if not is_correct_endpoint_numbers_per_network(self.endpoint_numbers_per_network_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_vlsm_warning04"), self.endpoint_numbers_per_network_input) return False # If prefix is incorrect self.prefix = self.starting_network_prefix_input.text().replace("/", "").replace("\\", "") if not is_correct_prefix(self.prefix): PopupWindow("warning", self.ml.get_tr_text("tab_vlsm_warning05"), self.starting_network_prefix_input) return False return True
def convert_action(self): if is_empty(self.prefix_input.text()) and \ is_empty(self.mask_input.text()): PopupWindow("warning", self.ml.get_tr_text("tab_ip_information_warning01"), self.prefix_input) elif not is_empty(self.prefix_input.text()) and \ not is_empty(self.mask_input.text()): if is_correct_prefix(self.prefix_input.text()): prefix_corrected = self.prefix_input.text().replace( "/", "").replace("\\", "") self.mask_input.setText(get_mask_from_prefix(prefix_corrected)) else: PopupWindow( "warning", self.ml.get_tr_text("tab_ip_information_warning02"), self.prefix_input) else: if self.prefix_input.text(): if is_correct_prefix(self.prefix_input.text()): prefix_corrected = self.prefix_input.text().replace( "/", "").replace("\\", "") self.mask_input.setText( get_mask_from_prefix(prefix_corrected)) else: PopupWindow( "warning", self.ml.get_tr_text("tab_ip_information_warning02"), self.prefix_input) else: if is_correct_mask(self.mask_input.text()): self.prefix_input.setText( f"/{get_prefix_from_mask(self.mask_input.text())}") else: PopupWindow( "warning", self.ml.get_tr_text("tab_ip_information_warning03"), self.mask_input)
def get_info_action(self): if is_empty(self.ip_address_textfield.text()): PopupWindow("warning", self.ml.get_tr_text("tab_ip_information_warning04"), self.ip_address_textfield) elif is_correct_ip_with_prefix(self.ip_address_textfield.text()): ip = self.ip_address_textfield.text().split("/")[0] ip_first_octet = int(str(ip).split(".")[0]) prefix = self.ip_address_textfield.text().split("/")[1] if ip_first_octet == 127: PopupWindow( "warning", self.ml.get_tr_text("tab_ip_information_warning05"), self.ip_address_textfield) elif 224 <= ip_first_octet <= 239: PopupWindow( "warning", self.ml.get_tr_text("tab_ip_information_warning06"), self.ip_address_textfield) elif 240 <= ip_first_octet <= 254: PopupWindow( "warning", self.ml.get_tr_text("tab_ip_information_warning07"), self.ip_address_textfield) elif ip_first_octet == 255: PopupWindow( "warning", self.ml.get_tr_text("tab_ip_information_warning08"), self.ip_address_textfield) else: self.ip_class_textfield.setText( self.ml.get_tr_text(get_ip_class(ip))) self.ip_type_textfield.setText( self.ml.get_tr_text(get_ip_type(ip, prefix))) self.network_address_textfield.setText( get_network_address(ip, prefix)) self.subnet_mask_textfield.setText( get_mask_from_prefix(prefix)) self.first_addressable_ip_textfield.setText( get_first_addressable_ip(ip, prefix)) self.last_addressable_ip_textfield.setText( get_last_addressable_ip(ip, prefix)) self.broadcast_address_textfield.setText( get_broadcast_ip(ip, prefix)) self.next_network_address_textfield.setText( get_next_network_ip(ip, prefix)) self.max_endpoint_textfield.setText( get_max_endpoint_formatted(prefix)) else: PopupWindow("warning", self.ml.get_tr_text("tab_ip_information_warning09"), self.ip_address_textfield)