diff --git a/url.go b/url.go index 9ba6113..bc87a7a 100644 --- a/url.go +++ b/url.go @@ -89,6 +89,18 @@ func ParseURL(str string) (opt ClientOption, err error) { _, addr = parseAddr(addr) opt.InitAddress = append(opt.InitAddress, addr) } + if opt.TLSConfig != nil && q.Has("skip_verify") { + skipVerifyParam := q.Get("skip_verify") + if skipVerifyParam == "" { + opt.TLSConfig.InsecureSkipVerify = true + } else { + skipVerify, err := strconv.ParseBool(skipVerifyParam) + if err != nil { + return opt, fmt.Errorf("valkey: invalid skip verify: %q", skipVerifyParam) + } + opt.TLSConfig.InsecureSkipVerify = skipVerify + } + } opt.AlwaysRESP2 = q.Get("protocol") == "2" opt.DisableCache = q.Get("client_cache") == "0" opt.DisableRetry = q.Get("max_retries") == "0" diff --git a/url_test.go b/url_test.go index ffb218c..51222e8 100644 --- a/url_test.go +++ b/url_test.go @@ -57,6 +57,15 @@ func TestParseURL(t *testing.T) { if opt, err := ParseURL("redis://?write_timeout=a"); !strings.HasPrefix(err.Error(), "valkey: invalid write timeout") { t.Fatalf("unexpected %v %v", opt, err) } + if opt, err := ParseURL("rediss://?skip_verify"); err != nil || opt.TLSConfig == nil || !opt.TLSConfig.InsecureSkipVerify { + t.Fatalf("unexpected %v %v", opt, err) + } + if opt, err := ParseURL("rediss://?skip_verify=true"); err != nil || opt.TLSConfig == nil || !opt.TLSConfig.InsecureSkipVerify { + t.Fatalf("unexpected %v %v", opt, err) + } + if opt, err := ParseURL("rediss://?skip_verify=a"); !strings.HasPrefix(err.Error(), "valkey: invalid skip verify") { + t.Fatalf("unexpected %v %v", opt, err) + } if opt, err := ParseURL("redis://?protocol=2"); !opt.AlwaysRESP2 { t.Fatalf("unexpected %v %v", opt, err) }