Simple /etc/hosts manipulation
npm install hostile[ci-image]: https://img.shields.io/github/workflow/status/feross/hostile/ci/master
[ci-url]: https://github.com/feross/hostile/actions
[npm-image]: https://img.shields.io/npm/v/hostile.svg
[npm-url]: https://npmjs.org/package/hostile
[downloads-image]: https://img.shields.io/npm/dm/hostile.svg
[downloads-url]: https://npmjs.org/package/hostile
[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
[standard-url]: https://standardjs.com
#### Simple, programmatic /etc/hosts manipulation (in node.js)
``bash`
npm install hostile
If you use OS X or Linux, this module assumes your hosts file is at /etc/hosts. OnC:/Windows/System32/drivers/etc/hosts
Windows, it assumes your hosts file is at .
Commands that modify the hosts file require root privileges.
#### list all host file records
`bash`
hostile list
#### set a domain in the hosts file
`bash`
hostile set [ip] [host]
examples:
`bash`
hostile set localhost domain.com
hostile set 192.168.33.10 domain.com
#### remove a domain from the hosts file
`bash`
hostile remove [host]
example:
`bash`
hostile remove domain.com
#### load a set of hosts from a file
`bash`
hostile load [file_path]`
hosts.txtbash`hosts.txt
127.0.0.1 github.com
127.0.0.1 twitter.com
example:
`bash`
hostile load hosts.txt
#### unload [remove] a set of hosts from a file
`bash`
hostile unload [file_path]
`bash`hosts.txt
127.0.0.1 github.com
127.0.0.1 twitter.com
example:
`bash`
hostile unload hosts.txt
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
`js`
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
`js`
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
`jspreserveFormatting
// If 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
`jspreserveFormatting
// If 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]
})
})
``
- Feross Aboukhadijeh (author)
- Maayan Glikser
MIT. Copyright (c) Feross Aboukhadijeh.