diff options
Diffstat (limited to 'pkg/server/socket')
| -rw-r--r-- | pkg/server/socket/defer.go | 4 | ||||
| -rw-r--r-- | pkg/server/socket/dial.go | 2 | ||||
| -rw-r--r-- | pkg/server/socket/listen.go | 2 | ||||
| -rw-r--r-- | pkg/server/socket/loop.go | 2 | ||||
| -rw-r--r-- | pkg/server/socket/proxy.go | 2 | ||||
| -rw-r--r-- | pkg/server/socket/socket.go | 31 | ||||
| -rw-r--r-- | pkg/server/socket/tun.go | 2 |
7 files changed, 33 insertions, 12 deletions
diff --git a/pkg/server/socket/defer.go b/pkg/server/socket/defer.go index 7c1436e..d63d51e 100644 --- a/pkg/server/socket/defer.go +++ b/pkg/server/socket/defer.go @@ -6,7 +6,7 @@ import ( ) type deferSocket struct { - dialSocket `opts:"inline"` + dialSocket } type deferConn struct { @@ -76,5 +76,5 @@ func (c *deferConn) Close() (err error) { } func init() { - register("defer", deferSocket{}) + register("defer", "deferred 'dial' after first sending", deferSocket{}) } diff --git a/pkg/server/socket/dial.go b/pkg/server/socket/dial.go index b2df3b7..a31e192 100644 --- a/pkg/server/socket/dial.go +++ b/pkg/server/socket/dial.go @@ -40,5 +40,5 @@ func (s *dialSocket) Close() { } func init() { - register("dial", dialSocket{}) + register("dial", "connect to the network address", dialSocket{}) } diff --git a/pkg/server/socket/listen.go b/pkg/server/socket/listen.go index 2c2f184..9d19677 100644 --- a/pkg/server/socket/listen.go +++ b/pkg/server/socket/listen.go @@ -96,5 +96,5 @@ func (s *listenSocket) Close() { } func init() { - register("listen", listenSocket{}) + register("listen", "accept connections on the local network address", listenSocket{}) } diff --git a/pkg/server/socket/loop.go b/pkg/server/socket/loop.go index c442140..1c45067 100644 --- a/pkg/server/socket/loop.go +++ b/pkg/server/socket/loop.go @@ -42,5 +42,5 @@ func (s *loopSocket) Close() { } func init() { - register("loop", loopSocket{}) + register("loop", "send data back", loopSocket{}) } diff --git a/pkg/server/socket/proxy.go b/pkg/server/socket/proxy.go index 1be4bba..c46d1c1 100644 --- a/pkg/server/socket/proxy.go +++ b/pkg/server/socket/proxy.go @@ -137,5 +137,5 @@ func (s *proxyServer) Close() (err error) { } func init() { - register("proxy", proxySocket{}) + register("proxy", "http connect proxy server", proxySocket{}) } diff --git a/pkg/server/socket/socket.go b/pkg/server/socket/socket.go index 03b73d9..ea35be3 100644 --- a/pkg/server/socket/socket.go +++ b/pkg/server/socket/socket.go @@ -72,12 +72,12 @@ func (c *conn) Close() error { func New(desc string, e env.Env) (S, error) { name, opts := opts.Parse(desc) - t, ok := sockets[name] + sockType, ok := sockets[name] if !ok { return nil, fmt.Errorf("%s: unknown type", name) } - s := reflect.New(t).Interface() + s := reflect.New(sockType.t).Interface() if err := opts.Configure(s); err != nil { return nil, fmt.Errorf("%s: %w", name, err) } @@ -101,9 +101,18 @@ func parseProtoAddr(proto, addr string) (string, string) { return proto, addr } -var sockets = map[string]reflect.Type{} +type Type struct { + Desc string + Name string -func register(name string, i interface{}) { + Param []opts.Param + + t reflect.Type +} + +var sockets = map[string]*Type{} + +func register(name string, desc string, i interface{}) { t := reflect.TypeOf(i) if t.Kind() != reflect.Struct { log.Panicf("non-struct type '%s'", t.String()) @@ -114,7 +123,15 @@ func register(name string, i interface{}) { if _, ok := sockets[name]; ok { log.Panicf("duplicate socket name '%s'", name) } - sockets[name] = t + + sockets[name] = &Type{ + Desc: desc, + Name: name, + + Param: opts.Parametrize(t), + + t: t, + } } func GetList() []string { @@ -128,3 +145,7 @@ func GetList() []string { return list } + +func GetType(name string) *Type { + return sockets[name] +} diff --git a/pkg/server/socket/tun.go b/pkg/server/socket/tun.go index 3e673eb..61a30f0 100644 --- a/pkg/server/socket/tun.go +++ b/pkg/server/socket/tun.go @@ -122,5 +122,5 @@ func (c *tunConn) Close() error { } func init() { - register("tun", tunSocket{}) + register("tun", "tun device", tunSocket{}) } |
