summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/client/client.go4
-rw-r--r--pkg/config/config.go29
-rw-r--r--pkg/server/server.go6
-rw-r--r--pkg/server/socket/socket.go2
4 files changed, 32 insertions, 9 deletions
diff --git a/pkg/client/client.go b/pkg/client/client.go
index 1264853..29d956e 100644
--- a/pkg/client/client.go
+++ b/pkg/client/client.go
@@ -16,8 +16,8 @@ type Client struct {
conn net.Conn
}
-func New() (*Client, error) {
- conn, err := net.Dial(config.SockType, config.SockPath)
+func New(path string) (*Client, error) {
+ conn, err := net.Dial("unixpacket", path)
if err != nil {
return nil, err
}
diff --git a/pkg/config/config.go b/pkg/config/config.go
index fb09ad0..5483192 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -1,12 +1,33 @@
package config
-import "time"
-
-const SockType = "unixpacket"
-const SockPath = "/tmp/tunnel.sock"
+import (
+ "errors"
+ "fmt"
+ "os"
+ "time"
+)
const TimeFormat = "2006-01-02/15:04:05"
const BufSize = 1024
const IoTimeout = 5 * time.Second
+
+var errNegativeUid = errors.New("negative uid")
+
+func GetSystemSocketPath() (string, error) {
+ return "/run/tunnel/socket", nil
+}
+
+func GetSocketPath() (string, error) {
+ uid := os.Getuid()
+
+ switch uid {
+ case -1:
+ return "", errNegativeUid
+ case 0:
+ return GetSystemSocketPath()
+ }
+
+ return fmt.Sprintf("/run/user/%d/tunnel/socket", uid), nil
+}
diff --git a/pkg/server/server.go b/pkg/server/server.go
index 571397f..a9a50a4 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -126,12 +126,14 @@ func (s *Server) isDone() bool {
}
}
-func New() (*Server, error) {
- listen, err := net.Listen(config.SockType, config.SockPath)
+func New(path string) (*Server, error) {
+ listen, err := net.Listen("unixpacket", path)
if err != nil {
return nil, err
}
+ log.Println("listen at", path)
+
s := &Server{
env: env.New(),
listen: listen,
diff --git a/pkg/server/socket/socket.go b/pkg/server/socket/socket.go
index 3db4310..c91423e 100644
--- a/pkg/server/socket/socket.go
+++ b/pkg/server/socket/socket.go
@@ -141,7 +141,7 @@ func (s *dialSocket) Close() {
func New(desc string, env env.Env) (S, error) {
base, opts := opts.Parse(desc)
- args := strings.Split(base, "/")
+ args := strings.SplitN(base, "/", 2)
var proto string
var addr string