feat(scan): несколько CIDR в одном поле, перечисление через запятую
Made-with: Cursor
This commit is contained in:
@@ -14,7 +14,7 @@ const maxCIDRSExpanded = 16384
|
||||
|
||||
var cidrRangeRE = regexp.MustCompile(`^\s*(?P<left>.+?/\d+)\s*-\s*(?P<right>.+?/\d+)\s*$`)
|
||||
|
||||
// expandCIDRSFromRequest раскрывает каждую строку: один CIDR или диапазон "start/end mask - end/end mask".
|
||||
// expandCIDRSFromRequest раскрывает каждую строку: перечисление через запятую, один CIDR или диапазон a/b - c/d.
|
||||
func expandCIDRSFromRequest(inputs []string) ([]string, error) {
|
||||
var all []string
|
||||
for _, raw := range inputs {
|
||||
@@ -22,11 +22,17 @@ func expandCIDRSFromRequest(inputs []string) ([]string, error) {
|
||||
if raw == "" {
|
||||
continue
|
||||
}
|
||||
part, err := expandCIDREntry(raw)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
for _, piece := range strings.Split(raw, ",") {
|
||||
piece = strings.TrimSpace(piece)
|
||||
if piece == "" {
|
||||
continue
|
||||
}
|
||||
part, err := expandCIDREntry(piece)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
all = append(all, part...)
|
||||
}
|
||||
all = append(all, part...)
|
||||
}
|
||||
if len(all) == 0 {
|
||||
return nil, errors.New("cidrs must not be empty")
|
||||
|
||||
Reference in New Issue
Block a user