From 809f517db847ef02ba614c04e9b81e47a55db0ea Mon Sep 17 00:00:00 2001 From: fatedier Date: Fri, 20 Mar 2020 20:53:14 +0800 Subject: [PATCH] server plugin: set version and op in http request query (#1707) --- doc/server_plugin.md | 2 +- models/plugin/server/http.go | 6 +++++- models/plugin/server/manager.go | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/doc/server_plugin.md b/doc/server_plugin.md index cacb0a4..599aa6e 100644 --- a/doc/server_plugin.md +++ b/doc/server_plugin.md @@ -22,7 +22,7 @@ HTTP path can be configured for each manage plugin in frps. We'll assume for thi A request to the RPC server will look like: ``` -POST /handler +POST /handler?version=0.1.0&op=Login { "version": "0.1.0", "op": "Login", diff --git a/models/plugin/server/http.go b/models/plugin/server/http.go index a3c243a..81c54ec 100644 --- a/models/plugin/server/http.go +++ b/models/plugin/server/http.go @@ -21,6 +21,7 @@ import ( "fmt" "io/ioutil" "net/http" + "net/url" "reflect" ) @@ -78,7 +79,10 @@ func (p *httpPlugin) do(ctx context.Context, r *Request, res *Response) error { if err != nil { return err } - req, err := http.NewRequest("POST", p.url, bytes.NewReader(buf)) + v := url.Values{} + v.Set("version", r.Version) + v.Set("op", r.Op) + req, err := http.NewRequest("POST", p.url+"?"+v.Encode(), bytes.NewReader(buf)) if err != nil { return err } diff --git a/models/plugin/server/manager.go b/models/plugin/server/manager.go index 62992c8..c427f0a 100644 --- a/models/plugin/server/manager.go +++ b/models/plugin/server/manager.go @@ -55,6 +55,10 @@ func (m *Manager) Register(p Plugin) { } func (m *Manager) Login(content *LoginContent) (*LoginContent, error) { + if len(m.loginPlugins) == 0 { + return content, nil + } + var ( res = &Response{ Reject: false, @@ -85,6 +89,10 @@ func (m *Manager) Login(content *LoginContent) (*LoginContent, error) { } func (m *Manager) NewProxy(content *NewProxyContent) (*NewProxyContent, error) { + if len(m.newProxyPlugins) == 0 { + return content, nil + } + var ( res = &Response{ Reject: false, @@ -115,6 +123,10 @@ func (m *Manager) NewProxy(content *NewProxyContent) (*NewProxyContent, error) { } func (m *Manager) Ping(content *PingContent) (*PingContent, error) { + if len(m.pingPlugins) == 0 { + return content, nil + } + var ( res = &Response{ Reject: false, @@ -145,6 +157,10 @@ func (m *Manager) Ping(content *PingContent) (*PingContent, error) { } func (m *Manager) NewWorkConn(content *NewWorkConnContent) (*NewWorkConnContent, error) { + if len(m.newWorkConnPlugins) == 0 { + return content, nil + } + var ( res = &Response{ Reject: false,