mirror of
https://github.com/bolucat/Archive.git
synced 2025-12-24 13:28:37 +08:00
Update On Fri Apr 26 20:27:55 CEST 2024
This commit is contained in:
@@ -19,7 +19,7 @@ import (
|
||||
func loadConfig() (cfg *config.Config, err error) {
|
||||
if ConfigPath != "" {
|
||||
cfg = config.NewConfig(ConfigPath)
|
||||
if err := cfg.LoadConfig(); err != nil {
|
||||
if err := cfg.LoadConfig(true); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -49,8 +49,8 @@ func (c *Config) NeedSyncFromServer() bool {
|
||||
return strings.Contains(c.PATH, "http")
|
||||
}
|
||||
|
||||
func (c *Config) LoadConfig() error {
|
||||
if c.ReloadInterval > 0 && time.Since(c.lastLoadTime).Seconds() < float64(c.ReloadInterval) {
|
||||
func (c *Config) LoadConfig(force bool) error {
|
||||
if c.ReloadInterval > 0 && time.Since(c.lastLoadTime).Seconds() < float64(c.ReloadInterval) && !force {
|
||||
c.l.Warnf("Skip Load Config, last load time: %s", c.lastLoadTime)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ func (s *Server) WatchAndReload(ctx context.Context) {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case <-s.reloadCH:
|
||||
if err := s.Reload(); err != nil {
|
||||
if err := s.Reload(false); err != nil {
|
||||
s.l.Errorf("auto reloading relay conf meet error: %s will retry in next loop", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
// make sure Server implements the reloader.Reloader interface
|
||||
var _ reloader.Reloader = (*Server)(nil)
|
||||
|
||||
func (s *Server) Reload() error {
|
||||
func (s *Server) Reload(force bool) error {
|
||||
// k:name v: *Config
|
||||
oldRelayCfgM := make(map[string]*conf.Config)
|
||||
for _, v := range s.cfg.RelayConfigs {
|
||||
@@ -18,7 +18,7 @@ func (s *Server) Reload() error {
|
||||
allRelayLabelList := make([]string, 0)
|
||||
|
||||
// NOTE: this is for reuse cached clash sub, because clash sub to relay config will change port every time when call
|
||||
if err := s.cfg.LoadConfig(); err != nil {
|
||||
if err := s.cfg.LoadConfig(force); err != nil {
|
||||
s.l.Error("load new cfg meet error", zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package reloader
|
||||
|
||||
type Reloader interface {
|
||||
Reload() error
|
||||
Reload(force bool) error
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ func (s *Server) HandleClashProxyProvider(c echo.Context) error {
|
||||
|
||||
func (s *Server) handleClashProxyProvider(c echo.Context, subName string, grouped bool) error {
|
||||
if s.relayServerReloader != nil {
|
||||
if err := s.relayServerReloader.Reload(); err != nil {
|
||||
if err := s.relayServerReloader.Reload(true); err != nil {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
|
||||
}
|
||||
} else {
|
||||
@@ -85,7 +85,7 @@ func (s *Server) HandleReload(c echo.Context) error {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "reload not support")
|
||||
}
|
||||
|
||||
err := s.relayServerReloader.Reload()
|
||||
err := s.relayServerReloader.Reload(true)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ func (xs *XrayServer) Start(ctx context.Context) error {
|
||||
return
|
||||
case <-ticker.C:
|
||||
newCfg := config.NewConfig(xs.cfg.PATH)
|
||||
if err := newCfg.LoadConfig(); err != nil {
|
||||
if err := newCfg.LoadConfig(false); err != nil {
|
||||
// TODO refine
|
||||
xs.l.Error("Reload Config meet error will retry in next loop", zap.Error(err))
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user