Javascript或HTML5检索LOCAL ip

时间:2014-09-05 18:54:52

标签: javascript html5

我使用笔记本电脑进行工作和个人使用。因此它有时会连接到家庭网络,有时会连接到许多可能的工作场所网络之一

我一直在考虑自定义浏览器的主页和/或MDM主题(linux mint登录页面,支持html5),两者都包括自定义html页面,可能使用javascript,但我应该知道笔记本电脑在哪里。

想想我去办公室,我想了解服务器的状态和办公室服务器的链接(A,B,C);去客户所在地,我需要连接办公室的外部IP(A *,B *)和客户服务器(X,Y,Z);回到家里,我想要提供信息,新闻,我的足球团队成绩,推特等等。我可以通过javascript设置所有这些(例如,使用表格或字典:places = {ip1:[A,B,C],ip2:[X,Y,Z]}或类似的东西。

我知道有很多地方在讨论检索我的公共IP等等......但是使用它们需要一个主动和开放的互联网连接。我将使用它的一些地方没有互联网访问,或者需要使用具有登录名和密码的代理。因此,任何涉及外部站点引用的解决方案都不起作用(但客户使用我需要访问的本地Intranet服务)。

我也试着保持简单:想法是构建一些快速索引页面。所以我不想在页面中加载java(我不确定MDM html5主题是否支持它)

所以问题是:有没有办法使用纯javascript或html5检索LOCAL IP(非公共IP),完全客户端,避免php,asp,ssi,调用公共网络,或者第三派对插件(java / flash)?

我认为响应不是,因为我没有找到像“get_ip()”这样的js函数,但我希望是错的。

我能想到的唯一解决方案是:

  • 安装本地Web服务器,小nginx或可用于检索客户端ip请求的东西
  • 使用java(请,不!)
  • 使用html5文件系统api并在文件夹中查找数据,其中一些脚本在启动时编写了ip
  • 更改前一个脚本只需重写HTML文件我将使用ip进行ip hardcoded
  • 使用javascript ping每个可能网络上的已知服务器列表

还有其他想法吗? 感谢

1 个答案:

答案 0 :(得分:5)

删除链接示例的复杂情况:

function getLocalIP(cb) {

    var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection,
    rtc = new RTCPeerConnection({
        iceServers: []
    });
    if (window.mozRTCPeerConnection) rtc.createDataChannel('', {reliable: false});
    rtc.onicecandidate = function(e) {
        if (cb && e.candidate) {
            cb(e.candidate.candidate.split(" ")[4]);
            cb = null;
        }
    }; 

    rtc.createOffer(function(resp) {
            var moz=resp.sdp && 
                   resp.sdp.indexOf("c=IN IP4") !==0 && 
                   resp.sdp.split("c=IN IP4")[1].trim().split(/\s/)[0];
            if(moz && moz!=="0.0.0.0"){
                 cb( moz );
            }else{
                 rtc.setLocalDescription(resp);
            }
    }, Boolean);
} /* end getIP() */

getLocalIP(alert)

在Chrome和Firefox中提供了相同的结果,但在我的IE副本中无效。