Awesome
hostile
Simple, programmatic /etc/hosts
manipulation (in node.js)
install
npm install hostile
usage
If you use OS X or Linux, this module assumes your hosts file is at /etc/hosts
. On
Windows, it assumes your hosts file is at C:/Windows/System32/drivers/etc/hosts
.
Commands that modify the hosts file require root privileges.
list all host file records
hostile list
set a domain in the hosts file
hostile set [ip] [host]
examples:
hostile set localhost domain.com
hostile set 192.168.33.10 domain.com
remove a domain from the hosts file
hostile remove [host]
example:
hostile remove domain.com
load a set of hosts from a file
hostile load [file_path]
hosts.txt
# hosts.txt
127.0.0.1 github.com
127.0.0.1 twitter.com
example:
hostile load hosts.txt
unload [remove] a set of hosts from a file
hostile unload [file_path]
# hosts.txt
127.0.0.1 github.com
127.0.0.1 twitter.com
example:
hostile unload hosts.txt
methods
Commands that modify the hosts file require root privileges.
I wouldn't recommend running your production node server with admin privileges unless you
downgrade to a normal user with
process.setuid(id)
before you start accepting requests.
All methods have sync versions. Just omit the callback parameter.
add a rule to /etc/hosts
var hostile = require('hostile')
hostile.set('127.0.0.1', 'peercdn.com', function (err) {
if (err) {
console.error(err)
} else {
console.log('set /etc/hosts successfully!')
}
})
If the rule already exists, then this does nothing.
remove a rule from /etc/hosts
hostile.remove('127.0.0.1', 'peercdn.com', function (err) {
if (err) {
console.error(err)
} else {
console.log('set /etc/hosts successfully!')
}
})
If the rule does not exist, then this does nothing.
get all lines in /etc/hosts
// If `preserveFormatting` is true, then include comments, blank lines and other
// non-host entries in the result
var preserveFormatting = false
hostile.get(preserveFormatting, function (err, lines) {
if (err) {
console.error(err.message)
}
lines.forEach(function (line) {
console.log(line) // [IP, Host]
})
})
get all lines in any file
// If `preserveFormatting` is true, then include comments, blank lines and other
// non-host entries in the result
var preserveFormatting = false
hostile.getFile(file_path, preserveFormatting, function (err, lines) {
if (err) {
console.error(err.message)
}
lines.forEach(function (line) {
console.log(line) // [IP, Host]
})
})
contributors
- Feross Aboukhadijeh (author)
- Maayan Glikser
license
MIT. Copyright (c) Feross Aboukhadijeh.