从proxy获取client ip地址

This commit is contained in:
hebo
2019-12-05 20:51:43 +08:00
parent 8e4e9a8d62
commit f70a646902
14 changed files with 1024 additions and 15 deletions

View File

@@ -5,13 +5,13 @@ import (
"github.com/zr-hebo/sniffer-agent/session-dealer/mysql"
)
func NewSession(sessionKey *string, clientIP *string, clientPort int, serverIP *string, serverPort int,
func NewSession(sessionKey, clientAlias, clientIP *string, clientPort int, serverIP *string, serverPort int,
receiver chan model.QueryPiece) (session ConnSession) {
switch serviceType {
case ServiceTypeMysql:
session = mysql.NewMysqlSession(sessionKey, clientIP, clientPort, serverIP, serverPort, receiver)
session = mysql.NewMysqlSession(sessionKey, clientAlias, clientIP, clientPort, serverIP, serverPort, receiver)
default:
session = mysql.NewMysqlSession(sessionKey, clientIP, clientPort, serverIP, serverPort, receiver)
session = mysql.NewMysqlSession(sessionKey, clientAlias, clientIP, clientPort, serverIP, serverPort, receiver)
}
return
}

View File

@@ -15,6 +15,7 @@ type MysqlSession struct {
connectionID *string
visitUser *string
visitDB *string
clientAlias *string
clientHost *string
clientPort int
serverIP *string
@@ -46,10 +47,11 @@ type prepareInfo struct {
}
func NewMysqlSession(
sessionKey *string, clientIP *string, clientPort int, serverIP *string, serverPort int,
sessionKey, clientAlias, clientIP *string, clientPort int, serverIP *string, serverPort int,
receiver chan model.QueryPiece) (ms *MysqlSession) {
ms = &MysqlSession{
connectionID: sessionKey,
clientAlias: clientAlias,
clientHost: clientIP,
clientPort: clientPort,
serverIP: serverIP,
@@ -333,6 +335,10 @@ func filterQueryPieceBySQL(mqp *model.PooledMysqlQueryPiece, querySQL []byte) (*
}
func (ms *MysqlSession) composeQueryPiece() (mqp *model.PooledMysqlQueryPiece) {
clientIP := ms.clientAlias
if clientIP == nil || len(*clientIP) < 1 {
clientIP = ms.clientHost
}
return model.NewPooledMysqlQueryPiece(
ms.connectionID, ms.clientHost, ms.visitUser, ms.visitDB, ms.clientHost, ms.serverIP,
ms.clientPort, ms.serverPort, communicator.GetMysqlCapturePacketRate(), ms.stmtBeginTime)