mirror of
https://github.com/akyaiy/GoSally-mvp.git
synced 2026-01-05 13:52:26 +00:00
add random salt and result/error checksum
This commit is contained in:
@@ -1,11 +1,40 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func write(w http.ResponseWriter, msg *RPCResponse) error {
|
||||
func generateChecksum(result any) string {
|
||||
if result == nil {
|
||||
return ""
|
||||
}
|
||||
data, err := json.Marshal(result)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("%x", md5.Sum(data))
|
||||
}
|
||||
|
||||
func generateSalt() string {
|
||||
return uuid.NewString()
|
||||
}
|
||||
|
||||
func write(nid string, w http.ResponseWriter, msg *RPCResponse) error {
|
||||
msg.Salt = generateSalt()
|
||||
if msg.Result != nil {
|
||||
msg.Checksum = generateChecksum(msg.Result)
|
||||
} else {
|
||||
msg.Checksum = generateChecksum(msg.Error)
|
||||
}
|
||||
|
||||
if nid != "" {
|
||||
msg.ResponsibleNode = nid
|
||||
}
|
||||
data, err := json.Marshal(msg)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -14,10 +43,10 @@ func write(w http.ResponseWriter, msg *RPCResponse) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func WriteError(w http.ResponseWriter, errm *RPCResponse) error {
|
||||
return write(w, errm)
|
||||
func WriteError(nid string, w http.ResponseWriter, errm *RPCResponse) error {
|
||||
return write(nid, w, errm)
|
||||
}
|
||||
|
||||
func WriteResponse(w http.ResponseWriter, response *RPCResponse) error {
|
||||
return write(w, response)
|
||||
func WriteResponse(nid string, w http.ResponseWriter, response *RPCResponse) error {
|
||||
return write(nid, w, response)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user