mirror of
https://github.com/SagerNet/sing-tun.git
synced 2025-04-01 19:07:38 +03:00
auto-redirect: Move initialize to start
This commit is contained in:
parent
d093b82064
commit
8cc5351bb3
1 changed files with 8 additions and 10 deletions
|
@ -44,7 +44,7 @@ type autoRedirect struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAutoRedirect(options AutoRedirectOptions) (AutoRedirect, error) {
|
func NewAutoRedirect(options AutoRedirectOptions) (AutoRedirect, error) {
|
||||||
r := &autoRedirect{
|
return &autoRedirect{
|
||||||
tunOptions: options.TunOptions,
|
tunOptions: options.TunOptions,
|
||||||
ctx: options.Context,
|
ctx: options.Context,
|
||||||
handler: options.Handler,
|
handler: options.Handler,
|
||||||
|
@ -56,7 +56,10 @@ func NewAutoRedirect(options AutoRedirectOptions) (AutoRedirect, error) {
|
||||||
customRedirectPortFunc: options.CustomRedirectPort,
|
customRedirectPortFunc: options.CustomRedirectPort,
|
||||||
routeAddressSet: options.RouteAddressSet,
|
routeAddressSet: options.RouteAddressSet,
|
||||||
routeExcludeAddressSet: options.RouteExcludeAddressSet,
|
routeExcludeAddressSet: options.RouteExcludeAddressSet,
|
||||||
}
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *autoRedirect) Start() error {
|
||||||
var err error
|
var err error
|
||||||
if runtime.GOOS == "android" {
|
if runtime.GOOS == "android" {
|
||||||
r.enableIPv4 = true
|
r.enableIPv4 = true
|
||||||
|
@ -74,7 +77,7 @@ func NewAutoRedirect(options AutoRedirectOptions) (AutoRedirect, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, E.Extend(E.Cause(err, "root permission is required for auto redirect"), os.Getenv("PATH"))
|
return E.Extend(E.Cause(err, "root permission is required for auto redirect"), os.Getenv("PATH"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -90,7 +93,7 @@ func NewAutoRedirect(options AutoRedirectOptions) (AutoRedirect, error) {
|
||||||
if !r.useNFTables {
|
if !r.useNFTables {
|
||||||
r.iptablesPath, err = exec.LookPath("iptables")
|
r.iptablesPath, err = exec.LookPath("iptables")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, E.Cause(err, "iptables is required")
|
return E.Cause(err, "iptables is required")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,7 +103,7 @@ func NewAutoRedirect(options AutoRedirectOptions) (AutoRedirect, error) {
|
||||||
r.ip6tablesPath, err = exec.LookPath("ip6tables")
|
r.ip6tablesPath, err = exec.LookPath("ip6tables")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !r.enableIPv4 {
|
if !r.enableIPv4 {
|
||||||
return nil, E.Cause(err, "ip6tables is required")
|
return E.Cause(err, "ip6tables is required")
|
||||||
} else {
|
} else {
|
||||||
r.enableIPv6 = false
|
r.enableIPv6 = false
|
||||||
r.logger.Error("device has no ip6tables nat support: ", err)
|
r.logger.Error("device has no ip6tables nat support: ", err)
|
||||||
|
@ -109,10 +112,6 @@ func NewAutoRedirect(options AutoRedirectOptions) (AutoRedirect, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *autoRedirect) Start() error {
|
|
||||||
if r.customRedirectPortFunc != nil {
|
if r.customRedirectPortFunc != nil {
|
||||||
r.customRedirectPort = r.customRedirectPortFunc()
|
r.customRedirectPort = r.customRedirectPortFunc()
|
||||||
}
|
}
|
||||||
|
@ -132,7 +131,6 @@ func (r *autoRedirect) Start() error {
|
||||||
}
|
}
|
||||||
r.redirectServer = server
|
r.redirectServer = server
|
||||||
}
|
}
|
||||||
var err error
|
|
||||||
if r.useNFTables {
|
if r.useNFTables {
|
||||||
r.cleanupNFTables()
|
r.cleanupNFTables()
|
||||||
err = r.setupNFTables()
|
err = r.setupNFTables()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue