Compare commits

..

32 Commits

Author SHA1 Message Date
世界
21386bad83 documentation: Bump version 2024-01-03 12:23:08 +08:00
世界
16eff06c37 documentation: remove usages of category-companies@cn since merged into cn 2024-01-03 12:21:53 +08:00
世界
2911eba236 documentation: Update package managers 2024-01-03 12:21:48 +08:00
世界
2e607118c3 Remove unnecessary context wrappers 2024-01-03 12:21:48 +08:00
世界
89c723e3e4 Improve read wait interface &
Refactor Authenticator interface to struct &
Update smux &
Update gVisor to 20231204.0 &
Update quic-go to v0.40.1 &
Update wireguard-go &
Add GSO support for TUN/WireGuard &
Fix router pre-start &
Fix bind forwarder to interface for systems stack
2024-01-03 12:21:47 +08:00
世界
35fd9de3ff Make generated files have SUDO_USER's permissions if possible. 2024-01-03 12:21:47 +08:00
世界
6ddcd3954d Refactor inbound/outbound options struct 2024-01-03 12:21:47 +08:00
世界
36b0f2e91a Improve configuration merge 2024-01-03 12:21:47 +08:00
世界
fe053e26b5 Update uTLS to 1.5.4 2024-01-03 12:21:47 +08:00
世界
269434cfe6 Update tfo-go 2024-01-03 12:21:47 +08:00
世界
88495a24dc Update gomobile and add tag 2024-01-03 12:21:46 +08:00
世界
d131a7c10a Update cloudflare-tls to go1.21.5 2024-01-03 12:21:46 +08:00
世界
744a5d703b Make type check strict 2024-01-03 12:21:46 +08:00
世界
09421b6378 Remove comparable limit for Listable 2024-01-03 12:21:46 +08:00
世界
21283b554a Avoid opening log output before start &
Replace tracing logs with task monitor
2024-01-03 12:21:46 +08:00
世界
25810b50c1 Update documentation 2024-01-03 12:21:37 +08:00
世界
f1e3a59db3 Add idle_timeout for URLTest outbound 2024-01-03 12:21:37 +08:00
世界
a99deb2cb5 Skip internal fake-ip queries 2024-01-03 12:21:37 +08:00
世界
38d28e0763 Migrate contentjson and badjson to library &
Add omitempty in format
2024-01-03 12:21:37 +08:00
世界
e09a94bb9e Update documentation 2024-01-03 12:21:36 +08:00
世界
a21c5324fd Independent source_ip_is_private and ip_is_private rules 2024-01-03 12:21:36 +08:00
世界
4b43acfec0 Add rule-set 2024-01-03 12:21:36 +08:00
世界
7df151e820 Update buffer usage 2024-01-03 12:21:36 +08:00
世界
5948ffb965 Allow nested logical rules 2024-01-03 12:21:36 +08:00
世界
bf4e556f67 Migrate to independent cache file 2024-01-03 12:21:36 +08:00
世界
e3f8567690 documentation: Bump version 2024-01-02 14:31:53 +08:00
世界
40c7f3e170 Fix geoip close 2024-01-02 14:31:23 +08:00
世界
c506255e0f Fix grpc lite transport encoding 2024-01-01 16:16:58 +08:00
世界
87c6fd4c0f Fix h2mux request context 2024-01-01 16:15:49 +08:00
世界
19c445d28e documentation: Bump version 2023-12-29 18:00:40 +08:00
世界
9119a5209b dcoumentation: Fix description of cipher_suites 2023-12-29 18:00:40 +08:00
世界
46c8d6e61f Fix pprof URL path 2023-12-29 18:00:40 +08:00
12 changed files with 74 additions and 63 deletions

View File

@@ -32,3 +32,7 @@ func (r *Reader) Lookup(addr netip.Addr) string {
}
return "unknown"
}
func (r *Reader) Close() error {
return r.reader.Close()
}

View File

@@ -5,6 +5,7 @@ import (
"net/http/pprof"
"runtime"
"runtime/debug"
"strings"
"github.com/sagernet/sing-box/common/humanize"
"github.com/sagernet/sing-box/log"
@@ -47,12 +48,20 @@ func applyDebugListenOption(options option.DebugOptions) {
encoder.SetIndent("", " ")
encoder.Encode(memObject)
})
r.HandleFunc("/pprof", pprof.Index)
r.HandleFunc("/pprof/*", pprof.Index)
r.HandleFunc("/pprof/cmdline", pprof.Cmdline)
r.HandleFunc("/pprof/profile", pprof.Profile)
r.HandleFunc("/pprof/symbol", pprof.Symbol)
r.HandleFunc("/pprof/trace", pprof.Trace)
r.Route("/pprof", func(r chi.Router) {
r.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
if !strings.HasSuffix(request.URL.Path, "/") {
http.Redirect(writer, request, request.URL.Path+"/", http.StatusMovedPermanently)
} else {
pprof.Index(writer, request)
}
})
r.HandleFunc("/*", pprof.Index)
r.HandleFunc("/cmdline", pprof.Cmdline)
r.HandleFunc("/profile", pprof.Profile)
r.HandleFunc("/symbol", pprof.Symbol)
r.HandleFunc("/trace", pprof.Trace)
})
})
debugHTTPServer = &http.Server{
Addr: options.Listen,

View File

@@ -1,4 +1,4 @@
//go:build !linux
//go:build !(linux || darwin)
package box

View File

@@ -1,3 +1,5 @@
//go:build linux || darwin
package box
import (

View File

@@ -2,6 +2,27 @@
icon: material/alert-decagram
---
#### 1.8.0-rc.11
* Fixes and improvements
#### 1.7.8
* Fixes and improvements
#### 1.8.0-rc.10
* Fixes and improvements
#### 1.7.7
* Fix V2Ray transport `path` validation behavior **1**
* Fixes and improvements
**1**:
See [V2Ray transport](/configuration/shared/v2ray-transport/).
#### 1.8.0-rc.7
* Fixes and improvements

View File

@@ -173,10 +173,9 @@ By default, the maximum version is currently TLS 1.3.
#### cipher_suites
The elliptic curves that will be used in an ECDHE handshake, in preference order.
A list of enabled TLS 1.01.2 cipher suites. The order of the list is ignored. Note that TLS 1.3 cipher suites are not configurable.
If empty, the default will be used. The client will use the first preference as the type for its key share in TLS 1.3.
This may change in the future.
If empty, a safe default list is used. The default cipher suites might change over time.
#### certificate

View File

@@ -170,12 +170,9 @@ TLS 版本值:
#### cipher_suites
将在 ECDHE 握手中使用的椭圆曲线,按优先顺序排列
启用的 TLS 1.0-1.2密码套件的列表。列表的顺序被忽略。请注意TLS 1.3 的密码套件是不可配置的
如果为空,使用默认值
客户端将使用第一个首选项作为其在 TLS 1.3 中的密钥共享类型。
这在未来可能会改变。
如果为空,使用安全的默认列表。默认密码套件可能会随着时间的推移而改变
#### certificate

View File

@@ -330,10 +330,7 @@ flowchart TB
"invert": true
},
{
"geosite": [
"cn",
"category-companies@cn"
],
"geosite": "cn",
}
],
"server": "local"
@@ -385,10 +382,7 @@ flowchart TB
"invert": true
},
{
"rule_set": [
"geosite-cn",
"geosite-category-companies@cn"
]
"rule_set": "geosite-cn",
}
],
"server": "local"
@@ -408,12 +402,6 @@ flowchart TB
"tag": "geosite-geolocation-!cn",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs"
},
{
"type": "remote",
"tag": "geosite-category-companies@cn",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-category-companies@cn.srs"
}
]
}
@@ -487,10 +475,7 @@ flowchart TB
"invert": true
},
{
"geosite": [
"cn",
"category-companies@cn"
],
"geosite": "cn",
"geoip": "cn"
}
],
@@ -570,8 +555,7 @@ flowchart TB
{
"rule_set": [
"geoip-cn",
"geosite-cn",
"geosite-category-companies@cn"
"geosite-cn"
]
}
],
@@ -596,12 +580,6 @@ flowchart TB
"tag": "geosite-geolocation-!cn",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs"
},
{
"type": "remote",
"tag": "geosite-category-companies@cn",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-category-companies@cn.srs"
}
]
}

2
go.mod
View File

@@ -28,7 +28,7 @@ require (
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691
github.com/sagernet/sing v0.3.0-rc.7
github.com/sagernet/sing-dns v0.1.12
github.com/sagernet/sing-mux v0.1.7-rc.1
github.com/sagernet/sing-mux v0.1.8-rc.1
github.com/sagernet/sing-quic v0.1.7-rc.2
github.com/sagernet/sing-shadowsocks v0.2.6
github.com/sagernet/sing-shadowsocks2 v0.1.6-rc.1

4
go.sum
View File

@@ -113,8 +113,8 @@ github.com/sagernet/sing v0.3.0-rc.7 h1:FmnzFRYC6usVgWf112cUxiexwvL+iAurKmCL4Axa
github.com/sagernet/sing v0.3.0-rc.7/go.mod h1:9pfuAH6mZfgnz/YjP6xu5sxx882rfyjpcrTdUpd6w3g=
github.com/sagernet/sing-dns v0.1.12 h1:1HqZ+ln+Rezx/aJMStaS0d7oPeX2EobSV1NT537kyj4=
github.com/sagernet/sing-dns v0.1.12/go.mod h1:rx/DTOisneQpCgNQ4jbFU/JNEtnz0lYcHXenlVzpjEU=
github.com/sagernet/sing-mux v0.1.7-rc.1 h1:4XlQSeIqKA6uaW1KGQA9wCG5zt9ajhvc/zJnnZV/n1c=
github.com/sagernet/sing-mux v0.1.7-rc.1/go.mod h1:KK5zCbNujj5kn36G+wLFROOXyJhaaXLyaZWY2w7kBNQ=
github.com/sagernet/sing-mux v0.1.8-rc.1 h1:5dsZgWmNr9W6JzQj4fb3xX2pMP0OyJH6kVtlqc2kFKA=
github.com/sagernet/sing-mux v0.1.8-rc.1/go.mod h1:KK5zCbNujj5kn36G+wLFROOXyJhaaXLyaZWY2w7kBNQ=
github.com/sagernet/sing-quic v0.1.7-rc.2 h1:rCWhtvzQwgkWbX4sVHYdNwzyPweoUPEgBCBatywHjMs=
github.com/sagernet/sing-quic v0.1.7-rc.2/go.mod h1:IbKCPWXP13zd3cdu0rirtYjkMlquc5zWtc3avfSUGAw=
github.com/sagernet/sing-shadowsocks v0.2.6 h1:xr7ylAS/q1cQYS8oxKKajhuQcchd5VJJ4K4UZrrpp0s=

View File

@@ -629,7 +629,7 @@ func (r *Router) Close() error {
}
if r.geoIPReader != nil {
monitor.Start("close geoip reader")
err = E.Append(err, common.Close(r.geoIPReader), func(err error) error {
err = E.Append(err, r.geoIPReader.Close(), func(err error) error {
return E.Cause(err, "close geoip reader")
})
monitor.Finish()

View File

@@ -2,19 +2,16 @@ package v2raygrpclite
import (
std_bufio "bufio"
"bytes"
"encoding/binary"
"io"
"net"
"net/http"
"os"
"sync"
"time"
"github.com/sagernet/sing/common"
"github.com/sagernet/sing/common/baderror"
"github.com/sagernet/sing/common/buf"
"github.com/sagernet/sing/common/bufio"
M "github.com/sagernet/sing/common/metadata"
"github.com/sagernet/sing/common/rw"
)
@@ -30,7 +27,6 @@ type GunConn struct {
create chan struct{}
err error
readRemaining int
writeAccess sync.Mutex
}
func newGunConn(reader io.Reader, writer io.Writer, flusher http.Flusher) *GunConn {
@@ -100,19 +96,22 @@ func (c *GunConn) read(b []byte) (n int, err error) {
}
func (c *GunConn) Write(b []byte) (n int, err error) {
protobufHeader := [1 + binary.MaxVarintLen64]byte{0x0A}
varuintLen := binary.PutUvarint(protobufHeader[1:], uint64(len(b)))
grpcHeader := buf.Get(5)
grpcPayloadLen := uint32(1 + varuintLen + len(b))
binary.BigEndian.PutUint32(grpcHeader[1:5], grpcPayloadLen)
c.writeAccess.Lock()
_, err = bufio.Copy(c.writer, io.MultiReader(bytes.NewReader(grpcHeader), bytes.NewReader(protobufHeader[:varuintLen+1]), bytes.NewReader(b)))
c.writeAccess.Unlock()
buf.Put(grpcHeader)
if err == nil && c.flusher != nil {
varLen := rw.UVariantLen(uint64(len(b)))
buffer := buf.NewSize(6 + varLen + len(b))
header := buffer.Extend(6 + varLen)
header[0] = 0x00
binary.BigEndian.PutUint32(header[1:5], uint32(1+varLen+len(b)))
header[5] = 0x0A
binary.PutUvarint(header[6:], uint64(len(b)))
common.Must1(buffer.Write(b))
_, err = c.writer.Write(buffer.Bytes())
if err != nil {
return 0, baderror.WrapH2(err)
}
if c.flusher != nil {
c.flusher.Flush()
}
return len(b), baderror.WrapH2(err)
return len(b), nil
}
func (c *GunConn) WriteBuffer(buffer *buf.Buffer) error {
@@ -120,16 +119,18 @@ func (c *GunConn) WriteBuffer(buffer *buf.Buffer) error {
dataLen := buffer.Len()
varLen := rw.UVariantLen(uint64(dataLen))
header := buffer.ExtendHeader(6 + varLen)
_ = header[6]
header[0] = 0x00
binary.BigEndian.PutUint32(header[1:5], uint32(1+varLen+dataLen))
header[5] = 0x0A
binary.PutUvarint(header[6:], uint64(dataLen))
err := rw.WriteBytes(c.writer, buffer.Bytes())
if err == nil && c.flusher != nil {
if err != nil {
return baderror.WrapH2(err)
}
if c.flusher != nil {
c.flusher.Flush()
}
return baderror.WrapH2(err)
return nil
}
func (c *GunConn) FrontHeadroom() int {