Add support for client-subnet DNS options

This commit is contained in:
世界
2024-02-09 18:37:25 +08:00
parent 36c89165f2
commit 5ffae06bf2
13 changed files with 90 additions and 51 deletions

View File

@@ -9,9 +9,7 @@ import (
"github.com/sagernet/sing-dns"
"github.com/sagernet/sing/common"
E "github.com/sagernet/sing/common/exceptions"
"github.com/sagernet/sing/common/logger"
M "github.com/sagernet/sing/common/metadata"
N "github.com/sagernet/sing/common/network"
"github.com/sagernet/sing/common/task"
mDNS "github.com/miekg/dns"
@@ -25,9 +23,11 @@ type LocalDNSTransport interface {
func RegisterLocalDNSTransport(transport LocalDNSTransport) {
if transport == nil {
dns.RegisterTransport([]string{"local"}, dns.CreateLocalTransport)
dns.RegisterTransport([]string{"local"}, func(options dns.TransportOptions) (dns.Transport, error) {
return dns.NewLocalTransport(options), nil
})
} else {
dns.RegisterTransport([]string{"local"}, func(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, link string) (dns.Transport, error) {
dns.RegisterTransport([]string{"local"}, func(options dns.TransportOptions) (dns.Transport, error) {
return &platformLocalDNSTransport{
iif: transport,
}, nil

View File

@@ -3,6 +3,8 @@ package libbox
import (
"sync"
"time"
"github.com/sagernet/sing-box/log"
)
type servicePauseFields struct {
@@ -16,6 +18,7 @@ func (s *BoxService) Pause() {
if s.pauseTimer != nil {
s.pauseTimer.Stop()
log.Debug("pause() reconfigured")
}
s.pauseTimer = time.AfterFunc(time.Minute, s.pause)
@@ -28,6 +31,8 @@ func (s *BoxService) pause() {
s.pauseManager.DevicePause()
_ = s.instance.Router().ResetNetwork()
s.pauseTimer = nil
log.Debug("pause()")
}
func (s *BoxService) Wake() {
@@ -37,9 +42,11 @@ func (s *BoxService) Wake() {
if s.pauseTimer != nil {
s.pauseTimer.Stop()
s.pauseTimer = nil
log.Debug("pause() ignored")
return
}
s.pauseManager.DeviceWake()
_ = s.instance.Router().ResetNetwork()
log.Debug("wake()")
}