diff --git a/api/utilsInterfaces_test.go b/api/utilsInterfaces_test.go index ad97286b779237335a1e9b14f2606266d97ad3cf..566dd9a26ecc236acf54e0d61e9cbd7372d425fc 100644 --- a/api/utilsInterfaces_test.go +++ b/api/utilsInterfaces_test.go @@ -82,6 +82,12 @@ type testNetworkManagerGeneric struct { instance *network.Instance sender *gateway.Sender } +type dummyEventMgr struct{} + +func (d *dummyEventMgr) Report(p int, a, b, c string) {} +func (t *testNetworkManagerGeneric) GetEventManager() interfaces.EventManager { + return &dummyEventMgr{} +} /* Below methods built for interface adherence */ func (t *testNetworkManagerGeneric) GetHealthTracker() interfaces.HealthTracker { diff --git a/auth/callback.go b/auth/callback.go index b713ce5abe73b1b7f0f7444b5fcf54e5cd74aa75..4a5fba05b7e74335fd71bac6685db01126ae2527 100644 --- a/auth/callback.go +++ b/auth/callback.go @@ -8,6 +8,7 @@ package auth import ( + "fmt" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/interfaces" @@ -128,8 +129,11 @@ func (m *Manager) handleRequest(cmixMsg format.Message, return } - jww.INFO.Printf("Received AuthRequest from %s,"+ + events := m.net.GetEventManager() + em := fmt.Sprintf("Received AuthRequest from %s,"+ " msgDigest: %s", partnerID, cmixMsg.Digest()) + jww.INFO.Print(em) + events.Report(1, "Auth", "RequestReceived", em) /*do state edge checks*/ // check if a relationship already exists. @@ -137,8 +141,10 @@ func (m *Manager) handleRequest(cmixMsg format.Message, // confirmation in case there are state issues. // do not store if _, err := m.storage.E2e().GetPartner(partnerID); err == nil { - jww.WARN.Printf("Received Auth request for %s, "+ + em := fmt.Sprintf("Received Auth request for %s, "+ "channel already exists. Ignoring", partnerID) + jww.WARN.Print(em) + events.Report(5, "Auth", "RequestIgnored", em) //exit return } else { @@ -146,17 +152,21 @@ func (m *Manager) handleRequest(cmixMsg format.Message, rType, sr2, _, err := m.storage.Auth().GetRequest(partnerID) if err != nil && !strings.Contains(err.Error(), auth.NoRequest) { // if another error is received, print it and exit - jww.WARN.Printf("Received new Auth request for %s, "+ + em := fmt.Sprintf("Received new Auth request for %s, "+ "internal lookup produced bad result: %+v", partnerID, err) + jww.ERROR.Print(em) + events.Report(10, "Auth", "RequestError", em) return } else { //handle the events where the relationship already exists switch rType { // if this is a duplicate, ignore the message case auth.Receive: - jww.WARN.Printf("Received new Auth request for %s, "+ + em := fmt.Sprintf("Received new Auth request for %s, "+ "is a duplicate", partnerID) + jww.WARN.Print(em) + events.Report(5, "Auth", "DuplicateRequest", em) return // if we sent a request, then automatically confirm // then exit, nothing else needed @@ -167,8 +177,11 @@ func (m *Manager) handleRequest(cmixMsg format.Message, // do the confirmation if err := m.doConfirm(sr2, grp, partnerPubKey, m.storage.E2e().GetDHPrivateKey(), sr2.GetPartnerHistoricalPubKey(), ecrFmt.GetOwnership()); err != nil { - jww.WARN.Printf("Auto Confirmation with %s failed: %s", + em := fmt.Sprintf("Auto Confirmation with %s failed: %s", partnerID, err) + jww.WARN.Print(em) + events.Report(10, "Auth", + "RequestError", em) } //exit return @@ -180,8 +193,10 @@ func (m *Manager) handleRequest(cmixMsg format.Message, facts, msg, err := fact.UnstringifyFactList( string(requestFmt.msgPayload)) if err != nil { - jww.WARN.Printf("failed to parse facts and message "+ + em := fmt.Sprintf("failed to parse facts and message "+ "from Auth Request: %s", err) + jww.WARN.Print(em) + events.Report(10, "Auth", "RequestError", em) return } @@ -197,8 +212,10 @@ func (m *Manager) handleRequest(cmixMsg format.Message, // crash occurs after the store but before the conclusion of the callback //create the auth storage if err = m.storage.Auth().AddReceived(c); err != nil { - jww.WARN.Printf("failed to store contact Auth "+ + em := fmt.Sprintf("failed to store contact Auth "+ "Request: %s", err) + jww.WARN.Print(em) + events.Report(10, "Auth", "RequestError", em) return } @@ -214,10 +231,14 @@ func (m *Manager) handleRequest(cmixMsg format.Message, func (m *Manager) handleConfirm(cmixMsg format.Message, sr *auth.SentRequest, grp *cyclic.Group) { + events := m.net.GetEventManager() + // check if relationship already exists if mgr, err := m.storage.E2e().GetPartner(sr.GetPartner()); mgr != nil || err == nil { - jww.WARN.Printf("Cannot confirm auth for %s, channel already "+ + em := fmt.Sprintf("Cannot confirm auth for %s, channel already "+ "exists.", sr.GetPartner()) + jww.WARN.Print(em) + events.Report(10, "Auth", "ConfirmError", em) m.storage.Auth().Done(sr.GetPartner()) return } @@ -225,7 +246,9 @@ func (m *Manager) handleConfirm(cmixMsg format.Message, sr *auth.SentRequest, // extract the message baseFmt, partnerPubKey, err := handleBaseFormat(cmixMsg, grp) if err != nil { - jww.WARN.Printf("Failed to handle auth confirm: %s", err) + em := fmt.Sprintf("Failed to handle auth confirm: %s", err) + jww.WARN.Print(em) + events.Report(10, "Auth", "ConfirmError", em) m.storage.Auth().Done(sr.GetPartner()) return } @@ -242,16 +265,20 @@ func (m *Manager) handleConfirm(cmixMsg format.Message, sr *auth.SentRequest, cmixMsg.GetMac(), grp) if !success { - jww.WARN.Printf("Received auth confirmation failed its mac " + + em := fmt.Sprintf("Received auth confirmation failed its mac " + "check") + jww.WARN.Print(em) + events.Report(10, "Auth", "ConfirmError", em) m.storage.Auth().Done(sr.GetPartner()) return } ecrFmt, err := unmarshalEcrFormat(payload) if err != nil { - jww.WARN.Printf("Failed to unmarshal auth confirmation's "+ + em := fmt.Sprintf("Failed to unmarshal auth confirmation's "+ "encrypted payload: %s", err) + jww.WARN.Print(em) + events.Report(10, "Auth", "ConfirmError", em) m.storage.Auth().Done(sr.GetPartner()) return } @@ -259,7 +286,9 @@ func (m *Manager) handleConfirm(cmixMsg format.Message, sr *auth.SentRequest, // finalize the confirmation if err := m.doConfirm(sr, grp, partnerPubKey, sr.GetMyPrivKey(), sr.GetPartnerHistoricalPubKey(), ecrFmt.GetOwnership()); err != nil { - jww.WARN.Printf("Confirmation failed: %s", err) + em := fmt.Sprintf("Confirmation failed: %s", err) + jww.WARN.Print(em) + events.Report(10, "Auth", "ConfirmError", em) m.storage.Auth().Done(sr.GetPartner()) return } diff --git a/auth/confirm.go b/auth/confirm.go index 30a51181c97f3e8bea4993eac82555152655dc7f..f13d3871d9669b52c66924cfb7e4f17bc89b080c 100644 --- a/auth/confirm.go +++ b/auth/confirm.go @@ -8,6 +8,7 @@ package auth import ( + "fmt" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/interfaces" @@ -100,13 +101,17 @@ func ConfirmRequestAuth(partner contact.Contact, rng io.Reader, // the second does not or the two occur and the storage into critical // messages does not occur + events := net.GetEventManager() + //create local relationship p := storage.E2e().GetE2ESessionParams() if err := storage.E2e().AddPartner(partner.ID, partner.DhPubKey, newPrivKey, p, p); err != nil { - jww.WARN.Printf("Failed to create channel with partner (%s) "+ + em := fmt.Sprintf("Failed to create channel with partner (%s) "+ "on confirmation, this is likley a replay: %s", partner.ID, err.Error()) + jww.WARN.Print(em) + events.Report(10, "Auth", "SendConfirmError", em) } // delete the in progress negotiation @@ -131,8 +136,10 @@ func ConfirmRequestAuth(partner contact.Contact, rng io.Reader, return 0, errors.WithMessage(err, "Auth Confirm Failed to transmit") } - jww.INFO.Printf("Confirm Request with %s (msgDigest: %s) sent on round %d", + em := fmt.Sprintf("Confirm Request with %s (msgDigest: %s) sent on round %d", partner.ID, cmixMsg.Digest(), round) + jww.INFO.Print(em) + events.Report(1, "Auth", "SendConfirm", em) return round, nil } diff --git a/auth/request.go b/auth/request.go index add36835bf19025abc00c8272b6a7bdd042634e1..1be24089150fd7ef7dcce0c6ffaaffb1324bab2e 100644 --- a/auth/request.go +++ b/auth/request.go @@ -8,6 +8,7 @@ package auth import ( + "fmt" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/interfaces" @@ -169,8 +170,10 @@ func RequestAuth(partner, me contact.Contact, message string, rng io.Reader, cmixMsg.Digest(), err) } - jww.INFO.Printf("Auth Request with %s (msgDigest: %s) sent"+ + em := fmt.Sprintf("Auth Request with %s (msgDigest: %s) sent"+ " on round %d", partner.ID, cmixMsg.Digest(), round) + jww.INFO.Print(em) + net.GetEventManager().Report(1, "Auth", "RequestSent", em) return round, nil } diff --git a/groupChat/utils_test.go b/groupChat/utils_test.go index bdf58edfa1a3e2070c2d6144411463a6740c97a0..f4b5d7e188d1dd7ae19f71be15c4ba09bd9fa260 100644 --- a/groupChat/utils_test.go +++ b/groupChat/utils_test.go @@ -277,6 +277,13 @@ func (tnm *testNetworkManager) SendManyCMIX(messages map[id.ID]format.Message, _ return 0, nil, nil } +type dummyEventMgr struct{} + +func (d *dummyEventMgr) Report(p int, a, b, c string) {} +func (t *testNetworkManager) GetEventManager() interfaces.EventManager { + return &dummyEventMgr{} +} + func (tnm *testNetworkManager) GetInstance() *network.Instance { return tnm.instance } func (tnm *testNetworkManager) GetHealthTracker() interfaces.HealthTracker { return nil } func (tnm *testNetworkManager) Follow(interfaces.ClientErrorReport) (stoppable.Stoppable, error) { diff --git a/interfaces/networkManager.go b/interfaces/networkManager.go index c3bc9f49d6994012f0f2cbc58ed0016b62180f59..e518ae014ff57cfdd776bc39b101671dc7a95647 100644 --- a/interfaces/networkManager.go +++ b/interfaces/networkManager.go @@ -27,6 +27,7 @@ type NetworkManager interface { SendManyCMIX(messages map[id.ID]format.Message, p params.CMIX) (id.Round, []ephemeral.Id, error) GetInstance() *network.Instance GetHealthTracker() HealthTracker + GetEventManager() EventManager GetSender() *gateway.Sender Follow(report ClientErrorReport) (stoppable.Stoppable, error) CheckGarbledMessages() diff --git a/keyExchange/utils_test.go b/keyExchange/utils_test.go index cb0518466f10c4737fcc2376ce38ddfaeb318225..f1511227993c845e530233ba25757b4e12d637f0 100644 --- a/keyExchange/utils_test.go +++ b/keyExchange/utils_test.go @@ -93,6 +93,10 @@ func (t *testNetworkManagerGeneric) GetInstance() *network.Instance { } +func (t *testNetworkManagerGeneric) GetEventManager() interfaces.EventManager { + return &dummyEventMgr{} +} + func (t *testNetworkManagerGeneric) RegisterWithPermissioning(string) ([]byte, error) { return nil, nil } @@ -153,6 +157,12 @@ func InitTestingContextGeneric(i interface{}) (*storage.Session, interfaces.Netw type testNetworkManagerFullExchange struct { instance *network.Instance } +type dummyEventMgr struct{} + +func (d *dummyEventMgr) Report(p int, a, b, c string) {} +func (t *testNetworkManagerFullExchange) GetEventManager() interfaces.EventManager { + return &dummyEventMgr{} +} func (t *testNetworkManagerFullExchange) GetHealthTracker() interfaces.HealthTracker { return nil diff --git a/network/ephemeral/testutil.go b/network/ephemeral/testutil.go index 3b443dfe3a85f8c85e92dd235b190e00171df3ef..fb20cf8bdffa02a5acf6efae00e4e46ffbd6825f 100644 --- a/network/ephemeral/testutil.go +++ b/network/ephemeral/testutil.go @@ -70,6 +70,13 @@ func (t *testNetworkManager) GetInstance() *network.Instance { return t.instance } +type dummyEventMgr struct{} + +func (d *dummyEventMgr) Report(p int, a, b, c string) {} +func (t *testNetworkManager) GetEventManager() interfaces.EventManager { + return &dummyEventMgr{} +} + func (t *testNetworkManager) GetHealthTracker() interfaces.HealthTracker { return nil } diff --git a/network/manager.go b/network/manager.go index 55e8b4a4b52be224789abad932dfd69f8892bc55..3ebc1d1d9cd84007e01bce843cb9afd11d09e24b 100644 --- a/network/manager.go +++ b/network/manager.go @@ -166,6 +166,11 @@ func (m *manager) Follow(report interfaces.ClientErrorReport) (stoppable.Stoppab return multi, nil } +// GetEventManager returns the health tracker +func (m *manager) GetEventManager() interfaces.EventManager { + return m.events +} + // GetHealthTracker returns the health tracker func (m *manager) GetHealthTracker() interfaces.HealthTracker { return m.Health diff --git a/single/manager_test.go b/single/manager_test.go index 1a62edf8405d450a82688e05a1e7b04af3f5ef06..0746e0f7fb3038802126fcc2708b9de33d066eed 100644 --- a/single/manager_test.go +++ b/single/manager_test.go @@ -327,6 +327,13 @@ func (tnm *testNetworkManager) GetInstance() *network.Instance { return tnm.instance } +type dummyEventMgr struct{} + +func (d *dummyEventMgr) Report(p int, a, b, c string) {} +func (t *testNetworkManager) GetEventManager() interfaces.EventManager { + return &dummyEventMgr{} +} + func (tnm *testNetworkManager) GetHealthTracker() interfaces.HealthTracker { return nil } diff --git a/ud/register.go b/ud/register.go index 4fe9e2d675294768a9ac359489302efe31de5881..8a25bafc01d150708136945a119de470b6e64e82 100644 --- a/ud/register.go +++ b/ud/register.go @@ -88,7 +88,8 @@ func (m *Manager) register(username string, comm registerUserComms) error { err = m.setRegistered() if m.client != nil { m.client.ReportEvent(1, "UserDiscovery", "Registration", - fmt.Sprintf("User Registered with UD: %s", user)) + fmt.Sprintf("User Registered with UD: %+v", + user)) } }