summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/server/cmds.go6
-rw-r--r--pkg/server/echo.go2
-rw-r--r--pkg/server/env.go12
-rw-r--r--pkg/server/env/env.go5
-rw-r--r--pkg/server/exit.go2
-rw-r--r--pkg/server/help.go8
-rw-r--r--pkg/server/server.go13
-rw-r--r--pkg/server/sleep.go2
-rw-r--r--pkg/server/status.go3
-rw-r--r--pkg/server/tunnel.go14
10 files changed, 38 insertions, 29 deletions
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, "")
}