From ace62fe36727dc06ff6c7350616a20e6b2a72bb9 Mon Sep 17 00:00:00 2001 From: Andreas Neue Date: Sat, 6 Aug 2016 20:08:42 +0200 Subject: [PATCH] TLS connections implemented --- server.go | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index a550352..d1c2c2d 100644 --- a/server.go +++ b/server.go @@ -3,6 +3,8 @@ package ircd import ( + "crypto/rand" + "crypto/tls" "fmt" "net" "os" @@ -148,7 +150,7 @@ func (sv *Server) listen(laddr string) { os.Exit(-1) } for { - time.Sleep(1 * time.Millisecond) + time.Sleep(10 * time.Millisecond) conn, err := listen.Accept() if err != nil { xlog.Error(err.Error()) @@ -160,6 +162,26 @@ func (sv *Server) listen(laddr string) { } func (sv *Server) listenTls(laddr string) { + cert, err := tls.LoadX509KeyPair("cert/server.pem", "cert/server.key") + if err != nil { + xlog.Fatal(err.Error()) + } + cfg := tls.Config{Certificates: []tls.Certificate{cert}} + cfg.Rand = rand.Reader + listen, err := tls.Listen("tcp", laddr, &cfg) + if err != nil { + xlog.Fatal(err.Error()) + } + for { + time.Sleep(10 * time.Millisecond) + conn, err := listen.Accept() + if err != nil { + xlog.Error(err.Error()) + } else { + NewRemoteClient(sv, conn) + sv.connectionsCount++ + } + } } func (sv *Server) dispatcher() (err error) {