From 6c2bc7c773267e475e27bd9955926ec99380139a Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Thu, 9 Jul 2015 15:27:43 -0700 Subject: [PATCH] Improve logging for various actions in the core package. --- core/core.go | 54 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/core/core.go b/core/core.go index 04907a1..c0b5627 100644 --- a/core/core.go +++ b/core/core.go @@ -281,12 +281,21 @@ func Password(jsonIn []byte) ([]byte, error) { // Encrypt processes an encrypt request. func Encrypt(jsonIn []byte) ([]byte, error) { var s EncryptRequest - if err := json.Unmarshal(jsonIn, &s); err != nil { + + err := json.Unmarshal(jsonIn, &s) + if err != nil { return jsonStatusError(err) } - if err := validateUser(s.Name, s.Password, false); err != nil { - log.Printf("failed to validate user %s in request to encrypt: %v", s.Name, err) + defer func() { + if err != nil { + log.Printf("encrypt: request for encryption from %s failed: %v", s.Name, err) + } else { + log.Printf("encrypt: successful encryption for %s", s.Name) + } + }() + + if err = validateUser(s.Name, s.Password, false); err != nil { return jsonStatusError(err) } @@ -296,8 +305,8 @@ func Encrypt(jsonIn []byte) ([]byte, error) { RightNames: s.RightOwners, } - if resp, err := crypt.Encrypt(s.Data, s.Labels, access); err != nil { - log.Println("Error encrypting:", err) + resp, err := crypt.Encrypt(s.Data, s.Labels, access) + if err != nil { return jsonStatusError(err) } else { return jsonResponse(resp) @@ -309,10 +318,18 @@ func Decrypt(jsonIn []byte) ([]byte, error) { var s DecryptRequest err := json.Unmarshal(jsonIn, &s) if err != nil { - log.Println("Error unmarshaling input:", err) + log.Printf("decrypt: failed to unmarshal input: %v", err) return jsonStatusError(err) } + defer func() { + if err != nil { + log.Printf("decrypt: request for decryption from %s failed: %v", s.Name, err) + } else { + log.Printf("decrypt: successful decryption for %s", s.Name) + } + }() + err = validateUser(s.Name, s.Password, false) if err != nil { return jsonStatusError(err) @@ -320,7 +337,6 @@ func Decrypt(jsonIn []byte) ([]byte, error) { data, names, secure, err := crypt.Decrypt(s.Data, s.Name) if err != nil { - log.Println("Error decrypting:", err) return jsonStatusError(err) } @@ -342,24 +358,33 @@ func Decrypt(jsonIn []byte) ([]byte, error) { func Modify(jsonIn []byte) ([]byte, error) { var s ModifyRequest - if err := json.Unmarshal(jsonIn, &s); err != nil { + err := json.Unmarshal(jsonIn, &s) + if err != nil { return jsonStatusError(err) } - if err := validateUser(s.Name, s.Password, true); err != nil { - log.Printf("failed to validate %s in request to modify: %v", s.Name, err) + defer func() { + if err != nil { + log.Printf("modify: attempt to modify %s by %s fail: %v", s.ToModify, s.Name, err) + } else { + log.Printf("modify: attempt to modify %s by %s succeeded", s.ToModify, s.Name) + } + }() + + if err = validateUser(s.Name, s.Password, true); err != nil { return jsonStatusError(err) } if _, ok := records.GetRecord(s.ToModify); !ok { - return jsonStatusError(errors.New("Record to modify missing")) + err = errors.New("core: record to modify missing") + return jsonStatusError(err) } if s.Name == s.ToModify { - return jsonStatusError(errors.New("Cannot modify own record")) + err = errors.New("core: cannot modify own record") + return jsonStatusError(err) } - var err error switch s.Command { case "delete": err = records.DeleteRecord(s.ToModify) @@ -368,7 +393,8 @@ func Modify(jsonIn []byte) ([]byte, error) { case "admin": err = records.MakeAdmin(s.ToModify) default: - return jsonStatusError(errors.New("Unknown command")) + err = fmt.Errorf("core: unknown command '%s' passed to modify", s.Command) + return jsonStatusError(err) } if err != nil {