0 votes
116 views
by (11.2k points)

1 Answer

0 votes
by (11.2k points)
selected by
 
Best answer
Create a Coach View with custom html in layout, put the following in the custom html

<span id="ip1"></span>

In Inline Javascript paste the following

/**
 * Get the user IP throught the webkitRTCPeerConnection
 * @param onNewIP {Function} listener function to expose the IP locally
 * @return undefined
 */
function getUserIPPvt(onNewIP) { //  onNewIp - your listener function for new IPs
    //compatibility for firefox and chrome
    var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
    var pc = new myPeerConnection({
        iceServers: []
    }),
    noop = function() {},
    localIPs = {},
    ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
    key;

    function iterateIP(ip) {
        if (!localIPs[ip]) onNewIP(ip);
        localIPs[ip] = true;
    }

     //create a bogus data channel
    pc.createDataChannel("");

    // create offer and set local description
    pc.createOffer().then(function(sdp) {
        sdp.sdp.split('\n').forEach(function(line) {
            if (line.indexOf('candidate') < 0) return;
            line.match(ipRegex).forEach(iterateIP);
        });
        
        pc.setLocalDescription(sdp, noop, noop);
    }).catch(function(reason) {
        // An error occurred, so handle the failure to connect
    });

    //listen for candidate events
    pc.onicecandidate = function(ice) {
        if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
        ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
    };
}

In Load Event Handler put the following

getUserIPPvt(function(ip){
    document.getElementById("ip1").innerHTML = 'Got your IP ! : '  + ip ;
});

Related questions

0 votes
1 answer 46 views
0 votes
0 answers 35 views
0 votes
0 answers 13 views
0 votes
0 answers 18 views
0 votes
1 answer 231 views
0 votes
1 answer 34 views
0 votes
2 answers 82 views
0 votes
0 answers 152 views
0 votes
0 answers 128 views
0 votes
1 answer 232 views
...