Added TLS

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

26
main.go
View File

@ -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)