summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/binder.go32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/binder.go b/src/binder.go
index b115c52..69b5e1b 100644
--- a/src/binder.go
+++ b/src/binder.go
@@ -1,8 +1,8 @@
package binder
import (
- "io"
"fmt"
+ "io"
"net"
"os"
"os/user"
@@ -57,6 +57,15 @@ func isRunningAsRoot() bool {
return os.Geteuid() == 0
}
+func dropRoot() {
+ if isRunningAsRoot() {
+ dropPrivileges(_USER)
+ if isRunningAsRoot() {
+ panic("Failed to drop privileges")
+ }
+ }
+}
+
func parseArgs(args []string) _CLIArgs {
if len(args) != 3 {
fmt.Fprintf(
@@ -79,21 +88,12 @@ func listen(fromAddr string) net.Listener {
return listener
}
-func dropRoot() {
- if isRunningAsRoot() {
- dropPrivileges(_USER)
- if isRunningAsRoot() {
- panic("Failed to drop privileges")
- }
- }
-}
-
-func copyData(c chan struct{}, from io.Reader, to io.WriteCloser) {
+func copyData(c chan struct {}, from io.Reader, to io.WriteCloser) {
io.Copy(to, from)
- c <- struct{}{}
+ c <- struct {} {}
}
-func Start(toAddr string, listener net.Listener) {
+func start(toAddr string, listener net.Listener) {
for {
connFrom, err := listener.Accept()
if err != nil {
@@ -114,12 +114,11 @@ func Start(toAddr string, listener net.Listener) {
"dial-connection-error",
"err", err,
)
- connFrom.Close()
continue
}
defer connTo.Close()
- c := make(chan struct{})
+ c := make(chan struct {})
go copyData(c, connFrom, connTo)
go copyData(c, connTo, connFrom)
go func() {
@@ -130,10 +129,11 @@ func Start(toAddr string, listener net.Listener) {
}
+
func Main() {
g.Init()
args := parseArgs(os.Args)
listener := listen(args.fromAddr)
dropRoot()
- Start(args.toAddr, listener)
+ start(args.toAddr, listener)
}