diff --git a/go-gost/gost b/go-gost/gost new file mode 100755 index 0000000..a25374d Binary files /dev/null and b/go-gost/gost differ diff --git a/go-gost/main.go b/go-gost/main.go index 8806468..3bfdbdf 100644 --- a/go-gost/main.go +++ b/go-gost/main.go @@ -140,11 +140,7 @@ func main() { defer wsReporter.Stop() service.SetHTTPReportURL(config.Addr, config.Secret) - p := &program{ - configReporter: func() { - service.StartConfigReporter() - }, - } + p := &program{} if err := svc.Run(p); err != nil { logger.Default().Fatal(err) } diff --git a/go-gost/program.go b/go-gost/program.go index 9b3f9d4..c54da10 100644 --- a/go-gost/program.go +++ b/go-gost/program.go @@ -15,12 +15,14 @@ import ( xmetrics "github.com/go-gost/x/metrics" metrics "github.com/go-gost/x/metrics/service" "github.com/go-gost/x/registry" + xservice "github.com/go-gost/x/service" "github.com/judwhite/go-svc" "net/http" "os" "os/signal" "strings" "syscall" + "time" ) type program struct { @@ -29,7 +31,6 @@ type program struct { srvProfiling *http.Server cancel context.CancelFunc - configReporter func() // 配置上报器启动函数 } func (p *program) Init(env svc.Environment) error { @@ -65,11 +66,6 @@ func (p *program) Start() error { return err } - // 配置加载完成后启动配置上报器 - if p.configReporter != nil { - go p.configReporter() - } - if err := p.run(cfg); err != nil { return err } @@ -78,6 +74,15 @@ func (p *program) Start() error { p.cancel = cancel go p.reload(ctx) + go func() { + select { + case <-time.After(10 * time.Second): + xservice.StartConfigReporter(ctx) + case <-ctx.Done(): + return + } + }() + return nil } diff --git a/go-gost/x/service/traffic_reporter.go b/go-gost/x/service/traffic_reporter.go index 2203ba1..1c57ebd 100644 --- a/go-gost/x/service/traffic_reporter.go +++ b/go-gost/x/service/traffic_reporter.go @@ -189,8 +189,7 @@ func sendConfigReport(ctx context.Context) (bool, error) { } // StartConfigReporter 启动配置定时上报器(每10分钟上报一次) -func StartConfigReporter() { - ctx, _ := context.WithCancel(context.Background()) +func StartConfigReporter(ctx context.Context) { if configReportURL == "" { fmt.Printf("⚠️ 配置上报URL未设置,跳过定时上报\n") return diff --git a/install.sh b/install.sh index 0d9db24..088fa58 100644 --- a/install.sh +++ b/install.sh @@ -266,7 +266,7 @@ block_protocol() { [[ "$block_socks5" == "y" ]] && echo " - SOCKS5 已屏蔽" || echo " - SOCKS5 未屏蔽" # 生成 rules.yaml 文件 - local file="rules.yaml" + local file="/etc/gost/rules.yaml" > "$file" # 构造 IP 排除字符串