]> Cypherpunks.ru repositories - govpn.git/blobdiff - src/govpn/cmd/govpn-client/main.go
Ability to use EGD-compatible PRNGs
[govpn.git] / src / govpn / cmd / govpn-client / main.go
index f49edf8de8c05be0a87c7633e18aaace92e5eeea..f21249061d4ed0e637f775beccca6c88291ed712 100644 (file)
@@ -43,6 +43,7 @@ var (
        timeoutP   = flag.Int("timeout", 60, "Timeout seconds")
        noisy      = flag.Bool("noise", false, "Enable noise appending")
        cpr        = flag.Int("cpr", 0, "Enable constant KiB/sec out traffic rate")
+       egdPath    = flag.String("egd", "", "Optional path to EGD socket")
 )
 
 func main() {
@@ -53,9 +54,14 @@ func main() {
 
        govpn.MTU = *mtu
 
-       id := govpn.IDDecode(*IDRaw)
-       if id == nil {
-               panic("ID is not specified")
+       id, err := govpn.IDDecode(*IDRaw)
+       if err != nil {
+               log.Fatalln(err)
+       }
+
+       if *egdPath != "" {
+               log.Println("Using", *egdPath, "EGD")
+               govpn.EGDInit(*egdPath)
        }
 
        pub, priv := govpn.NewVerifier(id, govpn.StringFromFile(*keyPath))
@@ -72,15 +78,15 @@ func main() {
 
        bind, err := net.ResolveUDPAddr("udp", "0.0.0.0:0")
        if err != nil {
-               panic(err)
+               log.Fatalln("Can not resolve address:", err)
        }
        conn, err := net.ListenUDP("udp", bind)
        if err != nil {
-               panic(err)
+               log.Fatalln("Can not listen on UDP:", err)
        }
        remote, err := net.ResolveUDPAddr("udp", *remoteAddr)
        if err != nil {
-               panic(err)
+               log.Fatalln("Can not resolve remote address:", err)
        }
 
        tap, ethSink, ethReady, _, err := govpn.TAPListen(
@@ -89,7 +95,7 @@ func main() {
                *cpr,
        )
        if err != nil {
-               panic(err)
+               log.Fatalln("Can not listen on TAP interface:", err)
        }
        udpSink, udpBuf, udpReady := govpn.ConnListen(conn)
 
@@ -107,7 +113,7 @@ func main() {
                log.Println("Stats are going to listen on", *stats)
                statsPort, err := net.Listen("tcp", *stats)
                if err != nil {
-                       panic(err)
+                       log.Fatalln("Can not listen on stats port:", err)
                }
                go govpn.StatsProcessor(statsPort, &knownPeers)
        }