mirror of
https://github.com/dcarrillo/whatismyip.git
synced 2025-07-01 05:49:27 +00:00
New whatismydns feature (#29)
This commit is contained in:
48
server/dns.go
Normal file
48
server/dns.go
Normal file
@ -0,0 +1,48 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"strconv"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
const port = 53
|
||||
|
||||
type DNS struct {
|
||||
server *dns.Server
|
||||
handler *dns.Handler
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
func NewDNSServer(ctx context.Context, handler dns.Handler) *DNS {
|
||||
return &DNS{
|
||||
handler: &handler,
|
||||
ctx: ctx,
|
||||
}
|
||||
}
|
||||
|
||||
func (d *DNS) Start() {
|
||||
d.server = &dns.Server{
|
||||
Addr: ":" + strconv.Itoa(port),
|
||||
Net: "udp",
|
||||
Handler: *d.handler,
|
||||
// UDPSize: 65535,
|
||||
// ReusePort: true,
|
||||
}
|
||||
|
||||
log.Printf("Starting DNS server listening on :%d (udp)", port)
|
||||
go func() {
|
||||
if err := d.server.ListenAndServe(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func (d *DNS) Stop() {
|
||||
log.Printf("Stopping DNS server...")
|
||||
if err := d.server.Shutdown(); err != nil {
|
||||
log.Printf("DNS server forced to shutdown: %s", err)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user