Make type check strict

This commit is contained in:
世界 2023-12-05 19:09:13 +08:00
parent bc2d73b2d6
commit 2f4f4e18ee
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
4 changed files with 9 additions and 3 deletions

View file

@ -109,6 +109,8 @@ func (h *Inbound) UnmarshalJSON(bytes []byte) error {
v = &h.TUICOptions
case C.TypeHysteria2:
v = &h.Hysteria2Options
case "":
return E.New("missing inbound type")
default:
return E.New("unknown inbound type: ", h.Type)
}

View file

@ -119,6 +119,8 @@ func (h *Outbound) UnmarshalJSON(bytes []byte) error {
v = &h.SelectorOptions
case C.TypeURLTest:
v = &h.URLTestOptions
case "":
return E.New("missing outbound type")
default:
return E.New("unknown outbound type: ", h.Type)
}

View file

@ -40,6 +40,8 @@ func (o ACMEDNS01ChallengeOptions) MarshalJSON() ([]byte, error) {
v = o.AliDNSOptions
case C.DNSProviderCloudflare:
v = o.CloudflareOptions
case "":
return nil, E.New("missing provider type")
default:
return nil, E.New("unknown provider type: " + o.Provider)
}

View file

@ -7,7 +7,7 @@ import (
)
type _V2RayTransportOptions struct {
Type string `json:"type,omitempty"`
Type string `json:"type"`
HTTPOptions V2RayHTTPOptions `json:"-"`
WebsocketOptions V2RayWebsocketOptions `json:"-"`
QUICOptions V2RayQUICOptions `json:"-"`
@ -20,8 +20,6 @@ type V2RayTransportOptions _V2RayTransportOptions
func (o V2RayTransportOptions) MarshalJSON() ([]byte, error) {
var v any
switch o.Type {
case "":
return nil, nil
case C.V2RayTransportTypeHTTP:
v = o.HTTPOptions
case C.V2RayTransportTypeWebsocket:
@ -32,6 +30,8 @@ func (o V2RayTransportOptions) MarshalJSON() ([]byte, error) {
v = o.GRPCOptions
case C.V2RayTransportTypeHTTPUpgrade:
v = o.HTTPUpgradeOptions
case "":
return nil, E.New("missing transport type")
default:
return nil, E.New("unknown transport type: " + o.Type)
}