From 0b78c9c2daf585cac1cd0e5a46a4fd54cede6733 Mon Sep 17 00:00:00 2001 From: ukane-philemon Date: Thu, 13 Jan 2022 12:54:07 +0100 Subject: [PATCH] Show altsignaddress req/res in admin UI --- database/altsignaddr.go | 12 ++--- database/altsignaddr_test.go | 4 +- webapi/admin.go | 29 +++++------- webapi/setaltsignaddr.go | 4 +- webapi/setaltsignaddr_test.go | 7 +-- webapi/templates/ticket-search-result.html | 52 ++++++++++++++++++---- 6 files changed, 70 insertions(+), 38 deletions(-) diff --git a/database/altsignaddr.go b/database/altsignaddr.go index a430a1c..c52cd65 100644 --- a/database/altsignaddr.go +++ b/database/altsignaddr.go @@ -26,13 +26,13 @@ type AltSignAddrData struct { // AltSignAddr is the new alternate signing address. It is base 58 encoded. AltSignAddr string // Req is the original request to set an alternate signing address. - Req []byte + Req string // ReqSig is the request's signature signed by the commitment address of the // corresponding ticket. It is base 64 encoded. ReqSig string // Resp is the original response from the server to the alternate signing // address. - Resp []byte + Resp string // RespSig is the response's signature signed by the server. It is base 64 // encoded. RespSig string @@ -66,7 +66,7 @@ func (vdb *VspDatabase) InsertAltSignAddr(ticketHash string, data *AltSignAddrDa return err } - if err := bkt.Put(reqK, data.Req); err != nil { + if err := bkt.Put(reqK, []byte(data.Req)); err != nil { return err } @@ -74,7 +74,7 @@ func (vdb *VspDatabase) InsertAltSignAddr(ticketHash string, data *AltSignAddrDa return err } - if err := bkt.Put(respK, data.Resp); err != nil { + if err := bkt.Put(respK, []byte(data.Resp)); err != nil { return err } return bkt.Put(respSigK, []byte(data.RespSig)) @@ -113,9 +113,9 @@ func (vdb *VspDatabase) AltSignAddrData(ticketHash string) (*AltSignAddrData, er } h = &AltSignAddrData{ AltSignAddr: string(bkt.Get(altSignAddrK)), - Req: bkt.Get(reqK), + Req: string(bkt.Get(reqK)), ReqSig: string(bkt.Get(reqSigK)), - Resp: bkt.Get(respK), + Resp: string(bkt.Get(respK)), RespSig: string(bkt.Get(respSigK)), } return nil diff --git a/database/altsignaddr_test.go b/database/altsignaddr_test.go index 9510e61..29f2acf 100644 --- a/database/altsignaddr_test.go +++ b/database/altsignaddr_test.go @@ -12,9 +12,9 @@ import ( func exampleAltSignAddrData() *AltSignAddrData { return &AltSignAddrData{ AltSignAddr: randString(35, addrCharset), - Req: randBytes(1000), + Req: string(randBytes(1000)), ReqSig: randString(96, sigCharset), - Resp: randBytes(1000), + Resp: string(randBytes(1000)), RespSig: randString(96, sigCharset), } } diff --git a/webapi/admin.go b/webapi/admin.go index bb3d99b..ecd0f14 100644 --- a/webapi/admin.go +++ b/webapi/admin.go @@ -38,12 +38,12 @@ type DcrdStatus struct { } type searchResult struct { - Hash string - Found bool - Ticket database.Ticket - AltSignAddr string - VoteChanges map[uint32]database.VoteChangeRecord - MaxVoteChanges int + Hash string + Found bool + Ticket database.Ticket + AltSignAddrData *database.AltSignAddrData + VoteChanges map[uint32]database.VoteChangeRecord + MaxVoteChanges int } func dcrdStatus(c *gin.Context) DcrdStatus { @@ -176,19 +176,14 @@ func ticketSearch(c *gin.Context) { return } - altSignAddr := "" - if altSignAddrData != nil { - altSignAddr = altSignAddrData.AltSignAddr - } - c.HTML(http.StatusOK, "admin.html", gin.H{ "SearchResult": searchResult{ - Hash: hash, - Found: found, - Ticket: ticket, - AltSignAddr: altSignAddr, - VoteChanges: voteChanges, - MaxVoteChanges: cfg.MaxVoteChangeRecords, + Hash: hash, + Found: found, + Ticket: ticket, + AltSignAddrData: altSignAddrData, + VoteChanges: voteChanges, + MaxVoteChanges: cfg.MaxVoteChangeRecords, }, "WebApiCache": getCache(), "WebApiCfg": cfg, diff --git a/webapi/setaltsignaddr.go b/webapi/setaltsignaddr.go index 882b474..1dd0ead 100644 --- a/webapi/setaltsignaddr.go +++ b/webapi/setaltsignaddr.go @@ -111,9 +111,9 @@ func setAltSignAddr(c *gin.Context) { data := &database.AltSignAddrData{ AltSignAddr: altSignAddr, - Req: reqBytes, + Req: string(reqBytes), ReqSig: c.GetHeader("VSP-Client-Signature"), - Resp: []byte(resp), + Resp: resp, RespSig: respSig, } diff --git a/webapi/setaltsignaddr_test.go b/webapi/setaltsignaddr_test.go index df9f716..2f45b3b 100644 --- a/webapi/setaltsignaddr_test.go +++ b/webapi/setaltsignaddr_test.go @@ -42,6 +42,7 @@ var ( maxVoteChangeRecords = 3 ) +// randBytes returns a byte slice of size n filled with random bytes. func randBytes(n int) []byte { slice := make([]byte, n) if _, err := seededRand.Read(slice); err != nil { @@ -196,9 +197,9 @@ func TestSetAltSignAddress(t *testing.T) { if test.isExistingAltSignAddr { data := &database.AltSignAddrData{ AltSignAddr: test.addr, - Req: b, + Req: string(b), ReqSig: reqSig, - Resp: randBytes(1000), + Resp: string(randBytes(1000)), RespSig: randString(96, sigCharset), } if err := db.InsertAltSignAddr(ticketHash, data); err != nil { @@ -256,7 +257,7 @@ func TestSetAltSignAddress(t *testing.T) { continue } - if !bytes.Equal(b, altsig.Req) || altsig.ReqSig != reqSig { + if !bytes.Equal(b, []byte(altsig.Req)) || altsig.ReqSig != reqSig { t.Fatalf("%q: expected alt sign addr data different than actual", test.name) } } diff --git a/webapi/templates/ticket-search-result.html b/webapi/templates/ticket-search-result.html index ca6d4ba..f9d6bff 100644 --- a/webapi/templates/ticket-search-result.html +++ b/webapi/templates/ticket-search-result.html @@ -40,14 +40,6 @@ - - Alternate Signing Address - - - {{ .AltSignAddr }} - - -

Fee

@@ -141,6 +133,50 @@ +

Alternate Signing Address

+ + + + + + + + + + +
Alternate Signing Address + {{if .AltSignAddrData}} + + {{ .AltSignAddrData.AltSignAddr }} + + {{end}} +
+ AltSignAddress Change + + {{if .AltSignAddrData}} +
+ + + + + + + + + + + + + + + + + +
Request{{ indentJSON .AltSignAddrData.Req }}
Request
Signature
{{ .AltSignAddrData.ReqSig }}
Response{{ indentJSON .AltSignAddrData.Resp }}
Response
Signature
{{ .AltSignAddrData.RespSig }}
+
+ {{end}} +
+ {{ else }}

No ticket found with hash {{ .Hash }}

{{ end }}