mirror of
https://github.com/fatedier/frp.git
synced 2025-06-17 17:18:21 +00:00
Compare commits
3 Commits
7306fbd30b
...
76d791f591
Author | SHA1 | Date | |
---|---|---|---|
|
76d791f591 | ||
|
405969085f | ||
|
b4474ec619 |
20
Makefile
20
Makefile
@ -2,40 +2,52 @@ export PATH := $(PATH):`go env GOPATH`/bin
|
|||||||
export GO111MODULE=on
|
export GO111MODULE=on
|
||||||
LDFLAGS := -s -w
|
LDFLAGS := -s -w
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
all: env fmt build
|
all: env fmt build
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
build: frps frpc
|
build: frps frpc
|
||||||
|
|
||||||
|
.PHONY: env
|
||||||
env:
|
env:
|
||||||
@go version
|
@go version
|
||||||
|
|
||||||
# compile assets into binary file
|
# compile assets into binary file
|
||||||
|
.PHONY: file
|
||||||
file:
|
file:
|
||||||
rm -rf ./assets/frps/static/*
|
rm -rf ./assets/frps/static/*
|
||||||
rm -rf ./assets/frpc/static/*
|
rm -rf ./assets/frpc/static/*
|
||||||
cp -rf ./web/frps/dist/* ./assets/frps/static
|
cp -rf ./web/frps/dist/* ./assets/frps/static
|
||||||
cp -rf ./web/frpc/dist/* ./assets/frpc/static
|
cp -rf ./web/frpc/dist/* ./assets/frpc/static
|
||||||
|
|
||||||
|
.PHONY: fmt
|
||||||
fmt:
|
fmt:
|
||||||
go fmt ./...
|
go fmt ./...
|
||||||
|
|
||||||
|
.PHONY: fmt-more
|
||||||
fmt-more:
|
fmt-more:
|
||||||
gofumpt -l -w .
|
gofumpt -l -w .
|
||||||
|
|
||||||
|
.PHONY: gci
|
||||||
gci:
|
gci:
|
||||||
gci write -s standard -s default -s "prefix(github.com/fatedier/frp/)" ./
|
gci write -s standard -s default -s "prefix(github.com/fatedier/frp/)" ./
|
||||||
|
|
||||||
|
.PHONY: vet
|
||||||
vet:
|
vet:
|
||||||
go vet ./...
|
go vet ./...
|
||||||
|
|
||||||
|
.PHONY: frps
|
||||||
frps:
|
frps:
|
||||||
env CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -tags frps -o bin/frps ./cmd/frps
|
env CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -tags frps -o bin/frps ./cmd/frps
|
||||||
|
|
||||||
|
.PHONY: frpc
|
||||||
frpc:
|
frpc:
|
||||||
env CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -tags frpc -o bin/frpc ./cmd/frpc
|
env CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -tags frpc -o bin/frpc ./cmd/frpc
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
test: gotest
|
test: gotest
|
||||||
|
|
||||||
|
.PHONY: gotest
|
||||||
gotest:
|
gotest:
|
||||||
go test -v --cover ./assets/...
|
go test -v --cover ./assets/...
|
||||||
go test -v --cover ./cmd/...
|
go test -v --cover ./cmd/...
|
||||||
@ -43,12 +55,15 @@ gotest:
|
|||||||
go test -v --cover ./server/...
|
go test -v --cover ./server/...
|
||||||
go test -v --cover ./pkg/...
|
go test -v --cover ./pkg/...
|
||||||
|
|
||||||
|
.PHONY: e2e
|
||||||
e2e:
|
e2e:
|
||||||
./hack/run-e2e.sh
|
./hack/run-e2e.sh
|
||||||
|
|
||||||
|
.PHONY: e2e-trace
|
||||||
e2e-trace:
|
e2e-trace:
|
||||||
DEBUG=true LOG_LEVEL=trace ./hack/run-e2e.sh
|
DEBUG=true LOG_LEVEL=trace ./hack/run-e2e.sh
|
||||||
|
|
||||||
|
.PHONY: e2e-compatibility-last-frpc
|
||||||
e2e-compatibility-last-frpc:
|
e2e-compatibility-last-frpc:
|
||||||
if [ ! -d "./lastversion" ]; then \
|
if [ ! -d "./lastversion" ]; then \
|
||||||
TARGET_DIRNAME=lastversion ./hack/download.sh; \
|
TARGET_DIRNAME=lastversion ./hack/download.sh; \
|
||||||
@ -56,6 +71,7 @@ e2e-compatibility-last-frpc:
|
|||||||
FRPC_PATH="`pwd`/lastversion/frpc" ./hack/run-e2e.sh
|
FRPC_PATH="`pwd`/lastversion/frpc" ./hack/run-e2e.sh
|
||||||
rm -r ./lastversion
|
rm -r ./lastversion
|
||||||
|
|
||||||
|
.PHONY: e2e-compatibility-last-frps
|
||||||
e2e-compatibility-last-frps:
|
e2e-compatibility-last-frps:
|
||||||
if [ ! -d "./lastversion" ]; then \
|
if [ ! -d "./lastversion" ]; then \
|
||||||
TARGET_DIRNAME=lastversion ./hack/download.sh; \
|
TARGET_DIRNAME=lastversion ./hack/download.sh; \
|
||||||
@ -63,8 +79,10 @@ e2e-compatibility-last-frps:
|
|||||||
FRPS_PATH="`pwd`/lastversion/frps" ./hack/run-e2e.sh
|
FRPS_PATH="`pwd`/lastversion/frps" ./hack/run-e2e.sh
|
||||||
rm -r ./lastversion
|
rm -r ./lastversion
|
||||||
|
|
||||||
|
.PHONY: alltest
|
||||||
alltest: vet gotest e2e
|
alltest: vet gotest e2e
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f ./bin/frpc
|
rm -f ./bin/frpc
|
||||||
rm -f ./bin/frps
|
rm -f ./bin/frps
|
||||||
|
@ -380,18 +380,31 @@ func (svr *Service) stop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(fatedier): Use StatusExporter to provide query interfaces instead of directly using methods from the Service.
|
func (svr *Service) getProxyStatus(name string) (*proxy.WorkingStatus, bool) {
|
||||||
func (svr *Service) GetProxyStatus(name string) (*proxy.WorkingStatus, error) {
|
|
||||||
svr.ctlMu.RLock()
|
svr.ctlMu.RLock()
|
||||||
ctl := svr.ctl
|
ctl := svr.ctl
|
||||||
svr.ctlMu.RUnlock()
|
svr.ctlMu.RUnlock()
|
||||||
|
|
||||||
if ctl == nil {
|
if ctl == nil {
|
||||||
return nil, fmt.Errorf("control is not running")
|
return nil, false
|
||||||
}
|
}
|
||||||
ws, ok := ctl.pm.GetProxyStatus(name)
|
return ctl.pm.GetProxyStatus(name)
|
||||||
if !ok {
|
}
|
||||||
return nil, fmt.Errorf("proxy [%s] is not found", name)
|
|
||||||
}
|
func (svr *Service) StatusExporter() StatusExporter {
|
||||||
return ws, nil
|
return &statusExporterImpl{
|
||||||
|
getProxyStatusFunc: svr.getProxyStatus,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type StatusExporter interface {
|
||||||
|
GetProxyStatus(name string) (*proxy.WorkingStatus, bool)
|
||||||
|
}
|
||||||
|
|
||||||
|
type statusExporterImpl struct {
|
||||||
|
getProxyStatusFunc func(name string) (*proxy.WorkingStatus, bool)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *statusExporterImpl) GetProxyStatus(name string) (*proxy.WorkingStatus, bool) {
|
||||||
|
return s.getProxyStatusFunc(name)
|
||||||
}
|
}
|
||||||
|
@ -363,11 +363,13 @@ func (s *TunnelServer) waitProxyStatusReady(name string, timeout time.Duration)
|
|||||||
timer := time.NewTimer(timeout)
|
timer := time.NewTimer(timeout)
|
||||||
defer timer.Stop()
|
defer timer.Stop()
|
||||||
|
|
||||||
|
statusExporter := s.vc.Service().StatusExporter()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
ps, err := s.vc.Service().GetProxyStatus(name)
|
ps, ok := statusExporter.GetProxyStatus(name)
|
||||||
if err != nil {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
switch ps.Phase {
|
switch ps.Phase {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user