diff options
Diffstat (limited to 'dnssecsocket/connection_handler.go')
| -rw-r--r-- | dnssecsocket/connection_handler.go | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/dnssecsocket/connection_handler.go b/dnssecsocket/connection_handler.go deleted file mode 100644 index 8ccedaa..0000000 --- a/dnssecsocket/connection_handler.go +++ /dev/null @@ -1,131 +0,0 @@ -// inspired from: -// https://github.com/mactsouk/opensource.com.git -// and -// https://coderwall.com/p/wohavg/creating-a-simple-tcp-server-in-go - -package dnssecsocket - -import "os" -import "bufio" -import "math/rand" -import "net" -import "strconv" -import "strings" -// import log "github.com/sirupsen/logrus" -// import "github.com/wercker/journalhook" - -import "go.wit.com/shell" - -// will try to get this hosts FQDN -// import "github.com/Showmax/go-fqdn" - -import "github.com/miekg/dns" - -// import "github.com/davecgh/go-spew/spew" - -const MIN = 1 -const MAX = 100 - -func random() int { - return rand.Intn(MAX-MIN) + MIN -} - -func GetRemoteAddr(conn net.TCPConn) string { - clientAddr := conn.RemoteAddr().String() - parts := strings.Split(clientAddr, "]") - ipv6 := parts[0] - return ipv6[1:] -} - -// -// Handle each connection -// Each client must send it's hostname as the first line -// Then each hostname is verified with DNSSEC -// -func HandleConnection(conn *net.TCPConn) { - // Disable journalhook until it builds on Windows - // journalhook.Enable() - - // spew.Dump(conn) - // ipv6client := GetRemoteAddr(c) - ipv6client := conn.RemoteAddr() - log(args.VerboseDnssec, "Serving to %s as the IPv6 client", ipv6client) - - // setup this TCP socket as the "standard input" - // newStdin, _ := bufio.NewReader(conn.File()) - newStdin, _ := conn.File() - newreader := bufio.NewReader(newStdin) - - log(args.VerboseDnssec, "Waiting for the client to tell me its name") - netData, err := newreader.ReadString('\n') - if err != nil { - log(args.VerboseDnssec, err) - return - } - clientHostname := strings.TrimSpace(netData) - log(args.VerboseDnssec, "Recieved client hostname as:", clientHostname) - - dnsRR := Dnstrace(clientHostname, "AAAA") - if (dnsRR == nil) { - log(args.VerboseDnssec, "dnsRR IS NIL") - log(args.VerboseDnssec, "dnsRR IS NIL") - log(args.VerboseDnssec, "dnsRR IS NIL") - conn.Close() - return - } - ipaddr := dns.Field(dnsRR[1], 1) - log(args.VerboseDnssec, "Client claims to be: ", ipaddr) - log(args.VerboseDnssec, "Serving to IPv6 client:", ipv6client) - -/* TODO: figure out how to fix this check - if (ipaddr != ipv6client) { - log(args.VerboseDnssec) - log(args.VerboseDnssec, "DNSSEC ERROR: client IPv6 does not work") - log(args.VerboseDnssec, "DNSSEC ERROR: client IPv6 does not work") - log(args.VerboseDnssec, "DNSSEC ERROR: client IPv6 does not work") - log(args.VerboseDnssec) - conn.Close() - return - } -*/ - - f, _ := conn.File() -// shell.SetStdout(f) -// shell.SpewOn() // turn this on if you want to look at the process exit states - - // send all log() output to systemd journalctl -// shell.UseJournalctl() - - for { - defer shell.SetStdout(os.Stdout) - defer conn.Close() - netData, err := newreader.ReadString('\n') - if err != nil { - log(args.VerboseDnssec, err) - return - } - - temp := strings.TrimSpace(string(netData)) - if temp == "STOP" { - break - } - log(args.VerboseDnssec, "Recieved: ", temp) - - if (temp == "list") { - log(args.VerboseDnssec, "Should run list here") - shell.SetStdout(f) - shell.Run("/root/bin/list.testing.com") - shell.SetStdout(os.Stdout) - } - - if (temp == "cpuinfo") { - log(args.VerboseDnssec, "Should cat /proc/cpuinfo") - shell.SetStdout(f) - shell.Run("cat /proc/cpuinfo") - shell.SetStdout(os.Stdout) - } - - result := strconv.Itoa(random()) + "\n" - conn.Write([]byte(string(result))) - } -} |
