Ver Fonte

server plugin: add client address in Login operation, fix #2742 (#2751)

fatedier há 3 anos atrás
pai
commit
22412851b4
3 ficheiros alterados com 11 adições e 1 exclusões
  1. 2 0
      pkg/plugin/server/types.go
  2. 2 1
      server/service.go
  3. 7 0
      test/e2e/plugin/server.go

+ 2 - 0
pkg/plugin/server/types.go

@@ -33,6 +33,8 @@ type Response struct {
 
 type LoginContent struct {
 	msg.Login
+
+	ClientAddress string `json:"client_address,omitempty"`
 }
 
 type UserInfo struct {

+ 2 - 1
server/service.go

@@ -334,7 +334,8 @@ func (svr *Service) handleConnection(ctx context.Context, conn net.Conn) {
 	case *msg.Login:
 		// server plugin hook
 		content := &plugin.LoginContent{
-			Login: *m,
+			Login:         *m,
+			ClientAddress: conn.RemoteAddr().String(),
 		}
 		retContent, err := svr.pluginManager.Login(content)
 		if err == nil {

+ 7 - 0
test/e2e/plugin/server.go

@@ -24,9 +24,14 @@ var _ = Describe("[Feature: Server-Plugins]", func() {
 
 		It("Auth for custom meta token", func() {
 			localPort := f.AllocPort()
+
+			clientAddressGot := false
 			handler := func(req *plugin.Request) *plugin.Response {
 				var ret plugin.Response
 				content := req.Content.(*plugin.LoginContent)
+				if content.ClientAddress != "" {
+					clientAddressGot = true
+				}
 				if content.Metas["token"] == "123" {
 					ret.Unchange = true
 				} else {
@@ -69,6 +74,8 @@ var _ = Describe("[Feature: Server-Plugins]", func() {
 
 			framework.NewRequestExpect(f).Port(remotePort).Ensure()
 			framework.NewRequestExpect(f).Port(remotePort2).ExpectError(true).Ensure()
+
+			framework.ExpectTrue(clientAddressGot)
 		})
 	})