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

This commit is contained in:
fatedier 2022-01-11 16:32:20 +08:00 committed by GitHub
parent e9775bd70f
commit 22412851b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 1 deletions

View File

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

View File

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

View File

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