X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgovpn%2Fcmd%2Fgovpn-server%2Fcommon.go;h=65e94b7a0eb96b3ca238439bce2fd3a2a3c510d6;hb=70e70dfded87dc2d737160444829c58ed8ed2fa0;hp=f7435dddcd766a63337e23e9762fd20d5ec5cfdb;hpb=f696080a3e32ba340cc4c5c70e39eb8e8857da89;p=govpn.git diff --git a/src/cypherpunks.ru/govpn/cmd/govpn-server/common.go b/src/cypherpunks.ru/govpn/cmd/govpn-server/common.go index f7435dd..65e94b7 100644 --- a/src/cypherpunks.ru/govpn/cmd/govpn-server/common.go +++ b/src/cypherpunks.ru/govpn/cmd/govpn-server/common.go @@ -1,6 +1,6 @@ /* GoVPN -- simple secure free software virtual private network daemon -Copyright (C) 2014-2016 Sergey Matveev +Copyright (C) 2014-2018 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 @@ -20,9 +20,7 @@ package main import ( "bytes" - "log" "sync" - "time" "cypherpunks.ru/govpn" ) @@ -34,44 +32,23 @@ type PeerState struct { } var ( - handshakes map[string]*govpn.Handshake = make(map[string]*govpn.Handshake) - hsLock sync.RWMutex - - peers map[string]*PeerState = make(map[string]*PeerState) - peersLock sync.RWMutex - - peersById map[govpn.PeerId]string = make(map[govpn.PeerId]string) - peersByIdLock sync.RWMutex - - knownPeers govpn.KnownPeers - kpLock sync.RWMutex + handshakes sync.Map + peers sync.Map + peersByID sync.Map + knownPeers sync.Map ) -func peerReady(ps PeerState) { - var data []byte - heartbeat := time.NewTicker(ps.peer.Timeout) -Processor: - for { - select { - case <-heartbeat.C: - ps.peer.EthProcess(nil) - case <-ps.terminator: - break Processor - case data = <-ps.tap.Sink: - ps.peer.EthProcess(data) - } - } - close(ps.terminator) - ps.peer.Zero() - heartbeat.Stop() -} - -func callUp(peerId *govpn.PeerId, remoteAddr string) (string, error) { - ifaceName := confs[*peerId].Iface - if confs[*peerId].Up != "" { - result, err := govpn.ScriptCall(confs[*peerId].Up, ifaceName, remoteAddr) +func callUp(peerID *govpn.PeerID, remoteAddr string) (string, error) { + ifaceName := confs[*peerID].Iface + if confs[*peerID].Up != "" { + result, err := govpn.ScriptCall(confs[*peerID].Up, ifaceName, remoteAddr) if err != nil { - log.Println("Script", confs[*peerId].Up, "call failed", err) + govpn.Printf( + `[script-failed bind="%s" path="%s" err="%s"]`, + *bindAddr, + confs[*peerID].Up, + err, + ) return "", err } if ifaceName == "" { @@ -83,7 +60,7 @@ func callUp(peerId *govpn.PeerId, remoteAddr string) (string, error) { } } if ifaceName == "" { - log.Println("Can not obtain interface name for", *peerId) + govpn.Printf(`[tap-failed bind="%s" peer="%s"]`, *bindAddr, *peerID) } return ifaceName, nil }