mirror of
https://github.com/XrayR-project/XrayR.git
synced 2025-06-08 05:19:54 +00:00
Replace standard log package with logrus
The standard "log" package was replaced by the structured logger "github.com/sirupsen/logrus" for better log control in various files. This change will allow to tailor the logging information more precisely and make logs easier to read and analyze. All calls of standard log methods were replaced by their logrus counterparts.
This commit is contained in:
parent
5ba0624bbc
commit
115d7bad6f
@ -5,7 +5,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
@ -14,6 +13,8 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
|
||||||
"github.com/XrayR-project/XrayR/api"
|
"github.com/XrayR-project/XrayR/api"
|
||||||
@ -294,7 +295,7 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]User) (*[]api.User
|
|||||||
c.access.Unlock()
|
c.access.Unlock()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var deviceLimit, localDeviceLimit int = 0, 0
|
var deviceLimit, localDeviceLimit = 0, 0
|
||||||
var speedLimit uint64 = 0
|
var speedLimit uint64 = 0
|
||||||
var userList []api.UserInfo
|
var userList []api.UserInfo
|
||||||
for _, user := range *userInfoResponse {
|
for _, user := range *userInfoResponse {
|
||||||
@ -332,8 +333,8 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]User) (*[]api.User
|
|||||||
UUID: user.UUID,
|
UUID: user.UUID,
|
||||||
SpeedLimit: speedLimit,
|
SpeedLimit: speedLimit,
|
||||||
DeviceLimit: deviceLimit,
|
DeviceLimit: deviceLimit,
|
||||||
Passwd: user.UUID,
|
Passwd: user.UUID,
|
||||||
Email: user.UUID + "@bunpanel.user",
|
Email: user.UUID + "@bunpanel.user",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -13,6 +12,8 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/bitly/go-simplejson"
|
"github.com/bitly/go-simplejson"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
"github.com/gogf/gf/v2/util/gconv"
|
"github.com/gogf/gf/v2/util/gconv"
|
||||||
|
@ -5,7 +5,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -13,6 +12,8 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/bitly/go-simplejson"
|
"github.com/bitly/go-simplejson"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
"github.com/xtls/xray-core/common/net"
|
"github.com/xtls/xray-core/common/net"
|
||||||
@ -57,7 +58,7 @@ func New(apiConfig *api.Config) *APIClient {
|
|||||||
|
|
||||||
var nodeType string
|
var nodeType string
|
||||||
|
|
||||||
if apiConfig.NodeType =="V2ray" && apiConfig.EnableVless {
|
if apiConfig.NodeType == "V2ray" && apiConfig.EnableVless {
|
||||||
nodeType = "vless"
|
nodeType = "vless"
|
||||||
} else {
|
} else {
|
||||||
nodeType = strings.ToLower(apiConfig.NodeType)
|
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
|
// parseV2rayNodeResponse parse the response for the given nodeInfo format
|
||||||
func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, error) {
|
func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, error) {
|
||||||
var (
|
var (
|
||||||
host string
|
host string
|
||||||
header json.RawMessage
|
header json.RawMessage
|
||||||
enableTLS bool
|
enableTLS bool
|
||||||
enableREALITY bool
|
enableREALITY bool
|
||||||
dest string
|
dest string
|
||||||
xVer uint64
|
xVer uint64
|
||||||
)
|
)
|
||||||
|
|
||||||
if s.VlessTlsSettings.Dest != "" {
|
if s.VlessTlsSettings.Dest != "" {
|
||||||
@ -383,11 +384,11 @@ func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, erro
|
|||||||
}
|
}
|
||||||
|
|
||||||
realityConfig := api.REALITYConfig{
|
realityConfig := api.REALITYConfig{
|
||||||
Dest: dest + ":" + s.VlessTlsSettings.ServerPort,
|
Dest: dest + ":" + s.VlessTlsSettings.ServerPort,
|
||||||
ProxyProtocolVer: xVer,
|
ProxyProtocolVer: xVer,
|
||||||
ServerNames: []string{s.VlessTlsSettings.Sni},
|
ServerNames: []string{s.VlessTlsSettings.Sni},
|
||||||
PrivateKey: s.VlessTlsSettings.PrivateKey,
|
PrivateKey: s.VlessTlsSettings.PrivateKey,
|
||||||
ShortIds: []string{s.VlessTlsSettings.ShortId},
|
ShortIds: []string{s.VlessTlsSettings.ShortId},
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.EnableVless {
|
if c.EnableVless {
|
||||||
|
@ -4,13 +4,14 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
|
||||||
"github.com/XrayR-project/XrayR/api"
|
"github.com/XrayR-project/XrayR/api"
|
||||||
|
@ -4,13 +4,14 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
|
||||||
"github.com/XrayR-project/XrayR/api"
|
"github.com/XrayR-project/XrayR/api"
|
||||||
|
@ -5,7 +5,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
@ -14,6 +13,8 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
|
||||||
"github.com/XrayR-project/XrayR/api"
|
"github.com/XrayR-project/XrayR/api"
|
||||||
@ -687,7 +688,7 @@ func (c *APIClient) ParseUserListResponse(userInfoResponse *[]UserResponse) (*[]
|
|||||||
c.access.Unlock()
|
c.access.Unlock()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var deviceLimit, localDeviceLimit int = 0, 0
|
var deviceLimit, localDeviceLimit = 0, 0
|
||||||
var speedLimit uint64 = 0
|
var speedLimit uint64 = 0
|
||||||
var userList []api.UserInfo
|
var userList []api.UserInfo
|
||||||
for _, user := range *userInfoResponse {
|
for _, user := range *userInfoResponse {
|
||||||
|
@ -5,7 +5,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -13,6 +12,8 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/bitly/go-simplejson"
|
"github.com/bitly/go-simplejson"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
"github.com/sagernet/sing-shadowsocks/shadowaead_2022"
|
"github.com/sagernet/sing-shadowsocks/shadowaead_2022"
|
||||||
@ -426,7 +427,7 @@ func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *simplejson.Json) (*
|
|||||||
var header json.RawMessage
|
var header json.RawMessage
|
||||||
var enableTLS bool
|
var enableTLS bool
|
||||||
var enableVless bool
|
var enableVless bool
|
||||||
var enableReality bool
|
var enableReality bool
|
||||||
var alterID uint16 = 0
|
var alterID uint16 = 0
|
||||||
|
|
||||||
tmpInboundInfo := nodeInfoResponse.Get("inbounds").MustArray()
|
tmpInboundInfo := nodeInfoResponse.Get("inbounds").MustArray()
|
||||||
|
@ -2,7 +2,6 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"path"
|
"path"
|
||||||
@ -11,6 +10,8 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/fsnotify/fsnotify"
|
"github.com/fsnotify/fsnotify"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
@ -6,12 +6,13 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"errors"
|
"errors"
|
||||||
"log"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-acme/lego/v4/certcrypto"
|
"github.com/go-acme/lego/v4/certcrypto"
|
||||||
"github.com/go-acme/lego/v4/lego"
|
"github.com/go-acme/lego/v4/lego"
|
||||||
"github.com/go-acme/lego/v4/registration"
|
"github.com/go-acme/lego/v4/registration"
|
||||||
|
@ -4,11 +4,12 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-acme/lego/v4/certcrypto"
|
"github.com/go-acme/lego/v4/certcrypto"
|
||||||
"github.com/go-acme/lego/v4/certificate"
|
"github.com/go-acme/lego/v4/certificate"
|
||||||
"golang.org/x/net/idna"
|
"golang.org/x/net/idna"
|
||||||
|
@ -3,9 +3,10 @@ package mylego
|
|||||||
import (
|
import (
|
||||||
"crypto"
|
"crypto"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"log"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-acme/lego/v4/certcrypto"
|
"github.com/go-acme/lego/v4/certcrypto"
|
||||||
"github.com/go-acme/lego/v4/certificate"
|
"github.com/go-acme/lego/v4/certificate"
|
||||||
"github.com/go-acme/lego/v4/lego"
|
"github.com/go-acme/lego/v4/lego"
|
||||||
|
@ -2,11 +2,11 @@ package mylego
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
|
|
||||||
"github.com/go-acme/lego/v4/certificate"
|
"github.com/go-acme/lego/v4/certificate"
|
||||||
"github.com/go-acme/lego/v4/lego"
|
"github.com/go-acme/lego/v4/lego"
|
||||||
"github.com/go-acme/lego/v4/registration"
|
"github.com/go-acme/lego/v4/registration"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
const rootPathWarningMessage = `!!!! HEADS UP !!!!
|
const rootPathWarningMessage = `!!!! HEADS UP !!!!
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package mylego
|
package mylego
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-acme/lego/v4/certcrypto"
|
"github.com/go-acme/lego/v4/certcrypto"
|
||||||
"github.com/go-acme/lego/v4/challenge/dns01"
|
"github.com/go-acme/lego/v4/challenge/dns01"
|
||||||
"github.com/go-acme/lego/v4/challenge/http01"
|
"github.com/go-acme/lego/v4/challenge/http01"
|
||||||
|
2
main.go
2
main.go
@ -1,7 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/XrayR-project/XrayR/cmd"
|
"github.com/XrayR-project/XrayR/cmd"
|
||||||
)
|
)
|
||||||
|
@ -2,17 +2,12 @@ package panel
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"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"
|
"dario.cat/mergo"
|
||||||
"github.com/r3labs/diff/v2"
|
"github.com/r3labs/diff/v2"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
"github.com/xtls/xray-core/app/proxyman"
|
"github.com/xtls/xray-core/app/proxyman"
|
||||||
"github.com/xtls/xray-core/app/stats"
|
"github.com/xtls/xray-core/app/stats"
|
||||||
"github.com/xtls/xray-core/common/serial"
|
"github.com/xtls/xray-core/common/serial"
|
||||||
@ -20,10 +15,14 @@ import (
|
|||||||
"github.com/xtls/xray-core/infra/conf"
|
"github.com/xtls/xray-core/infra/conf"
|
||||||
|
|
||||||
"github.com/XrayR-project/XrayR/api"
|
"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/pmpanel"
|
||||||
"github.com/XrayR-project/XrayR/api/proxypanel"
|
"github.com/XrayR-project/XrayR/api/proxypanel"
|
||||||
"github.com/XrayR-project/XrayR/api/sspanel"
|
"github.com/XrayR-project/XrayR/api/sspanel"
|
||||||
"github.com/XrayR-project/XrayR/api/v2raysocks"
|
"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/cmd/distro/all"
|
||||||
"github.com/XrayR-project/XrayR/service"
|
"github.com/XrayR-project/XrayR/service"
|
||||||
"github.com/XrayR-project/XrayR/service/controller"
|
"github.com/XrayR-project/XrayR/service/controller"
|
||||||
@ -155,7 +154,6 @@ func (p *Panel) loadCore(panelConfig *Config) *core.Instance {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panicf("failed to create instance: %s", err)
|
log.Panicf("failed to create instance: %s", err)
|
||||||
}
|
}
|
||||||
log.Printf("Xray Core Version: %s", core.Version())
|
|
||||||
|
|
||||||
return server
|
return server
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,10 @@ package controller
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
"github.com/xtls/xray-core/common/protocol"
|
"github.com/xtls/xray-core/common/protocol"
|
||||||
"github.com/xtls/xray-core/common/task"
|
"github.com/xtls/xray-core/common/task"
|
||||||
"github.com/xtls/xray-core/core"
|
"github.com/xtls/xray-core/core"
|
||||||
@ -44,6 +44,7 @@ type Controller struct {
|
|||||||
stm stats.Manager
|
stm stats.Manager
|
||||||
dispatcher *mydispatcher.DefaultDispatcher
|
dispatcher *mydispatcher.DefaultDispatcher
|
||||||
startAt time.Time
|
startAt time.Time
|
||||||
|
logger *log.Entry
|
||||||
}
|
}
|
||||||
|
|
||||||
type periodicTask struct {
|
type periodicTask struct {
|
||||||
@ -53,6 +54,11 @@ type periodicTask struct {
|
|||||||
|
|
||||||
// New return a Controller service with default parameters.
|
// New return a Controller service with default parameters.
|
||||||
func New(server *core.Instance, api api.API, config *Config, panelType string) *Controller {
|
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{
|
controller := &Controller{
|
||||||
server: server,
|
server: server,
|
||||||
config: config,
|
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),
|
stm: server.GetFeature(stats.ManagerType()).(stats.Manager),
|
||||||
dispatcher: server.GetFeature(routing.DispatcherType()).(*mydispatcher.DefaultDispatcher),
|
dispatcher: server.GetFeature(routing.DispatcherType()).(*mydispatcher.DefaultDispatcher),
|
||||||
startAt: time.Now(),
|
startAt: time.Now(),
|
||||||
|
logger: logger,
|
||||||
}
|
}
|
||||||
|
|
||||||
return controller
|
return controller
|
||||||
@ -85,7 +92,7 @@ func (c *Controller) Start() error {
|
|||||||
// Add new tag
|
// Add new tag
|
||||||
err = c.addNewTag(newNodeInfo)
|
err = c.addNewTag(newNodeInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panic(err)
|
c.logger.Panic(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Update user
|
// Update user
|
||||||
@ -104,16 +111,16 @@ func (c *Controller) Start() error {
|
|||||||
|
|
||||||
// Add Limiter
|
// Add Limiter
|
||||||
if err := c.AddInboundLimiter(c.Tag, newNodeInfo.SpeedLimit, userInfo, c.config.GlobalDeviceLimitConfig); err != nil {
|
if err := c.AddInboundLimiter(c.Tag, newNodeInfo.SpeedLimit, userInfo, c.config.GlobalDeviceLimitConfig); err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add Rule Manager
|
// Add Rule Manager
|
||||||
if !c.config.DisableGetRule {
|
if !c.config.DisableGetRule {
|
||||||
if ruleList, err := c.apiClient.GetNodeRule(); err != nil {
|
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 {
|
} else if len(*ruleList) > 0 {
|
||||||
if err := c.UpdateRule(c.Tag, *ruleList); err != nil {
|
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
|
// Start periodic tasks
|
||||||
for i := range c.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()
|
go c.tasks[i].Start()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,7 +174,7 @@ func (c *Controller) Close() error {
|
|||||||
for i := range c.tasks {
|
for i := range c.tasks {
|
||||||
if c.tasks[i].Periodic != nil {
|
if c.tasks[i].Periodic != nil {
|
||||||
if err := c.tasks[i].Periodic.Close(); err != 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
|
nodeInfoChanged = false
|
||||||
newNodeInfo = c.nodeInfo
|
newNodeInfo = c.nodeInfo
|
||||||
} else {
|
} else {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,7 +212,7 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
|||||||
usersChanged = false
|
usersChanged = false
|
||||||
newUserInfo = c.userList
|
newUserInfo = c.userList
|
||||||
} else {
|
} else {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -217,14 +224,14 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
|||||||
oldTag := c.Tag
|
oldTag := c.Tag
|
||||||
err := c.removeOldTag(oldTag)
|
err := c.removeOldTag(oldTag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if c.nodeInfo.NodeType == "Shadowsocks-Plugin" {
|
if c.nodeInfo.NodeType == "Shadowsocks-Plugin" {
|
||||||
err = c.removeOldTag(fmt.Sprintf("dokodemo-door_%s+1", c.Tag))
|
err = c.removeOldTag(fmt.Sprintf("dokodemo-door_%s+1", c.Tag))
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
// Add new tag
|
// Add new tag
|
||||||
@ -232,13 +239,13 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
|||||||
c.Tag = c.buildNodeTag()
|
c.Tag = c.buildNodeTag()
|
||||||
err = c.addNewTag(newNodeInfo)
|
err = c.addNewTag(newNodeInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
nodeInfoChanged = true
|
nodeInfoChanged = true
|
||||||
// Remove Old limiter
|
// Remove Old limiter
|
||||||
if err = c.DeleteInboundLimiter(oldTag); err != nil {
|
if err = c.DeleteInboundLimiter(oldTag); err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -250,11 +257,11 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
|||||||
if !c.config.DisableGetRule {
|
if !c.config.DisableGetRule {
|
||||||
if ruleList, err := c.apiClient.GetNodeRule(); err != nil {
|
if ruleList, err := c.apiClient.GetNodeRule(); err != nil {
|
||||||
if err.Error() != api.RuleNotModified {
|
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 {
|
} else if len(*ruleList) > 0 {
|
||||||
if err := c.UpdateRule(c.Tag, *ruleList); err != nil {
|
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 {
|
if nodeInfoChanged {
|
||||||
err = c.addNewUser(newUserInfo, newNodeInfo)
|
err = c.addNewUser(newUserInfo, newNodeInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add Limiter
|
// Add Limiter
|
||||||
if err := c.AddInboundLimiter(c.Tag, newNodeInfo.SpeedLimit, newUserInfo, c.config.GlobalDeviceLimitConfig); err != nil {
|
if err := c.AddInboundLimiter(c.Tag, newNodeInfo.SpeedLimit, newUserInfo, c.config.GlobalDeviceLimitConfig); err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,21 +290,21 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
|||||||
}
|
}
|
||||||
err := c.removeUsers(deletedEmail, c.Tag)
|
err := c.removeUsers(deletedEmail, c.Tag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(added) > 0 {
|
if len(added) > 0 {
|
||||||
err = c.addNewUser(&added, c.nodeInfo)
|
err = c.addNewUser(&added, c.nodeInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
}
|
}
|
||||||
// Update Limiter
|
// Update Limiter
|
||||||
if err := c.UpdateInboundLimiter(c.Tag, &added); err != nil {
|
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
|
c.userList = newUserInfo
|
||||||
return nil
|
return nil
|
||||||
@ -418,7 +425,7 @@ func (c *Controller) addNewUser(userInfo *[]api.UserInfo, nodeInfo *api.NodeInfo
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Printf("%s Added %d new users", c.logPrefix(), len(*userInfo))
|
c.logger.Printf("Added %d new users", len(*userInfo))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -466,7 +473,7 @@ func limitUser(c *Controller, user api.UserInfo, silentUsers *[]api.UserInfo) {
|
|||||||
currentSpeedLimit: c.config.AutoSpeedLimitConfig.LimitSpeed,
|
currentSpeedLimit: c.config.AutoSpeedLimitConfig.LimitSpeed,
|
||||||
originSpeedLimit: user.SpeedLimit,
|
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)
|
user.SpeedLimit = uint64((c.config.AutoSpeedLimitConfig.LimitSpeed * 1000000) / 8)
|
||||||
*silentUsers = append(*silentUsers, user)
|
*silentUsers = append(*silentUsers, user)
|
||||||
}
|
}
|
||||||
@ -480,7 +487,7 @@ func (c *Controller) userInfoMonitor() (err error) {
|
|||||||
// Get server status
|
// Get server status
|
||||||
CPU, Mem, Disk, Uptime, err := serverstatus.GetSystemInfo()
|
CPU, Mem, Disk, Uptime, err := serverstatus.GetSystemInfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
}
|
}
|
||||||
err = c.apiClient.ReportNodeStatus(
|
err = c.apiClient.ReportNodeStatus(
|
||||||
&api.NodeStatus{
|
&api.NodeStatus{
|
||||||
@ -490,25 +497,25 @@ func (c *Controller) userInfoMonitor() (err error) {
|
|||||||
Uptime: Uptime,
|
Uptime: Uptime,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
}
|
}
|
||||||
// Unlock users
|
// Unlock users
|
||||||
if c.config.AutoSpeedLimitConfig.Limit > 0 && len(c.limitedUsers) > 0 {
|
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)
|
toReleaseUsers := make([]api.UserInfo, 0)
|
||||||
for user, limitInfo := range c.limitedUsers {
|
for user, limitInfo := range c.limitedUsers {
|
||||||
if time.Now().Unix() > limitInfo.end {
|
if time.Now().Unix() > limitInfo.end {
|
||||||
user.SpeedLimit = limitInfo.originSpeedLimit
|
user.SpeedLimit = limitInfo.originSpeedLimit
|
||||||
toReleaseUsers = append(toReleaseUsers, user)
|
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)
|
delete(c.limitedUsers, user)
|
||||||
} else {
|
} 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 len(toReleaseUsers) > 0 {
|
||||||
if err := c.UpdateInboundLimiter(c.Tag, &toReleaseUsers); err != nil {
|
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 len(limitedUsers) > 0 {
|
||||||
if err := c.UpdateInboundLimiter(c.Tag, &limitedUsers); err != nil {
|
if err := c.UpdateInboundLimiter(c.Tag, &limitedUsers); err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(userTraffic) > 0 {
|
if len(userTraffic) > 0 {
|
||||||
@ -569,7 +576,7 @@ func (c *Controller) userInfoMonitor() (err error) {
|
|||||||
}
|
}
|
||||||
// If report traffic error, not clear the traffic
|
// If report traffic error, not clear the traffic
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
} else {
|
} else {
|
||||||
c.resetTraffic(&upCounterList, &downCounterList)
|
c.resetTraffic(&upCounterList, &downCounterList)
|
||||||
}
|
}
|
||||||
@ -577,23 +584,23 @@ func (c *Controller) userInfoMonitor() (err error) {
|
|||||||
|
|
||||||
// Report Online info
|
// Report Online info
|
||||||
if onlineDevice, err := c.GetOnlineDevice(c.Tag); err != nil {
|
if onlineDevice, err := c.GetOnlineDevice(c.Tag); err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
} else if len(*onlineDevice) > 0 {
|
} else if len(*onlineDevice) > 0 {
|
||||||
if err = c.apiClient.ReportNodeOnlineUsers(onlineDevice); err != nil {
|
if err = c.apiClient.ReportNodeOnlineUsers(onlineDevice); err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
} else {
|
} else {
|
||||||
log.Printf("%s Report %d online users", c.logPrefix(), len(*onlineDevice))
|
c.logger.Printf("Report %d online users", len(*onlineDevice))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Report Illegal user
|
// Report Illegal user
|
||||||
if detectResult, err := c.GetDetectResult(c.Tag); err != nil {
|
if detectResult, err := c.GetDetectResult(c.Tag); err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
} else if len(*detectResult) > 0 {
|
} else if len(*detectResult) > 0 {
|
||||||
if err = c.apiClient.ReportIllegal(detectResult); err != nil {
|
if err = c.apiClient.ReportIllegal(detectResult); err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
} else {
|
} 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)
|
return fmt.Sprintf("%s_%s_%d", c.nodeInfo.NodeType, c.config.ListenIP, c.nodeInfo.Port)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) logPrefix() string {
|
// func (c *Controller) logPrefix() string {
|
||||||
return fmt.Sprintf("[%s] %s(ID=%d)", c.clientInfo.APIHost, c.nodeInfo.NodeType, c.nodeInfo.NodeID)
|
// return fmt.Sprintf("[%s] %s(ID=%d)", c.clientInfo.APIHost, c.nodeInfo.NodeType, c.nodeInfo.NodeID)
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Check Cert
|
// Check Cert
|
||||||
func (c *Controller) certMonitor() error {
|
func (c *Controller) certMonitor() error {
|
||||||
@ -615,12 +622,12 @@ func (c *Controller) certMonitor() error {
|
|||||||
case "dns", "http", "tls":
|
case "dns", "http", "tls":
|
||||||
lego, err := mylego.New(c.config.CertConfig)
|
lego, err := mylego.New(c.config.CertConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
}
|
}
|
||||||
// Xray-core supports the OcspStapling certification hot renew
|
// Xray-core supports the OcspStapling certification hot renew
|
||||||
_, _, _, err = lego.RenewCert()
|
_, _, _, err = lego.RenewCert()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
c.logger.Print(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user