Просмотр исходного кода

Log broker_id with broker events

Rod Hynes 1 год назад
Родитель
Сommit
1d32ce4cc7
2 измененных файлов с 15 добавлено и 10 удалено
  1. 13 0
      psiphon/common/inproxy/broker.go
  2. 2 10
      psiphon/common/inproxy/session.go

+ 13 - 0
psiphon/common/inproxy/broker.go

@@ -78,6 +78,7 @@ type GetTacticsPayload func(
 // encapsulating secure session packets.
 type Broker struct {
 	config               *BrokerConfig
+	brokerID             ID
 	initiatorSessions    *InitiatorSessions
 	responderSessions    *ResponderSessions
 	matcher              *Matcher
@@ -207,8 +208,16 @@ func NewBroker(config *BrokerConfig) (*Broker, error) {
 		return nil, errors.Trace(err)
 	}
 
+	// The broker ID is the broker's session public key.
+	publicKey, err := config.PrivateKey.GetPublicKey()
+	if err != nil {
+		return nil, errors.Trace(err)
+	}
+	brokerID := ID(publicKey)
+
 	b := &Broker{
 		config:            config,
+		brokerID:          brokerID,
 		initiatorSessions: initiatorSessions,
 		responderSessions: responderSessions,
 		matcher: NewMatcher(&MatcherConfig{
@@ -496,6 +505,7 @@ func (b *Broker) handleProxyAnnounce(
 			logFields = b.config.APIParameterLogFieldFormatter(geoIPData, nil)
 		}
 		logFields["broker_event"] = "proxy-announce"
+		logFields["broker_id"] = b.brokerID
 		logFields["proxy_id"] = proxyID
 		logFields["elapsed_time"] = time.Since(startTime) / time.Millisecond
 		logFields["connection_id"] = connectionID
@@ -756,6 +766,7 @@ func (b *Broker) handleClientOffer(
 			logFields = b.config.APIParameterLogFieldFormatter(geoIPData, nil)
 		}
 		logFields["broker_event"] = "client-offer"
+		logFields["broker_id"] = b.brokerID
 		if serverParams != nil {
 			logFields["destination_server_id"] = serverParams.serverID
 		}
@@ -1056,6 +1067,7 @@ func (b *Broker) handleProxyAnswer(
 			logFields = b.config.APIParameterLogFieldFormatter(geoIPData, nil)
 		}
 		logFields["broker_event"] = "proxy-answer"
+		logFields["broker_id"] = b.brokerID
 		logFields["proxy_id"] = proxyID
 		logFields["elapsed_time"] = time.Since(startTime) / time.Millisecond
 		if proxyAnswer != nil {
@@ -1178,6 +1190,7 @@ func (b *Broker) handleClientRelayedPacket(
 			logFields = b.config.APIParameterLogFieldFormatter(geoIPData, nil)
 		}
 		logFields["broker_event"] = "client-relayed-packet"
+		logFields["broker_id"] = b.brokerID
 		logFields["elapsed_time"] = time.Since(startTime) / time.Millisecond
 		if relayedPacketRequest != nil {
 			logFields["connection_id"] = relayedPacketRequest.ConnectionID

+ 2 - 10
psiphon/common/inproxy/session.go

@@ -1675,19 +1675,11 @@ func (s *session) getPeerID() (ID, error) {
 	s.mutex.Lock()
 	defer s.mutex.Unlock()
 
-	var peerID ID
-
 	if s.handshake != nil {
-		return peerID, errors.TraceNew("not established")
-	}
-
-	if len(s.peerPublicKey) != len(peerID) {
-		return peerID, errors.TraceNew("invalid peer public key")
+		return ID{}, errors.TraceNew("not established")
 	}
 
-	copy(peerID[:], s.peerPublicKey)
-
-	return peerID, nil
+	return ID(s.peerPublicKey), nil
 }
 
 // hasUnexpectedInitiatorPublicKey indicates whether the session is