Steven Smith revised this gist . Go to revision
2 files changed, 34 insertions
localport.js(file created)
| @@ -0,0 +1,33 @@ | |||
| 1 | + | // I wanted a bookmarklet to take me to the local instance of Plex running on my desktop, so Chromecast would function correctly | |
| 2 | + | // (if I used localhost it wouldn't send the correct uri) | |
| 3 | + | // For this I had to get the local ethernet interface IP | |
| 4 | + | // I initiate a connection to 0.0.0.0, then use the data on the connection object to get the interface IP used for that connection | |
| 5 | + | // May not work on the most popular web browser | |
| 6 | + | var path = prompt("Enter uri (e.g http://{}:32400/web)"); | |
| 7 | + | // var path = "http://{}:32400/web"; | |
| 8 | + | var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection; | |
| 9 | + | RTCPeerConnection && function() { | |
| 10 | + | function c(ip) { | |
| 11 | + | ip in b || (window.location.href = path.replace(/{}/g, ip)) | |
| 12 | + | } | |
| 13 | + | ||
| 14 | + | function d(a) { | |
| 15 | + | a.split("\r\n").forEach(function(a) { | |
| 16 | + | ~a.indexOf("a=candidate") ? "host" === a.split(" ")[7] && c(a.split(" ")[4]) : ~a.indexOf("c=") && c(a.split(" ")[2]) | |
| 17 | + | }) | |
| 18 | + | } | |
| 19 | + | var a = new RTCPeerConnection({ | |
| 20 | + | iceServers: [] | |
| 21 | + | }); | |
| 22 | + | a.createDataChannel("", { | |
| 23 | + | reliable: !1 | |
| 24 | + | }), a.onicecandidate = function(a) { | |
| 25 | + | a.candidate && d("a=" + a.candidate.candidate) | |
| 26 | + | }, a.createOffer(function(b) { | |
| 27 | + | d(b.sdp), a.setLocalDescription(b) | |
| 28 | + | }, function(a) { | |
| 29 | + | console.warn("offer failed", a) | |
| 30 | + | }); | |
| 31 | + | var b = Object.create(null); | |
| 32 | + | b["0.0.0.0"] = !1 | |
| 33 | + | }(); | |
z-localport-shortened.js(file created)
| @@ -0,0 +1 @@ | |||
| 1 | + | javascript:var path=prompt("Enter uri (e.g http://{}:32400/web)");var RTCPeerConnection=window.webkitRTCPeerConnection||window.mozRTCPeerConnection;RTCPeerConnection&&function(){function c(ip){ip in b||(window.location.href=path.replace(/{}/g, ip))}function d(a){a.split("\r\n").forEach(function(a){~a.indexOf("a=candidate")?"host"===a.split(" ")[7]&&c(a.split(" ")[4]):~a.indexOf("c=")&&c(a.split(" ")[2])})}var a=new RTCPeerConnection({iceServers:[]});a.createDataChannel("",{reliable:!1}),a.onicecandidate=function(a){a.candidate&&d("a="+a.candidate.candidate)},a.createOffer(function(b){d(b.sdp),a.setLocalDescription(b)},function(a){console.warn("offer failed",a)});var b=Object.create(null);b["0.0.0.0"]=!1}(); | |