From 37e383e47da31d07d7198534d9f970f4be21cfe3 Mon Sep 17 00:00:00 2001 From: 0xTylerHolmes Date: Wed, 18 Sep 2024 22:42:32 -0400 Subject: [PATCH 1/5] add simple content-type hook for forkdata --- handlers/forks.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/handlers/forks.go b/handlers/forks.go index ca0b65f..fb4b902 100644 --- a/handlers/forks.go +++ b/handlers/forks.go @@ -1,6 +1,8 @@ package handlers import ( + "encoding/json" + "fmt" "net/http" "sort" "time" @@ -31,6 +33,18 @@ func Forks(w http.ResponseWriter, r *http.Request) { handlePageError(w, r, pageError) return } + + if r.Header.Get("Content-Type") == "application/json" { + w.Header().Set("Content-Type", "application/json") + forksDataBytes, err := json.Marshal(data.Data) + if err != nil { + w.Write([]byte(fmt.Sprintf("%s", err.Error()))) + return + } + w.Write(forksDataBytes) + return + } + w.Header().Set("Content-Type", "text/html") if handleTemplateError(w, r, "forks.go", "Forks", "", pageTemplate.ExecuteTemplate(w, "layout", data)) != nil { return // an error has occurred and was processed From b60f277abebfd2f21d6fff93dc24303d24552248 Mon Sep 17 00:00:00 2001 From: 0xTylerHolmes Date: Wed, 18 Sep 2024 22:42:32 -0400 Subject: [PATCH 2/5] add simple content-type hook for forkdata --- handlers/forks.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/handlers/forks.go b/handlers/forks.go index ca0b65f..1aa0d70 100644 --- a/handlers/forks.go +++ b/handlers/forks.go @@ -1,6 +1,8 @@ package handlers import ( + "encoding/json" + "fmt" "net/http" "sort" "time" @@ -31,6 +33,21 @@ func Forks(w http.ResponseWriter, r *http.Request) { handlePageError(w, r, pageError) return } + + if r.Header.Get("Content-Type") == "application/json" { + w.Header().Set("Content-Type", "application/json") + forksDataBytes, err := json.Marshal(data.Data) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + _, err = w.Write(forksDataBytes) + if err != nil { + http.Error(w, fmt.Sprintf("Error writing response: %v", err), http.StatusInternalServerError) + } + return + } + w.Header().Set("Content-Type", "text/html") if handleTemplateError(w, r, "forks.go", "Forks", "", pageTemplate.ExecuteTemplate(w, "layout", data)) != nil { return // an error has occurred and was processed From 71867ac77d685e499535334bd7ee4dc1464b543d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 09:39:21 +0000 Subject: [PATCH 3/5] Bump the dependencies group with 3 updates Bumps the dependencies group with 3 updates: [golang.org/x/crypto](https://github.com/golang/crypto), [golang.org/x/text](https://github.com/golang/text) and [golang.org/x/time](https://github.com/golang/time). Updates `golang.org/x/crypto` from 0.27.0 to 0.28.0 - [Commits](https://github.com/golang/crypto/compare/v0.27.0...v0.28.0) Updates `golang.org/x/text` from 0.18.0 to 0.19.0 - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.18.0...v0.19.0) Updates `golang.org/x/time` from 0.6.0 to 0.7.0 - [Commits](https://github.com/golang/time/compare/v0.6.0...v0.7.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: golang.org/x/text dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: golang.org/x/time dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- go.mod | 8 ++++---- go.sum | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 70a5650..637a07e 100644 --- a/go.mod +++ b/go.mod @@ -29,10 +29,10 @@ require ( github.com/tdewolff/minify v2.3.6+incompatible github.com/timandy/routine v1.1.4 github.com/urfave/negroni v1.0.0 - golang.org/x/crypto v0.27.0 + golang.org/x/crypto v0.28.0 golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 - golang.org/x/text v0.18.0 - golang.org/x/time v0.6.0 + golang.org/x/text v0.19.0 + golang.org/x/time v0.7.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -112,7 +112,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.28.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.25.0 // indirect + golang.org/x/sys v0.26.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect diff --git a/go.sum b/go.sum index ad7e1b1..a3aedc4 100644 --- a/go.sum +++ b/go.sum @@ -456,8 +456,8 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -520,16 +520,16 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -539,10 +539,10 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= From addec21e3bd62b570d3280745a3f455a11069494 Mon Sep 17 00:00:00 2001 From: 0xTylerHolmes Date: Mon, 7 Oct 2024 13:41:21 -0400 Subject: [PATCH 4/5] check Accept field in GET requests for application/json --- handlers/forks.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handlers/forks.go b/handlers/forks.go index 1aa0d70..7b8042b 100644 --- a/handlers/forks.go +++ b/handlers/forks.go @@ -34,7 +34,7 @@ func Forks(w http.ResponseWriter, r *http.Request) { return } - if r.Header.Get("Content-Type") == "application/json" { + if r.Header.Get("Accept") == "application/json" { w.Header().Set("Content-Type", "application/json") forksDataBytes, err := json.Marshal(data.Data) if err != nil { From ae09b7fbaff35bd52f338e9dbbe64a33e4b09ddb Mon Sep 17 00:00:00 2001 From: pk910 Date: Tue, 8 Oct 2024 17:45:49 +0200 Subject: [PATCH 5/5] refresh validator names every 2h by default --- services/validatornames.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/validatornames.go b/services/validatornames.go index 3852ba1..639a58c 100644 --- a/services/validatornames.go +++ b/services/validatornames.go @@ -61,6 +61,9 @@ func (vn *ValidatorNames) StartUpdater() { if vn.updaterRunning { return } + if utils.Config.Frontend.ValidatorNamesRefreshInterval == 0 { + utils.Config.Frontend.ValidatorNamesRefreshInterval = 2 * time.Hour + } if utils.Config.Frontend.ValidatorNamesResolveInterval == 0 { utils.Config.Frontend.ValidatorNamesResolveInterval = 6 * time.Hour }