From f87e35b5f878ebdab85f76ed1ef2fd31617598d6 Mon Sep 17 00:00:00 2001 From: Damian Date: Fri, 10 Nov 2023 17:03:30 +0000 Subject: [PATCH 1/5] add basic linting rules --- .golangci-lint.yaml | 24 ++++++++++++++++++++++++ Makefile | 8 ++++++++ 2 files changed, 32 insertions(+) create mode 100644 .golangci-lint.yaml create mode 100644 Makefile diff --git a/.golangci-lint.yaml b/.golangci-lint.yaml new file mode 100644 index 0000000..d15b8a4 --- /dev/null +++ b/.golangci-lint.yaml @@ -0,0 +1,24 @@ +linters: + enable: + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - unused + - cyclop + - dupword + - wsl + - varnamelen + - usestdlibvars + - unparam + - revive + - prealloc + - misspell + - gocyclo + - funlen + - bodyclose + +linters-settings: + cyclop: + max-complexity: 15 \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..331be44 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +lint: + gofumpt -l -w . + golangci-lint run + go mod tidy + +install-linters: + go install mvdan.cc/gofumpt@latest + go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.55.2 \ No newline at end of file From 571eb4174d2072211ca9472a86c70b47bc703c02 Mon Sep 17 00:00:00 2001 From: Damian Date: Fri, 10 Nov 2023 17:03:38 +0000 Subject: [PATCH 2/5] run first lint --- cmd/main.go | 12 ++++++------ go.mod | 18 ++++++++---------- go.sum | 28 +++++++++++++++------------- handlers/api.go | 2 +- handlers/proxy.go | 14 +++++++------- handlers/ruleset.go | 1 - 6 files changed, 37 insertions(+), 38 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index c6c22e5..36c6fef 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -3,12 +3,12 @@ package main import ( _ "embed" "fmt" - - "ladder/handlers" "log" "os" "strings" + "ladder/handlers" + "github.com/akamensky/argparse" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/basicauth" @@ -19,7 +19,6 @@ import ( var faviconData string func main() { - parser := argparse.NewParser("ladder", "Every Wall needs a Ladder") portEnv := os.Getenv("PORT") @@ -29,11 +28,13 @@ func main() { port := parser.String("p", "port", &argparse.Options{ Required: false, Default: portEnv, - Help: "Port the webserver will listen on"}) + Help: "Port the webserver will listen on", + }) prefork := parser.Flag("P", "prefork", &argparse.Options{ Required: false, - Help: "This will spawn multiple processes listening"}) + Help: "This will spawn multiple processes listening", + }) err := parser.Parse(os.Args) if err != nil { @@ -82,5 +83,4 @@ func main() { app.Get("/*", handlers.ProxySite) log.Fatal(app.Listen(":" + *port)) - } diff --git a/go.mod b/go.mod index 25aae3b..e35c2b6 100644 --- a/go.mod +++ b/go.mod @@ -2,17 +2,17 @@ module ladder go 1.21.1 -require github.com/gofiber/fiber/v2 v2.50.0 - require ( - github.com/andybalholm/cascadia v1.3.1 // indirect - golang.org/x/net v0.8.0 // indirect + github.com/PuerkitoBio/goquery v1.8.1 + github.com/akamensky/argparse v1.4.0 + github.com/gofiber/fiber/v2 v2.50.0 + github.com/stretchr/testify v1.8.4 + gopkg.in/yaml.v3 v3.0.1 ) require ( - github.com/PuerkitoBio/goquery v1.8.1 - github.com/akamensky/argparse v1.4.0 github.com/andybalholm/brotli v1.0.6 // indirect + github.com/andybalholm/cascadia v1.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/google/uuid v1.4.0 // indirect github.com/klauspost/compress v1.17.2 // indirect @@ -21,11 +21,9 @@ require ( github.com/mattn/go-runewidth v0.0.15 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/stretchr/objx v0.5.0 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.50.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect - golang.org/x/sys v0.13.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect + golang.org/x/net v0.18.0 // indirect + golang.org/x/sys v0.14.0 // indirect ) diff --git a/go.sum b/go.sum index 0b166c6..16347de 100644 --- a/go.sum +++ b/go.sum @@ -4,9 +4,9 @@ github.com/akamensky/argparse v1.4.0 h1:YGzvsTqCvbEZhL8zZu2AiA5nq805NZh75JNj4ajn github.com/akamensky/argparse v1.4.0/go.mod h1:S5kwC7IuDcEr5VeXtGPRVZ5o/FdhcMlQz4IZQuw64xA= github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI= github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= -github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= +github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gofiber/fiber/v2 v2.50.0 h1:ia0JaB+uw3GpNSCR5nvC5dsaxXjRU5OEu36aytx+zGw= @@ -27,12 +27,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= @@ -45,15 +39,19 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -63,21 +61,25 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/handlers/api.go b/handlers/api.go index e8a7611..190c8fe 100644 --- a/handlers/api.go +++ b/handlers/api.go @@ -2,12 +2,12 @@ package handlers import ( _ "embed" - "log" "github.com/gofiber/fiber/v2" ) +//nolint:all //go:embed VERSION var version string diff --git a/handlers/proxy.go b/handlers/proxy.go index 28c0694..9019aba 100644 --- a/handlers/proxy.go +++ b/handlers/proxy.go @@ -15,10 +15,12 @@ import ( "gopkg.in/yaml.v3" ) -var UserAgent = getenv("USER_AGENT", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)") -var ForwardedFor = getenv("X_FORWARDED_FOR", "66.249.66.1") -var rulesSet = loadRules() -var allowedDomains = strings.Split(os.Getenv("ALLOWED_DOMAINS"), ",") +var ( + UserAgent = getenv("USER_AGENT", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)") + ForwardedFor = getenv("X_FORWARDED_FOR", "66.249.66.1") + rulesSet = loadRules() + allowedDomains = strings.Split(os.Getenv("ALLOWED_DOMAINS"), ",") +) func ProxySite(c *fiber.Ctx) error { // Get the url from the URL @@ -39,7 +41,6 @@ func ProxySite(c *fiber.Ctx) error { } func fetchSite(urlpath string, queries map[string]string) (string, *http.Request, *http.Response, error) { - urlQuery := "?" if len(queries) > 0 { for k, v := range queries { @@ -102,7 +103,6 @@ func fetchSite(urlpath string, queries map[string]string) (string, *http.Request } resp, err := client.Do(req) - if err != nil { return "", nil, nil, err } @@ -136,7 +136,7 @@ func rewriteHtml(bodyB []byte, u *url.URL, rule Rule) string { reScript := regexp.MustCompile(scriptPattern) body = reScript.ReplaceAllString(body, fmt.Sprintf(` - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- + +
+ + + +
-

ladddddddder

+

ladddddddder

-
-
-
- - -
- + +
+
+
+ + + \ No newline at end of file From 31902c21d2ea1e5cce0a95de1d43c80a08ee2578 Mon Sep 17 00:00:00 2001 From: Gianni Carafa Date: Sat, 11 Nov 2023 22:17:58 +0100 Subject: [PATCH 5/5] add autofocus and remove unused js includes --- handlers/form.html | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/handlers/form.html b/handlers/form.html index a05cf95..954e051 100644 --- a/handlers/form.html +++ b/handlers/form.html @@ -18,7 +18,7 @@

- +