/
var
/
www
/
cobraambalaj
/
node_modules
/
internal-ip
/
/var/www/cobraambalaj/node_modules/internal-ip
mkdir
upload
Name
Size
Mode
Actions
browser.js
1552
0644
edit
dl
rm
index.d.ts
1499
0644
edit
dl
rm
index.js
999
0644
edit
dl
rm
license
1117
0644
edit
dl
rm
package.json
1998
0644
edit
dl
rm
readme.md
1762
0644
edit
dl
rm
Edit:
/var/www/cobraambalaj/node_modules/internal-ip/browser.js
(1552B)
/* eslint-env browser */ 'use strict'; import pEvent from 'p-event'; import isIp from 'is-ip'; const getIp = async ({isSecondTry = false} = {}) => { try { const peerConnection = new RTCPeerConnection({iceServers: []}); peerConnection.createDataChannel(''); peerConnection.createOffer(peerConnection.setLocalDescription.bind(peerConnection), () => {}); const {candidate} = await pEvent(peerConnection, 'icecandidate', { timeout: 10000 }); peerConnection.close(); if (candidate && candidate.candidate) { const result = candidate.candidate.split(' ')[4]; if (result.endsWith('.local')) { if (isSecondTry) { return; } const inputDevices = await navigator.mediaDevices.enumerateDevices(); const inputDeviceTypes = new Set(inputDevices.map(({kind}) => kind)); const constraints = {}; if (inputDeviceTypes.has('audioinput')) { constraints.audio = true; } else if (inputDeviceTypes.has('videoinput')) { constraints.video = true; } else { return; } const mediaStream = await navigator.mediaDevices.getUserMedia(constraints); for (const track of mediaStream.getTracks()) { track.stop(); } return await getIp({isSecondTry: true}); } return result; } } catch {} }; export const v4 = async () => { const result = await getIp(); if (isIp.v4(result)) { return result; } }; v4.sync = () => undefined; export const v6 = async () => { const result = await getIp(); if (isIp.v6(result)) { return result; } }; v6.sync = () => undefined;
Save
cmd:
run