Reputation: 341
is it possible to get hostname in Node.js?
This is how I get client's IP:
var ip = request.header('x-forwarded-for');
So, how do I get client's hostname?
var hostname = request.header('???');
Thanks for reply!
Upvotes: 8
Views: 25817
Reputation: 373
You can get hostname from the os module:
var os = require("os");
os.hostname();
Upvotes: -1
Reputation: 178
You can also achieve the same if you're using socket.io in the following manner:
// Setup an example server
var server = require('socket.io').listen(8080);
// On established connection
server.sockets.on('connection', function (socket) {
// Get server host
var host = socket.handshake.headers.host;
// Remove port number together with colon
host = host.replace(/:.*$/,"");
// To test it, output to console
console.log(host);
});
Upvotes: 0
Reputation: 3627
if you are using express,
then you can do as follows,
var express = require("express");
var app = express.createServer();
app.listen(8080);
app.get("/", function (req, res){
console.log("REQ:: "+req.headers.host);
res.end(req.headers.host);
});
Upvotes: -1
Reputation: 85224
You can use the 'dns' module to do a reverse dns lookup:
require('dns').reverse('12.12.12.12', function(err, domains) {
if(err) {
console.log(err.toString());
return;
}
console.log(domains);
});
See: http://nodejs.org/docs/v0.3.1/api/all.html#dns.reverse
Upvotes: 16
Reputation: 338
I think this might help you. That's not exactly the client hostname but the ip address.
function getClientAddress(req) {
return req.headers['x-forwarded-for'] || req.connection.remoteAddress;
}
Upvotes: 14
Reputation: 75777
I think the only way you can do it is like this:
<form method="post" action="/gethostname">
<label for="hostname">What is your hostname?</label>
<input type="text" name="hostname" id="hostname">
</form>
But I would suggest you don't really need it, it's not like you can do anything useful with the information. If you just want a string to identify with the user's machine then you can make something up.
If what you're really after is the FQDN then I would suggest it's still not really that useful to you, but for that you need Reverse DNS lookup. If you're on a VPS or similar you can probably configure your box to do this for you, but note that it'll likely take a few seconds so it's not a good idea to do it as part of a response. Also note, you'll not be getting the user's machine's FQDN in most cases but that of their router.
Upvotes: 6