From 16557ba6d7898521917879602242606da2a8232d Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 11 Aug 2023 16:13:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=94=99=E8=AF=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/acme/dns_provider.go | 5 +++-- internal/acme/request.go | 7 ++++--- internal/db/models/dns/dnsutils/dns_utils.go | 3 ++- internal/db/models/http_access_log_manager.go | 4 ++-- internal/db/models/ip_library_file_dao.go | 17 ++++++++-------- internal/dnsclients/provider_base.go | 5 ++--- internal/dnsclients/provider_cloud_flare.go | 3 ++- internal/dnsclients/provider_dnspod.go | 3 ++- internal/dnsclients/provider_edge_dns_api.go | 3 ++- internal/installers/installer_base.go | 3 ++- internal/installers/installer_node.go | 17 ++++++++-------- internal/installers/queue_node.go | 6 +++--- internal/nodes/api_node.go | 13 ++++++------ internal/rpc/utils/utils.go | 3 ++- internal/setup/setup.go | 11 +++++----- internal/setup/sql_executor.go | 20 +++++++++---------- internal/setup/sql_upgrade_ext.go | 4 ++-- internal/tasks/ssl_cert_update_ocsp_task.go | 7 ++++--- internal/utils/service_windows.go | 15 +++++++------- 19 files changed, 81 insertions(+), 68 deletions(-) diff --git a/internal/acme/dns_provider.go b/internal/acme/dns_provider.go index 10f8f9cb..e6205075 100644 --- a/internal/acme/dns_provider.go +++ b/internal/acme/dns_provider.go @@ -1,6 +1,7 @@ package acme import ( + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes" "github.com/TeaOSLab/EdgeAPI/internal/errors" @@ -45,7 +46,7 @@ func (this *DNSProvider) Present(domain, token, keyAuth string) error { if !wasDeleted { records, err := this.raw.QueryRecords(this.dnsDomain, recordName, dnstypes.RecordTypeTXT) if err != nil { - return errors.New("query DNS record failed: " + err.Error()) + return fmt.Errorf("query DNS record failed: %w", err) } for _, record := range records { err = this.raw.DeleteRecord(this.dnsDomain, record) @@ -67,7 +68,7 @@ func (this *DNSProvider) Present(domain, token, keyAuth string) error { Route: this.raw.DefaultRoute(), }) if err != nil { - return errors.New("create DNS record failed: " + err.Error()) + return fmt.Errorf("create DNS record failed: %w", err) } return nil diff --git a/internal/acme/request.go b/internal/acme/request.go index 0cb53e05..121aec19 100644 --- a/internal/acme/request.go +++ b/internal/acme/request.go @@ -1,6 +1,7 @@ package acme import ( + "fmt" teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" "github.com/TeaOSLab/EdgeAPI/internal/errors" "github.com/go-acme/lego/v4/certcrypto" @@ -104,7 +105,7 @@ func (this *Request) runDNS() (certData []byte, keyData []byte, err error) { HmacEncoded: this.task.Account.EABKey, }) if err != nil { - return nil, nil, errors.New("register user failed: " + err.Error()) + return nil, nil, fmt.Errorf("register user failed: %w", err) } err = this.task.User.Register(resource) if err != nil { @@ -134,7 +135,7 @@ func (this *Request) runDNS() (certData []byte, keyData []byte, err error) { } certResource, err := client.Certificate.Obtain(request) if err != nil { - return nil, nil, errors.New("obtain cert failed: " + err.Error()) + return nil, nil, fmt.Errorf("obtain cert failed: %w", err) } return certResource.Certificate, certResource.PrivateKey, nil @@ -177,7 +178,7 @@ func (this *Request) runHTTP() (certData []byte, keyData []byte, err error) { HmacEncoded: this.task.Account.EABKey, }) if err != nil { - return nil, nil, errors.New("register user failed: " + err.Error()) + return nil, nil, fmt.Errorf("register user failed: %w", err) } err = this.task.User.Register(resource) if err != nil { diff --git a/internal/db/models/dns/dnsutils/dns_utils.go b/internal/db/models/dns/dnsutils/dns_utils.go index 4367068e..ba5da35b 100644 --- a/internal/db/models/dns/dnsutils/dns_utils.go +++ b/internal/db/models/dns/dnsutils/dns_utils.go @@ -3,6 +3,7 @@ package dnsutils import ( + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/db/models" "github.com/TeaOSLab/EdgeAPI/internal/db/models/dns" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients" @@ -217,7 +218,7 @@ func FindDefaultDomainRoute(tx *dbs.Tx, domain *dns.DNSDomain) (string, error) { } paramsMap, err := provider.DecodeAPIParams() if err != nil { - return "", errors.New("decode provider params failed: " + err.Error()) + return "", fmt.Errorf("decode provider params failed: %w", err) } var dnsProvider = dnsclients.FindProvider(provider.Type, int64(provider.Id)) if dnsProvider == nil { diff --git a/internal/db/models/http_access_log_manager.go b/internal/db/models/http_access_log_manager.go index bc57782d..933603ef 100644 --- a/internal/db/models/http_access_log_manager.go +++ b/internal/db/models/http_access_log_manager.go @@ -41,7 +41,7 @@ func (this *HTTPAccessLogManager) FindTableNames(db *dbs.DB, day string) ([]stri for _, prefix := range []string{"edgeHTTPAccessLogs_" + day + "%", "edgehttpaccesslogs_" + day + "%"} { ones, columnNames, err := db.FindPreparedOnes(`SHOW TABLES LIKE '` + prefix + `'`) if err != nil { - return nil, errors.New("query table names error: " + err.Error()) + return nil, fmt.Errorf("query table names error: %w", err) } var columnName = columnNames[0] @@ -88,7 +88,7 @@ func (this *HTTPAccessLogManager) FindTables(db *dbs.DB, day string) ([]*httpAcc for _, prefix := range []string{"edgeHTTPAccessLogs_" + day + "%", "edgehttpaccesslogs_" + day + "%"} { ones, columnNames, err := db.FindPreparedOnes(`SHOW TABLES LIKE '` + prefix + `'`) if err != nil { - return nil, errors.New("query table names error: " + err.Error()) + return nil, fmt.Errorf("query table names error: %w", err) } var columnName = columnNames[0] diff --git a/internal/db/models/ip_library_file_dao.go b/internal/db/models/ip_library_file_dao.go index 5f0e0b4e..0a06ba81 100644 --- a/internal/db/models/ip_library_file_dao.go +++ b/internal/db/models/ip_library_file_dao.go @@ -3,6 +3,7 @@ package models import ( "encoding/json" "errors" + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/db/models/regions" "github.com/TeaOSLab/EdgeAPI/internal/utils" "github.com/TeaOSLab/EdgeCommon/pkg/iplibrary" @@ -299,7 +300,7 @@ func (this *IPLibraryFileDAO) GenerateIPLibrary(tx *dbs.Tx, libraryFileId int64) var libraryFile = one.(*IPLibraryFile) template, err := iplibrary.NewTemplate(libraryFile.Template) if err != nil { - return errors.New("create template from '" + libraryFile.Template + "' failed: " + err.Error()) + return fmt.Errorf("create template from '%s' failed: %w", libraryFile.Template, err) } var fileId = int64(libraryFile.FileId) @@ -314,17 +315,17 @@ func (this *IPLibraryFileDAO) GenerateIPLibrary(tx *dbs.Tx, libraryFileId int64) if os.IsNotExist(err) { err = os.Mkdir(dir, 0777) if err != nil { - return errors.New("can not open dir '" + dir + "' to write: " + err.Error()) + return fmt.Errorf("can not open dir '%s' to write: %w", dir, err) } } else { - return errors.New("can not open dir '" + dir + "' to write: " + err.Error()) + return fmt.Errorf("can not open dir '%s' to write: %w", dir, err) } } else if !stat.IsDir() { _ = os.Remove(dir) err = os.Mkdir(dir, 0777) if err != nil { - return errors.New("can not open dir '" + dir + "' to write: " + err.Error()) + return fmt.Errorf("can not open dir '%s' to write: %w", dir, err) } } @@ -428,7 +429,7 @@ func (this *IPLibraryFileDAO) GenerateIPLibrary(tx *dbs.Tx, libraryFileId int64) err = writer.WriteMeta() if err != nil { - return errors.New("write meta failed: " + err.Error()) + return fmt.Errorf("write meta failed: %w", err) } chunkIds, err := SharedFileChunkDAO.FindAllFileChunkIds(tx, fileId) @@ -503,7 +504,7 @@ func (this *IPLibraryFileDAO) GenerateIPLibrary(tx *dbs.Tx, libraryFileId int64) err = writer.Write(ipFrom, ipTo, countryId, provinceId, cityId, townId, providerId) if err != nil { - return errors.New("write failed: " + err.Error()) + return fmt.Errorf("write failed: %w", err) } return nil @@ -536,7 +537,7 @@ func (this *IPLibraryFileDAO) GenerateIPLibrary(tx *dbs.Tx, libraryFileId int64) // 将生成的内容写入到文件 stat, err = os.Stat(filePath) if err != nil { - return errors.New("stat generated file failed: " + err.Error()) + return fmt.Errorf("stat generated file failed: %w", err) } generatedFileId, err := SharedFileDAO.CreateFile(tx, 0, 0, "ipLibraryFile", "", libraryCode+".db", stat.Size(), "", false) if err != nil { @@ -545,7 +546,7 @@ func (this *IPLibraryFileDAO) GenerateIPLibrary(tx *dbs.Tx, libraryFileId int64) fp, err := os.Open(filePath) if err != nil { - return errors.New("open generated file failed: " + err.Error()) + return fmt.Errorf("open generated file failed: %w", err) } var buf = make([]byte, 256*1024) for { diff --git a/internal/dnsclients/provider_base.go b/internal/dnsclients/provider_base.go index 362c73b5..886c8c49 100644 --- a/internal/dnsclients/provider_base.go +++ b/internal/dnsclients/provider_base.go @@ -1,9 +1,8 @@ package dnsclients import ( - "errors" + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes" - "github.com/iwind/TeaGo/types" ) type BaseProvider struct{} @@ -24,5 +23,5 @@ func (this *BaseProvider) WrapError(err error, domain string, record *dnstypes.R } else { fullname = record.Name + "." + domain } - return errors.New("record operation failed: '" + fullname + " " + record.Type + " " + record.Value + " " + types.String(record.TTL) + "': " + err.Error()) + return fmt.Errorf("record operation failed: '%s %s %s %d': %w", fullname, record.Type, record.Value, record.TTL, err) } diff --git a/internal/dnsclients/provider_cloud_flare.go b/internal/dnsclients/provider_cloud_flare.go index 56ac43ae..20db0cdd 100644 --- a/internal/dnsclients/provider_cloud_flare.go +++ b/internal/dnsclients/provider_cloud_flare.go @@ -6,6 +6,7 @@ import ( "bytes" "crypto/tls" "encoding/json" + "fmt" teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/cloudflare" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes" @@ -337,7 +338,7 @@ func (this *CloudFlareProvider) doAPI(method string, apiPath string, args map[st err = json.Unmarshal(data, respPtr) if err != nil { - return errors.New("decode json failed: " + err.Error() + ", response text: " + string(data)) + return fmt.Errorf("decode json failed: %w, response text: %s", err, string(data)) } return nil diff --git a/internal/dnsclients/provider_dnspod.go b/internal/dnsclients/provider_dnspod.go index bc17a73b..496e75b0 100644 --- a/internal/dnsclients/provider_dnspod.go +++ b/internal/dnsclients/provider_dnspod.go @@ -4,6 +4,7 @@ import ( "crypto/tls" "encoding/json" "errors" + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnspod" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes" "github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils" @@ -380,7 +381,7 @@ func (this *DNSPodProvider) doAPI(path string, params map[string]string, respPtr req, err := http.NewRequest(http.MethodPost, apiHost+path, strings.NewReader(query.Encode())) if err != nil { - return errors.New("create request failed: " + err.Error()) + return fmt.Errorf("create request failed: %w", err) } req.Header.Set("Content-Type", "application/x-www-form-urlencoded") req.Header.Set("User-Agent", "GoEdge-Client/1.0.0 (iwind.liu@gmail.com)") diff --git a/internal/dnsclients/provider_edge_dns_api.go b/internal/dnsclients/provider_edge_dns_api.go index b7cc3c3b..b8a8f61c 100644 --- a/internal/dnsclients/provider_edge_dns_api.go +++ b/internal/dnsclients/provider_edge_dns_api.go @@ -7,6 +7,7 @@ import ( "crypto/tls" "encoding/json" "errors" + "fmt" teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/edgeapi" @@ -452,7 +453,7 @@ func (this *EdgeDNSAPIProvider) doAPI(path string, params map[string]any, respPt err = json.Unmarshal(data, respPtr) if err != nil { - return errors.New("decode response failed: " + err.Error() + ", JSON: " + string(data)) + return fmt.Errorf("decode response failed: %w, JSON: %s", err, string(data)) } if !respPtr.IsValid() { diff --git a/internal/installers/installer_base.go b/internal/installers/installer_base.go index e12814a9..ea4a2370 100644 --- a/internal/installers/installer_base.go +++ b/internal/installers/installer_base.go @@ -2,6 +2,7 @@ package installers import ( "errors" + "fmt" "github.com/TeaOSLab/EdgeCommon/pkg/configutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/iwind/TeaGo/Tea" @@ -67,7 +68,7 @@ func (this *BaseInstaller) Login(credentials *Credentials) error { signer, err = ssh.ParsePrivateKey([]byte(credentials.PrivateKey)) } if err != nil { - return errors.New("parse private key: " + err.Error()) + return fmt.Errorf("parse private key: %w", err) } authMethod := ssh.PublicKeys(signer) methods = append(methods, authMethod) diff --git a/internal/installers/installer_node.go b/internal/installers/installer_node.go index 29324253..d5f96253 100644 --- a/internal/installers/installer_node.go +++ b/internal/installers/installer_node.go @@ -3,6 +3,7 @@ package installers import ( "bytes" "errors" + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/db/models" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "os" @@ -24,7 +25,7 @@ func (this *NodeInstaller) Install(dir string, params interface{}, installStatus } err := nodeParams.Validate() if err != nil { - return errors.New("params validation: " + err.Error()) + return fmt.Errorf("params validation: %w", err) } // 检查目标目录是否存在 @@ -33,7 +34,7 @@ func (this *NodeInstaller) Install(dir string, params interface{}, installStatus err = this.client.MkdirAll(dir) if err != nil { installStatus.ErrorCode = "CREATE_ROOT_DIRECTORY_FAILED" - return errors.New("create directory '" + dir + "' failed: " + err.Error()) + return fmt.Errorf("create directory '%s' failed: %w", dir, err) } } @@ -74,7 +75,7 @@ func (this *NodeInstaller) Install(dir string, params interface{}, installStatus } } if firstCopyErr != nil { - return errors.New("upload node file failed: " + firstCopyErr.Error()) + return fmt.Errorf("upload node file failed: %w", firstCopyErr) } // 测试运行环境 @@ -82,7 +83,7 @@ func (this *NodeInstaller) Install(dir string, params interface{}, installStatus if !nodeParams.IsUpgrading { _, stderr, err := this.client.Exec(env.HelperPath + " -cmd=test") if err != nil { - return errors.New("test failed: " + err.Error()) + return fmt.Errorf("test failed: %w", err) } if len(stderr) > 0 { return errors.New("test failed: " + stderr) @@ -99,7 +100,7 @@ func (this *NodeInstaller) Install(dir string, params interface{}, installStatus // 删除可执行文件防止冲突 err = this.client.Remove(exePath) if err != nil && err != os.ErrNotExist { - return errors.New("remove old file failed: " + err.Error()) + return fmt.Errorf("remove old file failed: %w", err) } } } @@ -133,7 +134,7 @@ secret: "${nodeSecret}"`) _, err = this.client.WriteFile(configFile, data) if err != nil { - return errors.New("write '" + configFile + "': " + err.Error()) + return fmt.Errorf("write '%s': %w", configFile, err) } } @@ -141,7 +142,7 @@ secret: "${nodeSecret}"`) _, stderr, err = this.client.Exec(dir + "/edge-node/bin/edge-node test") if err != nil { installStatus.ErrorCode = "TEST_FAILED" - return errors.New("test edge node failed: " + err.Error() + ", stderr: " + stderr) + return fmt.Errorf("test edge node failed: %w, stderr: %s", err, stderr) } if len(stderr) > 0 { if regexp.MustCompile(`(?i)rpc`).MatchString(stderr) { @@ -154,7 +155,7 @@ secret: "${nodeSecret}"`) // 启动 _, stderr, err = this.client.Exec(dir + "/edge-node/bin/edge-node start") if err != nil { - return errors.New("start edge node failed: " + err.Error()) + return fmt.Errorf("start edge node failed: %w", err) } if len(stderr) > 0 { diff --git a/internal/installers/queue_node.go b/internal/installers/queue_node.go index b6d816ac..f2312b4e 100644 --- a/internal/installers/queue_node.go +++ b/internal/installers/queue_node.go @@ -167,7 +167,7 @@ func (this *NodeQueue) InstallNode(nodeId int64, installStatus *models.NodeInsta for _, apiNode := range apiNodes { addrConfigs, err := apiNode.DecodeAccessAddrs() if err != nil { - return errors.New("decode api node access addresses failed: " + err.Error()) + return fmt.Errorf("decode api node access addresses failed: %w", err) } for _, addrConfig := range addrConfigs { apiEndpoints = append(apiEndpoints, addrConfig.FullAddresses()...) @@ -320,7 +320,7 @@ func (this *NodeQueue) StartNode(nodeId int64) error { // 执行start _, stderr, err := installer.client.Exec("sudo " + exe + " start") if err != nil { - return errors.New("start failed: " + err.Error()) + return fmt.Errorf("start failed: %w", err) } if len(stderr) > 0 { return errors.New("start failed: " + stderr) @@ -427,7 +427,7 @@ func (this *NodeQueue) StopNode(nodeId int64) error { // 执行stop _, stderr, err := installer.client.Exec(exe + " stop") if err != nil { - return errors.New("stop failed: " + err.Error()) + return fmt.Errorf("stop failed: %w", err) } if len(stderr) > 0 { return errors.New("stop failed: " + stderr) diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index 5b8d9bc0..05573bc5 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -5,6 +5,7 @@ import ( "crypto/tls" "encoding/json" "errors" + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/configs" teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" "github.com/TeaOSLab/EdgeAPI/internal/db/models" @@ -285,7 +286,7 @@ func (this *APINode) listenRPC(listener net.Listener, tlsConfig *tls.Config) err this.registerServices(rpcServer) err := rpcServer.Serve(listener) if err != nil { - return errors.New("[API_NODE]start rpc failed: " + err.Error()) + return fmt.Errorf("[API_NODE]start rpc failed: %w", err) } return nil @@ -354,23 +355,23 @@ func (this *APINode) autoUpgrade() error { var config = &dbs.Config{} configData, err := os.ReadFile(Tea.ConfigFile("db.yaml")) if err != nil { - return errors.New("read database config file failed: " + err.Error()) + return fmt.Errorf("read database config file failed: %w", err) } err = yaml.Unmarshal(configData, config) if err != nil { - return errors.New("decode database config failed: " + err.Error()) + return fmt.Errorf("decode database config failed: %w", err) } var dbConfig = config.DBs[Tea.Env] db, err := dbs.NewInstanceFromConfig(dbConfig) if err != nil { - return errors.New("load database failed: " + err.Error()) + return fmt.Errorf("load database failed: %w", err) } defer func() { _ = db.Close() }() one, err := db.FindOne("SELECT version FROM edgeVersions LIMIT 1") if err != nil { - return errors.New("query version failed: " + err.Error()) + return fmt.Errorf("query version failed: %w", err) } if one != nil { // 如果是同样的版本,则直接认为是最新版本 @@ -384,7 +385,7 @@ func (this *APINode) autoUpgrade() error { logs.Println("[API_NODE]upgrade database starting ...") err = setup.NewSQLExecutor(dbConfig).Run(false) if err != nil { - return errors.New("execute sql failed: " + err.Error()) + return fmt.Errorf("execute sql failed: %w", err) } // 不使用remotelog logs.Println("[API_NODE]upgrade database done") diff --git a/internal/rpc/utils/utils.go b/internal/rpc/utils/utils.go index 71ef74e1..c18fc1b7 100644 --- a/internal/rpc/utils/utils.go +++ b/internal/rpc/utils/utils.go @@ -2,6 +2,7 @@ package rpcutils import ( "errors" + "fmt" ) type UserType = string @@ -27,5 +28,5 @@ func Wrap(description string, err error) error { if err == nil { return errors.New(description) } - return errors.New(description + ": " + err.Error()) + return fmt.Errorf("%s: %w", description, err) } diff --git a/internal/setup/setup.go b/internal/setup/setup.go index a740d784..e5df0a6f 100644 --- a/internal/setup/setup.go +++ b/internal/setup/setup.go @@ -2,6 +2,7 @@ package setup import ( "encoding/json" + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/configs" "github.com/TeaOSLab/EdgeAPI/internal/db/models" "github.com/TeaOSLab/EdgeAPI/internal/errors" @@ -150,7 +151,7 @@ func (this *Setup) Run() error { } addrsJSON, err := json.Marshal([]*serverconfigs.NetworkAddressConfig{addr}) if err != nil { - return errors.New("json encode api node addr failed: " + err.Error()) + return fmt.Errorf("json encode api node addr failed: %w", err) } var httpJSON []byte = nil @@ -166,7 +167,7 @@ func (this *Setup) Run() error { } httpJSON, err = json.Marshal(httpConfig) if err != nil { - return errors.New("json encode api node http config failed: " + err.Error()) + return fmt.Errorf("json encode api node http config failed: %w", err) } } if this.config.APINodeProtocol == "https" { @@ -181,14 +182,14 @@ func (this *Setup) Run() error { } httpsJSON, err = json.Marshal(httpsConfig) if err != nil { - return errors.New("json encode api node https config failed: " + err.Error()) + return fmt.Errorf("json encode api node https config failed: %w", err) } } // 创建API节点 nodeId, err := dao.CreateAPINode(nil, "默认API节点", "这是默认创建的第一个API节点", httpJSON, httpsJSON, false, nil, nil, addrsJSON, true) if err != nil { - return errors.New("create api node in database failed: " + err.Error()) + return fmt.Errorf("create api node in database failed: %w", err) } apiNodeId = nodeId } @@ -208,7 +209,7 @@ func (this *Setup) Run() error { } err = apiConfig.WriteFile(Tea.ConfigFile("api.yaml")) if err != nil { - return errors.New("save config failed: " + err.Error()) + return fmt.Errorf("save config failed: %w", err) } return nil diff --git a/internal/setup/sql_executor.go b/internal/setup/sql_executor.go index b0f4fad1..53258fa9 100644 --- a/internal/setup/sql_executor.go +++ b/internal/setup/sql_executor.go @@ -2,8 +2,8 @@ package setup import ( "encoding/json" + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/db/models" - "github.com/TeaOSLab/EdgeAPI/internal/errors" "github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" _ "github.com/go-sql-driver/mysql" @@ -68,7 +68,7 @@ func (this *SQLExecutor) Run(showLog bool) error { var sqlResult = &SQLDumpResult{} err = json.Unmarshal(sqlData, sqlResult) if err != nil { - return errors.New("decode sql data failed: " + err.Error()) + return fmt.Errorf("decode sql data failed: %w", err) } _, err = sqlDump.Apply(db, sqlResult, showLog) @@ -227,7 +227,7 @@ func (this *SQLExecutor) checkCluster(db *dbs.DB) error { /// 检查是否有集群数字 stmt, err := db.Prepare("SELECT COUNT(*) FROM edgeNodeClusters") if err != nil { - return errors.New("query clusters failed: " + err.Error()) + return fmt.Errorf("query clusters failed: %w", err) } defer func() { _ = stmt.Close() @@ -235,7 +235,7 @@ func (this *SQLExecutor) checkCluster(db *dbs.DB) error { col, err := stmt.FindCol(0) if err != nil { - return errors.New("query clusters failed: " + err.Error()) + return fmt.Errorf("query clusters failed: %w", err) } count := types.Int(col) if count > 0 { @@ -311,7 +311,7 @@ func (this *SQLExecutor) checkCluster(db *dbs.DB) error { func (this *SQLExecutor) checkIPList(db *dbs.DB) error { stmt, err := db.Prepare("SELECT COUNT(*) FROM edgeIPLists") if err != nil { - return errors.New("query ip lists failed: " + err.Error()) + return fmt.Errorf("query ip lists failed: %w", err) } defer func() { _ = stmt.Close() @@ -319,7 +319,7 @@ func (this *SQLExecutor) checkIPList(db *dbs.DB) error { col, err := stmt.FindCol(0) if err != nil { - return errors.New("query ip lists failed: " + err.Error()) + return fmt.Errorf("query ip lists failed: %w", err) } count := types.Int(col) if count > 0 { @@ -508,7 +508,7 @@ func (this *SQLExecutor) checkClientAgents(db *dbs.DB) error { func (this *SQLExecutor) updateVersion(db *dbs.DB, version string) error { stmt, err := db.Prepare("SELECT COUNT(*) FROM edgeVersions") if err != nil { - return errors.New("query version failed: " + err.Error()) + return fmt.Errorf("query version failed: %w", err) } defer func() { _ = stmt.Close() @@ -516,20 +516,20 @@ func (this *SQLExecutor) updateVersion(db *dbs.DB, version string) error { col, err := stmt.FindCol(0) if err != nil { - return errors.New("query version failed: " + err.Error()) + return fmt.Errorf("query version failed: %w", err) } count := types.Int(col) if count > 0 { _, err = db.Exec("UPDATE edgeVersions SET version=?", version) if err != nil { - return errors.New("update version failed: " + err.Error()) + return fmt.Errorf("update version failed: %w", err) } return nil } _, err = db.Exec("INSERT edgeVersions (version) VALUES (?)", version) if err != nil { - return errors.New("create version failed: " + err.Error()) + return fmt.Errorf("create version failed: %w", err) } return nil diff --git a/internal/setup/sql_upgrade_ext.go b/internal/setup/sql_upgrade_ext.go index b770c297..ce4b0853 100644 --- a/internal/setup/sql_upgrade_ext.go +++ b/internal/setup/sql_upgrade_ext.go @@ -5,7 +5,7 @@ package setup import ( "encoding/json" - "github.com/TeaOSLab/EdgeAPI/internal/errors" + "fmt" "github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs" @@ -79,7 +79,7 @@ func upgradeV0_4_9(db *dbs.DB) error { config.DenySpiders = true configJSON, err := json.Marshal(config) if err != nil { - return errors.New("encode SecurityConfig failed: " + err.Error()) + return fmt.Errorf("encode SecurityConfig failed: %w", err) } else { _, err := db.Exec("UPDATE edgeSysSettings SET value=? WHERE code=?", configJSON, systemconfigs.SettingCodeAdminSecurityConfig) if err != nil { diff --git a/internal/tasks/ssl_cert_update_ocsp_task.go b/internal/tasks/ssl_cert_update_ocsp_task.go index cf225454..f514da5c 100644 --- a/internal/tasks/ssl_cert_update_ocsp_task.go +++ b/internal/tasks/ssl_cert_update_ocsp_task.go @@ -8,6 +8,7 @@ import ( "crypto/tls" "crypto/x509" "errors" + "fmt" teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" "github.com/TeaOSLab/EdgeAPI/internal/db/models" "github.com/TeaOSLab/EdgeAPI/internal/goman" @@ -63,7 +64,7 @@ func (this *SSLCertUpdateOCSPTask) Loop() error { var maxTries = 5 certs, err := models.SharedSSLCertDAO.ListCertsToUpdateOCSP(tx, maxTries, size) if err != nil { - return errors.New("list certs failed: " + err.Error()) + return fmt.Errorf("list certs failed: %w", err) } if len(certs) == 0 { @@ -74,7 +75,7 @@ func (this *SSLCertUpdateOCSPTask) Loop() error { for _, cert := range certs { err := models.SharedSSLCertDAO.PrepareCertOCSPUpdating(tx, int64(cert.Id)) if err != nil { - return errors.New("prepare cert ocsp updating failed: " + err.Error()) + return fmt.Errorf("prepare cert ocsp updating failed: %w", err) } } @@ -90,7 +91,7 @@ func (this *SSLCertUpdateOCSPTask) Loop() error { } err = models.SharedSSLCertDAO.UpdateCertOCSP(tx, int64(cert.Id), ocspData, expiresAt, hasErr, errString) if err != nil { - return errors.New("update ocsp failed: " + err.Error()) + return fmt.Errorf("update ocsp failed: %w", err) } } diff --git a/internal/utils/service_windows.go b/internal/utils/service_windows.go index 9b3588b4..7818476f 100644 --- a/internal/utils/service_windows.go +++ b/internal/utils/service_windows.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package utils @@ -16,7 +17,7 @@ import ( func (this *ServiceManager) Install(exePath string, args []string) error { m, err := mgr.Connect() if err != nil { - return fmt.Errorf("connecting: %s please 'Run as administrator' again", err.Error()) + return fmt.Errorf("connecting: %w please 'Run as administrator' again", err) } defer m.Disconnect() s, err := m.OpenService(this.Name) @@ -31,7 +32,7 @@ func (this *ServiceManager) Install(exePath string, args []string) error { StartType: windows.SERVICE_AUTO_START, }, args...) if err != nil { - return fmt.Errorf("creating: %s", err.Error()) + return fmt.Errorf("creating: %w", err) } defer s.Close() @@ -47,12 +48,12 @@ func (this *ServiceManager) Start() error { defer m.Disconnect() s, err := m.OpenService(this.Name) if err != nil { - return fmt.Errorf("could not access service: %v", err) + return fmt.Errorf("could not access service: %w", err) } defer s.Close() err = s.Start("service") if err != nil { - return fmt.Errorf("could not start service: %v", err) + return fmt.Errorf("could not start service: %w", err) } return nil @@ -62,12 +63,12 @@ func (this *ServiceManager) Start() error { func (this *ServiceManager) Uninstall() error { m, err := mgr.Connect() if err != nil { - return fmt.Errorf("connecting: %s please 'Run as administrator' again", err.Error()) + return fmt.Errorf("connecting: %w please 'Run as administrator' again", err) } defer m.Disconnect() s, err := m.OpenService(this.Name) if err != nil { - return fmt.Errorf("open service: %s", err.Error()) + return fmt.Errorf("open service: %w", err) } // shutdown service @@ -79,7 +80,7 @@ func (this *ServiceManager) Uninstall() error { defer s.Close() err = s.Delete() if err != nil { - return fmt.Errorf("deleting: %s", err.Error()) + return fmt.Errorf("deleting: %w", err) } return nil }