summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go17
1 files changed, 16 insertions, 1 deletions
diff --git a/main.go b/main.go
index 9a341fb..aace165 100644
--- a/main.go
+++ b/main.go
@@ -2,6 +2,7 @@ package main
import (
"context"
+ "crypto/tls"
"fmt"
"linum/internal/blocklist"
"linum/internal/cache"
@@ -65,6 +66,19 @@ func main() {
}
defer c.Stop()
+ var tlsCfg *tls.Config
+ if cfg.Server.ListenDoT != "" {
+ cert, err := tls.LoadX509KeyPair(cfg.TLS.Cert, cfg.TLS.Key)
+ if err != nil {
+ logger.Error("load tls cert failed", "err", err)
+ os.Exit(1)
+ }
+ tlsCfg = &tls.Config{
+ Certificates: []tls.Certificate{cert},
+ NextProtos: []string{"dot"},
+ }
+ logger.Info("dot listener configured", "addr", cfg.Server.ListenDoT)
+ }
var bl *blocklist.Blocklist
if len(cfg.Blocklist.Files) > 0 || len(cfg.Blocklist.URLs) > 0 {
resp := blocklist.ResponseZeroIP
@@ -101,7 +115,7 @@ func main() {
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
- srv, err := server.New(cfg.Server.ListenUDP, cfg.Server.ListenTCP, cfg.Server.ListenDOH, logger, r, c, bl, cfg)
+ srv, err := server.New(cfg.Server.ListenUDP, cfg.Server.ListenTCP, cfg.Server.ListenDOH, cfg.Server.ListenDoT, tlsCfg, logger, r, c, bl, cfg)
if err != nil {
logger.Error("create server failed", "err", err)
os.Exit(1)
@@ -116,6 +130,7 @@ func main() {
"udp", cfg.Server.ListenUDP,
"tcp", cfg.Server.ListenTCP,
"doh", cfg.Server.ListenDOH,
+ "dot", cfg.Server.ListenDoT,
)
if err := srv.Run(ctx); err != nil && err != context.Canceled {