mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-02 22:10:26 +08:00
优化错误处理相关代码
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)")
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user