Added TLS
This commit is contained in:
parent
69beb1340e
commit
31ea29dbe0
26
main.go
26
main.go
@ -6,11 +6,13 @@ package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"crypto/tls"
|
||||
"crypto/sha256"
|
||||
"database/sql"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
@ -122,6 +124,10 @@ func loadMOTD(filename string) error {
|
||||
return nil
|
||||
}
|
||||
func main() {
|
||||
tlsEnabled := flag.Bool("tls", false, "Enable TLS")
|
||||
certFile := flag.String("cert", "", "TLS certificate file")
|
||||
keyFile := flag.String("key", "", "TLS key file")
|
||||
flag.Parse()
|
||||
cfg, err := loadConfig()
|
||||
if err != nil {
|
||||
log.Fatalf("could not load config file: %v\n", err)
|
||||
@ -130,9 +136,27 @@ func main() {
|
||||
if errmotd != nil {
|
||||
log.Fatalf("could not load message of the day file: %v", err)
|
||||
}
|
||||
ln, err := net.Listen("tcp", fmt.Sprintf(":%d", cfg.Port))
|
||||
var ln net.Listener
|
||||
if *tlsEnabled {
|
||||
if *certFile == "" || *keyFile == "" {
|
||||
log.Fatalf("TLS enabled but cert/key not provided")
|
||||
}
|
||||
cert, err := tls.LoadX509KeyPair(*certFile, *keyFile)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to load TLS cert/key: %v", err)
|
||||
}
|
||||
tlsCfg := &tls.Config{Certificates: []tls.Certificate{cert}}
|
||||
ln, err = tls.Listen("tcp", fmt.Sprintf(":%d", cfg.Port), tlsCfg)
|
||||
if err != nil {
|
||||
log.Fatalf("Error listening with TLS: %v\n", err)
|
||||
}
|
||||
log.Printf("IRC server listening with TLS on port %d\n", cfg.Port)
|
||||
} else {
|
||||
ln, err = net.Listen("tcp", fmt.Sprintf(":%d", cfg.Port))
|
||||
if err != nil {
|
||||
log.Fatalf("Error listening: %v\n", err)
|
||||
}
|
||||
log.Printf("IRC server listening on port %d\n", cfg.Port)
|
||||
}
|
||||
sqlinitDB()
|
||||
log.Printf("IRC server listening on port %d\n", cfg.Port)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user