From 3015840d9835717762de52e091adb58f1e2e3b63 Mon Sep 17 00:00:00 2001 From: Mikhail Osipov Date: Fri, 27 Aug 2021 20:05:06 +0300 Subject: add version to client and daemon --- pkg/server/cmds.go | 6 +++--- pkg/server/echo.go | 2 +- pkg/server/env.go | 12 ++++++------ pkg/server/env/env.go | 5 +++++ pkg/server/exit.go | 2 +- pkg/server/help.go | 8 ++++---- pkg/server/server.go | 13 ++++++++----- pkg/server/sleep.go | 2 +- pkg/server/status.go | 3 ++- pkg/server/tunnel.go | 14 +++++++------- 10 files changed, 38 insertions(+), 29 deletions(-) (limited to 'pkg/server') diff --git a/pkg/server/cmds.go b/pkg/server/cmds.go index febda6b..34aeaa8 100644 --- a/pkg/server/cmds.go +++ b/pkg/server/cmds.go @@ -191,11 +191,11 @@ func (c *cmd) parseFuncSignature(i interface{}) error { return nil } -func newCmd(where string, f interface{}, args string) { +func handle(where string, f interface{}, args string) { c := &cmd{name: where, args: args} if err := c.parseFuncSignature(f); err != nil { - log.Panicf("newCmd: %s", err) + log.Panicf("handle: %s", err) } path := strings.Fields(where) @@ -298,5 +298,5 @@ func help(r *request, args []string) { } func init() { - newCmd("help", help, "[path]") + handle("help", help, "[path]") } diff --git a/pkg/server/echo.go b/pkg/server/echo.go index ee0537b..696b19d 100644 --- a/pkg/server/echo.go +++ b/pkg/server/echo.go @@ -20,5 +20,5 @@ func echo(r *request, args ...string) { } func init() { - newCmd("echo", echo, "[args]") + handle("echo", echo, "[args]") } diff --git a/pkg/server/env.go b/pkg/server/env.go index aa0ed40..35d6b4f 100644 --- a/pkg/server/env.go +++ b/pkg/server/env.go @@ -46,10 +46,10 @@ func varClear(r *request) { } func init() { - newCmd("get", varGet, "name") - newCmd("set", varSet, "name value") - newCmd("push", varPush, "name value") - newCmd("unset", varUnset, "name") - newCmd("env", varShow, "name") - newCmd("clear", varClear, "") + handle("get", varGet, "name") + handle("set", varSet, "name value") + handle("push", varPush, "name value") + handle("unset", varUnset, "name") + handle("env", varShow, "name") + handle("clear", varClear, "") } diff --git a/pkg/server/env/env.go b/pkg/server/env/env.go index 7aa93d2..a826db3 100644 --- a/pkg/server/env/env.go +++ b/pkg/server/env/env.go @@ -8,6 +8,11 @@ import ( "sync" ) +type box interface { + Get() string + Set(value string) bool +} + type env struct { // vars m map[string]string diff --git a/pkg/server/exit.go b/pkg/server/exit.go index e767403..fbcc246 100644 --- a/pkg/server/exit.go +++ b/pkg/server/exit.go @@ -5,5 +5,5 @@ func exit(r *request) { } func init() { - newCmd("exit", exit, "") + handle("exit", exit, "") } diff --git a/pkg/server/help.go b/pkg/server/help.go index 16f2776..be04632 100644 --- a/pkg/server/help.go +++ b/pkg/server/help.go @@ -69,9 +69,9 @@ func showSocketHelp(r *request, name string) { } func init() { - newCmd("hook list", showHookList, "") - newCmd("hook help", showHookHelp, "hook-name") + handle("hook list", showHookList, "") + handle("hook help", showHookHelp, "hook-name") - newCmd("socket list", showSocketList, "") - newCmd("socket help", showSocketHelp, "socket-name") + handle("socket list", showSocketList, "") + handle("socket help", showSocketHelp, "socket-name") } diff --git a/pkg/server/server.go b/pkg/server/server.go index 43cd542..524b6af 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -18,6 +18,8 @@ type Server struct { listen net.Listener since time.Time + version string + wg sync.WaitGroup mu sync.Mutex @@ -97,7 +99,7 @@ func (s *Server) isDone() bool { } } -func New(path string) (*Server, error) { +func New(path string, version string) (*Server, error) { listen, err := net.Listen("unix", path) if err != nil { return nil, err @@ -111,6 +113,7 @@ func New(path string) (*Server, error) { since: time.Now(), done: make(chan struct{}), tunnels: make(automap), + version: version, } return s, nil @@ -142,7 +145,7 @@ func (s *Server) Serve() { s.wg.Add(1) - go c.handle() + go c.reader() } s.wg.Wait() @@ -196,14 +199,14 @@ func (c *client) newRequest() *request { return r } -func (c *client) handle() { +func (c *client) reader() { defer c.close() for { req, er := c.r.Decode() if er != nil { if !errors.Is(er, io.EOF) { - log.Println(c, "handle:", er) + log.Println(c, "reader:", er) } break } @@ -220,7 +223,7 @@ func (c *client) handle() { ew := c.w.Encode(r.out.String()) if ew != nil { - log.Println(c, "handle:", ew) + log.Println(c, "reader:", ew) break } } diff --git a/pkg/server/sleep.go b/pkg/server/sleep.go index 33038f1..8d7eef4 100644 --- a/pkg/server/sleep.go +++ b/pkg/server/sleep.go @@ -15,5 +15,5 @@ func sleep(r *request, tout uint) { } func init() { - newCmd("sleep", sleep, "tout") + handle("sleep", sleep, "tout") } diff --git a/pkg/server/status.go b/pkg/server/status.go index d8f01c6..923580c 100644 --- a/pkg/server/status.go +++ b/pkg/server/status.go @@ -5,9 +5,10 @@ import ( ) func status(r *request) { + r.Println("version", r.c.s.version) r.Printf("since %s", r.c.s.since.Format(config.TimeFormat)) } func init() { - newCmd("status", status, "") + handle("status", status, "") } diff --git a/pkg/server/tunnel.go b/pkg/server/tunnel.go index afa0f31..e1ae092 100644 --- a/pkg/server/tunnel.go +++ b/pkg/server/tunnel.go @@ -610,15 +610,15 @@ func showRecent(r *request) { } func init() { - newCmd("add", tunnelAdd, "[name id] [limit N] [single] socket [hook ...] socket") - newCmd("del", tunnelDel, "tunnel-id") + handle("add", tunnelAdd, "[name id] [limit N] [single] socket [hook ...] socket") + handle("del", tunnelDel, "tunnel-id") - newCmd("kick", streamKick, "tunnel-id stream-id") + handle("kick", streamKick, "tunnel-id stream-id") - newCmd("rename", tunnelRename, "tunnel-old-id tunnel-new-id") + handle("rename", tunnelRename, "tunnel-old-id tunnel-new-id") - newCmd("show", showTunnels, "") + handle("show", showTunnels, "") - newCmd("active", showActive, "") - newCmd("recent", showRecent, "") + handle("active", showActive, "") + handle("recent", showRecent, "") } -- cgit v1.2.3-70-g09d2