summaryrefslogtreecommitdiff
path: root/pkg/server/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/server/server.go')
-rw-r--r--pkg/server/server.go32
1 files changed, 6 insertions, 26 deletions
diff --git a/pkg/server/server.go b/pkg/server/server.go
index ce910f3..d380fb4 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -3,6 +3,7 @@ package server
import (
"tunnel/pkg/config"
"tunnel/pkg/netstring"
+ "tunnel/pkg/server/env"
"strings"
"errors"
"bytes"
@@ -25,7 +26,7 @@ type Server struct {
done chan struct{}
tunnels automap
- env env
+ env env.Env
nextCid int
}
@@ -58,11 +59,11 @@ type requestError string
var errNotImplemented = errors.New("not implemented")
func (c *client) String() string {
- return fmt.Sprintf("client(%d)", c.id)
+ return fmt.Sprintf("client:%d", c.id)
}
func (r *request) String() string {
- return fmt.Sprintf("request(%d)", r.id)
+ return fmt.Sprintf("request:%d", r.id)
}
func (r *request) Print(v ...interface{}) {
@@ -132,6 +133,7 @@ func New() (*Server, error) {
}
s := &Server{
+ env: env.New(),
listen: listen,
since: time.Now(),
done: make(chan struct{}),
@@ -248,33 +250,11 @@ func (r *request) decode(query string) []string {
}
func (r *request) eval(args []string) []string {
- repl := func (v string) string {
- if v, ok := r.c.s.env.get(v[1:]); ok {
- return v
- }
-
- r.Fatal("unbound variable ", v)
-
- return v
- }
-
- eval := func (s string) string {
- var t string
-
- for ;; s = t {
- t = varTokenRe.ReplaceAllStringFunc(s, repl)
-
- if s == t {
- return s
- }
- }
- }
-
for n, s := range args {
if strings.HasPrefix(s, "^") {
args[n] = s[1:]
} else {
- args[n] = eval(s)
+ args[n] = r.c.s.env.Eval(s)
}
}