sing-box/option/config.go

41 lines
1.1 KiB
Go
Raw Normal View History

2022-07-02 06:07:50 +00:00
package option
import (
"bytes"
2022-07-02 17:57:04 +00:00
"github.com/sagernet/sing/common"
2022-07-06 07:01:09 +00:00
"github.com/goccy/go-json"
)
type _Options struct {
2022-07-02 19:42:57 +00:00
Log *LogOption `json:"log,omitempty"`
2022-07-02 14:55:10 +00:00
Inbounds []Inbound `json:"inbounds,omitempty"`
Outbounds []Outbound `json:"outbounds,omitempty"`
2022-07-06 15:11:48 +00:00
DNS *DNSOptions `json:"dns,omitempty"`
2022-07-02 14:55:10 +00:00
Route *RouteOptions `json:"route,omitempty"`
2022-07-02 06:07:50 +00:00
}
type Options _Options
func (o *Options) UnmarshalJSON(content []byte) error {
decoder := json.NewDecoder(bytes.NewReader(content))
decoder.DisallowUnknownFields()
return decoder.Decode((*_Options)(o))
}
2022-07-02 17:57:04 +00:00
func (o Options) Equals(other Options) bool {
return common.ComparablePtrEquals(o.Log, other.Log) &&
common.SliceEquals(o.Inbounds, other.Inbounds) &&
common.ComparableSliceEquals(o.Outbounds, other.Outbounds) &&
common.PtrEquals(o.Route, other.Route)
}
2022-07-02 06:07:50 +00:00
type LogOption struct {
2022-07-04 08:45:32 +00:00
Disabled bool `json:"disabled,omitempty"`
Level string `json:"level,omitempty"`
Output string `json:"output,omitempty"`
Timestamp bool `json:"timestamp,omitempty"`
DisableColor bool `json:"-"`
2022-07-02 06:07:50 +00:00
}