diff --git a/cmd/frp/frp.go b/cmd/frp/frp.go index 85aa1f61..1858a37b 100644 --- a/cmd/frp/frp.go +++ b/cmd/frp/frp.go @@ -35,3 +35,7 @@ func RunFrps(cfgFilePath string) (err error) { return frps.RunFrps(cfgFilePath) } + +func StopFrps() error { + return frps.StopFrps() +} diff --git a/cmd/frps/frps/root.go b/cmd/frps/frps/root.go index 68486125..32dcc99d 100644 --- a/cmd/frps/frps/root.go +++ b/cmd/frps/frps/root.go @@ -214,6 +214,8 @@ func runServer() (err error) { return } +var service *server.Service + func runBackgroundServer() (err error) { log.InitLog(g.GlbServerCfg.LogWay, g.GlbServerCfg.LogFile, g.GlbServerCfg.LogLevel, g.GlbServerCfg.LogMaxDays) @@ -223,6 +225,11 @@ func runBackgroundServer() (err error) { } log.Info("Start frps success") server.ServerService = svr + service = svr go svr.Run() return } + +func StopFrps() error { + return service.Stop() +} diff --git a/server/service.go b/server/service.go index a9b14a62..4c115bfd 100644 --- a/server/service.go +++ b/server/service.go @@ -218,6 +218,10 @@ func (svr *Service) Run() { } +func (svr *Service) Stop() error { + return svr.listener.Close() +} + func (svr *Service) HandleListener(l frpNet.Listener) { // Listen for incoming connections from client. for {