diff --git a/Makefile b/Makefile index 77b9395e..4478b495 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ DOCKER_PASSWORD= DOCKER_REGISTRY=thecodingmachine GOTENBERG_USER_GID=1001 GOTENBERG_USER_UID=1001 -GOLANGCI_LINT_VERSION=1.25.1 +GOLANGCI_LINT_VERSION=1.27.0 CODE_COVERAGE=0 TINI_VERSION=0.19.0 MAXIMUM_WAIT_TIMEOUT=30.0 @@ -19,6 +19,7 @@ DISABLE_UNOCONV=0 LOG_LEVEL=INFO ROOT_PATH=/ DEFAULT_GOOGLE_CHROME_RPCC_BUFFER_SIZE=1048576 +GOOGLE_CHROME_IGNORE_CERTIFICATE_ERRORS=0 # build the base Docker image. base: @@ -57,7 +58,7 @@ image: # start the API using previously built Docker image. gotenberg: - docker run -it --rm -e MAXIMUM_WAIT_TIMEOUT=$(MAXIMUM_WAIT_TIMEOUT) -e MAXIMUM_WAIT_DELAY=$(MAXIMUM_WAIT_DELAY) -e MAXIMUM_WEBHOOK_URL_TIMEOUT=$(MAXIMUM_WEBHOOK_URL_TIMEOUT) -e DEFAULT_WEBHOOK_URL_TIMEOUT=$(DEFAULT_WEBHOOK_URL_TIMEOUT) -e MAXIMUM_WEBHOOK_URL_TIMEOUT=$(MAXIMUM_WEBHOOK_URL_TIMEOUT) -e DEFAULT_LISTEN_PORT=$(DEFAULT_LISTEN_PORT) -e DISABLE_GOOGLE_CHROME=$(DISABLE_GOOGLE_CHROME) -e DISABLE_UNOCONV=$(DISABLE_UNOCONV) -e LOG_LEVEL=$(LOG_LEVEL) -e ROOT_PATH=$(ROOT_PATH) -e DEFAULT_GOOGLE_CHROME_RPCC_BUFFER_SIZE=$(DEFAULT_GOOGLE_CHROME_RPCC_BUFFER_SIZE) -p "$(DEFAULT_LISTEN_PORT):$(DEFAULT_LISTEN_PORT)" $(DOCKER_REGISTRY)/gotenberg:$(VERSION) + docker run -it --rm -e MAXIMUM_WAIT_TIMEOUT=$(MAXIMUM_WAIT_TIMEOUT) -e MAXIMUM_WAIT_DELAY=$(MAXIMUM_WAIT_DELAY) -e MAXIMUM_WEBHOOK_URL_TIMEOUT=$(MAXIMUM_WEBHOOK_URL_TIMEOUT) -e DEFAULT_WEBHOOK_URL_TIMEOUT=$(DEFAULT_WEBHOOK_URL_TIMEOUT) -e MAXIMUM_WEBHOOK_URL_TIMEOUT=$(MAXIMUM_WEBHOOK_URL_TIMEOUT) -e DEFAULT_LISTEN_PORT=$(DEFAULT_LISTEN_PORT) -e DISABLE_GOOGLE_CHROME=$(DISABLE_GOOGLE_CHROME) -e DISABLE_UNOCONV=$(DISABLE_UNOCONV) -e LOG_LEVEL=$(LOG_LEVEL) -e ROOT_PATH=$(ROOT_PATH) -e DEFAULT_GOOGLE_CHROME_RPCC_BUFFER_SIZE=$(DEFAULT_GOOGLE_CHROME_RPCC_BUFFER_SIZE) -e GOOGLE_CHROME_IGNORE_CERTIFICATE_ERRORS=$(GOOGLE_CHROME_IGNORE_CERTIFICATE_ERRORS) -p "$(DEFAULT_LISTEN_PORT):$(DEFAULT_LISTEN_PORT)" $(DOCKER_REGISTRY)/gotenberg:$(VERSION) # publish Gotenberg images according to version. publish: diff --git a/build/lint/Dockerfile b/build/lint/Dockerfile index 4b24276d..0abf3718 100644 --- a/build/lint/Dockerfile +++ b/build/lint/Dockerfile @@ -19,4 +19,4 @@ COPY . . RUN go mod download &&\ go mod verify -CMD ["golangci-lint", "run" ,"--tests=false", "--enable-all", "--disable=dupl", "--disable=funlen", "--disable=wsl", "--disable=gocognit", "--disable=gomnd" ] \ No newline at end of file +CMD ["golangci-lint", "run" ,"--tests=false", "--enable-all", "--disable=dupl", "--disable=funlen", "--disable=wsl", "--disable=gocognit", "--disable=gomnd", "--disable=goimports" ] \ No newline at end of file diff --git a/cmd/gotenberg/main.go b/cmd/gotenberg/main.go index 6f0135f2..f6c0d3fd 100644 --- a/cmd/gotenberg/main.go +++ b/cmd/gotenberg/main.go @@ -1,6 +1,7 @@ package main import ( + "errors" "fmt" "net/http" "os" @@ -38,7 +39,7 @@ func main() { go func() { systemLogger.InfoOpf(op, "http server started on port '%d'", config.DefaultListenPort()) if err := srv.Start(fmt.Sprintf(":%d", config.DefaultListenPort())); err != nil { - if err != http.ErrServerClosed { + if errors.Is(err, http.ErrServerClosed) { systemLogger.FatalOp(op, err) } } diff --git a/go.mod b/go.mod index 0bd876df..3dab12b8 100644 --- a/go.mod +++ b/go.mod @@ -15,12 +15,12 @@ require ( github.com/russross/blackfriday/v2 v2.0.1 github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect github.com/sirupsen/logrus v1.6.0 - github.com/stretchr/testify v1.6.0 + github.com/stretchr/testify v1.6.1 golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 // indirect golang.org/x/net v0.0.0-20200602114024-627f9648deb9 // indirect golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 // indirect golang.org/x/text v0.3.2 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect - gopkg.in/yaml.v3 v3.0.0-20200603094226-e3079894b1e8 // indirect + gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c // indirect ) diff --git a/go.sum b/go.sum index 9d11994f..d333c492 100644 --- a/go.sum +++ b/go.sum @@ -47,8 +47,8 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.0 h1:jlIyCplCJFULU/01vCkhKuTyc3OorI3bJFuw6obfgho= -github.com/stretchr/testify v1.6.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= @@ -60,6 +60,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 h1:vEg9joUBmeBcK9iSJftGNf3coIG4HqZElCPehJsfAYM= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -86,6 +87,7 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 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.0.0-20200330183114-f8bfb4ee3038 h1:FUufmZ17Dp41BwLDPii6R8vp0QtIquTiDIxcbFlY1ek= golang.org/x/tools v0.0.0-20200330183114-f8bfb4ee3038/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -96,5 +98,5 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8X gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200603094226-e3079894b1e8 h1:jL/vaozO53FMfZLySWM+4nulF3gQEC6q5jH90LPomDo= -gopkg.in/yaml.v3 v3.0.0-20200603094226-e3079894b1e8/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c h1:grhR+C34yXImVGp7EzNk+DTIk+323eIUWOmEevy6bDo= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/app/xhttp/handler.go b/internal/app/xhttp/handler.go index ea442685..454676a7 100644 --- a/internal/app/xhttp/handler.go +++ b/internal/app/xhttp/handler.go @@ -308,7 +308,7 @@ func convertAsync(ctx context.Context, p printer.Printer, filename, fpath string return xerror.New(op, err) } go func() { - defer r.Close() // nolint: errcheck + defer r.Close() if err := p.Print(fpath); err != nil { xerr := xerror.New(op, err) logger.ErrorOp(xerror.Op(xerr), xerr) @@ -320,7 +320,7 @@ func convertAsync(ctx context.Context, p printer.Printer, filename, fpath string logger.ErrorOp(xerror.Op(xerr), xerr) return } - defer f.Close() // nolint: errcheck + defer f.Close() logger.DebugOpf( op, "preparing to send result file '%s' to '%s'...", @@ -360,7 +360,7 @@ func convertAsync(ctx context.Context, p printer.Printer, filename, fpath string logger.ErrorOp(xerror.Op(xerr), xerr) return } - defer resp.Body.Close() // nolint: errcheck + defer resp.Body.Close() logger.DebugOpf( op, "result file '%s' sent to '%s'", diff --git a/internal/app/xhttp/pkg/context/context.go b/internal/app/xhttp/pkg/context/context.go index dee4d670..908db2d7 100644 --- a/internal/app/xhttp/pkg/context/context.go +++ b/internal/app/xhttp/pkg/context/context.go @@ -106,7 +106,7 @@ func (ctx *Context) WithResource(directoryName string) error { if err != nil { return r, err } - defer in.Close() // nolint: errcheck + defer in.Close() // avoid directory traversal. filename := filepath.Base(fh.Filename) if err := r.WithFile(filename, in); err != nil { diff --git a/internal/app/xhttp/pkg/resource/file.go b/internal/app/xhttp/pkg/resource/file.go index 6777d482..5526cf90 100644 --- a/internal/app/xhttp/pkg/resource/file.go +++ b/internal/app/xhttp/pkg/resource/file.go @@ -24,7 +24,7 @@ func (f file) write(in io.Reader) error { if err != nil { return err } - defer out.Close() // nolint: errcheck + defer out.Close() if err := out.Chmod(0600); err != nil { return err } diff --git a/internal/pkg/conf/conf.go b/internal/pkg/conf/conf.go index 4ad311ba..7e974309 100644 --- a/internal/pkg/conf/conf.go +++ b/internal/pkg/conf/conf.go @@ -289,5 +289,5 @@ func (c Config) DefaultGoogleChromeRpccBufferSize() int64 { } func (c Config) GoogleChromeIgnoreCertificateErrors() bool { - return c.urlIgnoreCertificateErrors + return c.googleChromeIgnoreCertificateErrors } diff --git a/internal/pkg/conf/conf_test.go b/internal/pkg/conf/conf_test.go index 1fbb1cf7..a8d2e6b4 100644 --- a/internal/pkg/conf/conf_test.go +++ b/internal/pkg/conf/conf_test.go @@ -395,7 +395,7 @@ func TestGoogleChromeIgnoreCertificateErrorsFromEnv(t *testing.T) { assert.Equal(t, expected, result) os.Unsetenv(GoogleChromeIgnoreCertificateErrorsEnvVar) // GOOGLE_CHROME_IGNORE_CERTIFICATE_ERRORS correctly set to false. - os.Setenv(GooleChromeIgnoreCertificateErrorsEnvVar, "0") + os.Setenv(GoogleChromeIgnoreCertificateErrorsEnvVar, "0") expected = DefaultConfig() expected.googleChromeIgnoreCertificateErrors = false result, err = FromEnv() diff --git a/internal/pkg/printer/chrome.go b/internal/pkg/printer/chrome.go index 718d6f7b..5fe3ca73 100644 --- a/internal/pkg/printer/chrome.go +++ b/internal/pkg/printer/chrome.go @@ -94,7 +94,7 @@ func (p chromePrinter) Print(destination string) error { if err != nil { return err } - defer devtConn.Close() // nolint: errcheck + defer devtConn.Close() // create a new CDP Client that uses conn. devtClient := cdp.NewClient(devtConn) createBrowserContextArgs := target.NewCreateBrowserContextArgs() @@ -136,7 +136,7 @@ func (p chromePrinter) Print(destination string) error { if err != nil { return err } - defer newContextConn.Close() // nolint: errcheck + defer newContextConn.Close() // create a new CDP Client that uses newContextConn. targetClient := cdp.NewClient(newContextConn) /* @@ -314,22 +314,22 @@ func (p chromePrinter) listenEvents(ctx context.Context, client *cdp.Client) err if err != nil { return err } - defer domContentEventFired.Close() // nolint: errcheck + defer domContentEventFired.Close() loadEventFired, err := client.Page.LoadEventFired(ctx) if err != nil { return err } - defer loadEventFired.Close() // nolint: errcheck + defer loadEventFired.Close() lifecycleEvent, err := client.Page.LifecycleEvent(ctx) if err != nil { return err } - defer lifecycleEvent.Close() // nolint: errcheck + defer lifecycleEvent.Close() loadingFinished, err := client.Network.LoadingFinished(ctx) if err != nil { return err } - defer loadingFinished.Close() // nolint: errcheck + defer loadingFinished.Close() if _, err := client.Page.Navigate(ctx, page.NewNavigateArgs(p.url)); err != nil { return err } diff --git a/internal/pkg/xexec/xexec.go b/internal/pkg/xexec/xexec.go index 6ff7c28d..31dc7fe7 100644 --- a/internal/pkg/xexec/xexec.go +++ b/internal/pkg/xexec/xexec.go @@ -139,7 +139,7 @@ func logCommandOutput(logger xlog.Logger, reader io.ReadCloser, outputType strin } op := buf.String() r := bufio.NewReader(reader) - defer reader.Close() // nolint: errcheck + defer reader.Close() for { line, _, err := r.ReadLine() if err != nil {