From 9d6cf57219780f2116dda31f08d8fe2b053f79be Mon Sep 17 00:00:00 2001 From: jholdstock Date: Thu, 25 Jun 2020 11:13:42 +0100 Subject: [PATCH] Add funcName to web api logs --- run_tests.sh | 1 - webapi/getfeeaddress.go | 30 ++++++++++++---------- webapi/payfee.go | 55 +++++++++++++++++++++------------------- webapi/setvotechoices.go | 15 ++++++----- webapi/ticketstatus.go | 5 ++-- 5 files changed, 56 insertions(+), 50 deletions(-) diff --git a/run_tests.sh b/run_tests.sh index 9e44ae9..ce36bfb 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -15,7 +15,6 @@ else OUT_FORMAT="colored-line-number" fi -# some linters are commented until code is in a more stable state. golangci-lint run --disable-all --deadline=10m \ --out-format=$OUT_FORMAT \ --enable=gofmt \ diff --git a/webapi/getfeeaddress.go b/webapi/getfeeaddress.go index b62da45..8a76350 100644 --- a/webapi/getfeeaddress.go +++ b/webapi/getfeeaddress.go @@ -60,6 +60,8 @@ func getCurrentFee(dcrdClient *rpc.DcrdRPC) (dcrutil.Amount, error) { // feeAddress is the handler for "POST /feeaddress". func feeAddress(c *gin.Context) { + funcName := "feeAddress" + // Get values which have been added to context by middleware. ticket := c.MustGet("Ticket").(database.Ticket) knownTicket := c.MustGet("KnownTicket").(bool) @@ -73,7 +75,7 @@ func feeAddress(c *gin.Context) { var feeAddressRequest FeeAddressRequest if err := c.ShouldBindJSON(&feeAddressRequest); err != nil { - log.Warnf("Bad feeaddress request from %s: %v", c.ClientIP(), err) + log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return } @@ -84,7 +86,7 @@ func feeAddress(c *gin.Context) { if ticket.FeeTxStatus == database.FeeReceieved || ticket.FeeTxStatus == database.FeeBroadcast || ticket.FeeTxStatus == database.FeeConfirmed { - log.Warnf("Fee tx already received from %s: ticketHash=%s", c.ClientIP(), ticket.Hash) + log.Warnf("%s: Fee tx already received from %s: ticketHash=%s", funcName, c.ClientIP(), ticket.Hash) sendError(errFeeAlreadyReceived, c) return } @@ -92,7 +94,7 @@ func feeAddress(c *gin.Context) { // Get ticket details. rawTicket, err := dcrdClient.GetRawTransaction(ticketHash) if err != nil { - log.Errorf("Could not retrieve tx %s for %s: %v", ticketHash, c.ClientIP(), err) + log.Errorf("%s: Could not retrieve tx %s for %s: %v", funcName, ticketHash, c.ClientIP(), err) sendError(errInternalError, c) return } @@ -100,12 +102,12 @@ func feeAddress(c *gin.Context) { // Ensure this ticket is eligible to vote at some point in the future. canVote, err := dcrdClient.CanTicketVote(rawTicket, ticketHash, cfg.NetParams) if err != nil { - log.Errorf("canTicketVote error: %v", err) + log.Errorf("%s: canTicketVote error: %v", funcName, err) sendError(errInternalError, c) return } if !canVote { - log.Warnf("Unvotable ticket %s from %s", ticketHash, c.ClientIP()) + log.Warnf("%s: Unvotable ticket %s from %s", funcName, ticketHash, c.ClientIP()) sendError(errTicketCannotVote, c) return } @@ -118,7 +120,7 @@ func feeAddress(c *gin.Context) { if ticket.FeeExpired() { newFee, err := getCurrentFee(dcrdClient) if err != nil { - log.Errorf("getCurrentFee error: %v", err) + log.Errorf("%s: getCurrentFee error: %v", funcName, err) sendError(errInternalError, c) return } @@ -127,12 +129,12 @@ func feeAddress(c *gin.Context) { err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("UpdateTicket error: %v", err) + log.Errorf("%s: UpdateTicket error: %v", funcName, err) sendError(errInternalError, c) return } - log.Debugf("Expired fee updated for ticket: newFeeAmt=%f, ticketHash=%s", - newFee, ticket.Hash) + log.Debugf("%s: Expired fee updated for ticket: newFeeAmt=%f, ticketHash=%s", + funcName, newFee, ticket.Hash) } sendJSONResponse(feeAddressResponse{ Timestamp: now.Unix(), @@ -150,14 +152,14 @@ func feeAddress(c *gin.Context) { fee, err := getCurrentFee(dcrdClient) if err != nil { - log.Errorf("getCurrentFee error: %v", err) + log.Errorf("%s: getCurrentFee error: %v", funcName, err) sendError(errInternalError, c) return } newAddress, newAddressIdx, err := getNewFeeAddress(db, addrGen) if err != nil { - log.Errorf("getNewFeeAddress error: %v", err) + log.Errorf("%s: getNewFeeAddress error: %v", funcName, err) } now := time.Now() @@ -178,13 +180,13 @@ func feeAddress(c *gin.Context) { err = db.InsertNewTicket(dbTicket) if err != nil { - log.Errorf("InsertTicket error: %v", err) + log.Errorf("%s: InsertTicket error: %v", funcName, err) sendError(errInternalError, c) return } - log.Debugf("Fee address created for new ticket: tktConfirmed=%t, feeAddrIdx=%d, "+ - "feeAddr=%s, feeAmt=%s, ticketHash=%s", confirmed, newAddressIdx, newAddress, fee, ticketHash) + log.Debugf("%s: Fee address created for new ticket: tktConfirmed=%t, feeAddrIdx=%d, "+ + "feeAddr=%s, feeAmt=%s, ticketHash=%s", funcName, confirmed, newAddressIdx, newAddress, fee, ticketHash) sendJSONResponse(feeAddressResponse{ Timestamp: now.Unix(), diff --git a/webapi/payfee.go b/webapi/payfee.go index 136a39a..b024e33 100644 --- a/webapi/payfee.go +++ b/webapi/payfee.go @@ -13,6 +13,7 @@ import ( // payFee is the handler for "POST /payfee". func payFee(c *gin.Context) { + funcName := "payFee" // Get values which have been added to context by middleware. ticket := c.MustGet("Ticket").(database.Ticket) @@ -25,14 +26,14 @@ func payFee(c *gin.Context) { } if !knownTicket { - log.Warnf("Unknown ticket from %s", c.ClientIP()) + log.Warnf("%s: Unknown ticket from %s", funcName, c.ClientIP()) sendError(errUnknownTicket, c) return } var payFeeRequest PayFeeRequest if err := c.ShouldBindJSON(&payFeeRequest); err != nil { - log.Warnf("Bad payfee request from %s: %v", c.ClientIP(), err) + log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return } @@ -41,7 +42,7 @@ func payFee(c *gin.Context) { if ticket.FeeTxStatus == database.FeeReceieved || ticket.FeeTxStatus == database.FeeBroadcast || ticket.FeeTxStatus == database.FeeConfirmed { - log.Warnf("Fee tx already received from %s: ticketHash=%s", c.ClientIP(), ticket.Hash) + log.Warnf("%s: Fee tx already received from %s: ticketHash=%s", funcName, c.ClientIP(), ticket.Hash) sendError(errFeeAlreadyReceived, c) return } @@ -49,7 +50,7 @@ func payFee(c *gin.Context) { // Get ticket details. rawTicket, err := dcrdClient.GetRawTransaction(ticket.Hash) if err != nil { - log.Errorf("Could not retrieve tx %s for %s: %v", ticket.Hash, c.ClientIP(), err) + log.Errorf("%s: Could not retrieve tx %s for %s: %v", funcName, ticket.Hash, c.ClientIP(), err) sendError(errInternalError, c) return } @@ -57,19 +58,19 @@ func payFee(c *gin.Context) { // Ensure this ticket is eligible to vote at some point in the future. canVote, err := dcrdClient.CanTicketVote(rawTicket, ticket.Hash, cfg.NetParams) if err != nil { - log.Errorf("canTicketVote error: %v", err) + log.Errorf("%s: canTicketVote error: %v", funcName, err) sendError(errInternalError, c) return } if !canVote { - log.Warnf("Unvotable ticket %s from %s", ticket.Hash, c.ClientIP()) + log.Warnf("%s: Unvotable ticket %s from %s", funcName, ticket.Hash, c.ClientIP()) sendError(errTicketCannotVote, c) return } // Respond early if the fee for this ticket is expired. if ticket.FeeExpired() { - log.Warnf("Expired payfee request from %s", c.ClientIP()) + log.Warnf("%s: Expired payfee request from %s", funcName, c.ClientIP()) sendError(errFeeExpired, c) return } @@ -78,7 +79,7 @@ func payFee(c *gin.Context) { votingKey := payFeeRequest.VotingKey votingWIF, err := dcrutil.DecodeWIF(votingKey, cfg.NetParams.PrivateKeyID) if err != nil { - log.Warnf("Failed to decode WIF: %v", err) + log.Warnf("%s: Failed to decode WIF: %v", funcName, err) sendError(errInvalidPrivKey, c) return } @@ -87,7 +88,7 @@ func payFee(c *gin.Context) { voteChoices := payFeeRequest.VoteChoices err = isValidVoteChoices(cfg.NetParams, currentVoteVersion(cfg.NetParams), voteChoices) if err != nil { - log.Warnf("Invalid votechoices from %s: %v", c.ClientIP(), err) + log.Warnf("%s: Invalid votechoices from %s: %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errInvalidVoteChoices, c) return } @@ -95,7 +96,7 @@ func payFee(c *gin.Context) { // Validate FeeTx. feeTx, err := decodeTransaction(payFeeRequest.FeeTx) if err != nil { - log.Warnf("Failed to decode tx: %v", err) + log.Warnf("%s: Failed to decode tx: %v", funcName, err) sendError(errInvalidFeeTx, c) return } @@ -114,7 +115,7 @@ findAddress: _, addresses, _, err := txscript.ExtractPkScriptAddrs(scriptVersion, txOut.PkScript, cfg.NetParams) if err != nil { - log.Errorf("Extract PK error: %v", err) + log.Errorf("%s: Extract PK error: %v", funcName, err) sendError(errInternalError, c) return } @@ -127,7 +128,8 @@ findAddress: } if feePaid == 0 { - log.Warnf("FeeTx for ticket %s did not include any payments for address %s", ticket.Hash, ticket.FeeAddress) + log.Warnf("%s: FeeTx for ticket %s did not include any payments for address %s", + funcName, ticket.Hash, ticket.FeeAddress) sendErrorWithMsg("feetx did not include any payments for fee address", errInvalidFeeTx, c) return } @@ -135,7 +137,7 @@ findAddress: wifAddr, err := dcrutil.NewAddressPubKeyHash(dcrutil.Hash160(votingWIF.PubKey()), cfg.NetParams, dcrec.STEcdsaSecp256k1) if err != nil { - log.Errorf("NewAddressPubKeyHash: %v", err) + log.Errorf("%s: NewAddressPubKeyHash: %v", funcName, err) sendError(errInvalidPrivKey, c) return } @@ -143,7 +145,7 @@ findAddress: // Decode ticket transaction to get its voting address. ticketTx, err := decodeTransaction(rawTicket.Hex) if err != nil { - log.Warnf("Failed to decode tx: %v", err) + log.Warnf("%s: Failed to decode tx: %v", funcName, err) sendError(errInternalError, c) return } @@ -151,20 +153,20 @@ findAddress: // Get ticket voting address. _, votingAddr, _, err := txscript.ExtractPkScriptAddrs(scriptVersion, ticketTx.TxOut[0].PkScript, cfg.NetParams) if err != nil { - log.Errorf("ExtractPK error: %v", err) + log.Errorf("%s: ExtractPK error: %v", funcName, err) sendError(errInternalError, c) return } if len(votingAddr) == 0 { - log.Error("No voting address found for ticket %s", ticket.Hash) + log.Error("%s: No voting address found for ticket %s", funcName, ticket.Hash) sendError(errInternalError, c) return } // Ensure provided private key will allow us to vote this ticket. if votingAddr[0].Address() != wifAddr.Address() { - log.Warnf("Voting address does not match provided private key: "+ - "votingAddr=%+v, wifAddr=%+v", votingAddr[0], wifAddr) + log.Warnf("%s: Voting address does not match provided private key: "+ + "votingAddr=%+v, wifAddr=%+v", funcName, votingAddr[0], wifAddr) sendErrorWithMsg("voting address does not match provided private key", errInvalidPrivKey, c) return @@ -172,7 +174,7 @@ findAddress: minFee := dcrutil.Amount(ticket.FeeAmount) if feePaid < minFee { - log.Warnf("Fee too small from %s: was %v, expected %v", c.ClientIP(), + log.Warnf("%s: Fee too small from %s: was %v, expected %v", funcName, c.ClientIP(), feePaid, minFee) sendError(errFeeTooSmall, c) return @@ -190,24 +192,24 @@ findAddress: err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("InsertTicket failed: %v", err) + log.Errorf("%s: InsertTicket failed: %v", funcName, err) sendError(errInternalError, c) return } - log.Debugf("Fee tx received for ticket: minExpectedFee=%v, feePaid=%v, "+ - "ticketHash=%s", minFee, feePaid, ticket.Hash) + log.Debugf("%s: Fee tx received for ticket: minExpectedFee=%v, feePaid=%v, "+ + "ticketHash=%s", funcName, minFee, feePaid, ticket.Hash) if ticket.Confirmed { err = dcrdClient.SendRawTransaction(payFeeRequest.FeeTx) if err != nil { - log.Errorf("SendRawTransaction failed: %v", err) + log.Errorf("%s: SendRawTransaction failed: %v", funcName, err) ticket.FeeTxStatus = database.FeeError err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("UpdateTicket error: %v", err) + log.Errorf("%s: UpdateTicket error: %v", funcName, err) } sendErrorWithMsg("could not broadcast fee transaction", errInvalidFeeTx, c) @@ -218,12 +220,13 @@ findAddress: err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("UpdateTicket failed: %v", err) + log.Errorf("%s: UpdateTicket failed: %v", funcName, err) sendError(errInternalError, c) return } - log.Debugf("Fee tx broadcast for ticket: ticketHash=%s, feeHash=%s", ticket.Hash, ticket.FeeTxHash) + log.Debugf("%s: Fee tx broadcast for ticket: ticketHash=%s, feeHash=%s", + funcName, ticket.Hash, ticket.FeeTxHash) } sendJSONResponse(payFeeResponse{ diff --git a/webapi/setvotechoices.go b/webapi/setvotechoices.go index 411f34e..18ad16e 100644 --- a/webapi/setvotechoices.go +++ b/webapi/setvotechoices.go @@ -10,6 +10,7 @@ import ( // setVoteChoices is the handler for "POST /setvotechoices". func setVoteChoices(c *gin.Context) { + funcName := "setVoteChoices" // Get values which have been added to context by middleware. ticket := c.MustGet("Ticket").(database.Ticket) @@ -17,20 +18,20 @@ func setVoteChoices(c *gin.Context) { walletClients := c.MustGet("WalletClients").([]*rpc.WalletRPC) if !knownTicket { - log.Warnf("Unknown ticket from %s", c.ClientIP()) + log.Warnf("%s: Unknown ticket from %s", funcName, c.ClientIP()) sendError(errUnknownTicket, c) return } if ticket.FeeTxStatus == database.NoFee { - log.Warnf("Setvotechoices without fee tx from %s", c.ClientIP()) + log.Warnf("%s: Setvotechoices without fee tx from %s", funcName, c.ClientIP()) sendError(errFeeNotReceived, c) return } var setVoteChoicesRequest SetVoteChoicesRequest if err := c.ShouldBindJSON(&setVoteChoicesRequest); err != nil { - log.Warnf("Bad setvotechoices request from %s: %v", c.ClientIP(), err) + log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return } @@ -38,7 +39,7 @@ func setVoteChoices(c *gin.Context) { voteChoices := setVoteChoicesRequest.VoteChoices err := isValidVoteChoices(cfg.NetParams, currentVoteVersion(cfg.NetParams), voteChoices) if err != nil { - log.Warnf("Invalid votechoices from %s: %v", c.ClientIP(), err) + log.Warnf("%s: Invalid votechoices from %s: %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errInvalidVoteChoices, c) return } @@ -48,7 +49,7 @@ func setVoteChoices(c *gin.Context) { ticket.VoteChoices = voteChoices err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("UpdateTicket error: %v", err) + log.Errorf("%s: UpdateTicket error: %v", funcName, err) sendError(errInternalError, c) return } @@ -62,13 +63,13 @@ func setVoteChoices(c *gin.Context) { if err != nil { // If this fails, we still want to try the other wallets, so // don't return an error response, just log an error. - log.Errorf("SetVoteChoice failed: %v", err) + log.Errorf("%s: SetVoteChoice failed: %v", funcName, err) } } } } - log.Debugf("Vote choices updated for ticket: ticketHash=%s", ticket.Hash) + log.Debugf("%s: Vote choices updated for ticket: ticketHash=%s", funcName, ticket.Hash) // TODO: DB - error if given timestamp is older than any previous requests diff --git a/webapi/ticketstatus.go b/webapi/ticketstatus.go index 4b3cc75..c0c34d4 100644 --- a/webapi/ticketstatus.go +++ b/webapi/ticketstatus.go @@ -9,20 +9,21 @@ import ( // ticketStatus is the handler for "GET /ticketstatus". func ticketStatus(c *gin.Context) { + funcName := "ticketStatus" // Get values which have been added to context by middleware. ticket := c.MustGet("Ticket").(database.Ticket) knownTicket := c.MustGet("KnownTicket").(bool) if !knownTicket { - log.Warnf("Unknown ticket from %s", c.ClientIP()) + log.Warnf("%s: Unknown ticket from %s", funcName, c.ClientIP()) sendError(errUnknownTicket, c) return } var ticketStatusRequest TicketStatusRequest if err := c.ShouldBindJSON(&ticketStatusRequest); err != nil { - log.Warnf("Bad ticketstatus request from %s: %v", c.ClientIP(), err) + log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return }