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)
Example #2
0
 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)
Example #3
0
 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
Example #5
0
 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)
Example #6
0
 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
Example #8
0
 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)
Example #9
0
    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)