예제 #1
0
    def clean(self):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the targets and excluded_targets fields."""

        # Targets
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.targets,
            private_ips_allowed=True,
            sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid targets provided: {invalid_targets}")

        self.targets = targets_dict["as_nmap"]

        # Excluded targets
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.excluded_targets,
            private_ips_allowed=True,
            sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid excluded targets provided: {invalid_targets}")

        self.excluded_targets = targets_dict["as_nmap"]
예제 #2
0
    def validate(self, attrs):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the targets or excluded_targets fields."""

        # Targets
        if "targets" in attrs:
            targets = attrs["targets"]

            target_extractor = extract_targets.TargetExtractor(
                targets_string=targets,
                private_ips_allowed=True,
                sort_targets=True)
            targets_dict = target_extractor.targets_dict

            if targets_dict["invalid_targets"]:
                invalid_targets = ",".join(targets_dict["invalid_targets"])
                raise serializers.ValidationError(
                    f"Invalid targets provided: {invalid_targets}")

        # Excluded targets
        if "excluded_targets" in attrs:
            excluded_targets = attrs["excluded_targets"]

            target_extractor = extract_targets.TargetExtractor(
                targets_string=excluded_targets,
                private_ips_allowed=True,
                sort_targets=True)
            targets_dict = target_extractor.targets_dict

            if targets_dict["invalid_targets"]:
                invalid_targets = ",".join(targets_dict["invalid_targets"])
                raise serializers.ValidationError(
                    f"Invalid excluded targets provided: {invalid_targets}")

        return attrs
예제 #3
0
    def validate(self, attrs):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the targets or excluded_targets fields."""

        # TODO add scan engine / scan engine pool checks.

        # Targets
        if "targets" in attrs:
            targets = attrs["targets"]

            target_extractor = extract_targets.TargetExtractor(
                targets_string=targets,
                private_ips_allowed=True,
                sort_targets=True)
            targets_dict = target_extractor.targets_dict

            if targets_dict["invalid_targets"]:
                invalid_targets = ",".join(targets_dict["invalid_targets"])
                raise serializers.ValidationError(
                    f"Invalid targets provided: {invalid_targets}")

        # Excluded targets
        if "excluded_targets" in attrs:
            excluded_targets = attrs["excluded_targets"]

            target_extractor = extract_targets.TargetExtractor(
                targets_string=excluded_targets,
                private_ips_allowed=True,
                sort_targets=True)
            targets_dict = target_extractor.targets_dict

            if targets_dict["invalid_targets"]:
                invalid_targets = ",".join(targets_dict["invalid_targets"])
                raise serializers.ValidationError(
                    f"Invalid excluded targets provided: {invalid_targets}")

        # Email scan alerts and email address.
        if ("email_scan_alerts" in attrs) and ("email_alert_addresses"
                                               in attrs):

            email_scan_alerts = attrs["email_scan_alerts"]
            email_alert_addresses = attrs["email_alert_addresses"]

            if email_scan_alerts and not email_alert_addresses:
                raise serializers.ValidationError(
                    f"Provide an email address if enabling 'Email scan alerts'"
                )

        # Check for valid email addresseses string.
        if "email_alert_addresses" in attrs:
            """Checks that email addresses are valid and returns a cleaned up string of them to save to the database."""

            email_alert_addresses = attrs["email_alert_addresses"]
            attrs[
                "email_alert_addresses"] = email_validation_utils.validate_string_of_email_addresses(
                    email_alert_addresses)

        return attrs
예제 #4
0
파일: models.py 프로젝트: pmzhou/scantron
    def clean(self):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the targets and excluded_targets fields."""

        # Ensure only 1 scan engine / scan engine pool is selected.
        if self.scan_engine and self.scan_engine_pool:
            raise ValidationError(
                "Only select a single scan engine or scan engine pool.")

        # Ensure a scan engine or scan engine pool is selected.  Can't enforce within models.ForeignKey using
        # blank=False and null=False, because they could be blank/empty if the other scan engine or scan engine pool is
        # selected.
        if not self.scan_engine and not self.scan_engine_pool:
            raise ValidationError(
                "Select a single scan engine or scan engine pool.")

        # Targets
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.targets,
            private_ips_allowed=True,
            sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid targets provided: {invalid_targets}")

        self.targets = targets_dict["as_nmap"]

        # Excluded targets
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.excluded_targets,
            private_ips_allowed=True,
            sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid excluded targets provided: {invalid_targets}")

        self.excluded_targets = targets_dict["as_nmap"]

        # Email scan alerts and email addresses.
        if self.email_scan_alerts and not self.email_alert_addresses:
            raise ValidationError(
                f"Provide an email address if enabling 'Email scan alerts'")

        # Check for valid email addresseses string.
        if self.email_alert_addresses:
            """Checks that email addresses are valid and returns a cleaned up string of them to save to the database."""
            self.email_alert_addresses = email_validation_utils.validate_string_of_email_addresses(
                self.email_alert_addresses)
예제 #5
0
    def clean(self):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the targets and excluded_targets fields."""

        # Targets
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.targets,
            private_ips_allowed=True,
            sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid targets provided: {invalid_targets}")

        self.targets = targets_dict["as_nmap"]

        # Excluded targets
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.excluded_targets,
            private_ips_allowed=True,
            sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid excluded targets provided: {invalid_targets}")

        self.excluded_targets = targets_dict["as_nmap"]

        # Email scan alerts and email addresses.
        if self.email_scan_alerts and not self.email_alert_addresses:
            raise ValidationError(
                f"Provide an email address if enabling 'Email scan alerts'")

        # Check for valid email addresseses string.
        if self.email_alert_addresses:
            """Checks that email addresses are valid and returns a cleaned up string of them to save to the database."""
            self.email_alert_addresses = email_validation_utils.validate_string_of_email_addresses(
                self.email_alert_addresses)
예제 #6
0
    def validate(self, attrs):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the targets or excluded_targets fields."""

        # Targets
        if "targets" in attrs:
            targets = attrs["targets"]

            target_extractor = extract_targets.TargetExtractor(
                targets_string=targets,
                private_ips_allowed=True,
                sort_targets=True)
            targets_dict = target_extractor.targets_dict

            if targets_dict["invalid_targets"]:
                invalid_targets = ",".join(targets_dict["invalid_targets"])
                raise serializers.ValidationError(
                    f"Invalid targets provided: {invalid_targets}")

        # Excluded targets
        if "excluded_targets" in attrs:
            excluded_targets = attrs["excluded_targets"]

            target_extractor = extract_targets.TargetExtractor(
                targets_string=excluded_targets,
                private_ips_allowed=True,
                sort_targets=True)
            targets_dict = target_extractor.targets_dict

            if targets_dict["invalid_targets"]:
                invalid_targets = ",".join(targets_dict["invalid_targets"])
                raise serializers.ValidationError(
                    f"Invalid excluded targets provided: {invalid_targets}")

        # Email scan alerts and email addresses.
        email_scan_alerts = attrs["email_scan_alerts"]
        email_alert_address = attrs["email_alert_address"]

        if email_scan_alerts and not email_alert_address:
            raise serializers.ValidationError(
                f"Provide an email address if enabling 'Email scan alerts'")

        return attrs
예제 #7
0
    def clean(self):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the targets and excluded_targets fields."""

        # Targets
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.targets,
            private_ips_allowed=True,
            sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid targets provided: {invalid_targets}")

        self.targets = targets_dict["as_nmap"]

        # Excluded targets
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.excluded_targets,
            private_ips_allowed=True,
            sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid excluded targets provided: {invalid_targets}")

        self.excluded_targets = targets_dict["as_nmap"]

        # Email scan alerts and email addresses.
        if self.email_scan_alerts and not self.email_alert_address:
            raise ValidationError(
                f"Provide an email address if enabling 'Email scan alerts'")
예제 #8
0
    def clean(self):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the globally_excluded_targets field."""

        # Globally excluded targets.
        target_extractor = extract_targets.TargetExtractor(
            targets_string=self.globally_excluded_targets, sort_targets=True)
        targets_dict = target_extractor.targets_dict

        if targets_dict["invalid_targets"]:
            invalid_targets = ",".join(
                target_extractor.targets_dict["invalid_targets"])
            raise ValidationError(
                f"Invalid globally excluded targets provided: {invalid_targets}"
            )

        self.globally_excluded_targets = targets_dict["as_nmap"]
예제 #9
0
    def validate(self, attrs):
        """Checks for any invalid IPs, IP subnets, or FQDNs in the globally_excluded_targets field."""

        # Globally excluded targets.
        if "globally_excluded_targets" in attrs:
            globally_excluded_targets = attrs["globally_excluded_targets"]

            target_extractor = extract_targets.TargetExtractor(
                targets_string=globally_excluded_targets, sort_targets=True)
            targets_dict = target_extractor.targets_dict

            if targets_dict["invalid_targets"]:
                invalid_targets = ",".join(targets_dict["invalid_targets"])
                raise serializers.ValidationError(
                    f"Invalid globally excluded targets provided: {invalid_targets}"
                )

            attrs["globally_excluded_targets"] = targets_dict["as_nmap"]

        return attrs