mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-12-24 11:51:13 +08:00
using logrus log
This commit is contained in:
24
core/log.go
24
core/log.go
@@ -1,24 +0,0 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
||||
func init() {
|
||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||
}
|
||||
|
||||
// LogLogger uses the standard log package as the logger
|
||||
type LogLogger struct {
|
||||
}
|
||||
|
||||
// Log uses the standard log library log.Output
|
||||
func (l *LogLogger) Log(v ...interface{}) {
|
||||
log.Output(3, fmt.Sprintln(v...))
|
||||
}
|
||||
|
||||
// Logf uses the standard log library log.Output
|
||||
func (l *LogLogger) Logf(format string, v ...interface{}) {
|
||||
log.Output(3, fmt.Sprintf(format, v...))
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/go-log/log"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// Server is a proxy server.
|
||||
@@ -55,7 +55,7 @@ func (s *Server) Serve(ctx context.Context, h Handler) error {
|
||||
if max := 1 * time.Second; tempDelay > max {
|
||||
tempDelay = max
|
||||
}
|
||||
log.Logf("server: Accept error: %v; retrying in %v", e, tempDelay)
|
||||
log.Warnf("server: Accept error: %v; retrying in %v", e, tempDelay)
|
||||
time.Sleep(tempDelay)
|
||||
continue
|
||||
}
|
||||
|
||||
144
core/socks.go
144
core/socks.go
@@ -12,7 +12,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/ginuerzh/gosocks5"
|
||||
"github.com/go-log/log"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type clientSelector struct {
|
||||
@@ -22,7 +22,7 @@ type clientSelector struct {
|
||||
|
||||
func (selector *clientSelector) Methods() []uint8 {
|
||||
if util.Debug {
|
||||
log.Log("[socks5] methods:", selector.methods)
|
||||
log.Debug("[socks5] methods:", selector.methods)
|
||||
}
|
||||
return selector.methods
|
||||
}
|
||||
@@ -37,7 +37,7 @@ func (selector *clientSelector) Select(methods ...uint8) (method uint8) {
|
||||
|
||||
func (selector *clientSelector) OnSelected(method uint8, conn net.Conn) (net.Conn, error) {
|
||||
if util.Debug {
|
||||
log.Log("[socks5] method selected:", method)
|
||||
log.Debug("[socks5] method selected:", method)
|
||||
}
|
||||
switch method {
|
||||
case gosocks5.MethodUserPass:
|
||||
@@ -49,19 +49,19 @@ func (selector *clientSelector) OnSelected(method uint8, conn net.Conn) (net.Con
|
||||
|
||||
req := gosocks5.NewUserPassRequest(gosocks5.UserPassVer, username, password)
|
||||
if err := req.Write(conn); err != nil {
|
||||
log.Log("[socks5]", err)
|
||||
log.Debug("[socks5]", err)
|
||||
return nil, err
|
||||
}
|
||||
if util.Debug {
|
||||
log.Log("[socks5]", req)
|
||||
log.Debug("[socks5]", req)
|
||||
}
|
||||
resp, err := gosocks5.ReadUserPassResponse(conn)
|
||||
if err != nil {
|
||||
log.Log("[socks5]", err)
|
||||
log.Debug("[socks5]", err)
|
||||
return nil, err
|
||||
}
|
||||
if util.Debug {
|
||||
log.Log("[socks5]", resp)
|
||||
log.Debug("[socks5]", resp)
|
||||
}
|
||||
if resp.Status != gosocks5.Succeeded {
|
||||
return nil, gosocks5.ErrAuthFailure
|
||||
@@ -89,7 +89,7 @@ func (selector *serverSelector) AddMethod(methods ...uint8) {
|
||||
|
||||
func (selector *serverSelector) Select(methods ...uint8) (method uint8) {
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] %d %d %v", gosocks5.Ver5, len(methods), methods)
|
||||
log.Debugf("[socks5] %d %d %v", gosocks5.Ver5, len(methods), methods)
|
||||
}
|
||||
method = gosocks5.MethodNoAuth
|
||||
// when Authenticator is set, auth is mandatory
|
||||
@@ -104,39 +104,39 @@ func (selector *serverSelector) Select(methods ...uint8) (method uint8) {
|
||||
|
||||
func (selector *serverSelector) OnSelected(method uint8, conn net.Conn) (net.Conn, error) {
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] %d %d", gosocks5.Ver5, method)
|
||||
log.Debugf("[socks5] %d %d", gosocks5.Ver5, method)
|
||||
}
|
||||
switch method {
|
||||
case gosocks5.MethodUserPass:
|
||||
req, err := gosocks5.ReadUserPassRequest(conn)
|
||||
if err != nil {
|
||||
log.Logf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
log.Debugf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
return nil, err
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), req.String())
|
||||
log.Debugf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), req.String())
|
||||
}
|
||||
|
||||
if selector.Authenticator != nil && !selector.Authenticator.Authenticate(req.Username, req.Password) {
|
||||
resp := gosocks5.NewUserPassResponse(gosocks5.UserPassVer, gosocks5.Failure)
|
||||
if err := resp.Write(conn); err != nil {
|
||||
log.Logf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
log.Debugf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
return nil, err
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), resp)
|
||||
log.Debugf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), resp)
|
||||
}
|
||||
log.Logf("[socks5] %s - %s: proxy authentication required", conn.RemoteAddr(), conn.LocalAddr())
|
||||
log.Debugf("[socks5] %s - %s: proxy authentication required", conn.RemoteAddr(), conn.LocalAddr())
|
||||
return nil, gosocks5.ErrAuthFailure
|
||||
}
|
||||
|
||||
resp := gosocks5.NewUserPassResponse(gosocks5.UserPassVer, gosocks5.Succeeded)
|
||||
if err := resp.Write(conn); err != nil {
|
||||
log.Logf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
log.Debugf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
return nil, err
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), resp)
|
||||
log.Debugf("[socks5] %s - %s: %s", conn.RemoteAddr(), conn.LocalAddr(), resp)
|
||||
}
|
||||
case gosocks5.MethodNoAcceptable:
|
||||
return nil, gosocks5.ErrBadMethod
|
||||
@@ -192,7 +192,7 @@ func (c *socks5Connector) ConnectContext(ctx context.Context, conn net.Conn, net
|
||||
}
|
||||
|
||||
if util.Debug {
|
||||
log.Log("[socks5]", req)
|
||||
log.Debug("[socks5]", req)
|
||||
}
|
||||
|
||||
reply, err := gosocks5.ReadReply(conn)
|
||||
@@ -201,7 +201,7 @@ func (c *socks5Connector) ConnectContext(ctx context.Context, conn net.Conn, net
|
||||
}
|
||||
|
||||
if util.Debug {
|
||||
log.Log("[socks5]", reply)
|
||||
log.Debug("[socks5]", reply)
|
||||
}
|
||||
|
||||
if reply.Rep != gosocks5.Succeeded {
|
||||
@@ -272,13 +272,13 @@ func (h *socks5Handler) Handle(conn net.Conn) {
|
||||
conn = gosocks5.ServerConn(conn, h.selector)
|
||||
req, err := gosocks5.ReadRequest(conn)
|
||||
if err != nil {
|
||||
log.Logf("[socks5] %s -> %s : %s",
|
||||
log.Debugf("[socks5] %s -> %s : %s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
return
|
||||
}
|
||||
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] %s -> %s\n%s",
|
||||
log.Debugf("[socks5] %s -> %s\n%s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), req)
|
||||
}
|
||||
switch req.Cmd {
|
||||
@@ -292,7 +292,7 @@ func (h *socks5Handler) Handle(conn net.Conn) {
|
||||
h.handleUDPTunnel(conn, req)
|
||||
|
||||
default:
|
||||
log.Logf("[socks5] %s - %s : Unrecognized request: %d",
|
||||
log.Debugf("[socks5] %s - %s : Unrecognized request: %d",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), req.Cmd)
|
||||
}
|
||||
}
|
||||
@@ -300,7 +300,7 @@ func (h *socks5Handler) Handle(conn net.Conn) {
|
||||
func (h *socks5Handler) handleConnect(conn net.Conn, req *gosocks5.Request) {
|
||||
host := req.Addr.String()
|
||||
|
||||
log.Logf("[socks5] %s -> %s -> %s",
|
||||
log.Debugf("[socks5] %s -> %s -> %s",
|
||||
conn.RemoteAddr(), h.options.Node.String(), host)
|
||||
|
||||
retries := 1
|
||||
@@ -314,7 +314,7 @@ func (h *socks5Handler) handleConnect(conn net.Conn, req *gosocks5.Request) {
|
||||
for i := 0; i < retries; i++ {
|
||||
route, err = h.options.Chain.selectRouteFor(host)
|
||||
if err != nil {
|
||||
log.Logf("[socks5] %s -> %s : %s",
|
||||
log.Debugf("[socks5] %s -> %s : %s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
continue
|
||||
}
|
||||
@@ -326,13 +326,13 @@ func (h *socks5Handler) handleConnect(conn net.Conn, req *gosocks5.Request) {
|
||||
fmt.Fprintf(&buf, "%s -> ", nd.String())
|
||||
}
|
||||
fmt.Fprintf(&buf, "%s", host)
|
||||
log.Log("[route]", buf.String())
|
||||
log.Debug("[route]", buf.String())
|
||||
|
||||
cc, err = route.DialContext(context.Background(), "tcp", host)
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
log.Logf("[socks5] %s -> %s : %s",
|
||||
log.Debugf("[socks5] %s -> %s : %s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ func (h *socks5Handler) handleConnect(conn net.Conn, req *gosocks5.Request) {
|
||||
rep := gosocks5.NewReply(gosocks5.HostUnreachable, nil)
|
||||
rep.Write(conn)
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] %s <- %s\n%s",
|
||||
log.Debugf("[socks5] %s <- %s\n%s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), rep)
|
||||
}
|
||||
return
|
||||
@@ -349,23 +349,23 @@ func (h *socks5Handler) handleConnect(conn net.Conn, req *gosocks5.Request) {
|
||||
|
||||
rep := gosocks5.NewReply(gosocks5.Succeeded, nil)
|
||||
if err := rep.Write(conn); err != nil {
|
||||
log.Logf("[socks5] %s <- %s : %s",
|
||||
log.Debugf("[socks5] %s <- %s : %s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] %s <- %s\n%s",
|
||||
log.Debugf("[socks5] %s <- %s\n%s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), rep)
|
||||
}
|
||||
log.Logf("[socks5] %s <-> %s", conn.RemoteAddr(), host)
|
||||
log.Debugf("[socks5] %s <-> %s", conn.RemoteAddr(), host)
|
||||
transport(conn, cc)
|
||||
log.Logf("[socks5] %s >-< %s", conn.RemoteAddr(), host)
|
||||
log.Debugf("[socks5] %s >-< %s", conn.RemoteAddr(), host)
|
||||
}
|
||||
|
||||
func (h *socks5Handler) handleBind(conn net.Conn, req *gosocks5.Request) {
|
||||
addr := req.Addr.String()
|
||||
|
||||
log.Logf("[socks5-bind] %s -> %s -> %s",
|
||||
log.Debugf("[socks5-bind] %s -> %s -> %s",
|
||||
conn.RemoteAddr(), h.options.Node.String(), addr)
|
||||
|
||||
if h.options.Chain.IsEmpty() {
|
||||
@@ -375,12 +375,12 @@ func (h *socks5Handler) handleBind(conn net.Conn, req *gosocks5.Request) {
|
||||
|
||||
cc, err := h.options.Chain.Conn()
|
||||
if err != nil {
|
||||
log.Logf("[socks5-bind] %s <- %s : %s",
|
||||
log.Debugf("[socks5-bind] %s <- %s : %s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
reply := gosocks5.NewReply(gosocks5.Failure, nil)
|
||||
reply.Write(conn)
|
||||
if util.Debug {
|
||||
log.Logf("[socks5-bind] %s <- %s\n%s",
|
||||
log.Debugf("[socks5-bind] %s <- %s\n%s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), reply)
|
||||
}
|
||||
return
|
||||
@@ -391,16 +391,16 @@ func (h *socks5Handler) handleBind(conn net.Conn, req *gosocks5.Request) {
|
||||
// so we don't need to authenticate it, as it's as explicit as whitelisting
|
||||
defer cc.Close()
|
||||
req.Write(cc)
|
||||
log.Logf("[socks5-bind] %s <-> %s", conn.RemoteAddr(), addr)
|
||||
log.Debugf("[socks5-bind] %s <-> %s", conn.RemoteAddr(), addr)
|
||||
transport(conn, cc)
|
||||
log.Logf("[socks5-bind] %s >-< %s", conn.RemoteAddr(), addr)
|
||||
log.Debugf("[socks5-bind] %s >-< %s", conn.RemoteAddr(), addr)
|
||||
}
|
||||
|
||||
func (h *socks5Handler) bindOn(conn net.Conn, addr string) {
|
||||
bindAddr, _ := net.ResolveTCPAddr("tcp", addr)
|
||||
ln, err := net.ListenTCP("tcp", bindAddr) // strict mode: if the port already in use, it will return error
|
||||
if err != nil {
|
||||
log.Logf("[socks5-bind] %s -> %s : %s",
|
||||
log.Debugf("[socks5-bind] %s -> %s : %s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
gosocks5.NewReply(gosocks5.Failure, nil).Write(conn)
|
||||
return
|
||||
@@ -411,16 +411,16 @@ func (h *socks5Handler) bindOn(conn net.Conn, addr string) {
|
||||
socksAddr.Host, _, _ = net.SplitHostPort(conn.LocalAddr().String())
|
||||
reply := gosocks5.NewReply(gosocks5.Succeeded, socksAddr)
|
||||
if err := reply.Write(conn); err != nil {
|
||||
log.Logf("[socks5-bind] %s <- %s : %s",
|
||||
log.Debugf("[socks5-bind] %s <- %s : %s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), err)
|
||||
ln.Close()
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5-bind] %s <- %s\n%s",
|
||||
log.Debugf("[socks5-bind] %s <- %s\n%s",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), reply)
|
||||
}
|
||||
log.Logf("[socks5-bind] %s - %s BIND ON %s OK",
|
||||
log.Debugf("[socks5-bind] %s - %s BIND ON %s OK",
|
||||
conn.RemoteAddr(), conn.LocalAddr(), socksAddr)
|
||||
|
||||
var pconn net.Conn
|
||||
@@ -462,29 +462,29 @@ func (h *socks5Handler) bindOn(conn net.Conn, addr string) {
|
||||
select {
|
||||
case err := <-accept():
|
||||
if err != nil || pconn == nil {
|
||||
log.Logf("[socks5-bind] %s <- %s : %v", conn.RemoteAddr(), addr, err)
|
||||
log.Debugf("[socks5-bind] %s <- %s : %v", conn.RemoteAddr(), addr, err)
|
||||
return
|
||||
}
|
||||
defer pconn.Close()
|
||||
|
||||
reply := gosocks5.NewReply(gosocks5.Succeeded, toSocksAddr(pconn.RemoteAddr()))
|
||||
if err := reply.Write(pc2); err != nil {
|
||||
log.Logf("[socks5-bind] %s <- %s : %v", conn.RemoteAddr(), addr, err)
|
||||
log.Debugf("[socks5-bind] %s <- %s : %v", conn.RemoteAddr(), addr, err)
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5-bind] %s <- %s\n%s", conn.RemoteAddr(), addr, reply)
|
||||
log.Debugf("[socks5-bind] %s <- %s\n%s", conn.RemoteAddr(), addr, reply)
|
||||
}
|
||||
log.Logf("[socks5-bind] %s <- %s PEER %s ACCEPTED", conn.RemoteAddr(), socksAddr, pconn.RemoteAddr())
|
||||
log.Debugf("[socks5-bind] %s <- %s PEER %s ACCEPTED", conn.RemoteAddr(), socksAddr, pconn.RemoteAddr())
|
||||
|
||||
log.Logf("[socks5-bind] %s <-> %s", conn.RemoteAddr(), pconn.RemoteAddr())
|
||||
log.Debugf("[socks5-bind] %s <-> %s", conn.RemoteAddr(), pconn.RemoteAddr())
|
||||
if err = transport(pc2, pconn); err != nil {
|
||||
log.Logf("[socks5-bind] %s - %s : %v", conn.RemoteAddr(), pconn.RemoteAddr(), err)
|
||||
log.Debugf("[socks5-bind] %s - %s : %v", conn.RemoteAddr(), pconn.RemoteAddr(), err)
|
||||
}
|
||||
log.Logf("[socks5-bind] %s >-< %s", conn.RemoteAddr(), pconn.RemoteAddr())
|
||||
log.Debugf("[socks5-bind] %s >-< %s", conn.RemoteAddr(), pconn.RemoteAddr())
|
||||
return
|
||||
case err := <-pipe():
|
||||
if err != nil {
|
||||
log.Logf("[socks5-bind] %s -> %s : %v", conn.RemoteAddr(), addr, err)
|
||||
log.Debugf("[socks5-bind] %s -> %s : %v", conn.RemoteAddr(), addr, err)
|
||||
}
|
||||
ln.Close()
|
||||
return
|
||||
@@ -525,7 +525,7 @@ func (h *socks5Handler) transportUDP(relay, peer net.PacketConn) (err error) {
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5-udp] %s >>> %s length: %d", relay.LocalAddr(), raddr, len(dgram.Data))
|
||||
log.Debugf("[socks5-udp] %s >>> %s length: %d", relay.LocalAddr(), raddr, len(dgram.Data))
|
||||
}
|
||||
}
|
||||
}()
|
||||
@@ -551,7 +551,7 @@ func (h *socks5Handler) transportUDP(relay, peer net.PacketConn) (err error) {
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5-udp] %s <<< %s length: %d", relay.LocalAddr(), raddr, len(dgram.Data))
|
||||
log.Debugf("[socks5-udp] %s <<< %s length: %d", relay.LocalAddr(), raddr, len(dgram.Data))
|
||||
}
|
||||
}
|
||||
}()
|
||||
@@ -576,7 +576,7 @@ func (h *socks5Handler) tunnelClientUDP(uc *net.UDPConn, cc net.Conn) (err error
|
||||
for {
|
||||
n, addr, err := uc.ReadFromUDP(b)
|
||||
if err != nil {
|
||||
log.Logf("[udp-tun] %s <- %s : %s", cc.RemoteAddr(), addr, err)
|
||||
log.Debugf("[udp-tun] %s <- %s : %s", cc.RemoteAddr(), addr, err)
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
@@ -598,7 +598,7 @@ func (h *socks5Handler) tunnelClientUDP(uc *net.UDPConn, cc net.Conn) (err error
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[udp-tun] %s >>> %s length: %d", uc.LocalAddr(), dgram.Header.Addr, len(dgram.Data))
|
||||
log.Debugf("[udp-tun] %s >>> %s length: %d", uc.LocalAddr(), dgram.Header.Addr, len(dgram.Data))
|
||||
}
|
||||
}
|
||||
}()
|
||||
@@ -607,7 +607,7 @@ func (h *socks5Handler) tunnelClientUDP(uc *net.UDPConn, cc net.Conn) (err error
|
||||
for {
|
||||
dgram, err := gosocks5.ReadUDPDatagram(cc)
|
||||
if err != nil {
|
||||
log.Logf("[udp-tun] %s -> 0 : %s", cc.RemoteAddr(), err)
|
||||
log.Debugf("[udp-tun] %s -> 0 : %s", cc.RemoteAddr(), err)
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
@@ -626,7 +626,7 @@ func (h *socks5Handler) tunnelClientUDP(uc *net.UDPConn, cc net.Conn) (err error
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[udp-tun] %s <<< %s length: %d", uc.LocalAddr(), dgram.Header.Addr, len(dgram.Data))
|
||||
log.Debugf("[udp-tun] %s <<< %s length: %d", uc.LocalAddr(), dgram.Header.Addr, len(dgram.Data))
|
||||
}
|
||||
}
|
||||
}()
|
||||
@@ -646,7 +646,7 @@ func (h *socks5Handler) handleUDPTunnel(conn net.Conn, req *gosocks5.Request) {
|
||||
bindAddr, _ := net.ResolveUDPAddr("udp", addr)
|
||||
uc, err := net.ListenUDP("udp", bindAddr)
|
||||
if err != nil {
|
||||
log.Logf("[socks5] udp-tun %s -> %s : %s", conn.RemoteAddr(), req.Addr, err)
|
||||
log.Debugf("[socks5] udp-tun %s -> %s : %s", conn.RemoteAddr(), req.Addr, err)
|
||||
return
|
||||
}
|
||||
defer uc.Close()
|
||||
@@ -655,32 +655,32 @@ func (h *socks5Handler) handleUDPTunnel(conn net.Conn, req *gosocks5.Request) {
|
||||
socksAddr.Host, _, _ = net.SplitHostPort(conn.LocalAddr().String())
|
||||
reply := gosocks5.NewReply(gosocks5.Succeeded, socksAddr)
|
||||
if err := reply.Write(conn); err != nil {
|
||||
log.Logf("[socks5] udp-tun %s <- %s : %s", conn.RemoteAddr(), socksAddr, err)
|
||||
log.Debugf("[socks5] udp-tun %s <- %s : %s", conn.RemoteAddr(), socksAddr, err)
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] udp-tun %s <- %s\n%s", conn.RemoteAddr(), socksAddr, reply)
|
||||
log.Debugf("[socks5] udp-tun %s <- %s\n%s", conn.RemoteAddr(), socksAddr, reply)
|
||||
}
|
||||
log.Logf("[socks5] udp-tun %s <-> %s", conn.RemoteAddr(), socksAddr)
|
||||
log.Debugf("[socks5] udp-tun %s <-> %s", conn.RemoteAddr(), socksAddr)
|
||||
h.tunnelServerUDP(conn, uc)
|
||||
log.Logf("[socks5] udp-tun %s >-< %s", conn.RemoteAddr(), socksAddr)
|
||||
log.Debugf("[socks5] udp-tun %s >-< %s", conn.RemoteAddr(), socksAddr)
|
||||
return
|
||||
}
|
||||
|
||||
cc, err := h.options.Chain.Conn()
|
||||
// connection error
|
||||
if err != nil {
|
||||
log.Logf("[socks5] udp-tun %s -> %s : %s", conn.RemoteAddr(), req.Addr, err)
|
||||
log.Debugf("[socks5] udp-tun %s -> %s : %s", conn.RemoteAddr(), req.Addr, err)
|
||||
reply := gosocks5.NewReply(gosocks5.Failure, nil)
|
||||
reply.Write(conn)
|
||||
log.Logf("[socks5] udp-tun %s -> %s\n%s", conn.RemoteAddr(), req.Addr, reply)
|
||||
log.Debugf("[socks5] udp-tun %s -> %s\n%s", conn.RemoteAddr(), req.Addr, reply)
|
||||
return
|
||||
}
|
||||
defer cc.Close()
|
||||
|
||||
cc, err = socks5Handshake(cc, userSocks5HandshakeOption(h.options.Chain.LastNode().User))
|
||||
if err != nil {
|
||||
log.Logf("[socks5] udp-tun %s -> %s : %s", conn.RemoteAddr(), req.Addr, err)
|
||||
log.Debugf("[socks5] udp-tun %s -> %s : %s", conn.RemoteAddr(), req.Addr, err)
|
||||
return
|
||||
}
|
||||
// tunnel <-> tunnel, direct forwarding
|
||||
@@ -688,9 +688,9 @@ func (h *socks5Handler) handleUDPTunnel(conn net.Conn, req *gosocks5.Request) {
|
||||
// so we don't need to authenticate it, as it's as explicit as whitelisting
|
||||
req.Write(cc)
|
||||
|
||||
log.Logf("[socks5] udp-tun %s <-> %s", conn.RemoteAddr(), cc.RemoteAddr())
|
||||
log.Debugf("[socks5] udp-tun %s <-> %s", conn.RemoteAddr(), cc.RemoteAddr())
|
||||
transport(conn, cc)
|
||||
log.Logf("[socks5] udp-tun %s >-< %s", conn.RemoteAddr(), cc.RemoteAddr())
|
||||
log.Debugf("[socks5] udp-tun %s >-< %s", conn.RemoteAddr(), cc.RemoteAddr())
|
||||
}
|
||||
|
||||
func (h *socks5Handler) tunnelServerUDP(cc net.Conn, pc net.PacketConn) (err error) {
|
||||
@@ -703,7 +703,7 @@ func (h *socks5Handler) tunnelServerUDP(cc net.Conn, pc net.PacketConn) (err err
|
||||
for {
|
||||
n, addr, err := pc.ReadFrom(b)
|
||||
if err != nil {
|
||||
// log.Logf("[udp-tun] %s : %s", cc.RemoteAddr(), err)
|
||||
// log.Debugf("[udp-tun] %s : %s", cc.RemoteAddr(), err)
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
@@ -712,12 +712,12 @@ func (h *socks5Handler) tunnelServerUDP(cc net.Conn, pc net.PacketConn) (err err
|
||||
dgram := gosocks5.NewUDPDatagram(
|
||||
gosocks5.NewUDPHeader(uint16(n), 0, toSocksAddr(addr)), b[:n])
|
||||
if err := dgram.Write(cc); err != nil {
|
||||
log.Logf("[socks5] udp-tun %s <- %s : %s", cc.RemoteAddr(), dgram.Header.Addr, err)
|
||||
log.Debugf("[socks5] udp-tun %s <- %s : %s", cc.RemoteAddr(), dgram.Header.Addr, err)
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] udp-tun %s <<< %s length: %d", cc.RemoteAddr(), dgram.Header.Addr, len(dgram.Data))
|
||||
log.Debugf("[socks5] udp-tun %s <<< %s length: %d", cc.RemoteAddr(), dgram.Header.Addr, len(dgram.Data))
|
||||
}
|
||||
}
|
||||
}()
|
||||
@@ -726,7 +726,7 @@ func (h *socks5Handler) tunnelServerUDP(cc net.Conn, pc net.PacketConn) (err err
|
||||
for {
|
||||
dgram, err := gosocks5.ReadUDPDatagram(cc)
|
||||
if err != nil {
|
||||
// log.Logf("[udp-tun] %s -> 0 : %s", cc.RemoteAddr(), err)
|
||||
// log.Debugf("[udp-tun] %s -> 0 : %s", cc.RemoteAddr(), err)
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
@@ -737,12 +737,12 @@ func (h *socks5Handler) tunnelServerUDP(cc net.Conn, pc net.PacketConn) (err err
|
||||
continue // drop silently
|
||||
}
|
||||
if _, err := pc.WriteTo(dgram.Data, addr); err != nil {
|
||||
log.Logf("[socks5] udp-tun %s -> %s : %s", cc.RemoteAddr(), addr, err)
|
||||
log.Debugf("[socks5] udp-tun %s -> %s : %s", cc.RemoteAddr(), addr, err)
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[socks5] udp-tun %s >>> %s length: %d", cc.RemoteAddr(), addr, len(dgram.Data))
|
||||
log.Debugf("[socks5] udp-tun %s >>> %s length: %d", cc.RemoteAddr(), addr, len(dgram.Data))
|
||||
}
|
||||
}
|
||||
}()
|
||||
@@ -829,7 +829,7 @@ func newSocks5UDPTunnelConn(conn net.Conn, raddr, taddr net.Addr, opts ...socks5
|
||||
return nil, err
|
||||
}
|
||||
if util.Debug {
|
||||
log.Log("[socks5] udp-tun", req)
|
||||
log.Debug("[socks5] udp-tun", req)
|
||||
}
|
||||
|
||||
reply, err := gosocks5.ReadReply(cc)
|
||||
@@ -838,7 +838,7 @@ func newSocks5UDPTunnelConn(conn net.Conn, raddr, taddr net.Addr, opts ...socks5
|
||||
}
|
||||
|
||||
if util.Debug {
|
||||
log.Log("[socks5] udp-tun", reply)
|
||||
log.Debug("[socks5] udp-tun", reply)
|
||||
}
|
||||
|
||||
if reply.Rep != gosocks5.Succeeded {
|
||||
@@ -849,7 +849,7 @@ func newSocks5UDPTunnelConn(conn net.Conn, raddr, taddr net.Addr, opts ...socks5
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
log.Logf("[socks5] udp-tun associate on %s OK", baddr)
|
||||
log.Debugf("[socks5] udp-tun associate on %s OK", baddr)
|
||||
|
||||
return &socks5UDPTunnelConn{
|
||||
Conn: cc,
|
||||
|
||||
@@ -11,9 +11,9 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/go-log/log"
|
||||
"github.com/shadowsocks/go-shadowsocks2/core"
|
||||
"github.com/shadowsocks/go-shadowsocks2/shadowaead"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/songgao/water/waterutil"
|
||||
"golang.org/x/net/ipv4"
|
||||
"golang.org/x/net/ipv6"
|
||||
@@ -82,7 +82,7 @@ func (h *tunHandler) Handle(conn net.Conn) {
|
||||
if addr := h.options.Node.Remote; addr != "" {
|
||||
raddr, err = net.ResolveUDPAddr("udp", addr)
|
||||
if err != nil {
|
||||
log.Logf("[tun] %s: remote addr: %v", conn.LocalAddr(), err)
|
||||
log.Debugf("[tun] %s: remote addr: %v", conn.LocalAddr(), err)
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -102,7 +102,7 @@ func (h *tunHandler) Handle(conn net.Conn) {
|
||||
pc, ok = cc.(net.PacketConn)
|
||||
if !ok {
|
||||
err = errors.New("not a packet connection")
|
||||
log.Logf("[tun] %s - %s: %s", conn.LocalAddr(), raddr, err)
|
||||
log.Debugf("[tun] %s - %s: %s", conn.LocalAddr(), raddr, err)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
@@ -121,7 +121,7 @@ func (h *tunHandler) Handle(conn net.Conn) {
|
||||
return h.transportTun(conn, pc, raddr)
|
||||
}()
|
||||
if err != nil {
|
||||
log.Logf("[tun] %s: %v", conn.LocalAddr(), err)
|
||||
log.Debugf("[tun] %s: %v", conn.LocalAddr(), err)
|
||||
}
|
||||
|
||||
select {
|
||||
@@ -194,11 +194,11 @@ func (h *tunHandler) transportTun(tun net.Conn, conn net.PacketConn, raddr net.A
|
||||
if waterutil.IsIPv4(b[:n]) {
|
||||
header, err := ipv4.ParseHeader(b[:n])
|
||||
if err != nil {
|
||||
log.Logf("[tun] %s: %v", tun.LocalAddr(), err)
|
||||
log.Debugf("[tun] %s: %v", tun.LocalAddr(), err)
|
||||
return nil
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[tun] %s -> %s %-4s %d/%-4d %-4x %d",
|
||||
log.Debugf("[tun] %s -> %s %-4s %d/%-4d %-4x %d",
|
||||
header.Src, header.Dst, ipProtocol(waterutil.IPv4Protocol(b[:n])),
|
||||
header.Len, header.TotalLen, header.ID, header.Flags)
|
||||
}
|
||||
@@ -206,18 +206,18 @@ func (h *tunHandler) transportTun(tun net.Conn, conn net.PacketConn, raddr net.A
|
||||
} else if waterutil.IsIPv6(b[:n]) {
|
||||
header, err := ipv6.ParseHeader(b[:n])
|
||||
if err != nil {
|
||||
log.Logf("[tun] %s: %v", tun.LocalAddr(), err)
|
||||
log.Debugf("[tun] %s: %v", tun.LocalAddr(), err)
|
||||
return nil
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[tun] %s -> %s %s %d %d",
|
||||
log.Debugf("[tun] %s -> %s %s %d %d",
|
||||
header.Src, header.Dst,
|
||||
ipProtocol(waterutil.IPProtocol(header.NextHeader)),
|
||||
header.PayloadLen, header.TrafficClass)
|
||||
}
|
||||
src, dst = header.Src, header.Dst
|
||||
} else {
|
||||
log.Logf("[tun] unknown packet")
|
||||
log.Debugf("[tun] unknown packet")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -229,12 +229,12 @@ func (h *tunHandler) transportTun(tun net.Conn, conn net.PacketConn, raddr net.A
|
||||
|
||||
addr := h.findRouteFor(dst)
|
||||
if addr == nil {
|
||||
log.Logf("[tun] no route for %s -> %s", src, dst)
|
||||
log.Debugf("[tun] no route for %s -> %s", src, dst)
|
||||
return nil
|
||||
}
|
||||
|
||||
if util.Debug {
|
||||
log.Logf("[tun] find route: %s -> %s", dst, addr)
|
||||
log.Debugf("[tun] find route: %s -> %s", dst, addr)
|
||||
}
|
||||
if _, err := conn.WriteTo(b[:n], addr); err != nil {
|
||||
return err
|
||||
@@ -265,11 +265,11 @@ func (h *tunHandler) transportTun(tun net.Conn, conn net.PacketConn, raddr net.A
|
||||
if waterutil.IsIPv4(b[:n]) {
|
||||
header, err := ipv4.ParseHeader(b[:n])
|
||||
if err != nil {
|
||||
log.Logf("[tun] %s: %v", tun.LocalAddr(), err)
|
||||
log.Debugf("[tun] %s: %v", tun.LocalAddr(), err)
|
||||
return nil
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[tun] %s -> %s %-4s %d/%-4d %-4x %d",
|
||||
log.Debugf("[tun] %s -> %s %-4s %d/%-4d %-4x %d",
|
||||
header.Src, header.Dst, ipProtocol(waterutil.IPv4Protocol(b[:n])),
|
||||
header.Len, header.TotalLen, header.ID, header.Flags)
|
||||
}
|
||||
@@ -277,18 +277,18 @@ func (h *tunHandler) transportTun(tun net.Conn, conn net.PacketConn, raddr net.A
|
||||
} else if waterutil.IsIPv6(b[:n]) {
|
||||
header, err := ipv6.ParseHeader(b[:n])
|
||||
if err != nil {
|
||||
log.Logf("[tun] %s: %v", tun.LocalAddr(), err)
|
||||
log.Debugf("[tun] %s: %v", tun.LocalAddr(), err)
|
||||
return nil
|
||||
}
|
||||
if util.Debug {
|
||||
log.Logf("[tun] %s -> %s %s %d %d",
|
||||
log.Debugf("[tun] %s -> %s %s %d %d",
|
||||
header.Src, header.Dst,
|
||||
ipProtocol(waterutil.IPProtocol(header.NextHeader)),
|
||||
header.PayloadLen, header.TrafficClass)
|
||||
}
|
||||
src, dst = header.Src, header.Dst
|
||||
} else {
|
||||
log.Logf("[tun] unknown packet")
|
||||
log.Debugf("[tun] unknown packet")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -301,17 +301,17 @@ func (h *tunHandler) transportTun(tun net.Conn, conn net.PacketConn, raddr net.A
|
||||
rkey := ipToTunRouteKey(src)
|
||||
if actual, loaded := h.routes.LoadOrStore(rkey, addr); loaded {
|
||||
if actual.(net.Addr).String() != addr.String() {
|
||||
log.Logf("[tun] update route: %s -> %s (old %s)",
|
||||
log.Debugf("[tun] update route: %s -> %s (old %s)",
|
||||
src, addr, actual.(net.Addr))
|
||||
h.routes.Store(rkey, addr)
|
||||
}
|
||||
} else {
|
||||
log.Logf("[tun] new route: %s -> %s", src, addr)
|
||||
log.Debugf("[tun] new route: %s -> %s", src, addr)
|
||||
}
|
||||
|
||||
if addr := h.findRouteFor(dst); addr != nil {
|
||||
if util.Debug {
|
||||
log.Logf("[tun] find route: %s -> %s", dst, addr)
|
||||
log.Debugf("[tun] find route: %s -> %s", dst, addr)
|
||||
}
|
||||
_, err := conn.WriteTo(b[:n], addr)
|
||||
return err
|
||||
|
||||
1
go.mod
1
go.mod
@@ -6,7 +6,6 @@ require (
|
||||
github.com/datawire/dlib v1.2.4
|
||||
github.com/docker/libcontainer v2.2.1+incompatible
|
||||
github.com/ginuerzh/gosocks5 v0.2.0
|
||||
github.com/go-log/log v0.2.0
|
||||
github.com/go-openapi/jsonpointer v0.19.5 // indirect
|
||||
github.com/google/go-cmp v0.5.5 // indirect
|
||||
github.com/googleapis/gnostic v0.5.1 // indirect
|
||||
|
||||
2
go.sum
2
go.sum
@@ -126,8 +126,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-log/log v0.2.0 h1:z8i91GBudxD5L3RmF0KVpetCbcGWAV7q1Tw1eRwQM9Q=
|
||||
github.com/go-log/log v0.2.0/go.mod h1:xzCnwajcues/6w7lne3yK2QU7DBPW7kqbgPGG5AF65U=
|
||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||
|
||||
@@ -8,7 +8,6 @@ import (
|
||||
"k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
cmdutil "k8s.io/kubectl/pkg/cmd/util"
|
||||
"kubevpn/core"
|
||||
"kubevpn/util"
|
||||
)
|
||||
|
||||
@@ -24,7 +23,6 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
util.SetLogger(&core.LogLogger{})
|
||||
connectCmd.Flags().StringVar(&kubeconfigpath, "kubeconfig", clientcmd.RecommendedHomeFile, "kubeconfig")
|
||||
connectCmd.Flags().StringVarP(&namespace, "namespace", "n", "", "namespace")
|
||||
connectCmd.PersistentFlags().StringArrayVar(&workloads, "workloads", []string{}, "workloads, like: services/tomcat, deployment/nginx, replicaset/tomcat...")
|
||||
@@ -40,6 +38,7 @@ var connectCmd = &cobra.Command{
|
||||
return nil
|
||||
},
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
util.SetupLogger()
|
||||
InitClient()
|
||||
Main()
|
||||
// hang up
|
||||
@@ -48,7 +47,7 @@ var connectCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
func InitClient() {
|
||||
log.Printf("kubeconfig path: %s, namespace: %s, serivces: %v\n", kubeconfigpath, namespace, workloads)
|
||||
log.Infof("kubeconfig path: %s, namespace: %s, serivces: %v", kubeconfigpath, namespace, workloads)
|
||||
var err error
|
||||
configFlags := genericclioptions.NewConfigFlags(true).WithDeprecatedPasswordFlag()
|
||||
configFlags.KubeConfig = &kubeconfigpath
|
||||
|
||||
@@ -2,8 +2,8 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/go-log/log"
|
||||
"github.com/pkg/errors"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"kubevpn/core"
|
||||
"kubevpn/tun"
|
||||
"net"
|
||||
@@ -145,7 +145,7 @@ type router struct {
|
||||
}
|
||||
|
||||
func (r *router) Serve(ctx context.Context) error {
|
||||
log.Logf("%s on %s", r.node.String(), r.server.Addr())
|
||||
log.Debugf("%s on %s", r.node.String(), r.server.Addr())
|
||||
return r.server.Serve(ctx, r.handler)
|
||||
}
|
||||
|
||||
|
||||
@@ -3,12 +3,10 @@ package main
|
||||
import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
"kubevpn/core"
|
||||
"kubevpn/util"
|
||||
)
|
||||
|
||||
func init() {
|
||||
util.SetLogger(&core.LogLogger{})
|
||||
ServerCmd.Flags().StringArrayVarP(&nodeConfig.ServeNodes, "nodeCommand", "L", []string{}, "command needs to be executed")
|
||||
ServerCmd.Flags().StringVarP(&nodeConfig.ChainNodes, "chainCommand", "F", "", "command needs to be executed")
|
||||
ServerCmd.Flags().BoolVar(&util.Debug, "debug", false, "true/false")
|
||||
@@ -23,6 +21,7 @@ var ServerCmd = &cobra.Command{
|
||||
return nil
|
||||
},
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
util.SetupLogger()
|
||||
if err := start(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package tun
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/go-log/log"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/songgao/water"
|
||||
"net"
|
||||
"os"
|
||||
@@ -44,7 +44,7 @@ func TunListener(cfg TunConfig) (Listener, error) {
|
||||
|
||||
addrs, _ := ifce.Addrs()
|
||||
_ = os.Setenv("tunName", ifce.Name)
|
||||
log.Logf("[tun] %s: name: %s, mtu: %d, addrs: %s",
|
||||
log.Debugf("[tun] %s: name: %s, mtu: %d, addrs: %s",
|
||||
conn.LocalAddr(), ifce.Name, ifce.MTU, addrs)
|
||||
|
||||
ln.conns <- conn
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"github.com/go-log/log"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/songgao/water"
|
||||
)
|
||||
|
||||
@@ -35,7 +35,7 @@ func createTun(cfg TunConfig) (conn net.Conn, itf *net.Interface, err error) {
|
||||
}
|
||||
cmd := fmt.Sprintf("ifconfig %s inet %s %s mtu %d up",
|
||||
ifce.Name(), cfg.Addr, peer, mtu)
|
||||
log.Log("[tun]", cmd)
|
||||
log.Debug("[tun]", cmd)
|
||||
args := strings.Split(cmd, " ")
|
||||
if er := exec.Command(args[0], args[1:]...).Run(); er != nil {
|
||||
err = fmt.Errorf("%s: %v", cmd, er)
|
||||
@@ -64,7 +64,7 @@ func addTunRoutes(ifName string, routes ...IPRoute) error {
|
||||
continue
|
||||
}
|
||||
cmd := fmt.Sprintf("route add -net %s -interface %s", route.Dest.String(), ifName)
|
||||
log.Log("[tun]", cmd)
|
||||
log.Debug("[tun]", cmd)
|
||||
args := strings.Split(cmd, " ")
|
||||
if er := exec.Command(args[0], args[1:]...).Run(); er != nil {
|
||||
return fmt.Errorf("%s: %v", cmd, er)
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
"syscall"
|
||||
|
||||
"github.com/docker/libcontainer/netlink"
|
||||
"github.com/go-log/log"
|
||||
"github.com/milosgajdos/tenus"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/songgao/water"
|
||||
)
|
||||
|
||||
@@ -40,21 +40,21 @@ func createTun(cfg TunConfig) (conn net.Conn, itf *net.Interface, err error) {
|
||||
}
|
||||
|
||||
cmd := fmt.Sprintf("ip link set dev %s mtu %d", ifce.Name(), mtu)
|
||||
log.Log("[tun]", cmd)
|
||||
log.Debug("[tun]", cmd)
|
||||
if er := link.SetLinkMTU(mtu); er != nil {
|
||||
err = fmt.Errorf("%s: %v", cmd, er)
|
||||
return
|
||||
}
|
||||
|
||||
cmd = fmt.Sprintf("ip address add %s dev %s", cfg.Addr, ifce.Name())
|
||||
log.Log("[tun]", cmd)
|
||||
log.Debug("[tun]", cmd)
|
||||
if er := link.SetLinkIp(ip, ipNet); er != nil {
|
||||
err = fmt.Errorf("%s: %v", cmd, er)
|
||||
return
|
||||
}
|
||||
|
||||
cmd = fmt.Sprintf("ip link set dev %s up", ifce.Name())
|
||||
log.Log("[tun]", cmd)
|
||||
log.Debug("[tun]", cmd)
|
||||
if er := link.SetLinkUp(); er != nil {
|
||||
err = fmt.Errorf("%s: %v", cmd, er)
|
||||
return
|
||||
@@ -82,7 +82,7 @@ func addTunRoutes(ifName string, routes ...IPRoute) error {
|
||||
continue
|
||||
}
|
||||
cmd := fmt.Sprintf("ip route add %s dev %s", route.Dest.String(), ifName)
|
||||
log.Logf("[tun] %s", cmd)
|
||||
log.Debugf("[tun] %s", cmd)
|
||||
if err := netlink.AddRoute(route.Dest.String(), "", "", ifName); err != nil && !errors.Is(err, syscall.EEXIST) {
|
||||
return fmt.Errorf("%s: %v", cmd, err)
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"github.com/go-log/log"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/songgao/water"
|
||||
)
|
||||
|
||||
@@ -33,7 +33,7 @@ func createTun(cfg TunConfig) (conn net.Conn, itf *net.Interface, err error) {
|
||||
}
|
||||
|
||||
cmd := fmt.Sprintf("ifconfig %s inet %s mtu %d up", ifce.Name(), cfg.Addr, mtu)
|
||||
log.Log("[tun]", cmd)
|
||||
log.Debug("[tun]", cmd)
|
||||
args := strings.Split(cmd, " ")
|
||||
if er := exec.Command(args[0], args[1:]...).Run(); er != nil {
|
||||
err = fmt.Errorf("%s: %v", cmd, er)
|
||||
@@ -62,7 +62,7 @@ func addTunRoutes(ifName string, routes ...IPRoute) error {
|
||||
continue
|
||||
}
|
||||
cmd := fmt.Sprintf("route add -net %s -interface %s", route.Dest.String(), ifName)
|
||||
log.Logf("[tun] %s", cmd)
|
||||
log.Debugf("[tun] %s", cmd)
|
||||
args := strings.Split(cmd, " ")
|
||||
if er := exec.Command(args[0], args[1:]...).Run(); er != nil {
|
||||
return fmt.Errorf("%s: %v", cmd, er)
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/go-log/log"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func createTun(cfg TunConfig) (conn net.Conn, itf *net.Interface, err error) {
|
||||
@@ -31,7 +31,7 @@ func createTun(cfg TunConfig) (conn net.Conn, itf *net.Interface, err error) {
|
||||
cmd := fmt.Sprintf("netsh interface ip set address name=\"%s\" "+
|
||||
"source=static addr=%s mask=%s gateway=none",
|
||||
name, ip.String(), ipMask(ipNet.Mask))
|
||||
log.Log("[tun]", cmd)
|
||||
log.Debug("[tun]", cmd)
|
||||
|
||||
args := strings.Split(cmd, " ")
|
||||
err = retry.OnError(retry.DefaultRetry, func(err error) bool {
|
||||
@@ -184,7 +184,7 @@ func addTunRoutes(ifName string, gw string, routes ...IPRoute) error {
|
||||
if gw != "" {
|
||||
cmd += " nexthop=" + gw
|
||||
}
|
||||
log.Logf("[tun] %s", cmd)
|
||||
log.Debugf("[tun] %s", cmd)
|
||||
args := strings.Split(cmd, " ")
|
||||
if er := exec.Command(args[0], args[1:]...).Run(); er != nil {
|
||||
return fmt.Errorf("%s: %v", cmd, er)
|
||||
|
||||
@@ -3,15 +3,12 @@ package util
|
||||
import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/go-log/log"
|
||||
)
|
||||
|
||||
// Debug is a flag that enables the debug log.
|
||||
var Debug bool
|
||||
|
||||
var (
|
||||
tinyBufferSize = 512
|
||||
smallBufferSize = 2 * 1024 // 2KB small buffer
|
||||
mediumBufferSize = 8 * 1024 // 8KB medium buffer
|
||||
largeBufferSize = 32 * 1024 // 32KB large buffer
|
||||
@@ -51,11 +48,5 @@ var (
|
||||
)
|
||||
|
||||
var (
|
||||
// DefaultMTU is the default mtu for tun/tap device
|
||||
DefaultMTU = 1350
|
||||
)
|
||||
|
||||
// SetLogger sets a new logger for internal log system.
|
||||
func SetLogger(logger log.Logger) {
|
||||
log.DefaultLogger = logger
|
||||
}
|
||||
|
||||
29
util/log.go
Normal file
29
util/log.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func SetupLogger() {
|
||||
if Debug {
|
||||
log.SetLevel(log.DebugLevel)
|
||||
}
|
||||
log.SetReportCaller(true)
|
||||
log.SetFormatter(&Format{})
|
||||
}
|
||||
|
||||
type Format struct {
|
||||
log.Formatter
|
||||
}
|
||||
|
||||
// 2009/01/23 01:23:23 d.go:23: message
|
||||
func (*Format) Format(e *log.Entry) ([]byte, error) {
|
||||
return []byte(
|
||||
fmt.Sprintf("%s %s:%d: %s\n",
|
||||
e.Time.Format("2006/01/02 15:04:05"),
|
||||
filepath.Base(e.Caller.File),
|
||||
e.Caller.Line,
|
||||
e.Message)), nil
|
||||
}
|
||||
Reference in New Issue
Block a user