X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgovpn%2Fcmd%2Fgovpn-server%2Ftcp.go;h=ad7bcc6a02bde0f9b3ba2ea48e3f9a6a7b90cf8c;hb=572cac17bde738055312f7a468a0bde0e760a262;hp=f8a76e23dbf0b9a60330a161bf01b7831d83d8d9;hpb=649e55e1ead338121ea76d6ae1187617ea9839d6;p=govpn.git diff --git a/src/cypherpunks.ru/govpn/cmd/govpn-server/tcp.go b/src/cypherpunks.ru/govpn/cmd/govpn-server/tcp.go index f8a76e2..ad7bcc6 100644 --- a/src/cypherpunks.ru/govpn/cmd/govpn-server/tcp.go +++ b/src/cypherpunks.ru/govpn/cmd/govpn-server/tcp.go @@ -1,6 +1,6 @@ /* GoVPN -- simple secure free software virtual private network daemon -Copyright (C) 2014-2016 Sergey Matveev +Copyright (C) 2014-2017 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,13 +36,12 @@ func startTCP() { if err != nil { log.Fatalln("Can not listen on TCP:", err) } - log.Println("Listening on TCP:" + *bindAddr) - govpn.Println("Listening on TCP:" + *bindAddr) + govpn.BothPrintf(`[tcp-listen bind="%s"]`, *bindAddr) go func() { for { conn, err := listener.AcceptTCP() if err != nil { - govpn.Println("Error accepting TCP:", err) + govpn.Printf(`[tcp-accept-failed bind="%s" err="%s"]`, *bindAddr, err) continue } go handleTCP(conn) @@ -79,7 +78,10 @@ func handleTCP(conn net.Conn) { if hs == nil { conf = confs[*peerId] if conf == nil { - govpn.Println("Can not get peer configuration:", peerId.String()) + govpn.Printf( + `[conf-get-failed bind="%s" peer="%s"]`, + *bindAddr, peerId.String(), + ) break } hs = govpn.NewHandshake(addr, conn, conf) @@ -90,7 +92,10 @@ func handleTCP(conn net.Conn) { continue } hs.Zero() - govpn.Println("Peer handshake finished:", addr, peer.Id.String()) + govpn.Printf( + `[handshake-completed bind="%s" addr="%s" peer="%s"]`, + *bindAddr, addr, peerId.String(), + ) peersByIdLock.RLock() addrPrev, exists := peersById[*peer.Id] peersByIdLock.RUnlock() @@ -103,7 +108,7 @@ func handleTCP(conn net.Conn) { tap: tap, terminator: make(chan struct{}), } - go peerReady(*ps) + go govpn.PeerTapProcessor(ps.peer, ps.tap, ps.terminator) peersByIdLock.Lock() kpLock.Lock() delete(peers, addrPrev) @@ -114,7 +119,10 @@ func handleTCP(conn net.Conn) { peersLock.Unlock() peersByIdLock.Unlock() kpLock.Unlock() - govpn.Println("Rehandshake processed:", peer.Id.String()) + govpn.Printf( + `[rehandshake-completed bind="%s" peer="%s"]`, + *bindAddr, peerId.String(), + ) } else { ifaceName, err := callUp(peer.Id, peer.Addr) if err != nil { @@ -123,7 +131,10 @@ func handleTCP(conn net.Conn) { } tap, err = govpn.TAPListen(ifaceName, peer.MTU) if err != nil { - govpn.Println("Unable to create TAP:", err) + govpn.Printf( + `[tap-failed bind="%s" peer="%s" err="%s"]`, + *bindAddr, peerId.String(), err, + ) peer = nil break } @@ -132,7 +143,7 @@ func handleTCP(conn net.Conn) { tap: tap, terminator: make(chan struct{}, 1), } - go peerReady(*ps) + go govpn.PeerTapProcessor(ps.peer, ps.tap, ps.terminator) peersLock.Lock() peersByIdLock.Lock() kpLock.Lock() @@ -142,7 +153,7 @@ func handleTCP(conn net.Conn) { peersLock.Unlock() peersByIdLock.Unlock() kpLock.Unlock() - govpn.Println("Peer created:", peer.Id.String()) + govpn.Printf(`[peer-created bind="%s" peer="%s"]`, *bindAddr, peerId.String()) } break } @@ -153,8 +164,6 @@ func handleTCP(conn net.Conn) { return } - nonceExpectation := make([]byte, govpn.NonceSize) - peer.NonceExpectation(nonceExpectation) prev = 0 var i int for { @@ -172,18 +181,17 @@ func handleTCP(conn net.Conn) { if prev < govpn.MinPktLength { continue } - i = bytes.Index(buf[:prev], nonceExpectation) + i = bytes.Index(buf[:prev], peer.NonceExpect) if i == -1 { continue } if !peer.PktProcess(buf[:i+govpn.NonceSize], tap, false) { - govpn.Println( - "Unauthenticated packet, dropping connection", - addr, peer.Id.String(), + govpn.Printf( + `[packet-unauthenticated bind="%s" addr="%s" peer="%s"]`, + *bindAddr, addr, peer.Id.String(), ) break } - peer.NonceExpectation(nonceExpectation) copy(buf, buf[i+govpn.NonceSize:prev]) prev = prev - i - govpn.NonceSize goto CheckMore