diff --git a/.golangci.yml b/.golangci.yml index d19c6beb..d5a5f8c4 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -74,7 +74,6 @@ linters: - promlinter - nestif - errorlint - # - ineffassign - lll - contextcheck - bodyclose diff --git a/client/control.go b/client/control.go index 8e09c41e..a784341a 100644 --- a/client/control.go +++ b/client/control.go @@ -17,6 +17,7 @@ package client import ( "context" "crypto/tls" + "errors" "io" "net" "runtime/debug" @@ -287,7 +288,7 @@ func (ctl *Control) reader() { for { m, err := msg.ReadMsg(encReader) if err != nil { - if err == io.EOF { + if errors.Is(err, io.EOF) { xl.Debug("read from control connection EOF") return } diff --git a/client/visitor.go b/client/visitor.go index 674924cb..f191d9a6 100644 --- a/client/visitor.go +++ b/client/visitor.go @@ -355,12 +355,12 @@ func (sv *SUDPVisitor) Run() (err error) { addr, err := net.ResolveUDPAddr("udp", net.JoinHostPort(sv.cfg.BindAddr, strconv.Itoa(sv.cfg.BindPort))) if err != nil { - return fmt.Errorf("sudp ResolveUDPAddr error: %v", err) + return fmt.Errorf("sudp ResolveUDPAddr error: %w", err) } sv.udpConn, err = net.ListenUDP("udp", addr) if err != nil { - return fmt.Errorf("listen udp port %s error: %v", addr.String(), err) + return fmt.Errorf("listen udp port %s error: %w", addr.String(), err) } sv.sendCh = make(chan *msg.UDPPacket, 1024) @@ -506,7 +506,7 @@ func (sv *SUDPVisitor) getNewVisitorConn() (net.Conn, error) { xl := xlog.FromContextSafe(sv.ctx) visitorConn, err := sv.ctl.connectServer() if err != nil { - return nil, fmt.Errorf("frpc connect frps error: %v", err) + return nil, fmt.Errorf("frpc connect frps error: %w", err) } now := time.Now().Unix() @@ -519,14 +519,14 @@ func (sv *SUDPVisitor) getNewVisitorConn() (net.Conn, error) { } err = msg.WriteMsg(visitorConn, newVisitorConnMsg) if err != nil { - return nil, fmt.Errorf("frpc send newVisitorConnMsg to frps error: %v", err) + return nil, fmt.Errorf("frpc send newVisitorConnMsg to frps error: %w", err) } var newVisitorConnRespMsg msg.NewVisitorConnResp visitorConn.SetReadDeadline(time.Now().Add(10 * time.Second)) err = msg.ReadMsgInto(visitorConn, &newVisitorConnRespMsg) if err != nil { - return nil, fmt.Errorf("frpc read newVisitorConnRespMsg error: %v", err) + return nil, fmt.Errorf("frpc read newVisitorConnRespMsg error: %w", err) } visitorConn.SetReadDeadline(time.Time{}) @@ -539,7 +539,7 @@ func (sv *SUDPVisitor) getNewVisitorConn() (net.Conn, error) { if sv.cfg.UseEncryption { remote, err = frpIo.WithEncryption(remote, []byte(sv.cfg.Sk)) if err != nil { - xl.Error("create encryption stream error: %v", err) + xl.Error("create encryption stream error: %w", err) return nil, err } } diff --git a/cmd/frpc/sub/root.go b/cmd/frpc/sub/root.go index 34213573..06a0e723 100644 --- a/cmd/frpc/sub/root.go +++ b/cmd/frpc/sub/root.go @@ -135,14 +135,14 @@ func parseClientCommonCfgFromCmd() (cfg config.ClientCommonConf, err error) { ipStr, portStr, err := net.SplitHostPort(serverAddr) if err != nil { - err = fmt.Errorf("invalid server_addr: %v", err) + err = fmt.Errorf("invalid server_addr: %w", err) return } cfg.ServerAddr = ipStr cfg.ServerPort, err = strconv.Atoi(portStr) if err != nil { - err = fmt.Errorf("invalid server_addr: %v", err) + err = fmt.Errorf("invalid server_addr: %w", err) return } @@ -160,7 +160,7 @@ func parseClientCommonCfgFromCmd() (cfg config.ClientCommonConf, err error) { cfg.Complete() if err = cfg.Validate(); err != nil { - err = fmt.Errorf("Parse config error: %v", err) + err = fmt.Errorf("Parse config error: %w", err) return } return diff --git a/cmd/frps/root.go b/cmd/frps/root.go index 62899347..13a87e61 100644 --- a/cmd/frps/root.go +++ b/cmd/frps/root.go @@ -145,7 +145,7 @@ func parseServerCommonCfg(fileType int, source []byte) (cfg config.ServerCommonC cfg.Complete() err = cfg.Validate() if err != nil { - err = fmt.Errorf("Parse config error: %v", err) + err = fmt.Errorf("Parse config error: %w", err) return } return @@ -180,7 +180,7 @@ func parseServerCommonCfgFromCmd() (cfg config.ServerCommonConf, err error) { // e.g. 1000-2000,2001,2002,3000-4000 ports, errRet := util.ParseRangeNumbers(allowPorts) if errRet != nil { - err = fmt.Errorf("Parse conf error: allow_ports: %v", errRet) + err = fmt.Errorf("Parse conf error: allow_ports: %w", errRet) return } diff --git a/pkg/auth/oidc.go b/pkg/auth/oidc.go index 831180f4..9fa5895f 100644 --- a/pkg/auth/oidc.go +++ b/pkg/auth/oidc.go @@ -116,7 +116,7 @@ func NewOidcAuthSetter(baseCfg BaseConfig, cfg OidcClientConfig) *OidcAuthProvid func (auth *OidcAuthProvider) generateAccessToken() (accessToken string, err error) { tokenObj, err := auth.tokenGenerator.Token(context.Background()) if err != nil { - return "", fmt.Errorf("couldn't generate OIDC token for login: %v", err) + return "", fmt.Errorf("couldn't generate OIDC token for login: %w", err) } return tokenObj.AccessToken, nil } @@ -171,7 +171,7 @@ func NewOidcAuthVerifier(baseCfg BaseConfig, cfg OidcServerConfig) *OidcAuthCons func (auth *OidcAuthConsumer) VerifyLogin(loginMsg *msg.Login) (err error) { token, err := auth.verifier.Verify(context.Background(), loginMsg.PrivilegeKey) if err != nil { - return fmt.Errorf("invalid OIDC token in login: %v", err) + return fmt.Errorf("invalid OIDC token in login: %w", err) } auth.subjectFromLogin = token.Subject return nil @@ -180,7 +180,7 @@ func (auth *OidcAuthConsumer) VerifyLogin(loginMsg *msg.Login) (err error) { func (auth *OidcAuthConsumer) verifyPostLoginToken(privilegeKey string) (err error) { token, err := auth.verifier.Verify(context.Background(), privilegeKey) if err != nil { - return fmt.Errorf("invalid OIDC token in ping: %v", err) + return fmt.Errorf("invalid OIDC token in ping: %w", err) } if token.Subject != auth.subjectFromLogin { return fmt.Errorf("received different OIDC subject in login and ping. "+ diff --git a/pkg/config/client.go b/pkg/config/client.go index 0cefc21c..fe45f969 100644 --- a/pkg/config/client.go +++ b/pkg/config/client.go @@ -320,7 +320,7 @@ func LoadAllProxyConfsFromIni( for _, section := range rangeSections { err = renderRangeProxyTemplates(f, section) if err != nil { - return nil, nil, fmt.Errorf("failed to render template for proxy %s: %v", section.Name(), err) + return nil, nil, fmt.Errorf("failed to render template for proxy %s: %w", section.Name(), err) } } @@ -345,7 +345,7 @@ func LoadAllProxyConfsFromIni( case "server": newConf, newErr := NewProxyConfFromIni(prefix, name, section) if newErr != nil { - return nil, nil, fmt.Errorf("failed to parse proxy %s, err: %v", name, newErr) + return nil, nil, fmt.Errorf("failed to parse proxy %s, err: %w", name, newErr) } proxyConfs[prefix+name] = newConf case "visitor": diff --git a/pkg/config/parse.go b/pkg/config/parse.go index 7767981e..6e37de02 100644 --- a/pkg/config/parse.go +++ b/pkg/config/parse.go @@ -42,7 +42,7 @@ func ParseClientConfig(filePath string) ( } cfg.Complete() if err = cfg.Validate(); err != nil { - err = fmt.Errorf("Parse config error: %v", err) + err = fmt.Errorf("Parse config error: %w", err) return } @@ -50,7 +50,7 @@ func ParseClientConfig(filePath string) ( var buf []byte buf, err = getIncludeContents(cfg.IncludeConfigFiles) if err != nil { - err = fmt.Errorf("getIncludeContents error: %v", err) + err = fmt.Errorf("getIncludeContents error: %w", err) return } configBuffer.WriteString("\n") @@ -88,7 +88,7 @@ func getIncludeContents(paths []string) ([]byte, error) { if matched, _ := filepath.Match(filepath.Join(absDir, filepath.Base(path)), absFile); matched { tmpContent, err := GetRenderedConfFromFile(absFile) if err != nil { - return nil, fmt.Errorf("render extra config %s error: %v", absFile, err) + return nil, fmt.Errorf("render extra config %s error: %w", absFile, err) } out.Write(tmpContent) out.WriteString("\n") diff --git a/pkg/config/proxy.go b/pkg/config/proxy.go index b3932065..40b5ad04 100644 --- a/pkg/config/proxy.go +++ b/pkg/config/proxy.go @@ -639,7 +639,7 @@ func (cfg *TCPMuxProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error) } if err = cfg.DomainConf.checkForSvr(serverCfg); err != nil { - err = fmt.Errorf("proxy [%s] domain conf check error: %v", cfg.ProxyName, err) + err = fmt.Errorf("proxy [%s] domain conf check error: %w", cfg.ProxyName, err) return } @@ -788,7 +788,7 @@ func (cfg *HTTPProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error) { } if err = cfg.DomainConf.checkForSvr(serverCfg); err != nil { - err = fmt.Errorf("proxy [%s] domain conf check error: %v", cfg.ProxyName, err) + err = fmt.Errorf("proxy [%s] domain conf check error: %w", cfg.ProxyName, err) return } @@ -860,7 +860,7 @@ func (cfg *HTTPSProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error) { } if err = cfg.DomainConf.checkForSvr(serverCfg); err != nil { - err = fmt.Errorf("proxy [%s] domain conf check error: %v", cfg.ProxyName, err) + err = fmt.Errorf("proxy [%s] domain conf check error: %w", cfg.ProxyName, err) return } diff --git a/pkg/config/server.go b/pkg/config/server.go index 7bd55f6b..799f13e2 100644 --- a/pkg/config/server.go +++ b/pkg/config/server.go @@ -246,7 +246,7 @@ func UnmarshalServerConfFromIni(source interface{}) (ServerCommonConf, error) { if allowPortStr != "" { allowPorts, err := util.ParseRangeNumbers(allowPortStr) if err != nil { - return ServerCommonConf{}, fmt.Errorf("invalid allow_ports: %v", err) + return ServerCommonConf{}, fmt.Errorf("invalid allow_ports: %w", err) } for _, port := range allowPorts { common.AllowPorts[int(port)] = struct{}{} diff --git a/pkg/plugin/client/http_proxy.go b/pkg/plugin/client/http_proxy.go index 669dd618..0a97e527 100644 --- a/pkg/plugin/client/http_proxy.go +++ b/pkg/plugin/client/http_proxy.go @@ -17,6 +17,7 @@ package plugin import ( "bufio" "encoding/base64" + "errors" "io" "net" "net/http" @@ -126,7 +127,7 @@ func (hp *HTTPProxy) HTTPHandler(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(resp.StatusCode) _, err = io.Copy(rw, resp.Body) - if err != nil && err != io.EOF { + if err != nil && errors.Is(err, io.EOF) { return } } diff --git a/pkg/plugin/client/https2http.go b/pkg/plugin/client/https2http.go index 81806e39..01f2f0fc 100644 --- a/pkg/plugin/client/https2http.go +++ b/pkg/plugin/client/https2http.go @@ -98,7 +98,7 @@ func NewHTTPS2HTTPPlugin(params map[string]string) (Plugin, error) { tlsConfig, err := p.genTLSConfig() if err != nil { - return nil, fmt.Errorf("gen TLS config error: %v", err) + return nil, fmt.Errorf("gen TLS config error: %w", err) } ln := tls.NewListener(listener, tlsConfig) diff --git a/pkg/plugin/client/https2https.go b/pkg/plugin/client/https2https.go index 159ed398..5f8bd409 100644 --- a/pkg/plugin/client/https2https.go +++ b/pkg/plugin/client/https2https.go @@ -103,7 +103,7 @@ func NewHTTPS2HTTPSPlugin(params map[string]string) (Plugin, error) { tlsConfig, err := p.genTLSConfig() if err != nil { - return nil, fmt.Errorf("gen TLS config error: %v", err) + return nil, fmt.Errorf("gen TLS config error: %w", err) } ln := tls.NewListener(listener, tlsConfig) diff --git a/pkg/util/util/util.go b/pkg/util/util/util.go index b13f9a77..1b7830d3 100644 --- a/pkg/util/util/util.go +++ b/pkg/util/util/util.go @@ -75,7 +75,7 @@ func ParseRangeNumbers(rangeStr string) (numbers []int64, err error) { // single number singleNum, errRet := strconv.ParseInt(strings.TrimSpace(numArray[0]), 10, 64) if errRet != nil { - err = fmt.Errorf("range number is invalid, %v", errRet) + err = fmt.Errorf("range number is invalid, %w", errRet) return } numbers = append(numbers, singleNum) @@ -83,12 +83,12 @@ func ParseRangeNumbers(rangeStr string) (numbers []int64, err error) { // range numbers min, errRet := strconv.ParseInt(strings.TrimSpace(numArray[0]), 10, 64) if errRet != nil { - err = fmt.Errorf("range number is invalid, %v", errRet) + err = fmt.Errorf("range number is invalid, %w", errRet) return } max, errRet := strconv.ParseInt(strings.TrimSpace(numArray[1]), 10, 64) if errRet != nil { - err = fmt.Errorf("range number is invalid, %v", errRet) + err = fmt.Errorf("range number is invalid, %w", errRet) return } if max < min { diff --git a/pkg/util/vhost/http.go b/pkg/util/vhost/http.go index dfad691d..44a65558 100644 --- a/pkg/util/vhost/http.go +++ b/pkg/util/vhost/http.go @@ -146,7 +146,7 @@ func (rp *HTTPReverseProxy) CreateConnection(domain string, location string, rem return fn(remoteAddr) } } - return nil, fmt.Errorf("%v: %s %s", ErrNoDomain, domain, location) + return nil, fmt.Errorf("%w: %s %s", ErrNoDomain, domain, location) } func (rp *HTTPReverseProxy) CheckAuth(domain, location, user, passwd string) bool { diff --git a/pkg/util/vhost/reverseproxy.go b/pkg/util/vhost/reverseproxy.go index 7d711d3b..a20f9156 100644 --- a/pkg/util/vhost/reverseproxy.go +++ b/pkg/util/vhost/reverseproxy.go @@ -8,6 +8,7 @@ package vhost import ( "context" + "errors" "fmt" "io" "log" @@ -456,7 +457,7 @@ func (p *ReverseProxy) copyBuffer(dst io.Writer, src io.Reader, buf []byte) (int var written int64 for { nr, rerr := src.Read(buf) - if rerr != nil && rerr != io.EOF && rerr != context.Canceled { + if rerr != nil && !errors.Is(rerr, io.EOF) && !errors.Is(rerr, context.Canceled) { p.logf("httputil: ReverseProxy read error during body copy: %v", rerr) } if nr > 0 { @@ -582,7 +583,7 @@ func (p *ReverseProxy) handleUpgradeResponse(rw http.ResponseWriter, req *http.R conn, brw, err := hj.Hijack() if err != nil { - p.getErrorHandler()(rw, req, fmt.Errorf("Hijack failed on protocol switch: %v", err)) + p.getErrorHandler()(rw, req, fmt.Errorf("Hijack failed on protocol switch: %w", err)) return } defer conn.Close() @@ -592,11 +593,11 @@ func (p *ReverseProxy) handleUpgradeResponse(rw http.ResponseWriter, req *http.R res.Header = rw.Header() res.Body = nil // so res.Write only writes the headers; we have res.Body in backConn above if err := res.Write(brw); err != nil { - p.getErrorHandler()(rw, req, fmt.Errorf("response write: %v", err)) + p.getErrorHandler()(rw, req, fmt.Errorf("response write: %w", err)) return } if err := brw.Flush(); err != nil { - p.getErrorHandler()(rw, req, fmt.Errorf("response flush: %v", err)) + p.getErrorHandler()(rw, req, fmt.Errorf("response flush: %w", err)) return } errc := make(chan error, 1) diff --git a/server/control.go b/server/control.go index 3bf9743c..55eaff58 100644 --- a/server/control.go +++ b/server/control.go @@ -16,6 +16,7 @@ package server import ( "context" + "errors" "fmt" "io" "net" @@ -25,7 +26,7 @@ import ( "github.com/fatedier/golib/control/shutdown" "github.com/fatedier/golib/crypto" - "github.com/fatedier/golib/errors" + gErr "github.com/fatedier/golib/errors" "github.com/fatedier/frp/pkg/auth" "github.com/fatedier/frp/pkg/config" @@ -248,7 +249,7 @@ func (ctl *Control) GetWorkConn() (workConn net.Conn, err error) { xl.Debug("get work connection from pool") default: // no work connections available in the poll, send message to frpc to get more - if err = errors.PanicToError(func() { + if err = gErr.PanicToError(func() { ctl.sendCh <- &msg.ReqWorkConn{} }); err != nil { return nil, fmt.Errorf("control is already closed") @@ -270,7 +271,7 @@ func (ctl *Control) GetWorkConn() (workConn net.Conn, err error) { } // When we get a work connection from pool, replace it with a new one. - errors.PanicToError(func() { + gErr.PanicToError(func() { ctl.sendCh <- &msg.ReqWorkConn{} }) return @@ -331,7 +332,7 @@ func (ctl *Control) reader() { for { m, err := msg.ReadMsg(encReader) if err != nil { - if err == io.EOF { + if errors.Is(err, io.EOF) { xl.Debug("control connection closed") return } diff --git a/server/dashboard_api.go b/server/dashboard_api.go index 49732b60..5744c8e9 100644 --- a/server/dashboard_api.go +++ b/server/dashboard_api.go @@ -88,7 +88,10 @@ func (svr *Service) APIServerInfo(w http.ResponseWriter, r *http.Request) { ProxyTypeCounts: serverStats.ProxyTypeCounts, } - buf, _ := json.Marshal(&svrResp) + buf, err := json.Marshal(&svrResp) + if err != nil { + log.Warn("marshal server information response: %w", err) + } res.Msg = string(buf) } diff --git a/server/proxy/udp.go b/server/proxy/udp.go index 97ddbc25..220eef4d 100644 --- a/server/proxy/udp.go +++ b/server/proxy/udp.go @@ -61,7 +61,7 @@ func (pxy *UDPProxy) Run() (remoteAddr string, err error) { xl := pxy.xl pxy.realPort, err = pxy.rc.UDPPortManager.Acquire(pxy.name, pxy.cfg.RemotePort) if err != nil { - return "", fmt.Errorf("acquire port %d error: %v", pxy.cfg.RemotePort, err) + return "", fmt.Errorf("acquire port %d error: %w", pxy.cfg.RemotePort, err) } defer func() { if err != nil { diff --git a/server/service.go b/server/service.go index 413e105f..78e5793a 100644 --- a/server/service.go +++ b/server/service.go @@ -127,13 +127,13 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { address := net.JoinHostPort(cfg.ProxyBindAddr, strconv.Itoa(cfg.TCPMuxHTTPConnectPort)) l, err = net.Listen("tcp", address) if err != nil { - err = fmt.Errorf("Create server listener error, %v", err) + err = fmt.Errorf("Create server listener error, %w", err) return } svr.rc.TCPMuxHTTPConnectMuxer, err = tcpmux.NewHTTPConnectTCPMuxer(l, vhostReadWriteTimeout) if err != nil { - err = fmt.Errorf("Create vhost tcpMuxer error, %v", err) + err = fmt.Errorf("Create vhost tcpMuxer error, %w", err) return } log.Info("tcpmux httpconnect multiplexer listen on %s", address) @@ -181,7 +181,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { address := net.JoinHostPort(cfg.BindAddr, strconv.Itoa(cfg.BindPort)) ln, err := net.Listen("tcp", address) if err != nil { - err = fmt.Errorf("Create server listener error, %v", err) + err = fmt.Errorf("Create server listener error, %w", err) return } @@ -197,7 +197,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { address := net.JoinHostPort(cfg.BindAddr, strconv.Itoa(cfg.KCPBindPort)) svr.kcpListener, err = frpNet.ListenKcp(address) if err != nil { - err = fmt.Errorf("Listen on kcp address udp %s error: %v", address, err) + err = fmt.Errorf("Listen on kcp address udp %s error: %w", address, err) return } log.Info("frps kcp listen on udp %s", address) @@ -228,7 +228,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { } else { l, err = net.Listen("tcp", address) if err != nil { - err = fmt.Errorf("Create vhost http listener error, %v", err) + err = fmt.Errorf("Create vhost http listener error, %w", err) return } } @@ -245,7 +245,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { address := net.JoinHostPort(cfg.ProxyBindAddr, strconv.Itoa(cfg.VhostHTTPSPort)) l, err = net.Listen("tcp", address) if err != nil { - err = fmt.Errorf("Create server listener error, %v", err) + err = fmt.Errorf("Create server listener error, %w", err) return } log.Info("https service listen on %s", address) @@ -253,7 +253,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { svr.rc.VhostHTTPSMuxer, err = vhost.NewHTTPSMuxer(l, vhostReadWriteTimeout) if err != nil { - err = fmt.Errorf("Create vhost httpsMuxer error, %v", err) + err = fmt.Errorf("Create vhost httpsMuxer error, %w", err) return } } @@ -270,7 +270,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { address := net.JoinHostPort(cfg.BindAddr, strconv.Itoa(cfg.BindUDPPort)) nc, err = nathole.NewController(address) if err != nil { - err = fmt.Errorf("Create nat hole controller error, %v", err) + err = fmt.Errorf("Create nat hole controller error, %w", err) return } svr.rc.NatHoleController = nc @@ -286,7 +286,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { address := net.JoinHostPort(cfg.DashboardAddr, strconv.Itoa(cfg.DashboardPort)) err = svr.RunDashboardServer(address) if err != nil { - err = fmt.Errorf("Create dashboard web server error, %v", err) + err = fmt.Errorf("Create dashboard web server error, %w", err) return } log.Info("Dashboard listen on %s", address) diff --git a/server/visitor/visitor.go b/server/visitor/visitor.go index 009326ba..a8f276b1 100644 --- a/server/visitor/visitor.go +++ b/server/visitor/visitor.go @@ -72,7 +72,7 @@ func (vm *Manager) NewConn(name string, conn net.Conn, timestamp int64, signKey var rwc io.ReadWriteCloser = conn if useEncryption { if rwc, err = frpIo.WithEncryption(rwc, []byte(sk)); err != nil { - err = fmt.Errorf("create encryption connection failed: %v", err) + err = fmt.Errorf("create encryption connection failed: %w", err) return } } diff --git a/test/e2e/framework/test_context.go b/test/e2e/framework/test_context.go index 958c78f8..b01573a0 100644 --- a/test/e2e/framework/test_context.go +++ b/test/e2e/framework/test_context.go @@ -43,10 +43,10 @@ func ValidateTestContext(t *TestContextType) error { return fmt.Errorf("frpc and frps binary path can't be empty") } if _, err := os.Stat(t.FRPClientPath); err != nil { - return fmt.Errorf("load frpc-path error: %v", err) + return fmt.Errorf("load frpc-path error: %w", err) } if _, err := os.Stat(t.FRPServerPath); err != nil { - return fmt.Errorf("load frps-path error: %v", err) + return fmt.Errorf("load frps-path error: %w", err) } return nil } diff --git a/test/e2e/pkg/cert/selfsigned.go b/test/e2e/pkg/cert/selfsigned.go index 4f9ed573..5a839cfa 100644 --- a/test/e2e/pkg/cert/selfsigned.go +++ b/test/e2e/pkg/cert/selfsigned.go @@ -46,11 +46,11 @@ func (cp *SelfSignedCertGenerator) Generate(commonName string) (*Artifacts, erro if !valid { signingKey, err = NewPrivateKey() if err != nil { - return nil, fmt.Errorf("failed to create the CA private key: %v", err) + return nil, fmt.Errorf("failed to create the CA private key: %w", err) } signingCert, err = cert.NewSelfSignedCACert(cert.Config{CommonName: commonName}, signingKey) if err != nil { - return nil, fmt.Errorf("failed to create the CA cert: %v", err) + return nil, fmt.Errorf("failed to create the CA cert: %w", err) } } @@ -65,7 +65,7 @@ func (cp *SelfSignedCertGenerator) Generate(commonName string) (*Artifacts, erro key, err := NewPrivateKey() if err != nil { - return nil, fmt.Errorf("failed to create the private key: %v", err) + return nil, fmt.Errorf("failed to create the private key: %w", err) } signedCert, err := NewSignedCert( cert.Config{ @@ -76,7 +76,7 @@ func (cp *SelfSignedCertGenerator) Generate(commonName string) (*Artifacts, erro key, signingCert, signingKey, ) if err != nil { - return nil, fmt.Errorf("failed to create the cert: %v", err) + return nil, fmt.Errorf("failed to create the cert: %w", err) } return &Artifacts{ Key: EncodePrivateKeyPEM(key), diff --git a/test/e2e/pkg/request/request.go b/test/e2e/pkg/request/request.go index c0ded045..e6e75ba9 100644 --- a/test/e2e/pkg/request/request.go +++ b/test/e2e/pkg/request/request.go @@ -144,7 +144,7 @@ func (r *Request) Do() (*Response, error) { } proxyType, proxyAddress, auth, err := libdial.ParseProxyURL(r.proxyURL) if err != nil { - return nil, fmt.Errorf("parse ProxyURL error: %v", err) + return nil, fmt.Errorf("parse ProxyURL error: %w", err) } conn, err = libdial.Dial(addr, libdial.WithProxy(proxyType, proxyAddress), libdial.WithProxyAuth(auth)) if err != nil { @@ -235,7 +235,7 @@ func (r *Request) sendHTTPRequest(method, urlstr string, host string, headers ma func (r *Request) sendRequestByConn(c net.Conn, content []byte) ([]byte, error) { _, err := rpc.WriteBytes(c, content) if err != nil { - return nil, fmt.Errorf("write error: %v", err) + return nil, fmt.Errorf("write error: %w", err) } var reader io.Reader = c @@ -245,7 +245,7 @@ func (r *Request) sendRequestByConn(c net.Conn, content []byte) ([]byte, error) buf, err := rpc.ReadBytes(reader) if err != nil { - return nil, fmt.Errorf("read error: %v", err) + return nil, fmt.Errorf("read error: %w", err) } return buf, nil }