更新frp接口
This commit is contained in:
parent
d29e84eb92
commit
f3813c32a0
@ -24,12 +24,15 @@ type Service struct {
|
|||||||
// manager control connection with server
|
// manager control connection with server
|
||||||
ctl *Control
|
ctl *Control
|
||||||
|
|
||||||
closedCh chan int
|
closedCh chan bool
|
||||||
|
|
||||||
|
closed bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewService(pxyCfgs map[string]config.ProxyConf, visitorCfgs map[string]config.ProxyConf) (svr *Service) {
|
func NewService(pxyCfgs map[string]config.ProxyConf, visitorCfgs map[string]config.ProxyConf) (svr *Service) {
|
||||||
svr = &Service{
|
svr = &Service{
|
||||||
closedCh: make(chan int),
|
closedCh: make(chan bool),
|
||||||
|
closed: false,
|
||||||
}
|
}
|
||||||
ctl := NewControl(svr, pxyCfgs, visitorCfgs)
|
ctl := NewControl(svr, pxyCfgs, visitorCfgs)
|
||||||
svr.ctl = ctl
|
svr.ctl = ctl
|
||||||
@ -51,11 +54,11 @@ func (svr *Service) Run(cmd bool) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if cmd {
|
if cmd {
|
||||||
<-svr.closedCh
|
svr.closed = <-svr.closedCh
|
||||||
log.Info("svr closed")
|
log.Info("svr closed")
|
||||||
} else {
|
} else {
|
||||||
go func() {
|
go func() {
|
||||||
<-svr.closedCh
|
svr.closed = <-svr.closedCh
|
||||||
log.Info("svr closed")
|
log.Info("svr closed")
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
@ -64,5 +67,9 @@ func (svr *Service) Run(cmd bool) error {
|
|||||||
|
|
||||||
func (svr *Service) Close() {
|
func (svr *Service) Close() {
|
||||||
svr.ctl.Close()
|
svr.ctl.Close()
|
||||||
svr.closedCh <- 0
|
svr.closedCh <- true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (svr *Service) IsClosed() bool {
|
||||||
|
return svr.closed
|
||||||
}
|
}
|
||||||
|
@ -30,12 +30,22 @@ func StopFrpc() (err error) {
|
|||||||
return sub.StopFrp()
|
return sub.StopFrp()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsFrpcRunning() bool {
|
||||||
|
return sub.IsFrpRunning()
|
||||||
|
}
|
||||||
|
|
||||||
func RunFrps(cfgFilePath string) (err error) {
|
func RunFrps(cfgFilePath string) (err error) {
|
||||||
crypto.DefaultSalt = "frp"
|
crypto.DefaultSalt = "frp"
|
||||||
|
|
||||||
return frps.RunFrps(cfgFilePath)
|
return frps.RunFrps(cfgFilePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StopFrps 停止frps服务
|
||||||
func StopFrps() error {
|
func StopFrps() error {
|
||||||
return frps.StopFrps()
|
return frps.StopFrps()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsFrpsRunning 是否还在运行
|
||||||
|
func IsFrpsRunning() bool {
|
||||||
|
return frps.IsFrpsRunning()
|
||||||
|
}
|
||||||
|
@ -125,6 +125,10 @@ func StopFrp() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsFrpRunning() bool {
|
||||||
|
return service != nil && !service.IsClosed()
|
||||||
|
}
|
||||||
|
|
||||||
func handleSignal(svr *client.Service) {
|
func handleSignal(svr *client.Service) {
|
||||||
ch := make(chan os.Signal)
|
ch := make(chan os.Signal)
|
||||||
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
|
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
@ -233,3 +233,7 @@ func runBackgroundServer() (err error) {
|
|||||||
func StopFrps() error {
|
func StopFrps() error {
|
||||||
return service.Stop()
|
return service.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsFrpsRunning() bool {
|
||||||
|
return service != nil && !service.Closed
|
||||||
|
}
|
||||||
|
@ -82,6 +82,9 @@ type Service struct {
|
|||||||
|
|
||||||
// Controller for nat hole connections
|
// Controller for nat hole connections
|
||||||
natHoleController *NatHoleController
|
natHoleController *NatHoleController
|
||||||
|
|
||||||
|
// Closed is service closed
|
||||||
|
Closed bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewService() (svr *Service, err error) {
|
func NewService() (svr *Service, err error) {
|
||||||
@ -233,10 +236,18 @@ func (svr *Service) Run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (svr *Service) Stop() error {
|
func (svr *Service) Stop() error {
|
||||||
|
err := svr.muxer.Close()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return svr.listener.Close()
|
return svr.listener.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (svr *Service) HandleListener(l frpNet.Listener) {
|
func (svr *Service) HandleListener(l frpNet.Listener) {
|
||||||
|
defer func() {
|
||||||
|
svr.Closed = true
|
||||||
|
log.Warn("Frps is Closed")
|
||||||
|
}()
|
||||||
// Listen for incoming connections from client.
|
// Listen for incoming connections from client.
|
||||||
for {
|
for {
|
||||||
c, err := l.Accept()
|
c, err := l.Accept()
|
||||||
|
7
vendor/github.com/fatedier/golib/net/mux/mux.go
generated
vendored
7
vendor/github.com/fatedier/golib/net/mux/mux.go
generated
vendored
@ -51,6 +51,13 @@ func NewMux(ln net.Listener) (mux *Mux) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (mux *Mux) Close() error {
|
||||||
|
if mux.ln != nil {
|
||||||
|
return mux.ln.Close()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// priority
|
// priority
|
||||||
func (mux *Mux) Listen(priority int, needBytesNum uint32, fn MatchFunc) net.Listener {
|
func (mux *Mux) Listen(priority int, needBytesNum uint32, fn MatchFunc) net.Listener {
|
||||||
ln := &listener{
|
ln := &listener{
|
||||||
|
Loading…
Reference in New Issue
Block a user