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 {
msg.Login
ClientAddress string `json:"client_address,omitempty"`
}
type UserInfo struct {

View File

@ -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 {

View File

@ -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)
})
})