{"record":{"id":"3f4b20a54aab6677","repo":"crowdsecurity/crowdsec","slug":"auto-register-failed-to-parse-allowed-range-s","errorCode":null,"errorMessage":"auto_register: failed to parse allowed range '%s': %w","messagePattern":"auto_register: failed to parse allowed range '(.+?)': %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/csconfig/api.go","lineNumber":555,"sourceCode":"\n\tif c.AutoRegister.Token == \"\" {\n\t\treturn errors.New(\"missing token value for api.server.auto_register\")\n\t}\n\n\tif len(c.AutoRegister.Token) < 32 {\n\t\treturn errors.New(\"token value for api.server.auto_register is too short (min 32 characters)\")\n\t}\n\n\tif c.AutoRegister.AllowedRanges == nil {\n\t\treturn errors.New(\"missing allowed_ranges value for api.server.auto_register\")\n\t}\n\n\tc.AutoRegister.AllowedRangesParsed = make([]*net.IPNet, 0, len(c.AutoRegister.AllowedRanges))\n\n\tfor _, ipRange := range c.AutoRegister.AllowedRanges {\n\t\t_, ipNet, err := net.ParseCIDR(ipRange)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"auto_register: failed to parse allowed range '%s': %w\", ipRange, err)\n\t\t}\n\n\t\tc.AutoRegister.AllowedRangesParsed = append(c.AutoRegister.AllowedRangesParsed, ipNet)\n\t}\n\n\treturn nil\n}\n","sourceCodeStart":537,"sourceCodeEnd":563,"githubUrl":"https://github.com/crowdsecurity/crowdsec/blob/909b5157986a2b2c2163300fdaef5ed01289f7d2/pkg/csconfig/api.go#L537-L563","documentation":"LoadAutoRegister validates api.server.auto_register.allowed_ranges by parsing each entry with net.ParseCIDR. Any entry that is not a valid CIDR notation produces this wrapped error. This only runs when auto_register.enable is true.","triggerScenarios":"crowdsec startup with auto_register enabled and an allowed_ranges entry like `192.168.1.0/24 extra`, `10.0.0.1` (no prefix), or `10.0.0.0/33`.","commonSituations":"User listed bare IPs instead of CIDRs (e.g. `10.0.0.5` instead of `10.0.0.5/32`); copy-pasted ranges with spaces or comments inline; typo'd prefix length out of range.","solutions":["Fix the range named in the error to strict CIDR notation (bare IP needs /32 or /128)","Remove invalid entries from allowed_ranges","Validate entries beforehand (e.g. `python3 -c \"import ipaddress;ipaddress.ip_network('10.0.0.0/8')\"`)","If you don't need auto-registration, disable it with auto_register.enable: false"],"exampleFix":"// before (config.yaml)\napi:\n  server:\n    auto_register:\n      enable: true\n      allowed_ranges:\n        - 10.0.0.5\n// after\napi:\n  server:\n    auto_register:\n      enable: true\n      allowed_ranges:\n        - 10.0.0.5/32","handlingStrategy":"validation","validationCode":"for _, r := range allowedRanges {\n\tif _, _, err := net.ParseCIDR(r); err != nil {\n\t\treturn fmt.Errorf(\"auto_register range %q is not valid CIDR: %w\", r, err)\n\t}\n}","typeGuard":null,"tryCatchPattern":"if err := serverCfg.LoadAutoRegister(); err != nil {\n\tif strings.Contains(err.Error(), \"failed to parse allowed range\") {\n\t\tlog.Fatalf(\"fix allowed_ranges in config.yaml: %v\", err)\n\t}\n\treturn err\n}","preventionTips":["Always express single hosts as x.x.x.x/32 (or /128 for IPv6)","Run `cscli config check` before restarting the service","Copy ranges only from validated sources; avoid inline comments in the list"],"tags":["cidr","config","validation","autoregister"],"backgroundTag":"invalid-config-value","analyzedSha":"909b5157986a2b2c2163300fdaef5ed01289f7d2","analyzedAt":"2026-09-06T12:27:26.012Z","contentChangedAt":"2026-09-06T12:27:26.012Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}