更新关闭服务接口
This commit is contained in:
parent
f3813c32a0
commit
f930b62d9c
2
cmd/frps.ini
Normal file
2
cmd/frps.ini
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[common]
|
||||||
|
bind_port = 7000
|
25
cmd/main.go
Normal file
25
cmd/main.go
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/fatedier/frp/cmd/frp"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
frp.RunFrps("./frps.ini")
|
||||||
|
|
||||||
|
ch := make(chan bool)
|
||||||
|
go func() {
|
||||||
|
time.Sleep(time.Second * 5)
|
||||||
|
frp.StopFrps()
|
||||||
|
ch <- true
|
||||||
|
}()
|
||||||
|
<-ch
|
||||||
|
|
||||||
|
// frp.RunFrps("./frps.ini")
|
||||||
|
log.Println(frp.IsFrpsRunning())
|
||||||
|
ch = make(chan bool)
|
||||||
|
<-ch
|
||||||
|
}
|
@ -85,6 +85,9 @@ type Service struct {
|
|||||||
|
|
||||||
// Closed is service closed
|
// Closed is service closed
|
||||||
Closed bool
|
Closed bool
|
||||||
|
|
||||||
|
// close chan
|
||||||
|
closedCh chan bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewService() (svr *Service, err error) {
|
func NewService() (svr *Service, err error) {
|
||||||
@ -95,6 +98,7 @@ func NewService() (svr *Service, err error) {
|
|||||||
visitorManager: NewVisitorManager(),
|
visitorManager: NewVisitorManager(),
|
||||||
tcpPortManager: ports.NewPortManager("tcp", cfg.ProxyBindAddr, cfg.AllowPorts),
|
tcpPortManager: ports.NewPortManager("tcp", cfg.ProxyBindAddr, cfg.AllowPorts),
|
||||||
udpPortManager: ports.NewPortManager("udp", cfg.ProxyBindAddr, cfg.AllowPorts),
|
udpPortManager: ports.NewPortManager("udp", cfg.ProxyBindAddr, cfg.AllowPorts),
|
||||||
|
closedCh: make(chan bool),
|
||||||
}
|
}
|
||||||
svr.tcpGroupCtl = group.NewTcpGroupCtl(svr.tcpPortManager)
|
svr.tcpGroupCtl = group.NewTcpGroupCtl(svr.tcpPortManager)
|
||||||
|
|
||||||
@ -235,26 +239,28 @@ func (svr *Service) Run() {
|
|||||||
svr.HandleListener(svr.listener)
|
svr.HandleListener(svr.listener)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Stop 停止服务
|
||||||
func (svr *Service) Stop() error {
|
func (svr *Service) Stop() error {
|
||||||
err := svr.muxer.Close()
|
err := svr.muxer.Close()
|
||||||
if err != nil {
|
<-svr.closedCh
|
||||||
return err
|
svr.Closed = true
|
||||||
}
|
return err
|
||||||
return svr.listener.Close()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (svr *Service) HandleListener(l frpNet.Listener) {
|
func (svr *Service) HandleListener(l frpNet.Listener) {
|
||||||
defer func() {
|
defer func() {
|
||||||
svr.Closed = true
|
close(svr.closedCh)
|
||||||
log.Warn("Frps is Closed")
|
log.Info("Frps is Closed")
|
||||||
}()
|
}()
|
||||||
// Listen for incoming connections from client.
|
// Listen for incoming connections from client.
|
||||||
for {
|
for {
|
||||||
|
log.Info("Wait for new Connect")
|
||||||
c, err := l.Accept()
|
c, err := l.Accept()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warn("Listener for incoming connections from client closed")
|
log.Warn("Listener for incoming connections from client closed")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
log.Info("New Conn: ", c, err)
|
||||||
|
|
||||||
// Start a new goroutine for dealing connections.
|
// Start a new goroutine for dealing connections.
|
||||||
go func(frpConn frpNet.Conn) {
|
go func(frpConn frpNet.Conn) {
|
||||||
|
@ -45,10 +45,17 @@ func WrapLogListener(l net.Listener) Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (logL *LogListener) Accept() (Conn, error) {
|
func (logL *LogListener) Accept() (Conn, error) {
|
||||||
|
log.Info("call Accept")
|
||||||
c, err := logL.l.Accept()
|
c, err := logL.l.Accept()
|
||||||
|
log.Info("Accept new conn: ", c)
|
||||||
return WrapConn(c), err
|
return WrapConn(c), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close 关闭listener
|
||||||
|
func (logL *LogListener) Close() error {
|
||||||
|
return logL.l.Close()
|
||||||
|
}
|
||||||
|
|
||||||
// Custom listener
|
// Custom listener
|
||||||
type CustomListener struct {
|
type CustomListener struct {
|
||||||
conns chan Conn
|
conns chan Conn
|
||||||
|
1
vendor/github.com/fatedier/golib/net/mux/mux.go
generated
vendored
1
vendor/github.com/fatedier/golib/net/mux/mux.go
generated
vendored
@ -144,6 +144,7 @@ func (mux *Mux) Serve() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
close(mux.defaultLn.c)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user