]> Cypherpunks.ru repositories - govpn.git/blobdiff - cmd/govpn-server/main.go
Use A-EKE instead of EKE. Doc refactoring. Preparing for 3.0 release
[govpn.git] / cmd / govpn-server / main.go
index 16462b7072907eec28c31ee14496e69bfe2bed50..8aa26ec83bdb8878766fd28efd96c06f6a6e9d98 100644 (file)
@@ -37,9 +37,6 @@ var (
        peersPath = flag.String("peers", "peers", "Path to peers keys directory")
        stats     = flag.String("stats", "", "Enable stats retrieving on host:port")
        mtu       = flag.Int("mtu", 1452, "MTU for outgoing packets")
-       nonceDiff = flag.Int("noncediff", 1, "Allow nonce difference")
-       timeoutP  = flag.Int("timeout", 60, "Timeout seconds")
-       noisy     = flag.Bool("noise", false, "Enable noise appending")
 )
 
 type PeerReadyEvent struct {
@@ -56,7 +53,7 @@ type PeerState struct {
 }
 
 func NewPeerState(peer *govpn.Peer, iface string) *PeerState {
-       tap, sink, ready, terminate, err := govpn.TAPListen(iface)
+       tap, sink, ready, terminate, err := govpn.TAPListen(iface, peer.Timeout, peer.CPR)
        if err != nil {
                log.Println("Unable to create Eth", err)
                return nil
@@ -79,14 +76,11 @@ type EthEvent struct {
 
 func main() {
        flag.Parse()
-       timeout := time.Second * time.Duration(*timeoutP)
+       timeout := time.Second * time.Duration(govpn.TimeoutDefault)
        var err error
        log.SetFlags(log.Ldate | log.Lmicroseconds | log.Lshortfile)
 
        govpn.MTU = *mtu
-       govpn.Timeout = timeout
-       govpn.Noncediff = *nonceDiff
-       govpn.NoiseEnable = *noisy
        govpn.PeersInit(*peersPath)
 
        bind, err := net.ResolveUDPAddr("udp", *bindAddr)
@@ -119,6 +113,7 @@ func main() {
        var udpPktData []byte
        var ethEvent EthEvent
        var peerId *govpn.PeerId
+       var peerConf *govpn.PeerConf
        var handshakeProcessForce bool
        ethSink := make(chan EthEvent)
 
@@ -214,12 +209,18 @@ MainCycle:
                                        udpReady <- struct{}{}
                                        continue
                                }
+                               peerConf = peerId.Conf()
+                               if peerConf == nil {
+                                       log.Println("Can not get peer configuration", peerId.String())
+                                       udpReady <- struct{}{}
+                                       continue
+                               }
                                state, exists = states[addr]
                                if !exists {
-                                       state = govpn.HandshakeNew(udpPkt.Addr)
+                                       state = govpn.HandshakeNew(udpPkt.Addr, peerConf)
                                        states[addr] = state
                                }
-                               peer = state.Server(peerId, conn, udpPktData)
+                               peer = state.Server(conn, udpPktData)
                                if peer != nil {
                                        log.Println("Peer handshake finished", peer)
                                        if _, exists = peers[addr]; exists {