mirror of
https://github.com/SagerNet/sing-box.git
synced 2024-11-26 02:21:28 +00:00
Remove legacy inbound/outbound options
This commit is contained in:
parent
c95bacbafa
commit
d079910a99
20
box.go
20
box.go
|
@ -132,26 +132,6 @@ func New(options Options) (*Box, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, E.Cause(err, "initialize router")
|
return nil, E.Cause(err, "initialize router")
|
||||||
}
|
}
|
||||||
//nolint:staticcheck
|
|
||||||
if len(options.LegacyInbounds) > 0 {
|
|
||||||
for _, legacyInbound := range options.LegacyInbounds {
|
|
||||||
options.Inbounds = append(options.Inbounds, option.Inbound{
|
|
||||||
Type: legacyInbound.Type,
|
|
||||||
Tag: legacyInbound.Tag,
|
|
||||||
Options: common.Must1(legacyInbound.RawOptions()),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//nolint:staticcheck
|
|
||||||
if len(options.LegacyOutbounds) > 0 {
|
|
||||||
for _, legacyOutbound := range options.LegacyOutbounds {
|
|
||||||
options.Outbounds = append(options.Outbounds, option.Outbound{
|
|
||||||
Type: legacyOutbound.Type,
|
|
||||||
Tag: legacyOutbound.Tag,
|
|
||||||
Options: common.Must1(legacyOutbound.RawOptions()),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for i, inboundOptions := range options.Inbounds {
|
for i, inboundOptions := range options.Inbounds {
|
||||||
var tag string
|
var tag string
|
||||||
if inboundOptions.Tag != "" {
|
if inboundOptions.Tag != "" {
|
||||||
|
|
|
@ -1,98 +0,0 @@
|
||||||
package option
|
|
||||||
|
|
||||||
import (
|
|
||||||
C "github.com/sagernet/sing-box/constant"
|
|
||||||
E "github.com/sagernet/sing/common/exceptions"
|
|
||||||
"github.com/sagernet/sing/common/json"
|
|
||||||
"github.com/sagernet/sing/common/json/badjson"
|
|
||||||
)
|
|
||||||
|
|
||||||
type _LegacyInbound struct {
|
|
||||||
Type string `json:"type"`
|
|
||||||
Tag string `json:"tag,omitempty"`
|
|
||||||
TunOptions TunInboundOptions `json:"-"`
|
|
||||||
RedirectOptions RedirectInboundOptions `json:"-"`
|
|
||||||
TProxyOptions TProxyInboundOptions `json:"-"`
|
|
||||||
DirectOptions DirectInboundOptions `json:"-"`
|
|
||||||
SocksOptions SocksInboundOptions `json:"-"`
|
|
||||||
HTTPOptions HTTPMixedInboundOptions `json:"-"`
|
|
||||||
MixedOptions HTTPMixedInboundOptions `json:"-"`
|
|
||||||
ShadowsocksOptions ShadowsocksInboundOptions `json:"-"`
|
|
||||||
VMessOptions VMessInboundOptions `json:"-"`
|
|
||||||
TrojanOptions TrojanInboundOptions `json:"-"`
|
|
||||||
NaiveOptions NaiveInboundOptions `json:"-"`
|
|
||||||
HysteriaOptions HysteriaInboundOptions `json:"-"`
|
|
||||||
ShadowTLSOptions ShadowTLSInboundOptions `json:"-"`
|
|
||||||
VLESSOptions VLESSInboundOptions `json:"-"`
|
|
||||||
TUICOptions TUICInboundOptions `json:"-"`
|
|
||||||
Hysteria2Options Hysteria2InboundOptions `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type LegacyInbound _LegacyInbound
|
|
||||||
|
|
||||||
func (h *LegacyInbound) RawOptions() (any, error) {
|
|
||||||
var rawOptionsPtr any
|
|
||||||
switch h.Type {
|
|
||||||
case C.TypeTun:
|
|
||||||
rawOptionsPtr = &h.TunOptions
|
|
||||||
case C.TypeRedirect:
|
|
||||||
rawOptionsPtr = &h.RedirectOptions
|
|
||||||
case C.TypeTProxy:
|
|
||||||
rawOptionsPtr = &h.TProxyOptions
|
|
||||||
case C.TypeDirect:
|
|
||||||
rawOptionsPtr = &h.DirectOptions
|
|
||||||
case C.TypeSOCKS:
|
|
||||||
rawOptionsPtr = &h.SocksOptions
|
|
||||||
case C.TypeHTTP:
|
|
||||||
rawOptionsPtr = &h.HTTPOptions
|
|
||||||
case C.TypeMixed:
|
|
||||||
rawOptionsPtr = &h.MixedOptions
|
|
||||||
case C.TypeShadowsocks:
|
|
||||||
rawOptionsPtr = &h.ShadowsocksOptions
|
|
||||||
case C.TypeVMess:
|
|
||||||
rawOptionsPtr = &h.VMessOptions
|
|
||||||
case C.TypeTrojan:
|
|
||||||
rawOptionsPtr = &h.TrojanOptions
|
|
||||||
case C.TypeNaive:
|
|
||||||
rawOptionsPtr = &h.NaiveOptions
|
|
||||||
case C.TypeHysteria:
|
|
||||||
rawOptionsPtr = &h.HysteriaOptions
|
|
||||||
case C.TypeShadowTLS:
|
|
||||||
rawOptionsPtr = &h.ShadowTLSOptions
|
|
||||||
case C.TypeVLESS:
|
|
||||||
rawOptionsPtr = &h.VLESSOptions
|
|
||||||
case C.TypeTUIC:
|
|
||||||
rawOptionsPtr = &h.TUICOptions
|
|
||||||
case C.TypeHysteria2:
|
|
||||||
rawOptionsPtr = &h.Hysteria2Options
|
|
||||||
case "":
|
|
||||||
return nil, E.New("missing inbound type")
|
|
||||||
default:
|
|
||||||
return nil, E.New("unknown inbound type: ", h.Type)
|
|
||||||
}
|
|
||||||
return rawOptionsPtr, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h LegacyInbound) MarshalJSON() ([]byte, error) {
|
|
||||||
rawOptions, err := h.RawOptions()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return badjson.MarshallObjects((_LegacyInbound)(h), rawOptions)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *LegacyInbound) UnmarshalJSON(bytes []byte) error {
|
|
||||||
err := json.Unmarshal(bytes, (*_LegacyInbound)(h))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
rawOptions, err := h.RawOptions()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
err = badjson.UnmarshallExcluded(bytes, (*_LegacyInbound)(h), rawOptions)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -17,11 +17,6 @@ type _Options struct {
|
||||||
Outbounds []Outbound `json:"outbounds,omitempty"`
|
Outbounds []Outbound `json:"outbounds,omitempty"`
|
||||||
Route *RouteOptions `json:"route,omitempty"`
|
Route *RouteOptions `json:"route,omitempty"`
|
||||||
Experimental *ExperimentalOptions `json:"experimental,omitempty"`
|
Experimental *ExperimentalOptions `json:"experimental,omitempty"`
|
||||||
|
|
||||||
// Deprecated: use Inbounds instead
|
|
||||||
LegacyInbounds []LegacyInbound `json:"-"`
|
|
||||||
// Deprecated: use Outbounds instead
|
|
||||||
LegacyOutbounds []LegacyOutbound `json:"-"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Options _Options
|
type Options _Options
|
||||||
|
|
|
@ -1,103 +0,0 @@
|
||||||
package option
|
|
||||||
|
|
||||||
import (
|
|
||||||
C "github.com/sagernet/sing-box/constant"
|
|
||||||
E "github.com/sagernet/sing/common/exceptions"
|
|
||||||
"github.com/sagernet/sing/common/json"
|
|
||||||
"github.com/sagernet/sing/common/json/badjson"
|
|
||||||
)
|
|
||||||
|
|
||||||
type _LegacyOutbound struct {
|
|
||||||
Type string `json:"type"`
|
|
||||||
Tag string `json:"tag,omitempty"`
|
|
||||||
DirectOptions DirectOutboundOptions `json:"-"`
|
|
||||||
SocksOptions SOCKSOutboundOptions `json:"-"`
|
|
||||||
HTTPOptions HTTPOutboundOptions `json:"-"`
|
|
||||||
ShadowsocksOptions ShadowsocksOutboundOptions `json:"-"`
|
|
||||||
VMessOptions VMessOutboundOptions `json:"-"`
|
|
||||||
TrojanOptions TrojanOutboundOptions `json:"-"`
|
|
||||||
WireGuardOptions WireGuardOutboundOptions `json:"-"`
|
|
||||||
HysteriaOptions HysteriaOutboundOptions `json:"-"`
|
|
||||||
TorOptions TorOutboundOptions `json:"-"`
|
|
||||||
SSHOptions SSHOutboundOptions `json:"-"`
|
|
||||||
ShadowTLSOptions ShadowTLSOutboundOptions `json:"-"`
|
|
||||||
ShadowsocksROptions ShadowsocksROutboundOptions `json:"-"`
|
|
||||||
VLESSOptions VLESSOutboundOptions `json:"-"`
|
|
||||||
TUICOptions TUICOutboundOptions `json:"-"`
|
|
||||||
Hysteria2Options Hysteria2OutboundOptions `json:"-"`
|
|
||||||
SelectorOptions SelectorOutboundOptions `json:"-"`
|
|
||||||
URLTestOptions URLTestOutboundOptions `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type LegacyOutbound _LegacyOutbound
|
|
||||||
|
|
||||||
func (h *LegacyOutbound) RawOptions() (any, error) {
|
|
||||||
var rawOptionsPtr any
|
|
||||||
switch h.Type {
|
|
||||||
case C.TypeDirect:
|
|
||||||
rawOptionsPtr = &h.DirectOptions
|
|
||||||
case C.TypeBlock, C.TypeDNS:
|
|
||||||
rawOptionsPtr = new(StubOptions)
|
|
||||||
case C.TypeSOCKS:
|
|
||||||
rawOptionsPtr = &h.SocksOptions
|
|
||||||
case C.TypeHTTP:
|
|
||||||
rawOptionsPtr = &h.HTTPOptions
|
|
||||||
case C.TypeShadowsocks:
|
|
||||||
rawOptionsPtr = &h.ShadowsocksOptions
|
|
||||||
case C.TypeVMess:
|
|
||||||
rawOptionsPtr = &h.VMessOptions
|
|
||||||
case C.TypeTrojan:
|
|
||||||
rawOptionsPtr = &h.TrojanOptions
|
|
||||||
case C.TypeWireGuard:
|
|
||||||
rawOptionsPtr = &h.WireGuardOptions
|
|
||||||
case C.TypeHysteria:
|
|
||||||
rawOptionsPtr = &h.HysteriaOptions
|
|
||||||
case C.TypeTor:
|
|
||||||
rawOptionsPtr = &h.TorOptions
|
|
||||||
case C.TypeSSH:
|
|
||||||
rawOptionsPtr = &h.SSHOptions
|
|
||||||
case C.TypeShadowTLS:
|
|
||||||
rawOptionsPtr = &h.ShadowTLSOptions
|
|
||||||
case C.TypeShadowsocksR:
|
|
||||||
rawOptionsPtr = &h.ShadowsocksROptions
|
|
||||||
case C.TypeVLESS:
|
|
||||||
rawOptionsPtr = &h.VLESSOptions
|
|
||||||
case C.TypeTUIC:
|
|
||||||
rawOptionsPtr = &h.TUICOptions
|
|
||||||
case C.TypeHysteria2:
|
|
||||||
rawOptionsPtr = &h.Hysteria2Options
|
|
||||||
case C.TypeSelector:
|
|
||||||
rawOptionsPtr = &h.SelectorOptions
|
|
||||||
case C.TypeURLTest:
|
|
||||||
rawOptionsPtr = &h.URLTestOptions
|
|
||||||
case "":
|
|
||||||
return nil, E.New("missing outbound type")
|
|
||||||
default:
|
|
||||||
return nil, E.New("unknown outbound type: ", h.Type)
|
|
||||||
}
|
|
||||||
return rawOptionsPtr, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *LegacyOutbound) MarshalJSON() ([]byte, error) {
|
|
||||||
rawOptions, err := h.RawOptions()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return badjson.MarshallObjects((*_LegacyOutbound)(h), rawOptions)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *LegacyOutbound) UnmarshalJSON(bytes []byte) error {
|
|
||||||
err := json.Unmarshal(bytes, (*_LegacyOutbound)(h))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
rawOptions, err := h.RawOptions()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
err = badjson.UnmarshallExcluded(bytes, (*_LegacyOutbound)(h), rawOptions)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
Loading…
Reference in a new issue