mirror of
https://github.com/pommee/goaway.git
synced 2026-05-12 20:38:34 -05:00
chore: minor cleanup
This commit is contained in:
@@ -10,7 +10,7 @@ import (
|
||||
|
||||
func (s *DNSServer) InitDoT(cert tls.Certificate) (*dns.Server, error) {
|
||||
notifyReady := func() {
|
||||
log.Info("Started DoT server on port %d", s.Config.DNS.DoTPort)
|
||||
log.Info("Started DoT (dns-over-tls) server on port %d", s.Config.DNS.DoTPort)
|
||||
}
|
||||
|
||||
tlsConfig := &tls.Config{
|
||||
|
||||
@@ -74,9 +74,7 @@ func NewDNSServer(config *settings.Config, dbManager *database.DatabaseManager,
|
||||
}
|
||||
|
||||
var client dns.Client
|
||||
if cert.Certificate == nil {
|
||||
client = dns.Client{Net: "udp"}
|
||||
} else {
|
||||
if cert.Certificate != nil {
|
||||
client = dns.Client{Net: "tcp-tls"}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
func (s *DNSServer) InitTCP() (*dns.Server, error) {
|
||||
server := &dns.Server{
|
||||
Addr: fmt.Sprintf("%s:%d", s.Config.DNS.Address, s.Config.DNS.Port),
|
||||
Net: "tcp",
|
||||
Handler: s,
|
||||
ReusePort: true,
|
||||
UDPSize: s.Config.DNS.UDPSize,
|
||||
}
|
||||
|
||||
return server, nil
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
type notifyDNSReady func()
|
||||
|
||||
func (s *DNSServer) InitUDP(notifyReady notifyDNSReady) (*dns.Server, error) {
|
||||
server := &dns.Server{
|
||||
Addr: fmt.Sprintf("%s:%d", s.Config.DNS.Address, s.Config.DNS.Port),
|
||||
Net: "udp",
|
||||
Handler: s,
|
||||
ReusePort: true,
|
||||
UDPSize: s.Config.DNS.UDPSize,
|
||||
NotifyStartedFunc: notifyReady,
|
||||
}
|
||||
|
||||
return server, nil
|
||||
}
|
||||
@@ -212,8 +212,7 @@ func (config *Config) GetCertificate() (tls.Certificate, error) {
|
||||
if config.DNS.TLSCertFile != "" && config.DNS.TLSKeyFile != "" {
|
||||
cert, err := tls.LoadX509KeyPair(config.DNS.TLSCertFile, config.DNS.TLSKeyFile)
|
||||
if err != nil {
|
||||
log.Error("Failed to load TLS certificate: %s", err)
|
||||
return tls.Certificate{}, err
|
||||
return tls.Certificate{}, fmt.Errorf("Failed to load TLS certificate: %s", err)
|
||||
}
|
||||
|
||||
return cert, nil
|
||||
|
||||
@@ -146,7 +146,7 @@ func startServer(config *settings.Config, ansi bool) {
|
||||
|
||||
cert, err := config.GetCertificate()
|
||||
if err != nil {
|
||||
log.Fatal("Failed to load TLS certificate: %s", err)
|
||||
log.Fatal("%s", err)
|
||||
}
|
||||
|
||||
dnsServer, err := server.NewDNSServer(config, dbManager, notificationManager, cert)
|
||||
@@ -156,52 +156,66 @@ func startServer(config *settings.Config, ansi bool) {
|
||||
|
||||
go dnsServer.ProcessLogEntries()
|
||||
|
||||
blacklistEntry, err := lists.InitializeBlacklist(dnsServer.DBManager)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to initialize blacklist: %v", err)
|
||||
}
|
||||
dnsServer.Blacklist = blacklistEntry
|
||||
|
||||
domains, err := blacklistEntry.CountDomains()
|
||||
if err != nil {
|
||||
log.Warning("Failed to count blacklist domains: %v", err)
|
||||
}
|
||||
|
||||
currentVersion := setup.GetVersionOrDefault(version)
|
||||
asciiart.AsciiArt(config, domains, currentVersion.Original(), config.API.Authentication, ansi)
|
||||
|
||||
dnsReadyChannel := make(chan struct{})
|
||||
errorChannel := make(chan struct{}, 1)
|
||||
|
||||
notifyReady := func() {
|
||||
blacklistEntry, err := lists.InitializeBlacklist(dnsServer.DBManager)
|
||||
if err != nil {
|
||||
log.Error("Failed to initialize blacklist: %v", err)
|
||||
errorChannel <- struct{}{}
|
||||
return
|
||||
}
|
||||
dnsServer.Blacklist = blacklistEntry
|
||||
|
||||
domains, err := blacklistEntry.CountDomains()
|
||||
if err != nil {
|
||||
log.Warning("Failed to count blacklist domains: %v", err)
|
||||
}
|
||||
|
||||
currentVersion := setup.GetVersionOrDefault(version)
|
||||
asciiart.AsciiArt(config, domains, currentVersion.Original(), config.API.Authentication, ansi)
|
||||
|
||||
log.Info("Started DNS server on: %s:%d", config.DNS.Address, config.DNS.Port)
|
||||
close(dnsReadyChannel)
|
||||
}
|
||||
|
||||
udpServer, err := dnsServer.InitUDP(notifyReady)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to initialize DNS server: %s", err)
|
||||
udpServer := &dns.Server{
|
||||
Addr: fmt.Sprintf("%s:%d", config.DNS.Address, config.DNS.Port),
|
||||
Net: "udp",
|
||||
Handler: dnsServer,
|
||||
ReusePort: true,
|
||||
UDPSize: config.DNS.UDPSize,
|
||||
}
|
||||
|
||||
tcpServer, _ := dnsServer.InitTCP()
|
||||
if err != nil {
|
||||
log.Fatal("Failed to initialize TCP server: %s", err)
|
||||
tcpServer := &dns.Server{
|
||||
Addr: fmt.Sprintf("%s:%d", config.DNS.Address, config.DNS.Port),
|
||||
Net: "tcp",
|
||||
Handler: dnsServer,
|
||||
ReusePort: true,
|
||||
UDPSize: config.DNS.UDPSize,
|
||||
NotifyStartedFunc: notifyReady,
|
||||
}
|
||||
|
||||
startServices(cert, dnsServer, udpServer, tcpServer, config, ansi, dnsReadyChannel, errorChannel)
|
||||
}
|
||||
|
||||
func startServices(cert tls.Certificate, dnsServer *server.DNSServer, udpServer, tcpServer *dns.Server, config *settings.Config, ansi bool, dnsReadyChannel chan struct{}, errorChannel chan struct{}) {
|
||||
func startServices(
|
||||
cert tls.Certificate,
|
||||
dnsServer *server.DNSServer,
|
||||
udpServer *dns.Server,
|
||||
tcpServer *dns.Server,
|
||||
config *settings.Config,
|
||||
ansi bool,
|
||||
dnsReadyChannel chan struct{},
|
||||
errorChannel chan struct{},
|
||||
) {
|
||||
var (
|
||||
wg sync.WaitGroup
|
||||
sigChannel = make(chan os.Signal, 1)
|
||||
)
|
||||
|
||||
signal.Notify(sigChannel, syscall.SIGINT, syscall.SIGTERM)
|
||||
wg.Add(2)
|
||||
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
@@ -211,6 +225,7 @@ func startServices(cert tls.Certificate, dnsServer *server.DNSServer, udpServer,
|
||||
}
|
||||
}()
|
||||
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
@@ -246,9 +261,9 @@ func startServices(cert tls.Certificate, dnsServer *server.DNSServer, udpServer,
|
||||
defer wg.Done()
|
||||
|
||||
if serverIP, err := api.GetServerIP(); err == nil {
|
||||
log.Info("DoH server running at https://%s:%d/dns-query", serverIP, config.DNS.DoHPort)
|
||||
log.Info("DoH (dns-over-https) server running at https://%s:%d/dns-query", serverIP, config.DNS.DoHPort)
|
||||
} else {
|
||||
log.Info("DoH server running on port :%d", config.DNS.DoHPort)
|
||||
log.Info("DoH (dns-over-https) server running on port :%d", config.DNS.DoHPort)
|
||||
}
|
||||
|
||||
if err := dohServer.ListenAndServeTLS(config.DNS.TLSCertFile, config.DNS.TLSKeyFile); err != nil {
|
||||
@@ -260,6 +275,7 @@ func startServices(cert tls.Certificate, dnsServer *server.DNSServer, udpServer,
|
||||
|
||||
prefetcher := prefetch.New(dnsServer)
|
||||
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user