summaryrefslogtreecommitdiff
path: root/server.go
diff options
context:
space:
mode:
authorFelix Hanley <felix@monk.local>2017-07-12 13:41:54 +0000
committerFelix Hanley <felix@monk.local>2017-07-12 13:41:54 +0000
commitd257530cb0278c71b6edbbd0d5a60531f4536d09 (patch)
tree2b55fe5ac959a0d19340498b030c08216bce13dc /server.go
downloadnomoreads-d257530cb0278c71b6edbbd0d5a60531f4536d09.tar.gz
nomoreads-d257530cb0278c71b6edbbd0d5a60531f4536d09.tar.bz2
Get startedHEADmaster
Diffstat (limited to 'server.go')
-rw-r--r--server.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/server.go b/server.go
new file mode 100644
index 0000000..9761e71
--- /dev/null
+++ b/server.go
@@ -0,0 +1,52 @@
+package main
+
+import (
+ "fmt"
+ "github.com/miekg/dns"
+ //"strconv"
+ //"time"
+)
+
+type server struct {
+ address string
+ port int
+}
+
+func (s *server) Run() {
+ udpHandler := dns.NewServeMux()
+ udpHandler.HandleFunc(".", Handler.DoUDP)
+
+ udpServer := &dns.Server{
+ Addr: s.Addr(),
+ Net: "udp",
+ Handler: udpHandler,
+ UDPSize: 65535,
+ ReadTimeout: Config.UdpTimeout,
+ WriteTimeout: Config.UdpTimeout,
+ }
+ go s.start(udpServer)
+
+ if !Config.NoTcp {
+ tcpHandler := dns.NewServeMux()
+ tcpHandler.HandleFunc(".", Handler.DoTCP)
+
+ tcpServer := &dns.Server{
+ Addr: s.Addr(),
+ Net: "tcp",
+ Handler: tcpHandler,
+ ReadTimeout: Config.TcpTimeout,
+ WriteTimeout: Config.TcpTimeout,
+ }
+ go s.start(tcpServer)
+ }
+}
+
+func (s *Server) start(ds *dns.Server) {
+ if !Config.Quiet {
+ fmt.Println("Listening on ", ds.Net, ":", s.Addr())
+ }
+ err := ds.ListenAndServe()
+ if err != nil {
+ fmt.Println("Failed to listen on ", ds.Net, ":", s.Addr(), ": ", err.Error())
+ }
+}