Skip to content
Simple hosts file management in Go (golang).
Branch: master
Clone or download
lextoumbourou Merge pull request #7 from jimmystewpot/variable_hosts
add support for custom hosts location via an environment variable
Latest commit 40053a4 Mar 11, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd
.gitignore
.travis.yml Release 1.0.0 May 3, 2015
API.md
LICENSE
README.md Make examples a lil' less useless. Apr 26, 2016
const.go
const_windows.go
goodhosts.go
goodhosts_test.go
utils.go
utils_test.go

README.md

Goodhosts

Simple hosts file (/etc/hosts) management in Go (golang).


A Surrealist Parisian Dinner Party chez Madame Rothschild, 1972

Build Status

Features

  • List, add, remove and check hosts file entries from code or the command-line.
  • Windows support.

Command-Line Usage

Installation

Linux

Download the binary and put it in your path.

$ wget -O goodhosts https://github.com/lextoumbourou/goodhosts/releases/download/v2.1.0/goodhosts-linux
$ chmod +x goodhosts
$ export PATH=$(pwd):$PATH
$ goodhosts --help

Windows

Download the binary and do Windowsy stuff with it (doc PR welcome).

List entries

$ goodhosts list
127.0.0.1 localhost
10.0.0.5 my-home-server xbmc-server
10.0.0.6 my-desktop

Add --all flag to include comments.

Check for an entry

$ goodhosts check 127.0.0.1 facebook.com

Add an entry

$ goodhosts add 127.0.0.1 facebook.com

Or entries.

$ goodhosts add 127.0.0.1 facebook.com twitter.com gmail.com

Remove an entry

$ goodhosts rm 127.0.0.1 facebook.com

Or entries.

$ goodhosts rm 127.0.0.1 facebook.com twitter.com gmail.com

More

$ goodhosts --help

API Usage

Installation

$ go get github.com/lextoumbourou/goodhosts

List entries

package main

import (
    "fmt"
    "github.com/lextoumbourou/goodhosts"
)

func main() {
    hosts := goodhosts.NewHosts()

    for _, line := range hosts.Lines {
        fmt.Println(line.Raw)
    }
}

Check for an entry

package main

import (
    "fmt"
    "github.com/lextoumbourou/goodhosts"
)

func main() {
    hosts := goodhosts.NewHosts()

    if hosts.Has("127.0.0.1", "facebook.com") {
        fmt.Println("Entry exists!")
        return
    }

    fmt.Println("Entry doesn't exist!")
}

Add an entry

package main

import (
    "fmt"
    "github.com/lextoumbourou/goodhosts"
)

func main() {
    hosts := goodhosts.NewHosts()

    // Note that nothing will be added to the hosts file until ``hosts.Flush`` is called.
    hosts.Add("127.0.0.1", "facebook.com", "twitter.com")

    if err := hosts.Flush(); err != nil {
        panic(err)
    }
}

Remove an entry

package main

import (
    "fmt"
    "github.com/lextoumbourou/goodhosts"
)

func main() {
    hosts := goodhosts.NewHosts()

    // Same deal, yo: call hosts.Flush() to make permanent.
    hosts.Remove("127.0.0.1", "facebook.com", "twitter.com")

    if err := hosts.Flush(); err != nil {
        panic(err)
    }
}

More

Changelog

2.1.0 (2015-06-08)

  • Added Windows support.
  • Added command-line docs.

2.0.0 (2015-05-04)

  • Breaking API change.
  • Add support for adding and removing multiple hosts.
  • Added --all flag.
  • Handle malformed IP addresses.

1.0.0 (2015-05-03)

  • Initial release.

License

MIT


You can’t perform that action at this time.