當前位置: 首頁>>代碼示例>>Golang>>正文


Golang common.TcpTuple類代碼示例

本文整理匯總了Golang中github.com/elastic/beats/libbeat/common.TcpTuple的典型用法代碼示例。如果您正苦於以下問題:Golang TcpTuple類的具體用法?Golang TcpTuple怎麽用?Golang TcpTuple使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了TcpTuple類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: ReceivedFin

func (dns *Dns) ReceivedFin(tcpTuple *common.TcpTuple, dir uint8, private protos.ProtocolData) protos.ProtocolData {
	if private == nil {
		return nil
	}
	conn, ok := private.(*dnsConnectionData)
	if !ok {
		return private
	}
	stream := conn.Data[dir]

	if stream == nil || stream.message == nil {
		return conn
	}

	decodedData, err := stream.handleTcpRawData()

	if err == nil {
		dns.messageComplete(conn, tcpTuple, dir, decodedData)
		return conn
	}

	if dir == tcp.TcpDirectionReverse {
		dns.publishResponseError(conn, err)
	}

	logp.Debug("dns", "%s addresses %s, length %d", err.Error(),
		tcpTuple.String(), len(stream.rawData))

	return conn
}
開發者ID:jarpy,項目名稱:beats,代碼行數:30,代碼來源:dns_tcp.go

示例2: GapInStream

func (dns *Dns) GapInStream(tcpTuple *common.TcpTuple, dir uint8, nbytes int, private protos.ProtocolData) (priv protos.ProtocolData, drop bool) {
	if private == nil {
		return private, true
	}
	conn, ok := private.(*dnsConnectionData)
	if !ok {
		return private, false
	}
	stream := conn.Data[dir]

	if stream == nil || stream.message == nil {
		return private, false
	}

	decodedData, err := stream.handleTcpRawData()

	if err == nil {
		dns.messageComplete(conn, tcpTuple, dir, decodedData)
		return private, true
	}

	if dir == tcp.TcpDirectionReverse {
		dns.publishResponseError(conn, err)
	}

	logp.Debug("dns", "%s addresses %s, length %d", err.Error(),
		tcpTuple.String(), len(stream.rawData))
	logp.Debug("dns", "Dropping the stream %s", tcpTuple.String())

	// drop the stream because it is binary Data and it would be unexpected to have a decodable message later
	return private, true
}
開發者ID:jarpy,項目名稱:beats,代碼行數:32,代碼來源:dns_tcp.go

示例3: handleHTTP

func (http *HTTP) handleHTTP(
	conn *httpConnectionData,
	m *message,
	tcptuple *common.TcpTuple,
	dir uint8,
) {

	m.TCPTuple = *tcptuple
	m.Direction = dir
	m.CmdlineTuple = procs.ProcWatcher.FindProcessesTuple(tcptuple.IpPort())
	http.hideHeaders(m)

	if m.IsRequest {
		if isDebug {
			debugf("Received request with tuple: %s", m.TCPTuple)
		}
		conn.requests.append(m)
	} else {
		if isDebug {
			debugf("Received response with tuple: %s", m.TCPTuple)
		}
		conn.responses.append(m)
		http.correlate(conn)
	}
}
開發者ID:mike-the-automator,項目名稱:beats,代碼行數:25,代碼來源:http.go

示例4: GapInStream

func (dns *Dns) GapInStream(tcpTuple *common.TcpTuple, dir uint8, nbytes int, private protos.ProtocolData) (priv protos.ProtocolData, drop bool) {
	dnsData, ok := private.(dnsPrivateData)

	if !ok {
		return private, false
	}

	stream := dnsData.Data[dir]

	if stream == nil || stream.message == nil {
		return private, false
	}

	decodedData, err := decodeDnsData(TransportTcp, stream.data)

	// Add Notes if the failed stream is the response
	if err != nil {
		if dir == tcp.TcpDirectionReverse {
			dns.publishDecodeFailureNotes(dnsData)
		}

		// drop the stream because it is binary and it would be rare to have a decodable message later
		logp.Debug("dns", NonDnsCompleteMsg+" addresses %s, length %d",
			tcpTuple.String(), len(stream.data))
		return private, true
	}

	// publish and ignore the gap. No case should reach this code though ...
	dns.messageComplete(tcpTuple, dir, stream, decodedData)
	return private, false
}
開發者ID:nicoder,項目名稱:beats,代碼行數:31,代碼來源:dns.go

示例5: ReceivedFin

func (dns *Dns) ReceivedFin(tcpTuple *common.TcpTuple, dir uint8, private protos.ProtocolData) protos.ProtocolData {
	if private == nil {
		return private
	}
	dnsData, ok := private.(dnsPrivateData)
	if !ok {
		return private
	}
	if dnsData.Data[dir] == nil {
		return dnsData
	}
	stream := dnsData.Data[dir]
	if stream.message != nil {
		decodedData, err := decodeDnsData(TransportTcp, stream.data)

		if err == nil {
			dns.messageComplete(tcpTuple, dir, stream, decodedData)
		} else /*Failed decode */ {
			if dir == tcp.TcpDirectionReverse {
				dns.publishDecodeFailureNotes(dnsData)
				stream.PrepareForNewMessage()
			}
			logp.Debug("dns", NonDnsCompleteMsg+" addresses %s, length %d",
				tcpTuple.String(), len(stream.data))
		}
	}

	return dnsData
}
開發者ID:nicoder,項目名稱:beats,代碼行數:29,代碼來源:dns.go

示例6: handleDns

func (dns *Dns) handleDns(m *DnsMessage, tcpTuple *common.TcpTuple, dir uint8, data []byte, decodedData *layers.DNS) {
	dnsTuple := DnsTupleFromIpPort(&m.Tuple, TransportTcp, decodedData.ID)
	m.CmdlineTuple = procs.ProcWatcher.FindProcessesTuple(tcpTuple.IpPort())
	m.Data = decodedData
	m.Length = len(data)

	if decodedData.QR == Query {
		dns.receivedDnsRequest(&dnsTuple, m)
	} else /* Response */ {
		dns.receivedDnsResponse(&dnsTuple, m)
	}
}
開發者ID:nicoder,項目名稱:beats,代碼行數:12,代碼來源:dns.go

示例7: removeTransaction

func (pgsql *Pgsql) removeTransaction(transList []*PgsqlTransaction,
	tuple common.TcpTuple, index int) *PgsqlTransaction {

	trans := transList[index]
	transList = append(transList[:index], transList[index+1:]...)
	if len(transList) == 0 {
		pgsql.transactions.Delete(trans.tuple.Hashable())
	} else {
		pgsql.transactions.Put(tuple.Hashable(), transList)
	}

	return trans
}
開發者ID:davidsoloman,項目名稱:beats,代碼行數:13,代碼來源:pgsql.go

示例8: handleHTTP

func (http *HTTP) handleHTTP(m *message, tcptuple *common.TcpTuple,
	dir uint8, rawMsg []byte) {

	m.TCPTuple = *tcptuple
	m.Direction = dir
	m.CmdlineTuple = procs.ProcWatcher.FindProcessesTuple(tcptuple.IpPort())
	m.Raw = rawMsg

	if m.IsRequest {
		http.receivedHTTPRequest(m)
	} else {
		http.receivedHTTPResponse(m)
	}
}
開發者ID:tsg,項目名稱:beats,代碼行數:14,代碼來源:http.go

示例9: ReceivedFin

func (thrift *Thrift) ReceivedFin(tcptuple *common.TcpTuple, dir uint8,
	private protos.ProtocolData) protos.ProtocolData {

	trans := thrift.getTransaction(tcptuple.Hashable())
	if trans != nil {
		if trans.Request != nil && trans.Reply == nil {
			logp.Debug("thrift", "FIN and had only one transaction. Assuming one way")
			thrift.PublishQueue <- trans
			thrift.transactions.Delete(trans.tuple.Hashable())
		}
	}

	return private
}
開發者ID:radoondas,項目名稱:apachebeat,代碼行數:14,代碼來源:thrift.go

示例10: handleMysql

func handleMysql(mysql *Mysql, m *MysqlMessage, tcptuple *common.TcpTuple,
	dir uint8, raw_msg []byte) {

	m.TcpTuple = *tcptuple
	m.Direction = dir
	m.CmdlineTuple = procs.ProcWatcher.FindProcessesTuple(tcptuple.IpPort())
	m.Raw = raw_msg

	if m.IsRequest {
		mysql.receivedMysqlRequest(m)
	} else {
		mysql.receivedMysqlResponse(m)
	}
}
開發者ID:mike-the-automator,項目名稱:beats,代碼行數:14,代碼來源:mysql.go

示例11: handleDns

func (dns *Dns) handleDns(conn *dnsConnectionData, tcpTuple *common.TcpTuple, decodedData *mkdns.Msg, dir uint8) {
	message := conn.Data[dir].message
	dnsTuple := DnsTupleFromIpPort(&message.Tuple, TransportTcp, decodedData.Id)

	message.CmdlineTuple = procs.ProcWatcher.FindProcessesTuple(tcpTuple.IpPort())
	message.Data = decodedData
	message.Length += DecodeOffset

	if decodedData.Response {
		dns.receivedDnsResponse(&dnsTuple, message)
		conn.prevRequest = nil
	} else /* Query */ {
		dns.receivedDnsRequest(&dnsTuple, message)
		conn.prevRequest = message
	}
}
開發者ID:jarpy,項目名稱:beats,代碼行數:16,代碼來源:dns_tcp.go

示例12: handleRedis

func (redis *Redis) handleRedis(
	conn *redisConnectionData,
	m *redisMessage,
	tcptuple *common.TcpTuple,
	dir uint8,
) {
	m.TcpTuple = *tcptuple
	m.Direction = dir
	m.CmdlineTuple = procs.ProcWatcher.FindProcessesTuple(tcptuple.IpPort())

	if m.IsRequest {
		conn.requests.append(m) // wait for response
	} else {
		conn.responses.append(m)
		redis.correlate(conn)
	}
}
開發者ID:davidsoloman,項目名稱:beats,代碼行數:17,代碼來源:redis.go

示例13: doParse

func (dns *Dns) doParse(conn *dnsConnectionData, pkt *protos.Packet, tcpTuple *common.TcpTuple, dir uint8) *dnsConnectionData {
	stream := conn.Data[dir]
	payload := pkt.Payload

	if stream == nil {
		stream = newStream(pkt, tcpTuple)
		conn.Data[dir] = stream
	} else {
		if stream.message == nil { // nth message of the same stream
			stream.message = &DnsMessage{Ts: pkt.Ts, Tuple: pkt.Tuple}
		}

		stream.rawData = append(stream.rawData, payload...)
		if len(stream.rawData) > tcp.TCP_MAX_DATA_IN_STREAM {
			logp.Debug("dns", "Stream data too large, dropping DNS stream")
			conn.Data[dir] = nil
			return conn
		}
	}
	decodedData, err := stream.handleTcpRawData()

	if err != nil {

		if err == IncompleteMsg {
			logp.Debug("dns", "Waiting for more raw data")
			return conn
		}

		if dir == tcp.TcpDirectionReverse {
			dns.publishResponseError(conn, err)
		}

		logp.Debug("dns", "%s addresses %s, length %d", err.Error(),
			tcpTuple.String(), len(stream.rawData))

		// This means that malformed requests or responses are being sent...
		// TODO: publish the situation also if Request
		conn.Data[dir] = nil
		return conn
	}

	dns.messageComplete(conn, tcpTuple, dir, decodedData)
	stream.PrepareForNewMessage()
	return conn
}
開發者ID:jarpy,項目名稱:beats,代碼行數:45,代碼來源:dns_tcp.go

示例14: handleMongodb

func (mongodb *Mongodb) handleMongodb(
	conn *mongodbConnectionData,
	m *mongodbMessage,
	tcptuple *common.TcpTuple,
	dir uint8,
) {

	m.TcpTuple = *tcptuple
	m.Direction = dir
	m.CmdlineTuple = procs.ProcWatcher.FindProcessesTuple(tcptuple.IpPort())

	if m.IsResponse {
		debugf("MongoDB response message")
		mongodb.onResponse(conn, m)
	} else {
		debugf("MongoDB request message")
		mongodb.onRequest(conn, m)
	}
}
開發者ID:mike-the-automator,項目名稱:beats,代碼行數:19,代碼來源:mongodb.go

示例15: handleAmqp

func (amqp *Amqp) handleAmqp(m *AmqpMessage, tcptuple *common.TcpTuple, dir uint8) {
	if amqp.mustHideCloseMethod(m) {
		return
	}
	debugf("A message is ready to be handled")
	m.TcpTuple = *tcptuple
	m.Direction = dir
	m.CmdlineTuple = procs.ProcWatcher.FindProcessesTuple(tcptuple.IpPort())

	if m.Method == "basic.publish" {
		amqp.handlePublishing(m)
	} else if m.Method == "basic.deliver" || m.Method == "basic.return" ||
		m.Method == "basic.get-ok" {
		amqp.handleDelivering(m)
	} else if m.IsRequest == true {
		amqp.handleAmqpRequest(m)
	} else if m.IsRequest == false {
		amqp.handleAmqpResponse(m)
	}
}
開發者ID:ChongFeng,項目名稱:beats,代碼行數:20,代碼來源:amqp_parser.go


注:本文中的github.com/elastic/beats/libbeat/common.TcpTuple類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。