Fixed: global mode and update log level
This commit is contained in:
parent
1e7b5abbe2
commit
ab8181de1b
4 changed files with 24 additions and 7 deletions
|
@ -94,6 +94,12 @@ func (c *Config) SetMode(mode Mode) {
|
|||
c.event <- &Event{Type: "mode", Payload: mode}
|
||||
}
|
||||
|
||||
// SetLogLevel change log level of clash
|
||||
func (c *Config) SetLogLevel(level C.LogLevel) {
|
||||
c.general.LogLevel = level
|
||||
c.event <- &Event{Type: "log-level", Payload: level}
|
||||
}
|
||||
|
||||
// General return clash general config
|
||||
func (c *Config) General() General {
|
||||
return *c.general
|
||||
|
@ -225,6 +231,7 @@ func (c *Config) parseProxies(cfg *ini.File) error {
|
|||
}
|
||||
|
||||
// init proxy
|
||||
proxies["GLOBAL"], _ = adapters.NewSelector("GLOBAL", proxies)
|
||||
proxies["DIRECT"] = adapters.NewDirect()
|
||||
proxies["REJECT"] = adapters.NewReject()
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ type General struct {
|
|||
AllowLan *bool `json:"allow-lan,omitempty"`
|
||||
Port *int `json:"port,omitempty"`
|
||||
SocksPort *int `json:"socks-port,omitempty"`
|
||||
LogLevel *string `json:"log-level,omitempty"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
|
|
@ -50,7 +50,7 @@ func updateConfigs(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
// update errors
|
||||
var proxyErr, modeErr error
|
||||
var proxyErr, modeErr, logLevelErr error
|
||||
|
||||
// update proxy
|
||||
listener := proxy.Instance()
|
||||
|
@ -70,9 +70,20 @@ func updateConfigs(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
// update log-level
|
||||
if general.LogLevel != nil {
|
||||
level, ok := C.LogLevelMapping[*general.LogLevel]
|
||||
if !ok {
|
||||
logLevelErr = fmt.Errorf("Log Level error")
|
||||
} else {
|
||||
cfg.SetLogLevel(level)
|
||||
}
|
||||
}
|
||||
|
||||
hasError, errors := formatErrors(map[string]error{
|
||||
"proxy": proxyErr,
|
||||
"mode": modeErr,
|
||||
"log-level": logLevelErr,
|
||||
})
|
||||
|
||||
if hasError {
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"time"
|
||||
|
||||
LocalAdapter "github.com/Dreamacro/clash/adapters/local"
|
||||
RemoteAdapter "github.com/Dreamacro/clash/adapters/remote"
|
||||
cfg "github.com/Dreamacro/clash/config"
|
||||
C "github.com/Dreamacro/clash/constant"
|
||||
"github.com/Dreamacro/clash/observable"
|
||||
|
@ -28,7 +27,6 @@ type Tunnel struct {
|
|||
|
||||
// Outbound Rule
|
||||
mode cfg.Mode
|
||||
selector *RemoteAdapter.Selector
|
||||
|
||||
// Log
|
||||
logCh chan interface{}
|
||||
|
@ -93,7 +91,7 @@ func (t *Tunnel) handleConn(localConn C.ServerAdapter) {
|
|||
case cfg.Direct:
|
||||
proxy = t.proxies["DIRECT"]
|
||||
case cfg.Global:
|
||||
proxy = t.selector
|
||||
proxy = t.proxies["GLOBAL"]
|
||||
// Rule
|
||||
default:
|
||||
proxy = t.match(addr)
|
||||
|
|
Loading…
Reference in a new issue