feat: support Hysteria2

This commit is contained in:
wwqgtxx
2023-09-21 10:28:28 +08:00
parent 24fd577767
commit 9b8e2d9343
7 changed files with 269 additions and 36 deletions

View File

@ -4,8 +4,10 @@ import (
"bytes"
"context"
"crypto/tls"
"fmt"
"net"
"net/netip"
"strconv"
"sync"
"github.com/Dreamacro/clash/component/resolver"
@ -120,3 +122,39 @@ func safeConnClose(c net.Conn, err error) {
_ = c.Close()
}
}
func stringToBps(s string) uint64 {
if s == "" {
return 0
}
// when have not unit, use Mbps
if v, err := strconv.Atoi(s); err == nil {
return stringToBps(fmt.Sprintf("%d Mbps", v))
}
m := rateStringRegexp.FindStringSubmatch(s)
if m == nil {
return 0
}
var n uint64
switch m[2] {
case "K":
n = 1 << 10
case "M":
n = 1 << 20
case "G":
n = 1 << 30
case "T":
n = 1 << 40
default:
n = 1
}
v, _ := strconv.ParseUint(m[1], 10, 64)
n = v * n
if m[3] == "b" {
// Bits, need to convert to bytes
n = n >> 3
}
return n
}