diff --git a/config/config.go b/config/config.go index 43d10b94..702d93a1 100644 --- a/config/config.go +++ b/config/config.go @@ -440,13 +440,6 @@ func parseProxies(cfg *RawConfig) (proxies map[string]C.Proxy, providersMap map[ providersMap[name] = pd } - for _, proxyProvider := range providersMap { - log.Infoln("Start initial provider %s", proxyProvider.Name()) - if err := proxyProvider.Initial(); err != nil { - return nil, nil, fmt.Errorf("initial proxy provider %s error: %w", proxyProvider.Name(), err) - } - } - // parse proxy group for idx, mapping := range groupsConfig { group, err := outboundgroup.ParseProxyGroup(mapping, proxies, providersMap) diff --git a/hub/executor/executor.go b/hub/executor/executor.go index bf4e2a1c..6bbfe6e1 100644 --- a/hub/executor/executor.go +++ b/hub/executor/executor.go @@ -77,8 +77,8 @@ func ApplyConfig(cfg *config.Config, force bool) { updateUsers(cfg.Users) updateProxies(cfg.Proxies, cfg.Providers) updateRules(cfg.Rules, cfg.RuleProviders) - updateGeneral(cfg.General, force) updateDNS(cfg.DNS, cfg.Tun) + updateGeneral(cfg.General, force) updateTun(cfg.Tun) autoUpdateIPTables(cfg.DNS, cfg.General, cfg.Tun) updateExperimental(cfg) diff --git a/rule/provider/parse.go b/rule/provider/parse.go index 8d07f469..230bc888 100644 --- a/rule/provider/parse.go +++ b/rule/provider/parse.go @@ -85,6 +85,9 @@ func parseRule(tp, payload, target string, params []string) (C.Rule, error) { default: parseErr = fmt.Errorf("unsupported rule type %s", tp) } + if parseErr != nil { + return nil, parseErr + } ruleExtra := &C.RuleExtra{ Network: RC.FindNetwork(params), SourceIPs: RC.FindSourceIPs(params), diff --git a/rule/provider/provider.go b/rule/provider/provider.go index 2befc694..9ffc788f 100644 --- a/rule/provider/provider.go +++ b/rule/provider/provider.go @@ -6,6 +6,7 @@ import ( "github.com/Dreamacro/clash/component/trie" C "github.com/Dreamacro/clash/constant" P "github.com/Dreamacro/clash/constant/provider" + "github.com/Dreamacro/clash/log" "gopkg.in/yaml.v2" "runtime" "strings" @@ -129,7 +130,12 @@ func NewRuleSetProvider(name string, behavior P.RuleType, interval time.Duration return err } - rp.count = len(rulesRaw) + if rp.behavior == P.Classical { + rp.count = len(rules.([]C.Rule)) + } else { + rp.count = len(rulesRaw) + } + rp.setRules(rules) return nil } @@ -201,13 +207,12 @@ func handleClassicalRules(rules []string) (interface{}, error) { var classicalRules []C.Rule for _, rawRule := range rules { ruleType, rule, params := ruleParse(rawRule) - if ruleType == "RULE-SET" { - return nil, errors.New("error rule type") - } r, err := parseRule(ruleType, rule, "", params) if err != nil { - return nil, err + //return nil, err + log.Warnln("%s", err) + continue } classicalRules = append(classicalRules, r)