Documentation ¶
Overview ¶
Package dnsp implements a simple DNS proxy.
Queries are blocked or resolved based on a blacklist or a whitelist. Wildcard host patterns are supported (e.g. "*.com") as well as hosted, community-managed hosts files.
Example ¶
package main import ( "log" "github.com/gophergala/dnsp" ) func main() { // Create a server that listens on :1053, on all interfaces. // DNS queries will be proxied to Google's public nameservers. s, err := dnsp.NewServer(dnsp.Options{ Bind: ":1053", Resolve: []string{"8.8.4.4", "8.8.8.8"}, // Block hosts listed in a community-managed file: Blacklist: "http://hosts-file.net/download/hosts.txt", }) if err != nil { log.Fatal(err) } // Remember to close it: defer s.Shutdown() // Start accepting DNS queries: if err := s.ListenAndServe(); err != nil { log.Fatal(err) } }
Output:
Index ¶
- func Asset(name string) ([]byte, error)
- func AssetDir(name string) ([]string, error)
- func AssetInfo(name string) (os.FileInfo, error)
- func AssetNames() []string
- func RestoreAsset(dir, name string) error
- func RestoreAssets(dir, name string) error
- func RunHTTPServer(host string, s *Server)
- type Options
- type Server
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Asset ¶
Asset loads and returns the asset for the given name. It returns an error if the asset could not be found or could not be loaded.
func AssetDir ¶
AssetDir returns the file names below a certain directory embedded in the file by go-bindata. For example if you run go-bindata on data/... and data contains the following hierarchy:
data/ foo.txt img/ a.png b.png
then AssetDir("data") would return []string{"foo.txt", "img"} AssetDir("data/img") would return []string{"a.png", "b.png"} AssetDir("foo.txt") and AssetDir("notexist") would return an error AssetDir("") will return []string{"data"}.
func AssetInfo ¶
AssetInfo loads and returns the asset info for the given name. It returns an error if the asset could not be found or could not be loaded.
func RestoreAsset ¶
Restore an asset under the given directory
func RestoreAssets ¶
Restore assets under the given directory recursively
func RunHTTPServer ¶
Types ¶
type Options ¶
type Options struct { Net string Bind string Resolve []string Poll time.Duration Whitelist string Blacklist string }
Options can be passed to NewServer().