diff --git a/app/alter/main.go b/app/alter/main.go new file mode 100644 index 0000000000000000000000000000000000000000..e7134ff01486574909f0aa1c880a54a19cd2455f --- /dev/null +++ b/app/alter/main.go @@ -0,0 +1,57 @@ +package main + +import ( + "context" + "fmt" + "log" + + "0xacab.org/leap/vpn-hole/alter/alter" + "github.com/miekg/dns" + + "time" +) + +func init() { + // start the cmdline parser + alter.ParseFlags() + +} + +func main() { + + // call ParseFlags() to get the config struct with the values + c := alter.ParseFlags() + fmt.Println(c) + + // start the vpnhole + if err := c.Start(); err != nil { + log.Fatalln(fmt.Errorf("failed to start vpnhole: %w", err)) + } + defer func() { + if err := c.Stop(); err != nil { + log.Println(fmt.Errorf("failed to stop vpnhole: %w", err)) + } + }() + log.Printf("vpnhole started: %s", c) + + subscriptions, err := ReadSubscriptions(c.SubscriptionsFilename) + if err != nil { + log.Fatalln(fmt.Errorf("failed to read subscriptions list: %w", err)) + } + + for _, blacklistURL := range subscriptions { + PrivBlacklist.Subscribe(blacklistURL) + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + go PrivBlacklist.Watch(ctx, time.Minute*10) + + dns.HandleFunc(".", Handler) + + if err = dns.ListenAndServe(c.Addr, "udp", nil); err != nil { + log.Println(fmt.Errorf("failed to serve DNS server: %w", err)) + } + +} diff --git a/main.go b/main.go deleted file mode 100644 index c43a73a6699cace4d868d3eac09204905f5ba264..0000000000000000000000000000000000000000 --- a/main.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "log" - "net/http" - "time" - - "github.com/miekg/dns" -) - -var httpClient = &http.Client{Timeout: 30 * time.Second} - -func main() { - var ( - addr string - subscriptionsFilename string - ) - - flag.StringVar(&addr, "addr", ":53", "addr") - flag.StringVar(&upstream, "upstream", "1.1.1.1:53", "upstream") - flag.StringVar(&subscriptionsFilename, "subs", "subs.list", "subscriptions filename") - flag.Parse() - - subscriptions, err := readSubscriptions(subscriptionsFilename) - if err != nil { - log.Fatalln(fmt.Errorf("Failed to read subscriptions list: %w", err)) - } - - for _, blacklistURL := range subscriptions { - privBlacklist.Subscribe(blacklistURL) - } - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - go privBlacklist.Watch(ctx, time.Minute*10) - - dns.HandleFunc(".", handler) - - if err = dns.ListenAndServe(addr, "udp", nil); err != nil { - log.Println(fmt.Errorf("Failed to serve DNS server: %w", err)) - } -}