我使用笔记本电脑进行工作和个人使用.因此它有时会连接到家庭网络,有时会连接到许多可能的工作场所网络之一
我一直在想我的自定义浏览器的主页和/或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,完全客户端的本地IP(没有公网IP),避免了PHP,ASP,SSI,调用公共网络或第三方插件(Java /闪光)?
我认为响应不是,因为我没有找到像"get_ip()"这样的js函数,但我希望是错的.
我能想到的唯一解决方案是:
还有其他想法吗?谢谢
剥离链接示例的复杂性:
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)
Run Code Online (Sandbox Code Playgroud)
在Chrome和Firefox中提供相同的结果,在我的IE副本中无效.