From 34b5a9e37cf9cb29935b0622ee5fdfb5cd1e7695 Mon Sep 17 00:00:00 2001 From: int7 Date: Sun, 14 Apr 2024 23:17:50 +0800 Subject: [PATCH] feat: refactor --- CHANGELOG.md | 18 +++ Makefile | 4 +- Makefile.cross-compiles | 4 +- README.md | 5 + README_zh.md | 3 + Release.md | 15 +-- cmd/frpc/default_runner.go | 24 ++++ cmd/frpc/gssh_runner.go | 96 ++++++++++++++++ cmd/{native_ssh => frpc}/main.go | 49 ++++---- cmd/frpc/nssh_runner.go | 87 ++++++++++++++ cmd/go_ssh/main.go | 76 ------------- conf/frpc_full_example.toml | 5 +- doc/pic/architecture.png | Bin 0 -> 276139 bytes go.mod | 6 +- go.sum | 16 +-- pkg/config/parse.go | 4 - pkg/gssh/{ssh.go => ssh_client.go} | 15 ++- pkg/model/interface.go | 11 ++ pkg/nssh/cmd_wrapper.go | 44 ++++---- pkg/util/log/log_test.go | 62 ++++++++++ pkg/util/misc.go | 9 -- pkg/util/misc_test.go | 175 +++++++++++++++++++++++++++++ pkg/util/net_test.go | 71 ++++++++++++ pkg/util/version/version.go | 2 +- 24 files changed, 625 insertions(+), 176 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 cmd/frpc/default_runner.go create mode 100644 cmd/frpc/gssh_runner.go rename cmd/{native_ssh => frpc}/main.go (59%) create mode 100644 cmd/frpc/nssh_runner.go delete mode 100644 cmd/go_ssh/main.go create mode 100644 doc/pic/architecture.png rename pkg/gssh/{ssh.go => ssh_client.go} (86%) create mode 100644 pkg/model/interface.go create mode 100644 pkg/util/log/log_test.go create mode 100644 pkg/util/misc_test.go create mode 100644 pkg/util/net_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..59196d6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,18 @@ +## v0.1.2 (2024-04-15) + +This release introduces a set of code optimizations, improvements to documentation, and an extension of the testing suite. This is a patch release and does not contain any breaking changes or new features. It is backwards compatible with v0.1.1. + +### Improvements + +**Code Optimization**: Refactored some parts of the codebase to enhance performance and readability. + +**Documentation**: Updated and added inline documentation and comments to make the codebase more accessible for new contributors. + +**Unit Testing**: Increased test coverage by adding new unit tests for previously untested functions. + + +## v0.1.1 (2024-04-12) +Init Project. + +## v0.1.0 (2024-04-11) +Init Project. \ No newline at end of file diff --git a/Makefile b/Makefile index 85a3564..9f3cb66 100644 --- a/Makefile +++ b/Makefile @@ -18,10 +18,10 @@ vet: go vet ./... gssh: - env CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -tags tiny-frpc -o bin/tiny-frpc ./cmd/go_ssh + env CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -tags gssh -o bin/tiny-frpc ./cmd/frpc nssh: - env CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -tags tiny-frpc-ssh -o bin/tiny-frpc-ssh ./cmd/native_ssh + env CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -tags nssh -o bin/tiny-frpc-ssh ./cmd/frpc test: gotest diff --git a/Makefile.cross-compiles b/Makefile.cross-compiles index ef1d764..d5da316 100644 --- a/Makefile.cross-compiles +++ b/Makefile.cross-compiles @@ -14,8 +14,8 @@ app: gomips=$(shell echo "$(n)" | cut -d : -f 3);\ target_suffix=$${os}_$${arch};\ echo "Build $${os}-$${arch}...";\ - env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} GOMIPS=$${gomips} go build -trimpath -ldflags "$(LDFLAGS)" -tags tiny-frpc -o ./release/tiny-frpc_$${target_suffix} ./cmd/go_ssh;\ - env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} GOMIPS=$${gomips} go build -trimpath -ldflags "$(LDFLAGS)" -tags tiny-frpc-ssh -o ./release/tiny-frpc-ssh_$${target_suffix} ./cmd/native_ssh;\ + env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} GOMIPS=$${gomips} go build -trimpath -ldflags "$(LDFLAGS)" -tags gssh -o ./release/tiny-frpc_$${target_suffix} ./cmd/frpc;\ + env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} GOMIPS=$${gomips} go build -trimpath -ldflags "$(LDFLAGS)" -tags nssh -o ./release/tiny-frpc-ssh_$${target_suffix} ./cmd/frpc;\ echo "Build $${os}-$${arch} done";\ ) @mv ./release/tiny-frpc_windows_amd64 ./release/tiny-frpc_windows_amd64.exe diff --git a/README.md b/README.md index d071242..4473b4c 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,11 @@ Assuming that the domain name 'test-tiny-frpc.frps.com' is resolved to the machi > curl -v 'http://test-tiny-frpc.frps.com/' + +# Principle +![how tiny frpc works](doc/pic/architecture.png) + + # Disclaimer **This is currently a preview version. Compatibility is not guaranteed. It is presently for testing purposes only and should not be used in production environments!** \ No newline at end of file diff --git a/README_zh.md b/README_zh.md index 444194b..9f38245 100644 --- a/README_zh.md +++ b/README_zh.md @@ -88,6 +88,9 @@ HTTP 服务: 访问到内网的 HTTP 服务。 +# 原理 +![how tiny frpc works](doc/pic/architecture.png) + # 说明 diff --git a/Release.md b/Release.md index 60efee0..acc378e 100644 --- a/Release.md +++ b/Release.md @@ -1,14 +1 @@ -### Features - -Introducing version of our proxy solution, we enable reverse proxying through standard ssh protocol communicating with frps. - -We offer two binary program options for different user needs: - -The Go standalone mode: This version works independently to communicate with frps. It's built for those who favor self-sufficiency and prefer a simpler deployment process. - -The ssh native mode: This version works in conjunction with the operating system's ssh program. It is intended for those whose systems comprise a preconfigured ssh setup, or who wish to utilize the existing ssh program. -Both versions necessitate the provision of a frpc toml format configuration file to function correctly. - -This release is just the beginning. Stay tuned for more advanced features, improvements and we are always keen to hear user feedback for future developments. - -**This is currently a preview version. Compatibility is not guaranteed. It is presently for testing purposes only and should not be used in production environments!!!** \ No newline at end of file +Please refer to [CHANGELOG.md](https://github.com/gofrp/tiny-frpc/blob/main/CHANGELOG.md) for details. \ No newline at end of file diff --git a/cmd/frpc/default_runner.go b/cmd/frpc/default_runner.go new file mode 100644 index 0000000..0a9861e --- /dev/null +++ b/cmd/frpc/default_runner.go @@ -0,0 +1,24 @@ +package main + +import ( + v1 "github.com/gofrp/tiny-frpc/pkg/config/v1" + "github.com/gofrp/tiny-frpc/pkg/model" + "github.com/gofrp/tiny-frpc/pkg/util/log" +) + +var runner model.Runner = defaultRunner{} + +type defaultRunner struct{} + +func (r defaultRunner) New(commonCfg *v1.ClientCommonConfig, pxyCfg []v1.ProxyConfigurer, vCfg []v1.VisitorConfigurer) (err error) { + log.Infof("init default runner") + return +} + +func (r defaultRunner) Run() (err error) { + return +} + +func (r defaultRunner) Close() (err error) { + return +} diff --git a/cmd/frpc/gssh_runner.go b/cmd/frpc/gssh_runner.go new file mode 100644 index 0000000..003b019 --- /dev/null +++ b/cmd/frpc/gssh_runner.go @@ -0,0 +1,96 @@ +//go:build gssh +// +build gssh + +package main + +import ( + "sync" + + "github.com/gofrp/tiny-frpc/pkg/config" + v1 "github.com/gofrp/tiny-frpc/pkg/config/v1" + "github.com/gofrp/tiny-frpc/pkg/gssh" + "github.com/gofrp/tiny-frpc/pkg/util/log" +) + +type GoSSHRun struct { + commonCfg *v1.ClientCommonConfig + pxyCfg []v1.ProxyConfigurer + vCfg []v1.VisitorConfigurer + + wg *sync.WaitGroup + mu *sync.RWMutex + + tcs map[int]*gssh.TunnelClient +} + +func (gr *GoSSHRun) New(commonCfg *v1.ClientCommonConfig, pxyCfg []v1.ProxyConfigurer, vCfg []v1.VisitorConfigurer) error { + log.Infof("init go ssh runner") + + runner = &GoSSHRun{ + commonCfg: commonCfg, + pxyCfg: pxyCfg, + vCfg: vCfg, + + wg: new(sync.WaitGroup), + mu: &sync.RWMutex{}, + + tcs: make(map[int]*gssh.TunnelClient, 0), + } + return nil +} + +func (gr *GoSSHRun) Run() error { + params := config.ParseFRPCConfigToGoSSHParam(gr.commonCfg, gr.pxyCfg, gr.vCfg) + + log.Infof("proxy total len: %v", len(params)) + + for i, cmd := range params { + gr.wg.Add(1) + + go func(cmd config.GoSSHParam, idx int) { + defer gr.wg.Done() + + log.Infof("start to run: %v", cmd) + + tc, err := gssh.NewTunnelClient(cmd.LocalAddr, cmd.ServerAddr, cmd.SSHExtraCmd) + if err != nil { + log.Errorf("new ssh tunnel client error: %v", err) + return + } + + gr.mu.Lock() + gr.tcs[idx] = tc + gr.mu.Unlock() + + err = tc.Start() + if err != nil { + log.Errorf("cmd: %v run error: %v", cmd, err) + + gr.mu.Lock() + delete(gr.tcs, idx) + gr.mu.Unlock() + + return + } + }(cmd, i) + } + + gr.wg.Wait() + + log.Infof("stopping ssh tunnel to frps") + return nil +} + +func (gr *GoSSHRun) Close() error { + gr.mu.Lock() + defer gr.mu.Unlock() + + for _, tc := range gr.tcs { + tc.Close() + } + return nil +} + +func init() { + runner = &GoSSHRun{} +} diff --git a/cmd/native_ssh/main.go b/cmd/frpc/main.go similarity index 59% rename from cmd/native_ssh/main.go rename to cmd/frpc/main.go index e8ca984..7b19498 100644 --- a/cmd/native_ssh/main.go +++ b/cmd/frpc/main.go @@ -1,14 +1,16 @@ package main import ( - "context" "flag" "fmt" - "sync" + "os" + "os/signal" + "syscall" + "time" "github.com/gofrp/tiny-frpc/pkg/config" v1 "github.com/gofrp/tiny-frpc/pkg/config/v1" - "github.com/gofrp/tiny-frpc/pkg/nssh" + "github.com/gofrp/tiny-frpc/pkg/model" "github.com/gofrp/tiny-frpc/pkg/util" "github.com/gofrp/tiny-frpc/pkg/util/log" "github.com/gofrp/tiny-frpc/pkg/util/version" @@ -20,7 +22,7 @@ func main() { showVersion bool ) - flag.StringVar(&cfgFilePath, "c", "frpc.toml", "Path to the configuration file") + flag.StringVar(&cfgFilePath, "c", "frpc.toml", "path to the configuration file") flag.BoolVar(&showVersion, "v", false, "version of tiny-frpc") flag.Parse() @@ -43,29 +45,28 @@ func main() { log.Infof("common cfg: %v, proxy cfg: %v, visitor cfg: %v", util.JSONEncode(cfg), util.JSONEncode(proxyCfgs), util.JSONEncode(visitorCfgs)) - sshCmds := config.ParseFRPCConfigToSSHCmd(cfg, proxyCfgs, visitorCfgs) - - log.Infof("ssh cmds len_num: %v", len(sshCmds)) - - closeCh := make(chan struct{}) - wg := new(sync.WaitGroup) - - for _, cmd := range sshCmds { - wg.Add(1) - - go func(cmd string) { - defer wg.Done() - ctx := context.Background() + err = runner.New(cfg, proxyCfgs, visitorCfgs) + if err != nil { + log.Errorf("new runner error: %v", err) + return + } - log.Infof("start to run: %v", cmd) + go handleTermSignal(runner) - task := nssh.NewCmdWrapper(ctx, cmd, closeCh) - task.ExecuteCommand(ctx) - }(cmd) + err = runner.Run() + if err != nil { + log.Errorf("run error: %v", err) + return } - wg.Wait() - close(closeCh) + time.Sleep(time.Millisecond * 10) + log.Infof("process exit...") +} - log.Infof("stopping process calling native ssh to frps, exit...") +func handleTermSignal(run model.Runner) { + ch := make(chan os.Signal, 1) + signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) + v := <-ch + log.Infof("get signal term: %v, gracefully shutdown", v) + run.Close() } diff --git a/cmd/frpc/nssh_runner.go b/cmd/frpc/nssh_runner.go new file mode 100644 index 0000000..7846e69 --- /dev/null +++ b/cmd/frpc/nssh_runner.go @@ -0,0 +1,87 @@ +//go:build nssh +// +build nssh + +package main + +import ( + "context" + "sync" + + "github.com/gofrp/tiny-frpc/pkg/config" + v1 "github.com/gofrp/tiny-frpc/pkg/config/v1" + "github.com/gofrp/tiny-frpc/pkg/nssh" + "github.com/gofrp/tiny-frpc/pkg/util/log" +) + +type NativeSSHRun struct { + commonCfg *v1.ClientCommonConfig + pxyCfg []v1.ProxyConfigurer + vCfg []v1.VisitorConfigurer + + wg *sync.WaitGroup + mu *sync.RWMutex + + cws map[int]*nssh.CmdWrapper +} + +func (nr *NativeSSHRun) New(commonCfg *v1.ClientCommonConfig, pxyCfg []v1.ProxyConfigurer, vCfg []v1.VisitorConfigurer) error { + log.Infof("init native ssh runner") + + runner = &NativeSSHRun{ + commonCfg: commonCfg, + pxyCfg: pxyCfg, + vCfg: vCfg, + + wg: new(sync.WaitGroup), + mu: &sync.RWMutex{}, + + cws: make(map[int]*nssh.CmdWrapper, 0), + } + return nil +} + +func (nr *NativeSSHRun) Run() error { + cmdParams := config.ParseFRPCConfigToSSHCmd(nr.commonCfg, nr.pxyCfg, nr.vCfg) + + log.Infof("proxy total len: %v", len(cmdParams)) + + for i, cmd := range cmdParams { + nr.wg.Add(1) + + go func(cmd string, idx int) { + defer nr.wg.Done() + ctx := context.Background() + + log.Infof("start to run: %v", cmd) + + cmdWrapper := nssh.NewCmdWrapper(ctx, cmd) + + nr.mu.Lock() + nr.cws[idx] = cmdWrapper + nr.mu.Unlock() + + cmdWrapper.ExecuteCommand(ctx) + }(cmd, i) + } + + nr.wg.Wait() + + log.Infof("stopping native ssh tunnel to frps") + + return nil +} + +func (nr *NativeSSHRun) Close() error { + nr.mu.Lock() + defer nr.mu.Unlock() + + for _, c := range nr.cws { + c.Close() + } + + return nil +} + +func init() { + runner = &NativeSSHRun{} +} diff --git a/cmd/go_ssh/main.go b/cmd/go_ssh/main.go deleted file mode 100644 index a880bcb..0000000 --- a/cmd/go_ssh/main.go +++ /dev/null @@ -1,76 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "sync" - - "github.com/gofrp/tiny-frpc/pkg/config" - v1 "github.com/gofrp/tiny-frpc/pkg/config/v1" - "github.com/gofrp/tiny-frpc/pkg/gssh" - "github.com/gofrp/tiny-frpc/pkg/util" - "github.com/gofrp/tiny-frpc/pkg/util/log" - "github.com/gofrp/tiny-frpc/pkg/util/version" -) - -func main() { - var ( - cfgFilePath string - showVersion bool - ) - - flag.StringVar(&cfgFilePath, "c", "frpc.toml", "path to the configuration file") - flag.BoolVar(&showVersion, "v", false, "version of tiny-frpc") - flag.Parse() - - if showVersion { - fmt.Println(version.Full()) - return - } - - cfg, proxyCfgs, visitorCfgs, _, err := config.LoadClientConfig(cfgFilePath, true) - if err != nil { - log.Errorf("load frpc config error: %v", err) - return - } - - _, err = v1.ValidateAllClientConfig(cfg, proxyCfgs, visitorCfgs) - if err != nil { - log.Errorf("validate frpc config error: %v", err) - return - } - - log.Infof("common cfg: %v, proxy cfg: %v, visitor cfg: %v", util.JSONEncode(cfg), util.JSONEncode(proxyCfgs), util.JSONEncode(visitorCfgs)) - - goSSHParams := config.ParseFRPCConfigToGoSSHParam(cfg, proxyCfgs, visitorCfgs) - - log.Infof("ssh cmds len_num: %v", len(goSSHParams)) - - wg := new(sync.WaitGroup) - - for _, cmd := range goSSHParams { - wg.Add(1) - - go func(cmd config.GoSSHParam) { - defer wg.Done() - - log.Infof("start to run: %v", cmd) - - tc, err := gssh.NewTunnelClient(cmd.LocalAddr, cmd.ServerAddr, cmd.SSHExtraCmd) - if err != nil { - log.Errorf("new ssh tunnel client error: %v", err) - return - } - - err = tc.Start() - if err != nil { - log.Errorf("cmd: %v run error: %v", cmd, err) - return - } - }(cmd) - } - - wg.Wait() - - log.Infof("stopping process calling native ssh to frps, exit...") -} diff --git a/conf/frpc_full_example.toml b/conf/frpc_full_example.toml index 81915b5..8cf136f 100644 --- a/conf/frpc_full_example.toml +++ b/conf/frpc_full_example.toml @@ -1,12 +1,10 @@ -##################### # This configuration file is a subset of `https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml`, with no additional parameters added, but some parameters not supported by the command line have been trimmed. # The list of parameters supported by this file corresponds one-to-one with the parameters started under the command line in [frp ssh tunnel gateway](https://github.com/fatedier/frp?tab=readme-ov-file#ssh-tunnel-gateway). Our open-source project is aimed at parsing the configuration file into standard ssh commands. -##################### # This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. -# your proxy name will be changed to {user}.{proxy} +# your proxy name will be changed to {user}.{user}.{proxy} user = "your_name" # A literal address or host name for IPv6 must be enclosed @@ -18,7 +16,6 @@ serverAddr = "0.0.0.0" # more info https://github.com/fatedier/frp?tab=readme-ov-file#ssh-tunnel-gateway serverPort = 2200 - # method only be "token" value, it's hard code auth.method = "token" # auth token diff --git a/doc/pic/architecture.png b/doc/pic/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..23803222c83e35c84d6c9c4672d6963ebbc933cd GIT binary patch literal 276139 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 z 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