chore: code cleanup
This commit is contained in:
parent
7b9bf14302
commit
137d461ff7
6 changed files with 53 additions and 106 deletions
|
@ -229,11 +229,11 @@ type RawTun struct {
|
||||||
RedirectToTun []string `yaml:"-" json:"-"`
|
RedirectToTun []string `yaml:"-" json:"-"`
|
||||||
|
|
||||||
MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
|
MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
|
||||||
//Inet4Address []LC.ListenPrefix `yaml:"inet4-address" json:"inet4_address,omitempty"`
|
//Inet4Address []netip.Prefix `yaml:"inet4-address" json:"inet4_address,omitempty"`
|
||||||
Inet6Address []LC.ListenPrefix `yaml:"inet6-address" json:"inet6_address,omitempty"`
|
Inet6Address []netip.Prefix `yaml:"inet6-address" json:"inet6_address,omitempty"`
|
||||||
StrictRoute bool `yaml:"strict-route" json:"strict_route,omitempty"`
|
StrictRoute bool `yaml:"strict-route" json:"strict_route,omitempty"`
|
||||||
Inet4RouteAddress []LC.ListenPrefix `yaml:"inet4_route_address" json:"inet4_route_address,omitempty"`
|
Inet4RouteAddress []netip.Prefix `yaml:"inet4_route_address" json:"inet4_route_address,omitempty"`
|
||||||
Inet6RouteAddress []LC.ListenPrefix `yaml:"inet6_route_address" json:"inet6_route_address,omitempty"`
|
Inet6RouteAddress []netip.Prefix `yaml:"inet6_route_address" json:"inet6_route_address,omitempty"`
|
||||||
IncludeUID []uint32 `yaml:"include-uid" json:"include_uid,omitempty"`
|
IncludeUID []uint32 `yaml:"include-uid" json:"include_uid,omitempty"`
|
||||||
IncludeUIDRange []string `yaml:"include-uid-range" json:"include_uid_range,omitempty"`
|
IncludeUIDRange []string `yaml:"include-uid-range" json:"include_uid_range,omitempty"`
|
||||||
ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude_uid,omitempty"`
|
ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude_uid,omitempty"`
|
||||||
|
@ -388,7 +388,7 @@ func UnmarshalRawConfig(buf []byte) (*RawConfig, error) {
|
||||||
DNSHijack: []string{"0.0.0.0:53"}, // default hijack all dns query
|
DNSHijack: []string{"0.0.0.0:53"}, // default hijack all dns query
|
||||||
AutoRoute: true,
|
AutoRoute: true,
|
||||||
AutoDetectInterface: true,
|
AutoDetectInterface: true,
|
||||||
Inet6Address: []LC.ListenPrefix{LC.ListenPrefix(netip.MustParsePrefix("fdfe:dcba:9876::1/126"))},
|
Inet6Address: []netip.Prefix{netip.MustParsePrefix("fdfe:dcba:9876::1/126")},
|
||||||
},
|
},
|
||||||
TuicServer: RawTuicServer{
|
TuicServer: RawTuicServer{
|
||||||
Enable: false,
|
Enable: false,
|
||||||
|
@ -1364,7 +1364,7 @@ func parseTun(rawTun RawTun, general *General) error {
|
||||||
RedirectToTun: rawTun.RedirectToTun,
|
RedirectToTun: rawTun.RedirectToTun,
|
||||||
|
|
||||||
MTU: rawTun.MTU,
|
MTU: rawTun.MTU,
|
||||||
Inet4Address: []LC.ListenPrefix{LC.ListenPrefix(tunAddressPrefix)},
|
Inet4Address: []netip.Prefix{tunAddressPrefix},
|
||||||
Inet6Address: rawTun.Inet6Address,
|
Inet6Address: rawTun.Inet6Address,
|
||||||
StrictRoute: rawTun.StrictRoute,
|
StrictRoute: rawTun.StrictRoute,
|
||||||
Inet4RouteAddress: rawTun.Inet4RouteAddress,
|
Inet4RouteAddress: rawTun.Inet4RouteAddress,
|
||||||
|
|
|
@ -69,11 +69,11 @@ type tunSchema struct {
|
||||||
//RedirectToTun []string `yaml:"-" json:"-"`
|
//RedirectToTun []string `yaml:"-" json:"-"`
|
||||||
|
|
||||||
MTU *uint32 `yaml:"mtu" json:"mtu,omitempty"`
|
MTU *uint32 `yaml:"mtu" json:"mtu,omitempty"`
|
||||||
//Inet4Address *[]config.ListenPrefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
|
//Inet4Address *[]netip.Prefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
|
||||||
Inet6Address *[]LC.ListenPrefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
|
Inet6Address *[]netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
|
||||||
StrictRoute *bool `yaml:"strict-route" json:"strict-route,omitempty"`
|
StrictRoute *bool `yaml:"strict-route" json:"strict-route,omitempty"`
|
||||||
Inet4RouteAddress *[]LC.ListenPrefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
|
Inet4RouteAddress *[]netip.Prefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
|
||||||
Inet6RouteAddress *[]LC.ListenPrefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
|
Inet6RouteAddress *[]netip.Prefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
|
||||||
IncludeUID *[]uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
|
IncludeUID *[]uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
|
||||||
IncludeUIDRange *[]string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
|
IncludeUIDRange *[]string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
|
||||||
ExcludeUID *[]uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
|
ExcludeUID *[]uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
|
||||||
|
|
|
@ -1,72 +1,19 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"net/netip"
|
"net/netip"
|
||||||
|
|
||||||
C "github.com/Dreamacro/clash/constant"
|
C "github.com/Dreamacro/clash/constant"
|
||||||
|
|
||||||
"gopkg.in/yaml.v3"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type ListenPrefix netip.Prefix
|
func StringSliceToNetipPrefixSlice(ss []string) ([]netip.Prefix, error) {
|
||||||
|
lps := make([]netip.Prefix, 0, len(ss))
|
||||||
func (p ListenPrefix) MarshalJSON() ([]byte, error) {
|
|
||||||
prefix := netip.Prefix(p)
|
|
||||||
if !prefix.IsValid() {
|
|
||||||
return json.Marshal(nil)
|
|
||||||
}
|
|
||||||
return json.Marshal(prefix.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p ListenPrefix) MarshalYAML() (interface{}, error) {
|
|
||||||
prefix := netip.Prefix(p)
|
|
||||||
if !prefix.IsValid() {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
return prefix.String(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *ListenPrefix) UnmarshalJSON(bytes []byte) error {
|
|
||||||
var value string
|
|
||||||
err := json.Unmarshal(bytes, &value)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
prefix, err := netip.ParsePrefix(value)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
*p = ListenPrefix(prefix)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *ListenPrefix) UnmarshalYAML(node *yaml.Node) error {
|
|
||||||
var value string
|
|
||||||
err := node.Decode(&value)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
prefix, err := netip.ParsePrefix(value)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
*p = ListenPrefix(prefix)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p ListenPrefix) Build() netip.Prefix {
|
|
||||||
return netip.Prefix(p)
|
|
||||||
}
|
|
||||||
|
|
||||||
func StringSliceToListenPrefixSlice(ss []string) ([]ListenPrefix, error) {
|
|
||||||
lps := make([]ListenPrefix, 0, len(ss))
|
|
||||||
for _, s := range ss {
|
for _, s := range ss {
|
||||||
prefix, err := netip.ParsePrefix(s)
|
prefix, err := netip.ParsePrefix(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
lps = append(lps, ListenPrefix(prefix))
|
lps = append(lps, prefix)
|
||||||
}
|
}
|
||||||
return lps, nil
|
return lps, nil
|
||||||
}
|
}
|
||||||
|
@ -81,11 +28,11 @@ type Tun struct {
|
||||||
RedirectToTun []string `yaml:"-" json:"-"`
|
RedirectToTun []string `yaml:"-" json:"-"`
|
||||||
|
|
||||||
MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
|
MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
|
||||||
Inet4Address []ListenPrefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
|
Inet4Address []netip.Prefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
|
||||||
Inet6Address []ListenPrefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
|
Inet6Address []netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
|
||||||
StrictRoute bool `yaml:"strict-route" json:"strict-route,omitempty"`
|
StrictRoute bool `yaml:"strict-route" json:"strict-route,omitempty"`
|
||||||
Inet4RouteAddress []ListenPrefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
|
Inet4RouteAddress []netip.Prefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
|
||||||
Inet6RouteAddress []ListenPrefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
|
Inet6RouteAddress []netip.Prefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
|
||||||
IncludeUID []uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
|
IncludeUID []uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
|
||||||
IncludeUIDRange []string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
|
IncludeUIDRange []string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
|
||||||
ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
|
ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
|
||||||
|
|
|
@ -56,19 +56,19 @@ func NewTun(options *TunOption) (*Tun, error) {
|
||||||
if !exist {
|
if !exist {
|
||||||
return nil, errors.New("invalid tun stack")
|
return nil, errors.New("invalid tun stack")
|
||||||
}
|
}
|
||||||
inet4Address, err := LC.StringSliceToListenPrefixSlice(options.Inet4Address)
|
inet4Address, err := LC.StringSliceToNetipPrefixSlice(options.Inet4Address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
inet6Address, err := LC.StringSliceToListenPrefixSlice(options.Inet6Address)
|
inet6Address, err := LC.StringSliceToNetipPrefixSlice(options.Inet6Address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
inet4RouteAddress, err := LC.StringSliceToListenPrefixSlice(options.Inet4RouteAddress)
|
inet4RouteAddress, err := LC.StringSliceToNetipPrefixSlice(options.Inet4RouteAddress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
inet6RouteAddress, err := LC.StringSliceToListenPrefixSlice(options.Inet6RouteAddress)
|
inet6RouteAddress, err := LC.StringSliceToNetipPrefixSlice(options.Inet6RouteAddress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -834,19 +834,19 @@ func hasTunConfigChange(tunConf *LC.Tun) bool {
|
||||||
})
|
})
|
||||||
|
|
||||||
sort.Slice(tunConf.Inet4Address, func(i, j int) bool {
|
sort.Slice(tunConf.Inet4Address, func(i, j int) bool {
|
||||||
return tunConf.Inet4Address[i].Build().String() < tunConf.Inet4Address[j].Build().String()
|
return tunConf.Inet4Address[i].String() < tunConf.Inet4Address[j].String()
|
||||||
})
|
})
|
||||||
|
|
||||||
sort.Slice(tunConf.Inet6Address, func(i, j int) bool {
|
sort.Slice(tunConf.Inet6Address, func(i, j int) bool {
|
||||||
return tunConf.Inet6Address[i].Build().String() < tunConf.Inet6Address[j].Build().String()
|
return tunConf.Inet6Address[i].String() < tunConf.Inet6Address[j].String()
|
||||||
})
|
})
|
||||||
|
|
||||||
sort.Slice(tunConf.Inet4RouteAddress, func(i, j int) bool {
|
sort.Slice(tunConf.Inet4RouteAddress, func(i, j int) bool {
|
||||||
return tunConf.Inet4RouteAddress[i].Build().String() < tunConf.Inet4RouteAddress[j].Build().String()
|
return tunConf.Inet4RouteAddress[i].String() < tunConf.Inet4RouteAddress[j].String()
|
||||||
})
|
})
|
||||||
|
|
||||||
sort.Slice(tunConf.Inet6RouteAddress, func(i, j int) bool {
|
sort.Slice(tunConf.Inet6RouteAddress, func(i, j int) bool {
|
||||||
return tunConf.Inet6RouteAddress[i].Build().String() < tunConf.Inet6RouteAddress[j].Build().String()
|
return tunConf.Inet6RouteAddress[i].String() < tunConf.Inet6RouteAddress[j].String()
|
||||||
})
|
})
|
||||||
|
|
||||||
sort.Slice(tunConf.IncludeUID, func(i, j int) bool {
|
sort.Slice(tunConf.IncludeUID, func(i, j int) bool {
|
||||||
|
|
|
@ -142,11 +142,11 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
|
||||||
dnsAdds = append(dnsAdds, addrPort)
|
dnsAdds = append(dnsAdds, addrPort)
|
||||||
}
|
}
|
||||||
for _, a := range options.Inet4Address {
|
for _, a := range options.Inet4Address {
|
||||||
addrPort := netip.AddrPortFrom(a.Build().Addr().Next(), 53)
|
addrPort := netip.AddrPortFrom(a.Addr().Next(), 53)
|
||||||
dnsAdds = append(dnsAdds, addrPort)
|
dnsAdds = append(dnsAdds, addrPort)
|
||||||
}
|
}
|
||||||
for _, a := range options.Inet6Address {
|
for _, a := range options.Inet6Address {
|
||||||
addrPort := netip.AddrPortFrom(a.Build().Addr().Next(), 53)
|
addrPort := netip.AddrPortFrom(a.Addr().Next(), 53)
|
||||||
dnsAdds = append(dnsAdds, addrPort)
|
dnsAdds = append(dnsAdds, addrPort)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,12 +201,12 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
|
||||||
tunOptions := tun.Options{
|
tunOptions := tun.Options{
|
||||||
Name: tunName,
|
Name: tunName,
|
||||||
MTU: tunMTU,
|
MTU: tunMTU,
|
||||||
Inet4Address: common.Map(options.Inet4Address, LC.ListenPrefix.Build),
|
Inet4Address: options.Inet4Address,
|
||||||
Inet6Address: common.Map(options.Inet6Address, LC.ListenPrefix.Build),
|
Inet6Address: options.Inet6Address,
|
||||||
AutoRoute: options.AutoRoute,
|
AutoRoute: options.AutoRoute,
|
||||||
StrictRoute: options.StrictRoute,
|
StrictRoute: options.StrictRoute,
|
||||||
Inet4RouteAddress: common.Map(options.Inet4RouteAddress, LC.ListenPrefix.Build),
|
Inet4RouteAddress: options.Inet4RouteAddress,
|
||||||
Inet6RouteAddress: common.Map(options.Inet6RouteAddress, LC.ListenPrefix.Build),
|
Inet6RouteAddress: options.Inet6RouteAddress,
|
||||||
IncludeUID: includeUID,
|
IncludeUID: includeUID,
|
||||||
ExcludeUID: excludeUID,
|
ExcludeUID: excludeUID,
|
||||||
IncludeAndroidUser: options.IncludeAndroidUser,
|
IncludeAndroidUser: options.IncludeAndroidUser,
|
||||||
|
|
Loading…
Reference in a new issue