mirror of
https://github.com/OpenFusionProject/Client.git
synced 2024-11-22 13:40:06 +00:00
Don't perform lookup for obvious IPs and account for async
This old version of Node forces us to use callbacks, so I had to rearrange some code to ensure the client only launches after the resolution is complete
This commit is contained in:
parent
8d6e546628
commit
7ce21cdddc
@ -156,32 +156,6 @@ function setGameInfo(serverUUID) {
|
|||||||
window.asseturl = gameversion.url; // gameclient.js needs to access this
|
window.asseturl = gameversion.url; // gameclient.js needs to access this
|
||||||
|
|
||||||
remotefs.writeFileSync(__dirname+"\\assetInfo.php", asseturl);
|
remotefs.writeFileSync(__dirname+"\\assetInfo.php", asseturl);
|
||||||
|
|
||||||
// Server address parsing
|
|
||||||
var address;
|
|
||||||
var port;
|
|
||||||
var sepPos = result.ip.indexOf(":");
|
|
||||||
if (sepPos > -1) {
|
|
||||||
address = result.ip.substr(0, sepPos);
|
|
||||||
port = result.ip.substr(sepPos + 1);
|
|
||||||
} else {
|
|
||||||
address = result.ip
|
|
||||||
port = 23000 // default
|
|
||||||
}
|
|
||||||
|
|
||||||
// DNS resolution. there is no synchronous version unfortunately
|
|
||||||
// if the resolution fails, keep the original entry (includes plain IP cases)
|
|
||||||
var ip = address;
|
|
||||||
dns.resolve4(address, function(err, res) {
|
|
||||||
if(!err) {
|
|
||||||
ip = res[0];
|
|
||||||
console.log("Resolved " + address + " to " + ip);
|
|
||||||
}
|
|
||||||
|
|
||||||
var fullAddress = ip + ":" + port;
|
|
||||||
console.log("Will connect to " + fullAddress);
|
|
||||||
remotefs.writeFileSync(__dirname+"\\loginInfo.php", fullAddress);
|
|
||||||
|
|
||||||
if (result.hasOwnProperty('endpoint')) {
|
if (result.hasOwnProperty('endpoint')) {
|
||||||
var httpendpoint = result.endpoint.replace("https://", "http://")
|
var httpendpoint = result.endpoint.replace("https://", "http://")
|
||||||
remotefs.writeFileSync(__dirname+"\\rankurl.txt", httpendpoint+"getranks");
|
remotefs.writeFileSync(__dirname+"\\rankurl.txt", httpendpoint+"getranks");
|
||||||
@ -196,7 +170,40 @@ function setGameInfo(serverUUID) {
|
|||||||
remotefs.writeFileSync(__dirname+"\\images.php", "assets/img/");
|
remotefs.writeFileSync(__dirname+"\\images.php", "assets/img/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Server address parsing
|
||||||
|
var address;
|
||||||
|
var port;
|
||||||
|
var sepPos = result.ip.indexOf(":");
|
||||||
|
if (sepPos > -1) {
|
||||||
|
address = result.ip.substr(0, sepPos);
|
||||||
|
port = result.ip.substr(sepPos + 1);
|
||||||
|
} else {
|
||||||
|
address = result.ip
|
||||||
|
port = 23000 // default
|
||||||
|
}
|
||||||
|
|
||||||
|
// DNS resolution. there is no synchronous version for some stupid reason
|
||||||
|
if(!address.match(/^[0-9.]+$/)) dns.resolve4(address, function(err, res) {
|
||||||
|
if(!err) {
|
||||||
|
console.log("Resolved " + address + " to " + res[0]);
|
||||||
|
address = res[0];
|
||||||
|
} else {
|
||||||
|
console.log("Err: " + err.code);
|
||||||
|
}
|
||||||
|
prepConnection(address, port);
|
||||||
});
|
});
|
||||||
|
else {
|
||||||
|
console.log(address + " is an IP; skipping DNS lookup");
|
||||||
|
prepConnection(address, port);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function prepConnection(address, port) {
|
||||||
|
var full = address + ":" + port;
|
||||||
|
console.log("Will connect to " + full);
|
||||||
|
remotefs.writeFileSync(__dirname+"\\loginInfo.php", full);
|
||||||
|
launchGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the UUID of the server with the selected background color.
|
// Returns the UUID of the server with the selected background color.
|
||||||
@ -216,7 +223,6 @@ function connectToServer() {
|
|||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
$('body,html').css('pointer-events','');
|
$('body,html').css('pointer-events','');
|
||||||
setGameInfo(getSelectedServer());
|
setGameInfo(getSelectedServer());
|
||||||
launchGame();
|
|
||||||
}, 200);
|
}, 200);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user