Improve `http_status` validation

This commit is contained in:
kurochan 2025-01-06 13:12:44 +09:00
parent 2714d10d62
commit b5a30dd3e5
2 changed files with 11 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package ingress
import ( import (
"fmt" "fmt"
"net" "net"
"net/http"
"net/url" "net/url"
"regexp" "regexp"
"strconv" "strconv"
@ -260,7 +261,7 @@ func validateIngress(ingress []config.UnvalidatedIngressRule, defaults OriginReq
if err != nil { if err != nil {
return Ingress{}, errors.Wrap(err, "invalid HTTP status code") return Ingress{}, errors.Wrap(err, "invalid HTTP status code")
} }
if statusCode < 100 || statusCode > 999 { if http.StatusText(statusCode) == "" {
return Ingress{}, fmt.Errorf("invalid HTTP status code: %d", statusCode) return Ingress{}, fmt.Errorf("invalid HTTP status code: %d", statusCode)
} }
srv := newStatusCode(statusCode) srv := newStatusCode(statusCode)

View File

@ -247,10 +247,18 @@ ingress:
wantErr: true, wantErr: true,
}, },
{ {
name: "Invalid HTTP status code", name: "Invalid HTTP status code(8080)",
args: args{rawYAML: ` args: args{rawYAML: `
ingress: ingress:
- service: http_status:8080 - service: http_status:8080
`},
wantErr: true,
},
{
name: "Invalid HTTP status code(666)",
args: args{rawYAML: `
ingress:
- service: http_status:666
`}, `},
wantErr: true, wantErr: true,
}, },