node-gamedig/games/minecraft.js

35 lines
789 B
JavaScript
Raw Normal View History

var dns = require('dns');
module.exports = require('./protocols/gamespy3').extend({
2013-07-10 12:02:48 +02:00
init: function() {
this._super();
this.pretty = 'Minecraft';
2013-07-10 12:02:48 +02:00
this.maxAttempts = 2;
2013-07-10 12:40:41 +02:00
this.options.port = 25565;
},
parseDns: function(host,c) {
var self = this;
var _super = this._super;
function fallback(h) { _super.call(self,h,c); }
dns.resolve('_minecraft._tcp.'+host, 'SRV', function(err,addresses) {
if(err) return fallback(host);
if(addresses.length >= 1) {
var line = addresses[0];
self.options.port = line.port;
var srvhost = line.name;
if(srvhost.match(/\d+\.\d+\.\d+\.\d+/)) {
self.options.address = srvhost;
c();
} else {
// resolve yet again
fallback(srvhost);
}
return;
}
return fallback(host);
});
2013-07-10 12:02:48 +02:00
}
});