var progress_bar = '
'; function test_ipv4() { var $p = $("#v4_conn"); $p.find(".proto_supported").html(progress_bar).find(".progress-bar").css("width", "100%"); $p.find(".proto_address, .proto_hostname, .proto_isp").empty(); $.ajax({ url: "https://v4.ip6.biz/info.php", dataType: "json", timeout: 15000, success: function(resp) { $p.find(".proto_supported").html("Supported"); $p.find(".proto_address").html("" + resp.address + ""); $p.find(".proto_isp").html("" + resp.asn); $p.find(".proto_hostname").html(progress_bar).find(".progress-bar").css("width", "100%"); $.ajax({ url: "https://v4.ip6.biz/hostname.php", dataType: "json", timeout: 2000, success: function(resp) { if (resp.status == "ok") { $p.find(".proto_hostname").html(resp.response); } else { if (resp.status == "servfail") { $p.find(".proto_hostname").html("SERVFAIL"); } else if (resp.status == "none") { $p.find(".proto_hostname").html("None"); } else { $p.find(".proto_hostname").html("Test failed"); } } }, error: function(xopt, err) { $p.find(".proto_hostname").html("Test failed"); }, }); }, error: function(xopt, err) { $p.find(".proto_supported").html("Not supported"); }, }); } function test_ipv6() { var $p = $("#v6_conn"); $p.find(".proto_supported").html(progress_bar).find(".progress-bar").css("width", "100%"); $p.find(".proto_address, .proto_hostname, .proto_isp, .proto_icmp").empty(); $.ajax({ url: "https://v6.ip6.biz/info.php", dataType: "json", timeout: 15000, success: function(resp) { if (resp.address.includes(".")) { $p.find(".proto_supported").html("Browser error"); $p.find(".proto_icmp").html("Not tested"); $p.find(".proto_address").html("n/a"); $p.find(".proto_hostname").html("Not tested") $p.find(".proto_isp").prev().html("Error") $p.find(".proto_isp").html("Your browser doesn't support IPv6 properly. Please check out this bug if you are using Firefox."); return; } $p.find(".proto_supported").html("Supported"); $p.find(".proto_address").html("" + resp.address + ""); $p.find(".proto_isp").html("" + resp.asn); $p.find(".proto_icmp").html(progress_bar).find(".progress-bar").css("width", "100%"); $.ajax({ url: "https://v6.ip6.biz/icmp.php", dataType: "json", timeout: 2000, success: function(resp) { if (resp.status === "OK") { $p.find(".proto_icmp").html("Reachable (" + resp.rtt + ")"); } else { $p.find(".proto_icmp").html("Filtered"); } }, error: function(xopt, err) { $p.find(".proto_icmp").html("Not tested"); }, }); $p.find(".proto_hostname").html(progress_bar).find(".progress-bar").css("width", "100%"); $.ajax({ url: "https://v6.ip6.biz/hostname.php", dataType: "json", timeout: 2000, success: function(resp) { if (resp.status == "ok") { $p.find(".proto_hostname").html(resp.response); } else { if (resp.status == "servfail") { $p.find(".proto_hostname").html("SERVFAIL"); } else if (resp.status == "none") { $p.find(".proto_hostname").html("None"); } else { $p.find(".proto_hostname").html("Test failed"); } } }, error: function(xopt, err) { $p.find(".proto_hostname").html("Test failed"); }, }); }, error: function(xopt, err) { $p.find(".proto_supported").html("Not supported"); }, }); } function test_browser() { var $p = $("#browser"); $p.find(".browser_default").html(progress_bar).find(".progress-bar").css("width", "100%"); $p.find(".browser_fallback").empty(); $.ajax({ url: "https://any.ip6.biz/proto.php", dataType: "json", timeout: 15000, success: function(resp) { $p.find(".browser_default").html("IPv" + resp.protocol + ""); $p.find(".browser_fallback").html(progress_bar).find(".progress-bar").css("width", "100%"); var fb_start = (new Date()).getTime(); $.ajax({ url: "https://f" + resp.protocol + ".ip6.biz/proto.php", dataType: "json", timeout: 15000, success: function(resp2) { var fb_time = Math.round(((new Date()).getTime() - fb_start)); var label = fb_time + " ms"; var lclass = "success"; if (fb_time > 1000) { lclass = "warning"; } $p.find(".browser_fallback").html("to IPv" + resp2.protocol + " in " + label + ""); }, error: function(xopt, err) { $p.find(".browser_fallback").html("No"); }, }); if (resp.protocol === "6") { } else { } }, error: function(xopt, err) { $p.find(".browser_default").html("Test failed"); }, }); } function test_dns() { var $p = $("#dns"); $p.find(".dns_dns4_ip4, .dns_dns4_ip6, .dns_dns6_ip4, .dns_dns6_ip6").html(progress_bar).find(".progress-bar").css("width", "100%"); $.ajax({ url: "https://v4.z4.ip6.biz/proto.php", dataType: "json", timeout: 15000, success: function(resp) { if (resp.protocol === "4") { $p.find(".dns_dns4_ip4").html("Reachable"); } else { $p.find(".dns_dns4_ip4").html("Test failed"); } }, error: function(xopt, err) { $p.find(".dns_dns4_ip4").html("Unreachable"); }, }); $.ajax({ url: "https://v6.z4.ip6.biz/proto.php", dataType: "json", timeout: 15000, success: function(resp) { if (resp.protocol === "6") { $p.find(".dns_dns4_ip6").html("Reachable"); } else { $p.find(".dns_dns4_ip6").html("Test failed"); } }, error: function(xopt, err) { $p.find(".dns_dns4_ip6").html("Unreachable"); }, }); $.ajax({ url: "https://v4.z6.ip6.biz/proto.php", dataType: "json", timeout: 15000, success: function(resp) { if (resp.protocol === "4") { $p.find(".dns_dns6_ip4").html("Reachable"); } else { $p.find(".dns_dns6_ip4").html("Test failed"); } }, error: function(xopt, err) { $p.find(".dns_dns6_ip4").html("Unreachable"); }, }); $.ajax({ url: "https://v6.z6.ip6.biz/proto.php", dataType: "json", timeout: 15000, success: function(resp) { if (resp.protocol === "6") { $p.find(".dns_dns6_ip6").html("Reachable"); } else { $p.find(".dns_dns6_ip6").html("Test failed"); } }, error: function(xopt, err) { $p.find(".dns_dns6_ip6").html("Unreachable"); }, }); } $(function() { $("table span.glyphicon-question-sign").each(function(k, el) { $(el).attr("data-title", $(el).closest("tr").find("th").text()).popover({ placement: "auto right", container: "body", }); }); $("#refresh_ipv4").click(function(ev) { test_ipv4(); ev.preventDefault(); return false; }); $("#refresh_ipv6").click(function(ev) { test_ipv6(); ev.preventDefault(); return false; }); $("#refresh_browser").click(function(ev) { test_browser(); ev.preventDefault(); return false; }); $("#refresh_dns").click(function(ev) { test_dns(); ev.preventDefault(); return false; }); test_browser(); test_ipv4(); test_ipv6(); test_dns(); });