goodhosts

package module
v3.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2019 License: MIT Imports: 7 Imported by: 0

README

Goodhosts

Build Status

This is a fork of [https://github.com/lextoumbourou/goodhosts] as we needed a bit deeper management.

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

Features

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

Command-Line Usage

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/ChrisWiegman/goodhosts
List entries
package main

import (
    "fmt"
    "github.com/ChrisWiegman/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/ChrisWiegman/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/ChrisWiegman/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", "This is a line comment", "facebook.com", "twitter.com")

    if err := hosts.Flush(); err != nil {
        panic(err)
    }
}
Remove an entry
package main

import (
    "fmt"
    "github.com/ChrisWiegman/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

3.2 (2019-10-10)
  • Add ability to remove an entire section
3.1.1 (2019-10-10)
  • Fix existing tests
3.1 (2019-10-10)
  • Allow sectioning of IP addresses with "section name" in api
  • Various bugfixes
3.0.1 (2019-10-09)
  • Refactored with go mod support
  • Added ability to comment lines
  • Only one host per line for easier management
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


Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsComment

func IsComment(line string) bool

IsComment Return ```true``` if the line is a comment.

Types

type Hosts

type Hosts struct {
	Path         string
	Section      string
	FileLines    []HostsLine
	SectionLines []HostsLine
}

Hosts Represents a hosts file.

func NewHosts

func NewHosts(sectionName string) (Hosts, error)

NewHosts Return a new instance of “Hosts“.

func (*Hosts) Add

func (h *Hosts) Add(ip, comment string, hosts ...string) error

Add an entry to the hosts file.

func (Hosts) Flush

func (h Hosts) Flush() error

Flush any changes made to hosts file.

func (*Hosts) Has

func (h *Hosts) Has(ip string, host string, forceFile bool) bool

Has Return a bool if ip/host combo in hosts file.

func (*Hosts) IsWritable

func (h *Hosts) IsWritable() bool

IsWritable Return ```true``` if hosts file is writable.

func (*Hosts) Load

func (h *Hosts) Load() error

Load the hosts file into ```l.Lines```. ```Load()``` is called by ```NewHosts()``` and ```Hosts.Flush()``` so you generally you won't need to call this yourself.

func (*Hosts) Remove

func (h *Hosts) Remove(ip string, hosts ...string) error

Remove an entry from the hosts file.

func (*Hosts) RemoveSection added in v3.2.0

func (h *Hosts) RemoveSection() error

RemoveSection removes an entire section from the hostsfile

type HostsLine

type HostsLine struct {
	IP      string
	Hosts   []string
	Comment string
	Raw     string
	Err     error
}

HostsLine Represents a single line in the hosts file.

func NewHostsLine

func NewHostsLine(raw string) HostsLine

NewHostsLine Return a new instance of ```HostsLine```.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL