diff options
| author | RblSb <msrblsb@gmail.com> | 2020-07-29 18:06:27 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2020-07-29 18:07:37 +0300 |
| commit | 328c05713f968ccce7a63c934dce873dc7967d6a (patch) | |
| tree | 401fc6197a2257e9a8aaa9ba77bb8cc15dee8015 | |
| parent | f80dc58210ebb2d822e1aa258f3bc3e5460d2376 (diff) | |
Improve getGlobalIp
| -rw-r--r-- | build/server.js | 14 | ||||
| -rw-r--r-- | src/server/Main.hx | 2 | ||||
| -rw-r--r-- | src/server/Utils.hx | 22 |
3 files changed, 24 insertions, 14 deletions
diff --git a/build/server.js b/build/server.js index 81d54d2..70054d6 100644 --- a/build/server.js +++ b/build/server.js @@ -3713,9 +3713,9 @@ var server_Main = function() { if(envPort != null) { this.port = envPort; } + haxe_Log.trace("Local: http://" + this.localIp + ":" + this.port,{ fileName : "src/server/Main.hx", lineNumber : 88, className : "server.Main", methodName : "new"}); server_Utils.getGlobalIp(function(ip) { _gthis.globalIp = ip; - haxe_Log.trace("Local: http://" + _gthis.localIp + ":" + _gthis.port,{ fileName : "src/server/Main.hx", lineNumber : 90, className : "server.Main", methodName : "new"}); haxe_Log.trace("Global: http://" + _gthis.globalIp + ":" + _gthis.port,{ fileName : "src/server/Main.hx", lineNumber : 91, className : "server.Main", methodName : "new"}); }); var dir = "" + this.rootDir + "/res"; @@ -4440,7 +4440,12 @@ server_Utils.ensureDir = function(path) { } }; server_Utils.getGlobalIp = function(callback) { - js_node_Https.get("https://myexternalip.com/raw",function(r) { + var onError = function(e) { + haxe_Log.trace("Warning: connection error, server is local.",{ fileName : "src/server/Utils.hx", lineNumber : 16, className : "server.Utils", methodName : "getGlobalIp"}); + callback("127.0.0.1"); + }; + var url = new js_node_url_URL("https://myexternalip.com/raw"); + js_node_Https.get({ timeout : 5000, protocol : url.protocol, host : url.host, path : url.pathname},function(r) { r.setEncoding("utf8"); var data_b = ""; r.on("data",function(chunk) { @@ -4449,10 +4454,7 @@ server_Utils.getGlobalIp = function(callback) { r.on("end",function(_) { callback(data_b); }); - }).on("error",function(e) { - haxe_Log.trace("Warning: connection error, server is local.",{ fileName : "src/server/Utils.hx", lineNumber : 21, className : "server.Utils", methodName : "getGlobalIp"}); - callback("127.0.0.1"); - }); + }).on("error",onError).on("timeout",onError); }; server_Utils.getLocalIp = function() { var ifaces = js_node_Os.networkInterfaces(); diff --git a/src/server/Main.hx b/src/server/Main.hx index f0c3d7a..85006c7 100644 --- a/src/server/Main.hx +++ b/src/server/Main.hx @@ -85,9 +85,9 @@ class Main { final envPort = (process.env : Dynamic).PORT; if (envPort != null) port = envPort; + trace('Local: http://$localIp:$port'); Utils.getGlobalIp(ip -> { globalIp = ip; - trace('Local: http://$localIp:$port'); trace('Global: http://$globalIp:$port'); }); diff --git a/src/server/Utils.hx b/src/server/Utils.hx index 40fa282..4e2fc9d 100644 --- a/src/server/Utils.hx +++ b/src/server/Utils.hx @@ -1,8 +1,9 @@ package server; -import sys.FileSystem; +import js.node.url.URL; import js.node.Https; import js.node.Os; +import sys.FileSystem; class Utils { @@ -11,16 +12,23 @@ class Utils { } public static function getGlobalIp(callback:(ip:String)->Void):Void { - // untyped to skip second null argument for node < v10 - Https.get(untyped "https://myexternalip.com/raw", r -> { + function onError(e):Void { + trace("Warning: connection error, server is local."); + callback("127.0.0.1"); + } + final url = new URL("https://myexternalip.com/raw"); + Https.get({ // this overload for node < v10.9.0 + timeout: 5000, + protocol: url.protocol, + host: url.host, + path: url.pathname + }, r -> { r.setEncoding("utf8"); final data = new StringBuf(); r.on("data", chunk -> data.add(chunk)); r.on("end", _ -> callback(data.toString())); - }).on("error", e -> { - trace("Warning: connection error, server is local."); - callback("127.0.0.1"); - }); + }).on("error", onError) + .on("timeout", onError); } public static function getLocalIp():String { |
