Added TLS

This commit is contained in:
meer 2026-07-26 16:09:34 +00:00
parent 69beb1340e
commit 31ea29dbe0

32
main.go
View File

@ -6,11 +6,13 @@ package main
import ( import (
"bufio" "bufio"
"crypto/tls"
"crypto/sha256" "crypto/sha256"
"database/sql" "database/sql"
"encoding/base64" "encoding/base64"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"flag"
"fmt" "fmt"
"log" "log"
"net" "net"
@ -122,6 +124,10 @@ func loadMOTD(filename string) error {
return nil return nil
} }
func main() { 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() cfg, err := loadConfig()
if err != nil { if err != nil {
log.Fatalf("could not load config file: %v\n", err) log.Fatalf("could not load config file: %v\n", err)
@ -130,10 +136,28 @@ func main() {
if errmotd != nil { if errmotd != nil {
log.Fatalf("could not load message of the day file: %v", err) 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 err != nil { if *tlsEnabled {
log.Fatalf("Error listening: %v\n", err) 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() sqlinitDB()
log.Printf("IRC server listening on port %d\n", cfg.Port) log.Printf("IRC server listening on port %d\n", cfg.Port)
go startHTTP(*cfg) go startHTTP(*cfg)