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"]
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
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
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)
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)
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
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'")
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"]
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