]> Cypherpunks.ru repositories - goircd.git/blobdiff - goircd.go
Decrease log verbosity.
[goircd.git] / goircd.go
index 824b5f0b675ef6a4618d940d813b589f15e6786b..e1768048f5858ac01be79a9955b9b0f4544048af 100644 (file)
--- a/goircd.go
+++ b/goircd.go
@@ -19,6 +19,7 @@ package main
 
 import (
        "bytes"
+       "crypto/tls"
        "flag"
        "log"
        "net"
@@ -34,6 +35,12 @@ var (
        motd     = flag.String("motd", "", "Path to MOTD file")
        logdir   = flag.String("logdir", "", "Absolute path to directory for logs")
        statedir = flag.String("statedir", "", "Absolute path to directory for states")
+
+       ssl     = flag.Bool("ssl", false, "Use SSL only.")
+       sslKey  = flag.String("ssl_key", "", "SSL keyfile.")
+       sslCert = flag.String("ssl_cert", "", "SSL certificate.")
+
+       verbose = flag.Bool("v", false, "Enable verbose logging.")
 )
 
 func Run() {
@@ -45,8 +52,7 @@ func Run() {
        if *logdir == "" {
                // Dummy logger
                go func() {
-                       for {
-                               <-log_sink
+                       for _ = range log_sink {
                        }
                }()
        } else {
@@ -60,11 +66,11 @@ func Run() {
 
        state_sink := make(chan StateEvent)
        daemon := NewDaemon(*hostname, *motd, log_sink, state_sink)
+       daemon.Verbose = *verbose
        if *statedir == "" {
                // Dummy statekeeper
                go func() {
-                       for {
-                               <-state_sink
+                       for _ = range state_sink {
                        }
                }()
        } else {
@@ -97,9 +103,23 @@ func Run() {
                log.Println(*statedir, "statekeeper initialized")
        }
 
-       listener, err := net.Listen("tcp", *bind)
-       if err != nil {
-               log.Fatalln("Can not listen on ", *bind)
+       var listener net.Listener
+       if *ssl {
+               cert, err := tls.LoadX509KeyPair(*sslCert, *sslKey)
+               if err != nil {
+                       log.Fatalf("Could not load SSL keys from %s and %s: %s", *sslCert, *sslKey, err)
+               }
+               config := tls.Config{Certificates: []tls.Certificate{cert}}
+               listener, err = tls.Listen("tcp", *bind, &config)
+               if err != nil {
+                       log.Fatalf("Can not listen on %s: %v", *bind, err)
+               }
+       } else {
+               var err error
+               listener, err = net.Listen("tcp", *bind)
+               if err != nil {
+                       log.Fatalf("Can not listen on %s: %v", *bind, err)
+               }
        }
        log.Println("Listening on", *bind)