From bed523577298cb5c765cfc667c7fe2380ccf92e6 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Tue, 12 Jan 2016 10:52:40 +0000 Subject: [PATCH] remove proxy/vmess/protocol/user --- proxy/vmess/inbound/inbound.go | 7 +++---- proxy/vmess/outbound/outbound.go | 3 +-- proxy/vmess/protocol/{user => }/hash.go | 2 +- proxy/vmess/protocol/{user => }/rand.go | 2 +- proxy/vmess/protocol/{user => }/rand_test.go | 8 +++----- .../testing/mocks => testing}/mockuserset.go | 6 +++--- .../mocks => testing}/static_userset.go | 4 ++-- proxy/vmess/protocol/{user => }/userset.go | 2 +- proxy/vmess/protocol/vmess.go | 11 +++++------ proxy/vmess/protocol/vmess_test.go | 18 +++++++++--------- 10 files changed, 29 insertions(+), 34 deletions(-) rename proxy/vmess/protocol/{user => }/hash.go (91%) rename proxy/vmess/protocol/{user => }/rand.go (96%) rename proxy/vmess/protocol/{user => }/rand_test.go (73%) rename proxy/vmess/protocol/{user/testing/mocks => testing}/mockuserset.go (68%) rename proxy/vmess/protocol/{user/testing/mocks => testing}/static_userset.go (82%) rename proxy/vmess/protocol/{user => }/userset.go (99%) diff --git a/proxy/vmess/inbound/inbound.go b/proxy/vmess/inbound/inbound.go index 2acc416f..73d520fc 100644 --- a/proxy/vmess/inbound/inbound.go +++ b/proxy/vmess/inbound/inbound.go @@ -16,19 +16,18 @@ import ( "github.com/v2ray/v2ray-core/proxy/internal" "github.com/v2ray/v2ray-core/proxy/vmess" "github.com/v2ray/v2ray-core/proxy/vmess/protocol" - "github.com/v2ray/v2ray-core/proxy/vmess/protocol/user" ) // Inbound connection handler that handles messages in VMess format. type VMessInboundHandler struct { sync.Mutex space app.Space - clients user.UserSet + clients protocol.UserSet accepting bool listener *net.TCPListener } -func NewVMessInboundHandler(space app.Space, clients user.UserSet) *VMessInboundHandler { +func NewVMessInboundHandler(space app.Space, clients protocol.UserSet) *VMessInboundHandler { return &VMessInboundHandler{ space: space, clients: clients, @@ -170,7 +169,7 @@ func init() { func(space app.Space, rawConfig interface{}) (proxy.InboundConnectionHandler, error) { config := rawConfig.(Config) - allowedClients := user.NewTimedUserSet() + allowedClients := protocol.NewTimedUserSet() for _, user := range config.AllowedUsers() { allowedClients.AddUser(user) } diff --git a/proxy/vmess/outbound/outbound.go b/proxy/vmess/outbound/outbound.go index 046aed8d..720cd36a 100644 --- a/proxy/vmess/outbound/outbound.go +++ b/proxy/vmess/outbound/outbound.go @@ -15,7 +15,6 @@ import ( "github.com/v2ray/v2ray-core/proxy" "github.com/v2ray/v2ray-core/proxy/internal" "github.com/v2ray/v2ray-core/proxy/vmess/protocol" - "github.com/v2ray/v2ray-core/proxy/vmess/protocol/user" "github.com/v2ray/v2ray-core/transport/ray" ) @@ -105,7 +104,7 @@ func handleRequest(conn net.Conn, request *protocol.VMessRequest, firstPacket v2 buffer := alloc.NewBuffer().Clear() defer buffer.Release() - buffer, err = request.ToBytes(user.NewRandomTimestampGenerator(user.Timestamp(time.Now().Unix()), 30), buffer) + buffer, err = request.ToBytes(protocol.NewRandomTimestampGenerator(protocol.Timestamp(time.Now().Unix()), 30), buffer) if err != nil { log.Error("VMessOut: Failed to serialize VMess request: %v", err) return diff --git a/proxy/vmess/protocol/user/hash.go b/proxy/vmess/protocol/hash.go similarity index 91% rename from proxy/vmess/protocol/user/hash.go rename to proxy/vmess/protocol/hash.go index 3b01653e..427cf62e 100644 --- a/proxy/vmess/protocol/user/hash.go +++ b/proxy/vmess/protocol/hash.go @@ -1,4 +1,4 @@ -package user +package protocol import ( "crypto/hmac" diff --git a/proxy/vmess/protocol/user/rand.go b/proxy/vmess/protocol/rand.go similarity index 96% rename from proxy/vmess/protocol/user/rand.go rename to proxy/vmess/protocol/rand.go index 204f6964..d9e1c252 100644 --- a/proxy/vmess/protocol/user/rand.go +++ b/proxy/vmess/protocol/rand.go @@ -1,4 +1,4 @@ -package user +package protocol import ( "math/rand" diff --git a/proxy/vmess/protocol/user/rand_test.go b/proxy/vmess/protocol/rand_test.go similarity index 73% rename from proxy/vmess/protocol/user/rand_test.go rename to proxy/vmess/protocol/rand_test.go index ff7c9495..14c2ec64 100644 --- a/proxy/vmess/protocol/user/rand_test.go +++ b/proxy/vmess/protocol/rand_test.go @@ -1,9 +1,10 @@ -package user +package protocol_test import ( "testing" "time" + . "github.com/v2ray/v2ray-core/proxy/vmess/protocol" v2testing "github.com/v2ray/v2ray-core/testing" "github.com/v2ray/v2ray-core/testing/assert" ) @@ -13,10 +14,7 @@ func TestGenerateRandomInt64InRange(t *testing.T) { base := time.Now().Unix() delta := 100 - generator := &RealRandomTimestampGenerator{ - base: Timestamp(base), - delta: delta, - } + generator := NewRandomTimestampGenerator(Timestamp(base), delta) for i := 0; i < 100; i++ { v := int64(generator.Next()) diff --git a/proxy/vmess/protocol/user/testing/mocks/mockuserset.go b/proxy/vmess/protocol/testing/mockuserset.go similarity index 68% rename from proxy/vmess/protocol/user/testing/mocks/mockuserset.go rename to proxy/vmess/protocol/testing/mockuserset.go index 6d7f6628..b59457b8 100644 --- a/proxy/vmess/protocol/user/testing/mocks/mockuserset.go +++ b/proxy/vmess/protocol/testing/mockuserset.go @@ -2,13 +2,13 @@ package mocks import ( "github.com/v2ray/v2ray-core/proxy/vmess" - "github.com/v2ray/v2ray-core/proxy/vmess/protocol/user" + "github.com/v2ray/v2ray-core/proxy/vmess/protocol" ) type MockUserSet struct { Users []vmess.User UserHashes map[string]int - Timestamps map[string]user.Timestamp + Timestamps map[string]protocol.Timestamp } func (us *MockUserSet) AddUser(user vmess.User) error { @@ -16,7 +16,7 @@ func (us *MockUserSet) AddUser(user vmess.User) error { return nil } -func (us *MockUserSet) GetUser(userhash []byte) (vmess.User, user.Timestamp, bool) { +func (us *MockUserSet) GetUser(userhash []byte) (vmess.User, protocol.Timestamp, bool) { idx, found := us.UserHashes[string(userhash)] if found { return us.Users[idx], us.Timestamps[string(userhash)], true diff --git a/proxy/vmess/protocol/user/testing/mocks/static_userset.go b/proxy/vmess/protocol/testing/static_userset.go similarity index 82% rename from proxy/vmess/protocol/user/testing/mocks/static_userset.go rename to proxy/vmess/protocol/testing/static_userset.go index b4cb199e..d63bb3ab 100644 --- a/proxy/vmess/protocol/user/testing/mocks/static_userset.go +++ b/proxy/vmess/protocol/testing/static_userset.go @@ -3,7 +3,7 @@ package mocks import ( "github.com/v2ray/v2ray-core/common/uuid" "github.com/v2ray/v2ray-core/proxy/vmess" - "github.com/v2ray/v2ray-core/proxy/vmess/protocol/user" + "github.com/v2ray/v2ray-core/proxy/vmess/protocol" ) type StaticUser struct { @@ -33,7 +33,7 @@ func (us *StaticUserSet) AddUser(user vmess.User) error { return nil } -func (us *StaticUserSet) GetUser(userhash []byte) (vmess.User, user.Timestamp, bool) { +func (us *StaticUserSet) GetUser(userhash []byte) (vmess.User, protocol.Timestamp, bool) { id, _ := uuid.ParseString("703e9102-eb57-499c-8b59-faf4f371bb21") return &StaticUser{id: vmess.NewID(id)}, 0, true } diff --git a/proxy/vmess/protocol/user/userset.go b/proxy/vmess/protocol/userset.go similarity index 99% rename from proxy/vmess/protocol/user/userset.go rename to proxy/vmess/protocol/userset.go index 741d51a9..6da5969d 100644 --- a/proxy/vmess/protocol/user/userset.go +++ b/proxy/vmess/protocol/userset.go @@ -1,4 +1,4 @@ -package user +package protocol import ( "sync" diff --git a/proxy/vmess/protocol/vmess.go b/proxy/vmess/protocol/vmess.go index e12f076b..1a54359b 100644 --- a/proxy/vmess/protocol/vmess.go +++ b/proxy/vmess/protocol/vmess.go @@ -13,7 +13,6 @@ import ( v2net "github.com/v2ray/v2ray-core/common/net" "github.com/v2ray/v2ray-core/proxy" "github.com/v2ray/v2ray-core/proxy/vmess" - "github.com/v2ray/v2ray-core/proxy/vmess/protocol/user" "github.com/v2ray/v2ray-core/transport" ) @@ -55,11 +54,11 @@ func (this *VMessRequest) Destination() v2net.Destination { // VMessRequestReader is a parser to read VMessRequest from a byte stream. type VMessRequestReader struct { - vUserSet user.UserSet + vUserSet UserSet } // NewVMessRequestReader creates a new VMessRequestReader with a given UserSet -func NewVMessRequestReader(vUserSet user.UserSet) *VMessRequestReader { +func NewVMessRequestReader(vUserSet UserSet) *VMessRequestReader { return &VMessRequestReader{ vUserSet: vUserSet, } @@ -81,7 +80,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) { return nil, proxy.InvalidAuthentication } - timestampHash := user.TimestampHash() + timestampHash := TimestampHash() timestampHash.Write(timeSec.HashBytes()) iv := timestampHash.Sum(nil) aesStream, err := v2crypto.NewAesDecryptionStream(userObj.ID().CmdKey(), iv) @@ -172,13 +171,13 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) { } // ToBytes returns a VMessRequest in the form of byte array. -func (this *VMessRequest) ToBytes(timestampGenerator user.RandomTimestampGenerator, buffer *alloc.Buffer) (*alloc.Buffer, error) { +func (this *VMessRequest) ToBytes(timestampGenerator RandomTimestampGenerator, buffer *alloc.Buffer) (*alloc.Buffer, error) { if buffer == nil { buffer = alloc.NewSmallBuffer().Clear() } timestamp := timestampGenerator.Next() - idHash := user.IDHash(this.User.AnyValidID().Bytes()) + idHash := IDHash(this.User.AnyValidID().Bytes()) idHash.Write(timestamp.Bytes()) buffer.Append(idHash.Sum(nil)) diff --git a/proxy/vmess/protocol/vmess_test.go b/proxy/vmess/protocol/vmess_test.go index 70689082..fe96cc79 100644 --- a/proxy/vmess/protocol/vmess_test.go +++ b/proxy/vmess/protocol/vmess_test.go @@ -1,4 +1,4 @@ -package protocol +package protocol_test import ( "bytes" @@ -10,17 +10,17 @@ import ( v2net "github.com/v2ray/v2ray-core/common/net" "github.com/v2ray/v2ray-core/common/uuid" "github.com/v2ray/v2ray-core/proxy/vmess" - "github.com/v2ray/v2ray-core/proxy/vmess/protocol/user" - "github.com/v2ray/v2ray-core/proxy/vmess/protocol/user/testing/mocks" + . "github.com/v2ray/v2ray-core/proxy/vmess/protocol" + protocoltesting "github.com/v2ray/v2ray-core/proxy/vmess/protocol/testing" v2testing "github.com/v2ray/v2ray-core/testing" "github.com/v2ray/v2ray-core/testing/assert" ) type FakeTimestampGenerator struct { - timestamp user.Timestamp + timestamp Timestamp } -func (this *FakeTimestampGenerator) Next() user.Timestamp { +func (this *FakeTimestampGenerator) Next() Timestamp { return this.timestamp } @@ -57,7 +57,7 @@ func TestVMessSerialization(t *testing.T) { id: userId, } - userSet := mocks.MockUserSet{[]vmess.User{}, make(map[string]int), make(map[string]user.Timestamp)} + userSet := protocoltesting.MockUserSet{[]vmess.User{}, make(map[string]int), make(map[string]Timestamp)} userSet.AddUser(testUser) request := new(VMessRequest) @@ -75,7 +75,7 @@ func TestVMessSerialization(t *testing.T) { request.Address = v2net.DomainAddress("v2ray.com") request.Port = v2net.Port(80) - mockTime := user.Timestamp(1823730) + mockTime := Timestamp(1823730) buffer, err := request.ToBytes(&FakeTimestampGenerator{timestamp: mockTime}, nil) if err != nil { @@ -113,7 +113,7 @@ func BenchmarkVMessRequestWriting(b *testing.B) { assert.Error(err).IsNil() userId := vmess.NewID(id) - userSet := mocks.MockUserSet{[]vmess.User{}, make(map[string]int), make(map[string]user.Timestamp)} + userSet := protocoltesting.MockUserSet{[]vmess.User{}, make(map[string]int), make(map[string]Timestamp)} testUser := &TestUser{ id: userId, @@ -135,6 +135,6 @@ func BenchmarkVMessRequestWriting(b *testing.B) { request.Port = v2net.Port(80) for i := 0; i < b.N; i++ { - request.ToBytes(user.NewRandomTimestampGenerator(user.Timestamp(time.Now().Unix()), 30), nil) + request.ToBytes(NewRandomTimestampGenerator(Timestamp(time.Now().Unix()), 30), nil) } }