diff --git a/go.sum b/go.sum index a2490ec..506d560 100644 --- a/go.sum +++ b/go.sum @@ -10,20 +10,6 @@ github.com/fumiama/go-x25519 v1.0.0 h1:hiGg9EhseVmGCc8T1jECVkj8Keu/aJ1ZK05RM8Vua github.com/fumiama/go-x25519 v1.0.0/go.mod h1:8VOhfyGZzw4IUs4nCjQFqW9cA3V/QpSCtP3fo2dLNg4= github.com/fumiama/gofastTEA v0.0.6 h1:Yni3MXDbJVa/c4CecgdZDgCJK+fLdvGph+OBqY2mtiI= github.com/fumiama/gofastTEA v0.0.6/go.mod h1:+sBZ05nCA2skZkursHNvyr8kULlEetrYTM2y5kA4rQc= -github.com/fumiama/water v0.0.0-20211231092156-6d316045a9f5 h1:tRJa7xCNyt7mwzQ8TCoMsOCFMUBii/iVLz3xj94f1Ds= -github.com/fumiama/water v0.0.0-20211231092156-6d316045a9f5/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211231093704-80ce1934600d h1:XMKhQfj3vQkOCFJhaEOaFZSpQ/m7GBfQxbS0UvFQUyY= -github.com/fumiama/water v0.0.0-20211231093704-80ce1934600d/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211231094148-0c176c6cfb9c h1:iUiK3OX2REWOaxiEtIRbruGF16ugP+5iJlEllOd7H0I= -github.com/fumiama/water v0.0.0-20211231094148-0c176c6cfb9c/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211231094422-8a0b0fd8ed4d h1:34xXCAysY3v92o6lLaUqCp/BD7OaS5cdPsB9JHrLQt8= -github.com/fumiama/water v0.0.0-20211231094422-8a0b0fd8ed4d/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211231094734-2f9b072abdda h1:M8JQiAEjHwBbrbGeKQRGFjyGk01JES+ReIcxvsm5EsM= -github.com/fumiama/water v0.0.0-20211231094734-2f9b072abdda/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211231133042-660c28923879 h1:zv328lpgEoyG41HbLMkP6VEagSkEyO/3Wvxe63KSF4g= -github.com/fumiama/water v0.0.0-20211231133042-660c28923879/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211231133626-69e328bbf27b h1:+sCf88Vao4YJiOnaa1O2r/fh8XmEgVS1PRd44Nfd+e8= -github.com/fumiama/water v0.0.0-20211231133626-69e328bbf27b/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= github.com/fumiama/water v0.0.0-20211231134027-da391938d6ac h1:A/5A0rODsg+EQHH61Ew5mMUtDpRXaSNqHhPvW+fN4C4= github.com/fumiama/water v0.0.0-20211231134027-da391938d6ac/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= github.com/fumiama/wintun v0.0.0-20211229152851-8bc97c8034c0 h1:WfrSFlIlCAtg6Rt2IGna0HhJYSDE45YVHiYqO4wwsEw= diff --git a/gold/link/link.go b/gold/link/link.go index c565d37..25957d7 100644 --- a/gold/link/link.go +++ b/gold/link/link.go @@ -91,7 +91,7 @@ func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) { totl := uint32(len(data)) i := 0 for ; int(totl)-i > int(l.me.mtu); i += int(l.me.mtu) { - logrus.Infoln("[link] split frag", i, ":", i+int(l.me.mtu), ", remain:", int(totl)-i-int(l.me.mtu)) + logrus.Debugln("[link] split frag", i, ":", i+int(l.me.mtu), ", remain:", int(totl)-i-int(l.me.mtu)) packet := *p packet.Data = data[:int(l.me.mtu)] cnt, err := l.write(&packet, totl, uint16(uint(i)>>3), istransfer, true) @@ -144,7 +144,7 @@ func (l *Link) write(p *head.Packet, datasz uint32, offset uint16, istransfer, h if peerep == nil { return 0, errors.New("[link] nil endpoint of " + p.Dst.String()) } - logrus.Infoln("[link] write", len(d), "bytes data from ep", l.me.myconn.LocalAddr(), "to", peerep, "offset:", fmt.Sprintf("%04x", offset)) + logrus.Debugln("[link] write", len(d), "bytes data from ep", l.me.myconn.LocalAddr(), "to", peerep, "offset:", fmt.Sprintf("%04x", offset)) n, err = l.me.myconn.WriteToUDP(d, peerep) } else { logrus.Warnln("[link] drop packet: nil peerlink") diff --git a/gold/link/listen.go b/gold/link/listen.go index 99d413a..aa0ac42 100644 --- a/gold/link/listen.go +++ b/gold/link/listen.go @@ -30,7 +30,7 @@ func (m *Me) listen() (conn *net.UDPConn, err error) { } } p, ok := m.IsInPeer(packet.Src.String()) - logrus.Infoln("[link] recv from endpoint", addr, "src", packet.Src, "dst", packet.Dst) + logrus.Debugln("[link] recv from endpoint", addr, "src", packet.Src, "dst", packet.Dst) // logrus.Debugln("[link] recv:", hex.EncodeToString(lbf)) if ok { if p.pep == "" || p.pep != addr.String() { @@ -47,7 +47,7 @@ func (m *Me) listen() (conn *net.UDPConn, err error) { case LINK_STATUS_DOWN: n, err = p.Write(head.NewPacket(head.ProtoHello, 0, p.peerip, 0, nil), false) if err == nil { - logrus.Infoln("[link] send", n, "bytes hello ack packet") + logrus.Debugln("[link] send", n, "bytes hello ack packet") p.status = LINK_STATUS_HALFUP } else { logrus.Errorln("[link] send hello ack packet error:", err) @@ -58,31 +58,31 @@ func (m *Me) listen() (conn *net.UDPConn, err error) { break } case head.ProtoNotify: - logrus.Infoln("[link] recv notify") + logrus.Debugln("[link] recv notify") p.onNotify(packet) case head.ProtoQuery: - logrus.Infoln("[link] recv query") + logrus.Debugln("[link] recv query") p.onQuery(packet) case head.ProtoData: if p.pipe != nil { p.pipe <- packet - logrus.Infoln("[link] deliver to pipe of", p.peerip) + logrus.Debugln("[link] deliver to pipe of", p.peerip) } else { m.pipe <- packet.Data - logrus.Infoln("[link] deliver", len(packet.Data), "bytes data to pipe of me") + logrus.Debugln("[link] deliver", len(packet.Data), "bytes data to pipe of me") } default: logrus.Warnln("[link] recv unknown proto:", packet.Proto) } } else { - logrus.Infoln("[link] drop invalid packet") + logrus.Debugln("[link] drop invalid packet") } } else if p.Accept(packet.Dst) { if p.allowtrans { // 转发 n, err = p.Write(packet, true) if err == nil { - logrus.Infoln("[link] trans", n, "bytes packet to", packet.Dst.String()+":"+strconv.Itoa(int(packet.DstPort))) + logrus.Debugln("[link] trans", n, "bytes packet to", packet.Dst.String()+":"+strconv.Itoa(int(packet.DstPort))) } else { logrus.Errorln("[link] trans packet to", packet.Dst.String()+":"+strconv.Itoa(int(packet.DstPort)), "err:", err) } diff --git a/gold/link/recv.go b/gold/link/recv.go index c37deb9..8efb185 100644 --- a/gold/link/recv.go +++ b/gold/link/recv.go @@ -39,7 +39,7 @@ func (m *Me) initrecvpool() { func (m *Me) wait(data []byte) *head.Packet { flags := binary.LittleEndian.Uint16(data[10:12]) - logrus.Infoln("[recv]", len(data), "bytes data with flag", hex.EncodeToString(data[10:12])) + logrus.Debugln("[recv]", len(data), "bytes data with flag", hex.EncodeToString(data[10:12])) if flags == 0 || flags == 0x4000 { h := &head.Packet{} _, err := h.Unmarshal(data) @@ -56,13 +56,13 @@ func (m *Me) wait(data []byte) *head.Packet { hsh := *(*[32]byte)(*(*unsafe.Pointer)(unsafe.Pointer(&hashd))) h, ok := m.recving[hsh] if ok { - logrus.Infoln("[recv] get another frag part of", hex.EncodeToString(hashd)) + logrus.Debugln("[recv] get another frag part of", hex.EncodeToString(hashd)) ok, err := h.Unmarshal(data) if err == nil { if ok { delete(m.clock, h) delete(m.recving, hsh) - logrus.Infoln("[recv] all parts of", hex.EncodeToString(hashd), "is reached") + logrus.Debugln("[recv] all parts of", hex.EncodeToString(hashd), "is reached") return h } m.clock[h] = 0 @@ -71,7 +71,7 @@ func (m *Me) wait(data []byte) *head.Packet { } return nil } - logrus.Infoln("[recv] get new frag part of", hex.EncodeToString(hashd)) + logrus.Debugln("[recv] get new frag part of", hex.EncodeToString(hashd)) h = &head.Packet{} _, err := h.Unmarshal(data) if err != nil { diff --git a/gold/link/router.go b/gold/link/router.go index 23afcce..cc69c5f 100644 --- a/gold/link/router.go +++ b/gold/link/router.go @@ -55,7 +55,7 @@ func (r *Router) NextHop(ip string) (l *Link) { for _, c := range r.list { if c.Contains(ipb) { l = r.table[c.String()] - logrus.Infoln("[router] get nexthop to", ipb, "-->", c, "link", l) + logrus.Debugln("[router] get nexthop to", ipb, "-->", c, "link", l) return l } } diff --git a/lower/nic.go b/lower/nic.go index a52fff3..e9417ec 100644 --- a/lower/nic.go +++ b/lower/nic.go @@ -55,7 +55,7 @@ func (nc *NIC) Start(m *link.Me) { logrus.Errorln("[lower] recv write to nic err:", err) break } - logrus.Infoln("[lower] recv write", n, "bytes packet to nic") + logrus.Debugln("[lower] recv write", n, "bytes packet to nic") } }() buf := make([]byte, (m.MTU()+68)*4096) // 增加报头长度与 TEA 冗余 @@ -86,7 +86,7 @@ func (nc *NIC) Start(m *link.Me) { n, rem = nc.send(m, rem) } if len(rem) > 0 { - logrus.Infoln("[lower] remain", len(rem), "bytes to send") + logrus.Debugln("[lower] remain", len(rem), "bytes to send") if off > 0 { off = copy(buf, rem) isrev = true @@ -152,7 +152,7 @@ func (nc *NIC) send(m *link.Me, packet []byte) (n int, rem []byte) { packet = packet[:totl] n = int(totl) dst := waterutil.IPv4Destination(packet) - logrus.Infoln("[lower] sending", len(packet), "bytes packet from :"+strconv.Itoa(int(m.SrcPort())), "to", dst.String()+":"+strconv.Itoa(int(m.DstPort()))) + logrus.Debugln("[lower] sending", len(packet), "bytes packet from :"+strconv.Itoa(int(m.SrcPort())), "to", dst.String()+":"+strconv.Itoa(int(m.DstPort()))) lnk, err := m.Connect(dst.String()) if err != nil { logrus.Warnln("[lower] connect to peer", dst.String(), "err:", err) diff --git a/main.go b/main.go index 5f69975..0720c95 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( base14 "github.com/fumiama/go-base16384" curve "github.com/fumiama/go-x25519" + "github.com/sirupsen/logrus" "github.com/fumiama/WireGold/config" "github.com/fumiama/WireGold/helper" @@ -20,8 +21,15 @@ func main() { gen := flag.Bool("g", false, "generate key pair") showp := flag.Bool("p", false, "show my publickey") file := flag.String("c", "config.yaml", "specify conf file") - mtu := flag.Int("m", 32768-68, "mtu") + mtu := flag.Int("m", 32768-68, "set the mtu of wg") + debug := flag.Bool("d", false, "print debug logs") + warn := flag.Bool("w", false, "only show logs above warn level") flag.Parse() + if *debug { + logrus.SetLevel(logrus.DebugLevel) + } else if *warn { + logrus.SetLevel(logrus.WarnLevel) + } if *help { displayHelp("") }