diff --git a/api/bunpanel/bunpanel.go b/api/bunpanel/bunpanel.go index ab15189..0e271fa 100644 --- a/api/bunpanel/bunpanel.go +++ b/api/bunpanel/bunpanel.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "fmt" - "log" "os" "reflect" "regexp" @@ -14,6 +13,8 @@ import ( "sync" "time" + log "github.com/sirupsen/logrus" + "github.com/go-resty/resty/v2" "github.com/XrayR-project/XrayR/api" @@ -294,7 +295,7 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]User) (*[]api.User c.access.Unlock() }() - var deviceLimit, localDeviceLimit int = 0, 0 + var deviceLimit, localDeviceLimit = 0, 0 var speedLimit uint64 = 0 var userList []api.UserInfo for _, user := range *userInfoResponse { @@ -332,8 +333,8 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]User) (*[]api.User UUID: user.UUID, SpeedLimit: speedLimit, DeviceLimit: deviceLimit, - Passwd: user.UUID, - Email: user.UUID + "@bunpanel.user", + Passwd: user.UUID, + Email: user.UUID + "@bunpanel.user", }) } diff --git a/api/gov2panel/gov2panel.go b/api/gov2panel/gov2panel.go index 58c6199..7322ff2 100644 --- a/api/gov2panel/gov2panel.go +++ b/api/gov2panel/gov2panel.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "fmt" - "log" "os" "regexp" "strconv" @@ -13,6 +12,8 @@ import ( "sync/atomic" "time" + log "github.com/sirupsen/logrus" + "github.com/bitly/go-simplejson" "github.com/go-resty/resty/v2" "github.com/gogf/gf/v2/util/gconv" diff --git a/api/newV2board/v2board.go b/api/newV2board/v2board.go index 0959f69..232cabf 100644 --- a/api/newV2board/v2board.go +++ b/api/newV2board/v2board.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "fmt" - "log" "os" "regexp" "strconv" @@ -13,6 +12,8 @@ import ( "sync/atomic" "time" + log "github.com/sirupsen/logrus" + "github.com/bitly/go-simplejson" "github.com/go-resty/resty/v2" "github.com/xtls/xray-core/common/net" @@ -57,7 +58,7 @@ func New(apiConfig *api.Config) *APIClient { var nodeType string - if apiConfig.NodeType =="V2ray" && apiConfig.EnableVless { + if apiConfig.NodeType == "V2ray" && apiConfig.EnableVless { nodeType = "vless" } else { nodeType = strings.ToLower(apiConfig.NodeType) @@ -363,12 +364,12 @@ func (c *APIClient) parseSSNodeResponse(s *serverConfig) (*api.NodeInfo, error) // parseV2rayNodeResponse parse the response for the given nodeInfo format func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, error) { var ( - host string - header json.RawMessage - enableTLS bool + host string + header json.RawMessage + enableTLS bool enableREALITY bool - dest string - xVer uint64 + dest string + xVer uint64 ) if s.VlessTlsSettings.Dest != "" { @@ -383,11 +384,11 @@ func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, erro } realityConfig := api.REALITYConfig{ - Dest: dest + ":" + s.VlessTlsSettings.ServerPort, + Dest: dest + ":" + s.VlessTlsSettings.ServerPort, ProxyProtocolVer: xVer, - ServerNames: []string{s.VlessTlsSettings.Sni}, - PrivateKey: s.VlessTlsSettings.PrivateKey, - ShortIds: []string{s.VlessTlsSettings.ShortId}, + ServerNames: []string{s.VlessTlsSettings.Sni}, + PrivateKey: s.VlessTlsSettings.PrivateKey, + ShortIds: []string{s.VlessTlsSettings.ShortId}, } if c.EnableVless { diff --git a/api/pmpanel/pmpanel.go b/api/pmpanel/pmpanel.go index ce4bc30..c9cde59 100644 --- a/api/pmpanel/pmpanel.go +++ b/api/pmpanel/pmpanel.go @@ -4,13 +4,14 @@ import ( "bufio" "encoding/json" "fmt" - "log" "os" "reflect" "regexp" "strconv" "time" + log "github.com/sirupsen/logrus" + "github.com/go-resty/resty/v2" "github.com/XrayR-project/XrayR/api" diff --git a/api/proxypanel/proxypanel.go b/api/proxypanel/proxypanel.go index b0b7f39..bc1f16b 100644 --- a/api/proxypanel/proxypanel.go +++ b/api/proxypanel/proxypanel.go @@ -4,13 +4,14 @@ import ( "bufio" "encoding/json" "fmt" - "log" "os" "reflect" "regexp" "strconv" "time" + log "github.com/sirupsen/logrus" + "github.com/go-resty/resty/v2" "github.com/XrayR-project/XrayR/api" diff --git a/api/sspanel/sspanel.go b/api/sspanel/sspanel.go index c929ed6..5f41191 100644 --- a/api/sspanel/sspanel.go +++ b/api/sspanel/sspanel.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "fmt" - "log" "os" "reflect" "regexp" @@ -14,6 +13,8 @@ import ( "sync" "time" + log "github.com/sirupsen/logrus" + "github.com/go-resty/resty/v2" "github.com/XrayR-project/XrayR/api" @@ -687,7 +688,7 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]UserResponse) (*[] c.access.Unlock() }() - var deviceLimit, localDeviceLimit int = 0, 0 + var deviceLimit, localDeviceLimit = 0, 0 var speedLimit uint64 = 0 var userList []api.UserInfo for _, user := range *userInfoResponse { diff --git a/api/v2raysocks/v2raysocks.go b/api/v2raysocks/v2raysocks.go index 3b9be23..a2a5ca0 100644 --- a/api/v2raysocks/v2raysocks.go +++ b/api/v2raysocks/v2raysocks.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "fmt" - "log" "os" "regexp" "strconv" @@ -13,6 +12,8 @@ import ( "sync" "time" + log "github.com/sirupsen/logrus" + "github.com/bitly/go-simplejson" "github.com/go-resty/resty/v2" "github.com/sagernet/sing-shadowsocks/shadowaead_2022" @@ -57,7 +58,7 @@ func New(apiConfig *api.Config) *APIClient { log.Print(v.Err) } }) - + // Create Key for each requests client.SetQueryParams(map[string]string{ "node_id": strconv.Itoa(apiConfig.NodeID), @@ -163,7 +164,7 @@ func (c *APIClient) GetNodeInfo() (nodeInfo *api.NodeInfo, err error) { }). ForceContentType("application/json"). Get(c.APIHost) - + // Etag identifier for a specific version of a resource. StatusCode = 304 means no changed if res.StatusCode() == 304 { return nil, errors.New(api.NodeNotModified) @@ -217,7 +218,7 @@ func (c *APIClient) GetUserList() (UserList *[]api.UserInfo, err error) { }). ForceContentType("application/json"). Get(c.APIHost) - + // Etag identifier for a specific version of a resource. StatusCode = 304 means no changed if res.StatusCode() == 304 { return nil, errors.New(api.UserNotModified) @@ -426,7 +427,7 @@ func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *simplejson.Json) (* var header json.RawMessage var enableTLS bool var enableVless bool - var enableReality bool + var enableReality bool var alterID uint16 = 0 tmpInboundInfo := nodeInfoResponse.Get("inbounds").MustArray() @@ -493,4 +494,4 @@ func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *simplejson.Json) (* REALITYConfig: realityConfig, } return nodeInfo, nil -} \ No newline at end of file +} diff --git a/cmd/root.go b/cmd/root.go index 259cb5f..51c8cee 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -2,7 +2,6 @@ package cmd import ( "fmt" - "log" "os" "os/signal" "path" @@ -11,6 +10,8 @@ import ( "syscall" "time" + log "github.com/sirupsen/logrus" + "github.com/fsnotify/fsnotify" "github.com/spf13/cobra" "github.com/spf13/viper" diff --git a/common/mylego/accounts_storage.go b/common/mylego/accounts_storage.go index 1f9e698..24f8af2 100644 --- a/common/mylego/accounts_storage.go +++ b/common/mylego/accounts_storage.go @@ -6,12 +6,13 @@ import ( "encoding/json" "encoding/pem" "errors" - "log" "net/url" "os" "path/filepath" "strings" + log "github.com/sirupsen/logrus" + "github.com/go-acme/lego/v4/certcrypto" "github.com/go-acme/lego/v4/lego" "github.com/go-acme/lego/v4/registration" diff --git a/common/mylego/certs_storage.go b/common/mylego/certs_storage.go index c1e57bb..a1e8732 100644 --- a/common/mylego/certs_storage.go +++ b/common/mylego/certs_storage.go @@ -4,11 +4,12 @@ import ( "bytes" "crypto/x509" "encoding/json" - "log" "os" "path/filepath" "strings" + log "github.com/sirupsen/logrus" + "github.com/go-acme/lego/v4/certcrypto" "github.com/go-acme/lego/v4/certificate" "golang.org/x/net/idna" diff --git a/common/mylego/renew.go b/common/mylego/renew.go index 73feb1b..74bc229 100644 --- a/common/mylego/renew.go +++ b/common/mylego/renew.go @@ -3,9 +3,10 @@ package mylego import ( "crypto" "crypto/x509" - "log" "time" + log "github.com/sirupsen/logrus" + "github.com/go-acme/lego/v4/certcrypto" "github.com/go-acme/lego/v4/certificate" "github.com/go-acme/lego/v4/lego" diff --git a/common/mylego/run.go b/common/mylego/run.go index 65446b6..fb2dead 100644 --- a/common/mylego/run.go +++ b/common/mylego/run.go @@ -2,11 +2,11 @@ package mylego import ( "fmt" - "log" "github.com/go-acme/lego/v4/certificate" "github.com/go-acme/lego/v4/lego" "github.com/go-acme/lego/v4/registration" + log "github.com/sirupsen/logrus" ) const rootPathWarningMessage = `!!!! HEADS UP !!!! diff --git a/common/mylego/setup.go b/common/mylego/setup.go index 1ba0295..f6ab9d3 100644 --- a/common/mylego/setup.go +++ b/common/mylego/setup.go @@ -1,10 +1,11 @@ package mylego import ( - "log" "os" "time" + log "github.com/sirupsen/logrus" + "github.com/go-acme/lego/v4/certcrypto" "github.com/go-acme/lego/v4/challenge/dns01" "github.com/go-acme/lego/v4/challenge/http01" diff --git a/main.go b/main.go index 0045a9f..089b0e1 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,7 @@ package main import ( - "log" + log "github.com/sirupsen/logrus" "github.com/XrayR-project/XrayR/cmd" ) diff --git a/panel/panel.go b/panel/panel.go index bf0e0b3..69c8fca 100644 --- a/panel/panel.go +++ b/panel/panel.go @@ -2,17 +2,12 @@ package panel import ( "encoding/json" - "log" "os" "sync" - "github.com/XrayR-project/XrayR/api/bunpanel" - "github.com/XrayR-project/XrayR/api/gov2panel" - "github.com/XrayR-project/XrayR/api/newV2board" - "github.com/XrayR-project/XrayR/app/mydispatcher" - "dario.cat/mergo" "github.com/r3labs/diff/v2" + log "github.com/sirupsen/logrus" "github.com/xtls/xray-core/app/proxyman" "github.com/xtls/xray-core/app/stats" "github.com/xtls/xray-core/common/serial" @@ -20,10 +15,14 @@ import ( "github.com/xtls/xray-core/infra/conf" "github.com/XrayR-project/XrayR/api" + "github.com/XrayR-project/XrayR/api/bunpanel" + "github.com/XrayR-project/XrayR/api/gov2panel" + "github.com/XrayR-project/XrayR/api/newV2board" "github.com/XrayR-project/XrayR/api/pmpanel" "github.com/XrayR-project/XrayR/api/proxypanel" "github.com/XrayR-project/XrayR/api/sspanel" "github.com/XrayR-project/XrayR/api/v2raysocks" + "github.com/XrayR-project/XrayR/app/mydispatcher" _ "github.com/XrayR-project/XrayR/cmd/distro/all" "github.com/XrayR-project/XrayR/service" "github.com/XrayR-project/XrayR/service/controller" @@ -155,7 +154,6 @@ func (p *Panel) loadCore(panelConfig *Config) *core.Instance { if err != nil { log.Panicf("failed to create instance: %s", err) } - log.Printf("Xray Core Version: %s", core.Version()) return server } diff --git a/service/controller/controller.go b/service/controller/controller.go index b228f40..37def2f 100644 --- a/service/controller/controller.go +++ b/service/controller/controller.go @@ -3,10 +3,10 @@ package controller import ( "errors" "fmt" - "log" "reflect" "time" + log "github.com/sirupsen/logrus" "github.com/xtls/xray-core/common/protocol" "github.com/xtls/xray-core/common/task" "github.com/xtls/xray-core/core" @@ -44,6 +44,7 @@ type Controller struct { stm stats.Manager dispatcher *mydispatcher.DefaultDispatcher startAt time.Time + logger *log.Entry } type periodicTask struct { @@ -53,6 +54,11 @@ type periodicTask struct { // New return a Controller service with default parameters. func New(server *core.Instance, api api.API, config *Config, panelType string) *Controller { + logger := log.NewEntry(log.StandardLogger()).WithFields(log.Fields{ + "Host": api.Describe().APIHost, + "Type": api.Describe().NodeType, + "ID": api.Describe().NodeID, + }) controller := &Controller{ server: server, config: config, @@ -63,6 +69,7 @@ func New(server *core.Instance, api api.API, config *Config, panelType string) * stm: server.GetFeature(stats.ManagerType()).(stats.Manager), dispatcher: server.GetFeature(routing.DispatcherType()).(*mydispatcher.DefaultDispatcher), startAt: time.Now(), + logger: logger, } return controller @@ -85,7 +92,7 @@ func (c *Controller) Start() error { // Add new tag err = c.addNewTag(newNodeInfo) if err != nil { - log.Panic(err) + c.logger.Panic(err) return err } // Update user @@ -104,16 +111,16 @@ func (c *Controller) Start() error { // Add Limiter if err := c.AddInboundLimiter(c.Tag, newNodeInfo.SpeedLimit, userInfo, c.config.GlobalDeviceLimitConfig); err != nil { - log.Print(err) + c.logger.Print(err) } // Add Rule Manager if !c.config.DisableGetRule { if ruleList, err := c.apiClient.GetNodeRule(); err != nil { - log.Printf("Get rule list filed: %s", err) + c.logger.Printf("Get rule list filed: %s", err) } else if len(*ruleList) > 0 { if err := c.UpdateRule(c.Tag, *ruleList); err != nil { - log.Print(err) + c.logger.Print(err) } } } @@ -155,7 +162,7 @@ func (c *Controller) Start() error { // Start periodic tasks for i := range c.tasks { - log.Printf("%s Start %s periodic task", c.logPrefix(), c.tasks[i].tag) + c.logger.Printf("Start %s periodic task", c.tasks[i].tag) go c.tasks[i].Start() } @@ -167,7 +174,7 @@ func (c *Controller) Close() error { for i := range c.tasks { if c.tasks[i].Periodic != nil { if err := c.tasks[i].Periodic.Close(); err != nil { - log.Panicf("%s %s periodic task close failed: %s", c.logPrefix(), c.tasks[i].tag, err) + c.logger.Panicf("%s periodic task close failed: %s", c.tasks[i].tag, err) } } } @@ -189,7 +196,7 @@ func (c *Controller) nodeInfoMonitor() (err error) { nodeInfoChanged = false newNodeInfo = c.nodeInfo } else { - log.Print(err) + c.logger.Print(err) return nil } } @@ -205,7 +212,7 @@ func (c *Controller) nodeInfoMonitor() (err error) { usersChanged = false newUserInfo = c.userList } else { - log.Print(err) + c.logger.Print(err) return nil } } @@ -217,14 +224,14 @@ func (c *Controller) nodeInfoMonitor() (err error) { oldTag := c.Tag err := c.removeOldTag(oldTag) if err != nil { - log.Print(err) + c.logger.Print(err) return nil } if c.nodeInfo.NodeType == "Shadowsocks-Plugin" { err = c.removeOldTag(fmt.Sprintf("dokodemo-door_%s+1", c.Tag)) } if err != nil { - log.Print(err) + c.logger.Print(err) return nil } // Add new tag @@ -232,13 +239,13 @@ func (c *Controller) nodeInfoMonitor() (err error) { c.Tag = c.buildNodeTag() err = c.addNewTag(newNodeInfo) if err != nil { - log.Print(err) + c.logger.Print(err) return nil } nodeInfoChanged = true // Remove Old limiter if err = c.DeleteInboundLimiter(oldTag); err != nil { - log.Print(err) + c.logger.Print(err) return nil } } else { @@ -250,11 +257,11 @@ func (c *Controller) nodeInfoMonitor() (err error) { if !c.config.DisableGetRule { if ruleList, err := c.apiClient.GetNodeRule(); err != nil { if err.Error() != api.RuleNotModified { - log.Printf("Get rule list filed: %s", err) + c.logger.Printf("Get rule list filed: %s", err) } } else if len(*ruleList) > 0 { if err := c.UpdateRule(c.Tag, *ruleList); err != nil { - log.Print(err) + c.logger.Print(err) } } } @@ -262,13 +269,13 @@ func (c *Controller) nodeInfoMonitor() (err error) { if nodeInfoChanged { err = c.addNewUser(newUserInfo, newNodeInfo) if err != nil { - log.Print(err) + c.logger.Print(err) return nil } // Add Limiter if err := c.AddInboundLimiter(c.Tag, newNodeInfo.SpeedLimit, newUserInfo, c.config.GlobalDeviceLimitConfig); err != nil { - log.Print(err) + c.logger.Print(err) return nil } @@ -283,21 +290,21 @@ func (c *Controller) nodeInfoMonitor() (err error) { } err := c.removeUsers(deletedEmail, c.Tag) if err != nil { - log.Print(err) + c.logger.Print(err) } } if len(added) > 0 { err = c.addNewUser(&added, c.nodeInfo) if err != nil { - log.Print(err) + c.logger.Print(err) } // Update Limiter if err := c.UpdateInboundLimiter(c.Tag, &added); err != nil { - log.Print(err) + c.logger.Print(err) } } } - log.Printf("%s %d user deleted, %d user added", c.logPrefix(), len(deleted), len(added)) + c.logger.Printf("%d user deleted, %d user added", len(deleted), len(added)) } c.userList = newUserInfo return nil @@ -418,7 +425,7 @@ func (c *Controller) addNewUser(userInfo *[]api.UserInfo, nodeInfo *api.NodeInfo if err != nil { return err } - log.Printf("%s Added %d new users", c.logPrefix(), len(*userInfo)) + c.logger.Printf("Added %d new users", len(*userInfo)) return nil } @@ -466,7 +473,7 @@ func limitUser(c *Controller, user api.UserInfo, silentUsers *[]api.UserInfo) { currentSpeedLimit: c.config.AutoSpeedLimitConfig.LimitSpeed, originSpeedLimit: user.SpeedLimit, } - log.Printf("Limit User: %s Speed: %d End: %s", c.buildUserTag(&user), c.config.AutoSpeedLimitConfig.LimitSpeed, time.Unix(c.limitedUsers[user].end, 0).Format("01-02 15:04:05")) + c.logger.Printf("Limit User: %s Speed: %d End: %s", c.buildUserTag(&user), c.config.AutoSpeedLimitConfig.LimitSpeed, time.Unix(c.limitedUsers[user].end, 0).Format("01-02 15:04:05")) user.SpeedLimit = uint64((c.config.AutoSpeedLimitConfig.LimitSpeed * 1000000) / 8) *silentUsers = append(*silentUsers, user) } @@ -480,7 +487,7 @@ func (c *Controller) userInfoMonitor() (err error) { // Get server status CPU, Mem, Disk, Uptime, err := serverstatus.GetSystemInfo() if err != nil { - log.Print(err) + c.logger.Print(err) } err = c.apiClient.ReportNodeStatus( &api.NodeStatus{ @@ -490,25 +497,25 @@ func (c *Controller) userInfoMonitor() (err error) { Uptime: Uptime, }) if err != nil { - log.Print(err) + c.logger.Print(err) } // Unlock users if c.config.AutoSpeedLimitConfig.Limit > 0 && len(c.limitedUsers) > 0 { - log.Printf("%s Limited users:", c.logPrefix()) + c.logger.Printf("Limited users:") toReleaseUsers := make([]api.UserInfo, 0) for user, limitInfo := range c.limitedUsers { if time.Now().Unix() > limitInfo.end { user.SpeedLimit = limitInfo.originSpeedLimit toReleaseUsers = append(toReleaseUsers, user) - log.Printf("User: %s Speed: %d End: nil (Unlimit)", c.buildUserTag(&user), user.SpeedLimit) + c.logger.Printf("User: %s Speed: %d End: nil (Unlimit)", c.buildUserTag(&user), user.SpeedLimit) delete(c.limitedUsers, user) } else { - log.Printf("User: %s Speed: %d End: %s", c.buildUserTag(&user), limitInfo.currentSpeedLimit, time.Unix(c.limitedUsers[user].end, 0).Format("01-02 15:04:05")) + c.logger.Printf("User: %s Speed: %d End: %s", c.buildUserTag(&user), limitInfo.currentSpeedLimit, time.Unix(c.limitedUsers[user].end, 0).Format("01-02 15:04:05")) } } if len(toReleaseUsers) > 0 { if err := c.UpdateInboundLimiter(c.Tag, &toReleaseUsers); err != nil { - log.Print(err) + c.logger.Print(err) } } } @@ -559,7 +566,7 @@ func (c *Controller) userInfoMonitor() (err error) { } if len(limitedUsers) > 0 { if err := c.UpdateInboundLimiter(c.Tag, &limitedUsers); err != nil { - log.Print(err) + c.logger.Print(err) } } if len(userTraffic) > 0 { @@ -569,7 +576,7 @@ func (c *Controller) userInfoMonitor() (err error) { } // If report traffic error, not clear the traffic if err != nil { - log.Print(err) + c.logger.Print(err) } else { c.resetTraffic(&upCounterList, &downCounterList) } @@ -577,23 +584,23 @@ func (c *Controller) userInfoMonitor() (err error) { // Report Online info if onlineDevice, err := c.GetOnlineDevice(c.Tag); err != nil { - log.Print(err) + c.logger.Print(err) } else if len(*onlineDevice) > 0 { if err = c.apiClient.ReportNodeOnlineUsers(onlineDevice); err != nil { - log.Print(err) + c.logger.Print(err) } else { - log.Printf("%s Report %d online users", c.logPrefix(), len(*onlineDevice)) + c.logger.Printf("Report %d online users", len(*onlineDevice)) } } // Report Illegal user if detectResult, err := c.GetDetectResult(c.Tag); err != nil { - log.Print(err) + c.logger.Print(err) } else if len(*detectResult) > 0 { if err = c.apiClient.ReportIllegal(detectResult); err != nil { - log.Print(err) + c.logger.Print(err) } else { - log.Printf("%s Report %d illegal behaviors", c.logPrefix(), len(*detectResult)) + c.logger.Printf("Report %d illegal behaviors", len(*detectResult)) } } @@ -604,9 +611,9 @@ func (c *Controller) buildNodeTag() string { return fmt.Sprintf("%s_%s_%d", c.nodeInfo.NodeType, c.config.ListenIP, c.nodeInfo.Port) } -func (c *Controller) logPrefix() string { - return fmt.Sprintf("[%s] %s(ID=%d)", c.clientInfo.APIHost, c.nodeInfo.NodeType, c.nodeInfo.NodeID) -} +// func (c *Controller) logPrefix() string { +// return fmt.Sprintf("[%s] %s(ID=%d)", c.clientInfo.APIHost, c.nodeInfo.NodeType, c.nodeInfo.NodeID) +// } // Check Cert func (c *Controller) certMonitor() error { @@ -615,12 +622,12 @@ func (c *Controller) certMonitor() error { case "dns", "http", "tls": lego, err := mylego.New(c.config.CertConfig) if err != nil { - log.Print(err) + c.logger.Print(err) } // Xray-core supports the OcspStapling certification hot renew _, _, _, err = lego.RenewCert() if err != nil { - log.Print(err) + c.logger.Print(err) } } }