mirror of
https://gitclone.com/github.com/MetaCubeX/Clash.Meta
synced 2025-04-24 20:28:11 +08:00
chore: better uuid using
This commit is contained in:
parent
516c219580
commit
f7610ce2ad
@ -34,12 +34,7 @@ func (b *Base) Name() string {
|
|||||||
// Id implements C.ProxyAdapter
|
// Id implements C.ProxyAdapter
|
||||||
func (b *Base) Id() string {
|
func (b *Base) Id() string {
|
||||||
if b.id == "" {
|
if b.id == "" {
|
||||||
id, err := utils.UnsafeUUIDGenerator.NewV6()
|
b.id = utils.NewUUIDV6().String()
|
||||||
if err != nil {
|
|
||||||
b.id = b.name
|
|
||||||
} else {
|
|
||||||
b.id = id.String()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return b.id
|
return b.id
|
||||||
@ -235,8 +230,7 @@ func (c *packetConn) LocalAddr() net.Addr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func newPacketConn(pc net.PacketConn, a C.ProxyAdapter) C.PacketConn {
|
func newPacketConn(pc net.PacketConn, a C.ProxyAdapter) C.PacketConn {
|
||||||
id, _ := utils.UnsafeUUIDGenerator.NewV4()
|
return &packetConn{pc, []string{a.Name()}, a.Name(), utils.NewUUIDV4().String(), parseRemoteDestination(a.Addr())}
|
||||||
return &packetConn{pc, []string{a.Name()}, a.Name(), id.String(), parseRemoteDestination(a.Addr())}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseRemoteDestination(addr string) string {
|
func parseRemoteDestination(addr string) string {
|
||||||
|
@ -64,10 +64,7 @@ func (hc *HealthCheck) touch() {
|
|||||||
|
|
||||||
func (hc *HealthCheck) check() {
|
func (hc *HealthCheck) check() {
|
||||||
_, _, _ = hc.singleDo.Do(func() (struct{}, error) {
|
_, _, _ = hc.singleDo.Do(func() (struct{}, error) {
|
||||||
id := ""
|
id := utils.NewUUIDV4().String()
|
||||||
if uid, err := utils.UnsafeUUIDGenerator.NewV4(); err == nil {
|
|
||||||
id = uid.String()
|
|
||||||
}
|
|
||||||
log.Debugln("Start New Health Checking {%s}", id)
|
log.Debugln("Start New Health Checking {%s}", id)
|
||||||
b, _ := batch.New[bool](context.Background(), batch.WithConcurrencyNum[bool](10))
|
b, _ := batch.New[bool](context.Background(), batch.WithConcurrencyNum[bool](10))
|
||||||
for _, proxy := range hc.proxies {
|
for _, proxy := range hc.proxies {
|
||||||
|
@ -294,8 +294,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func RandHost() string {
|
func RandHost() string {
|
||||||
id, _ := utils.UnsafeUUIDGenerator.NewV4()
|
base := strings.ToLower(base64.RawURLEncoding.EncodeToString(utils.NewUUIDV4().Bytes()))
|
||||||
base := strings.ToLower(base64.RawURLEncoding.EncodeToString(id.Bytes()))
|
|
||||||
base = strings.ReplaceAll(base, "-", "")
|
base = strings.ReplaceAll(base, "-", "")
|
||||||
base = strings.ReplaceAll(base, "_", "")
|
base = strings.ReplaceAll(base, "_", "")
|
||||||
buf := []byte(base)
|
buf := []byte(base)
|
||||||
|
@ -13,11 +13,39 @@ func (r fastRandReader) Read(p []byte) (int, error) {
|
|||||||
|
|
||||||
var UnsafeUUIDGenerator = uuid.NewGenWithOptions(uuid.WithRandomReader(fastRandReader{}))
|
var UnsafeUUIDGenerator = uuid.NewGenWithOptions(uuid.WithRandomReader(fastRandReader{}))
|
||||||
|
|
||||||
|
func NewUUIDV1() uuid.UUID {
|
||||||
|
u, _ := UnsafeUUIDGenerator.NewV1() // fastrand.Read wouldn't cause error, so ignore err is safe
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUUIDV3(ns uuid.UUID, name string) uuid.UUID {
|
||||||
|
return UnsafeUUIDGenerator.NewV3(ns, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUUIDV4() uuid.UUID {
|
||||||
|
u, _ := UnsafeUUIDGenerator.NewV4() // fastrand.Read wouldn't cause error, so ignore err is safe
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUUIDV5(ns uuid.UUID, name string) uuid.UUID {
|
||||||
|
return UnsafeUUIDGenerator.NewV5(ns, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUUIDV6() uuid.UUID {
|
||||||
|
u, _ := UnsafeUUIDGenerator.NewV6() // fastrand.Read wouldn't cause error, so ignore err is safe
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUUIDV7() uuid.UUID {
|
||||||
|
u, _ := UnsafeUUIDGenerator.NewV7() // fastrand.Read wouldn't cause error, so ignore err is safe
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
// UUIDMap https://github.com/XTLS/Xray-core/issues/158#issue-783294090
|
// UUIDMap https://github.com/XTLS/Xray-core/issues/158#issue-783294090
|
||||||
func UUIDMap(str string) (uuid.UUID, error) {
|
func UUIDMap(str string) (uuid.UUID, error) {
|
||||||
u, err := uuid.FromString(str)
|
u, err := uuid.FromString(str)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return UnsafeUUIDGenerator.NewV5(uuid.Nil, str), nil
|
return NewUUIDV5(uuid.Nil, str), nil
|
||||||
}
|
}
|
||||||
return u, nil
|
return u, nil
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,8 @@ type ConnContext struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewConnContext(conn net.Conn, metadata *C.Metadata) *ConnContext {
|
func NewConnContext(conn net.Conn, metadata *C.Metadata) *ConnContext {
|
||||||
id, _ := utils.UnsafeUUIDGenerator.NewV4()
|
|
||||||
|
|
||||||
return &ConnContext{
|
return &ConnContext{
|
||||||
id: id,
|
id: utils.NewUUIDV4(),
|
||||||
metadata: metadata,
|
metadata: metadata,
|
||||||
conn: N.NewBufferedConn(conn),
|
conn: N.NewBufferedConn(conn),
|
||||||
}
|
}
|
||||||
|
@ -23,11 +23,10 @@ type DNSContext struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewDNSContext(ctx context.Context, msg *dns.Msg) *DNSContext {
|
func NewDNSContext(ctx context.Context, msg *dns.Msg) *DNSContext {
|
||||||
id, _ := utils.UnsafeUUIDGenerator.NewV4()
|
|
||||||
return &DNSContext{
|
return &DNSContext{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
|
|
||||||
id: id,
|
id: utils.NewUUIDV4(),
|
||||||
msg: msg,
|
msg: msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,9 +16,8 @@ type PacketConnContext struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewPacketConnContext(metadata *C.Metadata) *PacketConnContext {
|
func NewPacketConnContext(metadata *C.Metadata) *PacketConnContext {
|
||||||
id, _ := utils.UnsafeUUIDGenerator.NewV4()
|
|
||||||
return &PacketConnContext{
|
return &PacketConnContext{
|
||||||
id: id,
|
id: utils.NewUUIDV4(),
|
||||||
metadata: metadata,
|
metadata: metadata,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,14 +56,10 @@ func (s *Server) Serve() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
SetCongestionController(conn, s.CongestionController)
|
SetCongestionController(conn, s.CongestionController)
|
||||||
uuid, err := utils.UnsafeUUIDGenerator.NewV4()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
h := &serverHandler{
|
h := &serverHandler{
|
||||||
Server: s,
|
Server: s,
|
||||||
quicConn: conn,
|
quicConn: conn,
|
||||||
uuid: uuid,
|
uuid: utils.NewUUIDV4(),
|
||||||
authCh: make(chan struct{}),
|
authCh: make(chan struct{}),
|
||||||
}
|
}
|
||||||
go h.handle()
|
go h.handle()
|
||||||
|
@ -83,7 +83,6 @@ func (tt *tcpTracker) Upstream() any {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewTCPTracker(conn C.Conn, manager *Manager, metadata *C.Metadata, rule C.Rule, uploadTotal int64, downloadTotal int64) *tcpTracker {
|
func NewTCPTracker(conn C.Conn, manager *Manager, metadata *C.Metadata, rule C.Rule, uploadTotal int64, downloadTotal int64) *tcpTracker {
|
||||||
uuid, _ := utils.UnsafeUUIDGenerator.NewV4()
|
|
||||||
if conn != nil {
|
if conn != nil {
|
||||||
if tcpAddr, ok := conn.RemoteAddr().(*net.TCPAddr); ok {
|
if tcpAddr, ok := conn.RemoteAddr().(*net.TCPAddr); ok {
|
||||||
metadata.RemoteDst = tcpAddr.IP.String()
|
metadata.RemoteDst = tcpAddr.IP.String()
|
||||||
@ -96,7 +95,7 @@ func NewTCPTracker(conn C.Conn, manager *Manager, metadata *C.Metadata, rule C.R
|
|||||||
Conn: conn,
|
Conn: conn,
|
||||||
manager: manager,
|
manager: manager,
|
||||||
trackerInfo: &trackerInfo{
|
trackerInfo: &trackerInfo{
|
||||||
UUID: uuid,
|
UUID: utils.NewUUIDV4(),
|
||||||
Start: time.Now(),
|
Start: time.Now(),
|
||||||
Metadata: metadata,
|
Metadata: metadata,
|
||||||
Chain: conn.Chains(),
|
Chain: conn.Chains(),
|
||||||
@ -149,14 +148,13 @@ func (ut *udpTracker) Close() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewUDPTracker(conn C.PacketConn, manager *Manager, metadata *C.Metadata, rule C.Rule, uploadTotal int64, downloadTotal int64) *udpTracker {
|
func NewUDPTracker(conn C.PacketConn, manager *Manager, metadata *C.Metadata, rule C.Rule, uploadTotal int64, downloadTotal int64) *udpTracker {
|
||||||
uuid, _ := utils.UnsafeUUIDGenerator.NewV4()
|
|
||||||
metadata.RemoteDst = conn.RemoteDestination()
|
metadata.RemoteDst = conn.RemoteDestination()
|
||||||
|
|
||||||
ut := &udpTracker{
|
ut := &udpTracker{
|
||||||
PacketConn: conn,
|
PacketConn: conn,
|
||||||
manager: manager,
|
manager: manager,
|
||||||
trackerInfo: &trackerInfo{
|
trackerInfo: &trackerInfo{
|
||||||
UUID: uuid,
|
UUID: utils.NewUUIDV4(),
|
||||||
Start: time.Now(),
|
Start: time.Now(),
|
||||||
Metadata: metadata,
|
Metadata: metadata,
|
||||||
Chain: conn.Chains(),
|
Chain: conn.Chains(),
|
||||||
|
Loading…
Reference in New Issue
Block a user