@ -2,6 +2,7 @@ package main
import (
"flag"
"fmt"
"log"
"net"
"net/http"
@ -12,12 +13,13 @@ import (
var (
configFilePath = flag . String ( "config" , "./config.json" , "config file path" )
httpAddress = flag . String ( "bind-http" , "127.0.0.1" , "interface to bind the HTTP server to" )
dnsAddress = flag . String ( "bind-dns" , "127.0.0.1" , "interface to bind the DNS server to" )
verbose = flag . Bool ( "verbose" , false , "enable verbose logging" )
httpAddress = flag . String ( "bind-http" , "127.0.0.1" , "interface to bind the HTTP server to (0.0.0.0 for all)" )
dnsAddress = flag . String ( "bind-dns" , "127.0.0.1" , "interface to bind the DNS server to (0.0.0.0 for all)" )
)
func main ( ) {
log . SetPrefix ( "[Entrypoint] " )
log . SetFlags ( log . LUTC | log . Lshortfile )
flag . Parse ( )
cfg , err := LoadConfig ( * configFilePath )
@ -26,8 +28,9 @@ func main() {
}
go func ( ) {
log . Println ( "HTTP server listening" )
if err := http . ListenAndServe ( ":80" , http . HandlerFunc ( func ( res http . ResponseWriter , req * http . Request ) {
httpAddr := fmt . Sprintf ( "%s:80" , * httpAddress )
log . Printf ( "HTTP server listening @ %s" , httpAddr )
if err := http . ListenAndServe ( httpAddr , http . HandlerFunc ( func ( res http . ResponseWriter , req * http . Request ) {
log . Printf ( "got request for: %s" , req . URL . Hostname ( ) )
} ) ) ; err != nil {
log . Fatal ( err )
@ -44,13 +47,14 @@ func main() {
ips = append ( ips , net . ParseIP ( strIP ) )
}
handler , err := NewDNSHandler ( &memoryDNSCacher { TTL : time . Minute } , domainBlacklist , DNSResolver ( ips ) , * cfg )
handler , err := NewDNSHandler ( *httpAddress , &memoryDNSCacher { TTL : time . Minute } , domainBlacklist , DNSResolver ( ips ) , * cfg )
if err != nil {
log . Fatal ( err )
}
log . Println ( "DNS server listening" )
srv := & dns . Server { Addr : ":53" , Net : "udp" , Handler : handler }
dnsAddr := fmt . Sprintf ( "%s:53" , * dnsAddress )
log . Printf ( "DNS server listening @ %s" , dnsAddr )
srv := & dns . Server { Addr : dnsAddr , Net : "udp" , Handler : handler }
if err := srv . ListenAndServe ( ) ; err != nil {
log . Fatal ( err )
}