/*! \file main.js
* \brief File transfer with WebRTC. Signaling is done through sound
* \author Georgi Gerganov
*/
var kOfferNumCandidates = 5;
var kOfferName = '-';
var kOfferUsername = '-';
var kOfferSessionId = '1337';
var kOfferSessionVersion = '0';
var kOfferLocalhost = '0.0.0.0';
var kOfferBundle = 'sdparta_0';
var kOfferPort = '5400';
var kOfferCandidateFoundation = '0';
var kOfferCandidateComponent = '1';
var kOfferCandidatePriority = '2122252543';
var kOfferUfrag = 'bc105aa9';
var kOfferPwd = '52f0a329e7fd93662f50828f617b408d';
var kOfferFingerprint = '00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00';
var kAnswerNumCandidates = 5;
var kAnswerName = '-';
var kAnswerUsername = '-';
var kAnswerSessionId = '1338';
var kAnswerSessionVersion = '0';
var kAnswerLocalhost = '0.0.0.0';
var kAnswerBundle = 'sdparta_0';
var kAnswerPort = '5400';
var kAnswerCandidateFoundation = '0';
var kAnswerCandidateComponent = '1';
var kAnswerCandidatePriority = '2122252543';
var kAnswerUfrag = 'c417de3e';
var kAnswerPwd = '1aa0e1241c16687064c4fd31b8fc367a';
var kAnswerFingerprint = '00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00';
function getOfferTemplate() {
return "v=0\r\n" +
"o="+kOfferUsername+" "+kOfferSessionId+" "+kOfferSessionVersion+" IN IP4 "+kOfferLocalhost+"\r\n" +
"s="+kOfferName+"\r\n" +
"t=0 0\r\n" +
"a=sendrecv\r\n" +
"a=fingerprint:sha-256 "+kOfferFingerprint+"\r\n" +
"a=group:BUNDLE "+kOfferBundle+"\r\n" +
"a=ice-options:trickle\r\n" +
"a=msid-semantic:WMS *\r\n" +
"m=application "+kOfferPort+" DTLS/SCTP 5000\r\n" +
"c=IN IP4 "+kOfferLocalhost+"\r\n" +
"a=candidate:0 "+kOfferCandidateComponent+" UDP "+kOfferCandidatePriority+" "+kOfferLocalhost+" "+kOfferPort+" typ host\r\n" +
"a=candidate:1 "+kOfferCandidateComponent+" UDP "+kOfferCandidatePriority+" "+kOfferLocalhost+" "+kOfferPort+" typ host\r\n" +
"a=candidate:2 "+kOfferCandidateComponent+" UDP "+kOfferCandidatePriority+" "+kOfferLocalhost+" "+kOfferPort+" typ host\r\n" +
"a=candidate:3 "+kOfferCandidateComponent+" UDP "+kOfferCandidatePriority+" "+kOfferLocalhost+" "+kOfferPort+" typ host\r\n" +
"a=candidate:4 "+kOfferCandidateComponent+" UDP "+kOfferCandidatePriority+" "+kOfferLocalhost+" "+kOfferPort+" typ host\r\n" +
"a=sendrecv\r\n" +
"a=end-of-candidates\r\n" +
"a=ice-pwd:"+kOfferPwd+"\r\n" +
"a=ice-ufrag:"+kOfferUfrag+"\r\n" +
"a=mid:"+kOfferBundle+"\r\n" +
"a=sctpmap:5000 webrtc-datachannel 256\r\n" +
"a=setup:actpass\r\n" +
"a=max-message-size:1073741823\r\n";
}
function getAnswerTemplate() {
return "v=0\r\n" +
"o="+kAnswerUsername+" "+kAnswerSessionId+" "+kAnswerSessionVersion+" IN IP4 "+kAnswerLocalhost+"\r\n" +
"s="+kAnswerName+"\r\n" +
"t=0 0\r\n" +
"a=sendrecv\r\n" +
"a=fingerprint:sha-256 "+kAnswerFingerprint+"\r\n" +
"a=group:BUNDLE "+kAnswerBundle+"\r\n" +
"a=ice-options:trickle\r\n" +
"a=msid-semantic:WMS *\r\n" +
"m=application "+kAnswerPort+" DTLS/SCTP 5000\r\n" +
"c=IN IP4 "+kAnswerLocalhost+"\r\n" +
"a=candidate:0 "+kAnswerCandidateComponent+" UDP "+kAnswerCandidatePriority+" "+kAnswerLocalhost+" "+kAnswerPort+" typ host\r\n" +
"a=candidate:1 "+kAnswerCandidateComponent+" UDP "+kAnswerCandidatePriority+" "+kAnswerLocalhost+" "+kAnswerPort+" typ host\r\n" +
"a=candidate:2 "+kAnswerCandidateComponent+" UDP "+kAnswerCandidatePriority+" "+kAnswerLocalhost+" "+kAnswerPort+" typ host\r\n" +
"a=candidate:3 "+kAnswerCandidateComponent+" UDP "+kAnswerCandidatePriority+" "+kAnswerLocalhost+" "+kAnswerPort+" typ host\r\n" +
"a=candidate:4 "+kAnswerCandidateComponent+" UDP "+kAnswerCandidatePriority+" "+kAnswerLocalhost+" "+kAnswerPort+" typ host\r\n" +
"a=sendrecv\r\n" +
"a=end-of-candidates\r\n" +
"a=ice-pwd:"+kAnswerPwd+"\r\n" +
"a=ice-ufrag:"+kAnswerUfrag+"\r\n" +
"a=mid:"+kAnswerBundle+"\r\n" +
"a=sctpmap:5000 webrtc-datachannel 256\r\n" +
"a=setup:active\r\n" +
"a=max-message-size:1073741823\r\n";
}
// Taken from: https://github.com/diafygi/webrtc-ips
// get the IP addresses associated with an account
function getIPs(callback){
var ip_dups = {};
//compatibility for firefox and chrome
var RTCPeerConnection = window.RTCPeerConnection
|| window.mozRTCPeerConnection
|| window.webkitRTCPeerConnection;
var useWebKit = !!window.webkitRTCPeerConnection;
//bypass naive webrtc blocking using an iframe
if(!RTCPeerConnection){
//NOTE: you need to have an iframe in the page right above the script tag
//
//
//