mirror of
https://github.com/SagerNet/sing-box.git
synced 2025-07-26 07:54:08 +08:00
Compare commits
4 Commits
v1.12.0-rc
...
dev-next
Author | SHA1 | Date | |
---|---|---|---|
![]() |
66a767d083 | ||
![]() |
9095e5763a | ||
![]() |
a11384b286 | ||
![]() |
9dd9fb27cd |
@ -87,13 +87,15 @@ func NewSTDClient(ctx context.Context, serverAddress string, options option.Outb
|
||||
tlsConfig.VerifyConnection = func(state tls.ConnectionState) error {
|
||||
verifyOptions := x509.VerifyOptions{
|
||||
Roots: tlsConfig.RootCAs,
|
||||
CurrentTime: tlsConfig.Time(),
|
||||
DNSName: serverName,
|
||||
Intermediates: x509.NewCertPool(),
|
||||
}
|
||||
for _, cert := range state.PeerCertificates[1:] {
|
||||
verifyOptions.Intermediates.AddCert(cert)
|
||||
}
|
||||
if tlsConfig.Time != nil {
|
||||
verifyOptions.CurrentTime = tlsConfig.Time()
|
||||
}
|
||||
_, err := state.PeerCertificates[0].Verify(verifyOptions)
|
||||
return err
|
||||
}
|
||||
|
@ -11,10 +11,13 @@ type TimeServiceWrapper struct {
|
||||
}
|
||||
|
||||
func (w *TimeServiceWrapper) TimeFunc() func() time.Time {
|
||||
if w.TimeService == nil {
|
||||
return nil
|
||||
return func() time.Time {
|
||||
if w.TimeService != nil {
|
||||
return w.TimeService.TimeFunc()()
|
||||
} else {
|
||||
return time.Now()
|
||||
}
|
||||
}
|
||||
return w.TimeService.TimeFunc()
|
||||
}
|
||||
|
||||
func (w *TimeServiceWrapper) Upstream() any {
|
||||
|
@ -2,7 +2,7 @@
|
||||
icon: material/alert-decagram
|
||||
---
|
||||
|
||||
#### 1.12.0-rc.2
|
||||
#### 1.12.0-rc.3
|
||||
|
||||
* Fixes and improvements
|
||||
|
||||
|
@ -50,12 +50,24 @@ func (s *TrafficManager) UpdateUsers(users []string) {
|
||||
newUserTCPSessions := make(map[string]*atomic.Int64)
|
||||
newUserUDPSessions := make(map[string]*atomic.Int64)
|
||||
for _, user := range users {
|
||||
newUserUplink[user] = s.userUplinkPackets[user]
|
||||
newUserDownlink[user] = s.userDownlinkPackets[user]
|
||||
newUserUplinkPackets[user] = s.userUplinkPackets[user]
|
||||
newUserDownlinkPackets[user] = s.userDownlinkPackets[user]
|
||||
newUserTCPSessions[user] = s.userTCPSessions[user]
|
||||
newUserUDPSessions[user] = s.userUDPSessions[user]
|
||||
if counter, loaded := s.userUplink[user]; loaded {
|
||||
newUserUplink[user] = counter
|
||||
}
|
||||
if counter, loaded := s.userDownlink[user]; loaded {
|
||||
newUserDownlink[user] = counter
|
||||
}
|
||||
if counter, loaded := s.userUplinkPackets[user]; loaded {
|
||||
newUserUplinkPackets[user] = counter
|
||||
}
|
||||
if counter, loaded := s.userDownlinkPackets[user]; loaded {
|
||||
newUserDownlinkPackets[user] = counter
|
||||
}
|
||||
if counter, loaded := s.userTCPSessions[user]; loaded {
|
||||
newUserTCPSessions[user] = counter
|
||||
}
|
||||
if counter, loaded := s.userUDPSessions[user]; loaded {
|
||||
newUserUDPSessions[user] = counter
|
||||
}
|
||||
}
|
||||
s.userUplink = newUserUplink
|
||||
s.userDownlink = newUserDownlink
|
||||
|
Loading…
x
Reference in New Issue
Block a user