Commit 2354c794 authored by Dele Olajide's avatar Dele Olajide

ofmeet plugin version 0.3.1

Fixed issue with broken presence broadcast
Fixed issue with broken desktop/screen sharing
Fixed issue with missing jnsctp.dll dependencies
Removed some more redundant or duplicate jar files in jitsivideobridge lib
parent c5db7ec9
...@@ -49,12 +49,22 @@ ...@@ -49,12 +49,22 @@
Openfire Meetings Plugin Changelog Openfire Meetings Plugin Changelog
</h1> </h1>
<p><b>0.3.1</b> -- December 12, 2015</p>
<ul>
<li>Fixed issue with broken presence broadcast</li>
<li>Fixed issue with broken desktop/screen sharing</li>
<li>Fixed issue with missing jnsctp.dll dependencies</li>
<li>Removed some more redundant or duplicate jar files in jitsivideobridge lib</li>
</ul>
<p><b>0.3.0</b> -- October 12, 2015</p> <p><b>0.3.0</b> -- October 12, 2015</p>
<ul> <ul>
<li>[<a href='http://www.igniterealtime.org/issues/browse/OF-953'>OF-953</a>] - Updated JSP libraries.</li> <li>[<a href='http://www.igniterealtime.org/issues/browse/OF-953'>OF-953</a>] - Updated JSP libraries.</li>
<li>Requires Openfire 3.11.0.</li> <li>Requires Openfire 3.11.0.</li>
</ul> </ul>
<p><b>0.2.3</b> -- Nov 14th, 2015</p> <p><b>0.2.3</b> -- Nov 14th, 2015</p>
<ul> <ul>
......
Some of the files here, notably libjitsi.jar, are OSGi bundles from the Jitsi
project. In Jitsi they are generated in the 'sc-bundles' directory by the
'bundles' ant target. To update the files here, run 'ant rebuild' in Jitsi and
then copy the files here, e.g.:
for f in *.jar; do
if [ -e ../../jitsi/sc-bundles/$f ]; then
cp ../../jitsi/sc-bundles/$f .;
fi;
done
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<name>Openfire Meetings</name> <name>Openfire Meetings</name>
<description>Provides high quality, scalable video conferences using Jitsi Meet and Jitsi Videobridge</description> <description>Provides high quality, scalable video conferences using Jitsi Meet and Jitsi Videobridge</description>
<author>Ignite Realtime</author> <author>Ignite Realtime</author>
<version>0.3.0</version> <version>0.3.1</version>
<date>11/18/2015</date> <date>11/18/2015</date>
<minServerVersion>3.11.0 alpha</minServerVersion> <minServerVersion>3.11.0 alpha</minServerVersion>
<adminconsole> <adminconsole>
......
...@@ -736,6 +736,7 @@ $(document).bind('setLocalDescription.jingle', function (event, sid) { ...@@ -736,6 +736,7 @@ $(document).bind('setLocalDescription.jingle', function (event, sid) {
if (newssrcs[i-1].type === 'video' && isUsingScreenStream) { if (newssrcs[i-1].type === 'video' && isUsingScreenStream) {
newssrcs[i-1].type = 'screen'; newssrcs[i-1].type = 'screen';
} }
connection.emuc.addMediaToPresence(i, connection.emuc.addMediaToPresence(i,
newssrcs[i-1].type, newssrcs[i-1].ssrc, newssrcs[i-1].direction); newssrcs[i-1].type, newssrcs[i-1].ssrc, newssrcs[i-1].direction);
} }
...@@ -815,8 +816,8 @@ $(document).bind('entered.muc', function (event, jid, info, pres) { ...@@ -815,8 +816,8 @@ $(document).bind('entered.muc', function (event, jid, info, pres) {
'connected'); 'connected');
// Add Peer's container // Add Peer's container
var id = $(pres).find('>userID').text(); var id = $(pres).find('userID').text();
var email = $(pres).find('>email'); var email = $(pres).find('email');
if(email.length > 0) { if(email.length > 0) {
id = email.text(); id = email.text();
} }
...@@ -891,20 +892,22 @@ $(document).bind('left.muc', function (event, jid) { ...@@ -891,20 +892,22 @@ $(document).bind('left.muc', function (event, jid) {
$(document).bind('presence.muc', function (event, jid, info, pres) { $(document).bind('presence.muc', function (event, jid, info, pres) {
/* BAO /* BAO
//check if the video bridge is available //check if the video bridge is available
if($(pres).find(">bridgeIsDown").length > 0 && !bridgeIsDown) { if($(pres).find("bridgeIsDown").length > 0 && !bridgeIsDown) {
bridgeIsDown = true; bridgeIsDown = true;
messageHandler.showError("Error", messageHandler.showError("Error",
"Jitsi Videobridge is currently unavailable. Please try again later!"); "Jitsi Videobridge is currently unavailable. Please try again later!");
} }
*/
if (info.isFocus) if (info.isFocus)
{ {
return; return;
} }
*/
// Remove old ssrcs coming from the jid // Remove old ssrcs coming from the jid
Object.keys(ssrc2jid).forEach(function (ssrc) { Object.keys(ssrc2jid).forEach(function (ssrc) {
if (ssrc2jid[ssrc] == jid) { if (ssrc2jid[ssrc] == jid) {
...@@ -913,7 +916,7 @@ $(document).bind('presence.muc', function (event, jid, info, pres) { ...@@ -913,7 +916,7 @@ $(document).bind('presence.muc', function (event, jid, info, pres) {
} }
}); });
$(pres).find('>media[xmlns="http://estos.de/ns/mjs"]>source').each(function (idx, ssrc) { $(pres).find('media[xmlns="http://estos.de/ns/mjs"]>source').each(function (idx, ssrc) {
//console.log(jid, 'assoc ssrc', ssrc.getAttribute('type'), ssrc.getAttribute('ssrc')); //console.log(jid, 'assoc ssrc', ssrc.getAttribute('type'), ssrc.getAttribute('ssrc'));
var ssrcV = ssrc.getAttribute('ssrc'); var ssrcV = ssrc.getAttribute('ssrc');
ssrc2jid[ssrcV] = jid; ssrc2jid[ssrcV] = jid;
...@@ -951,14 +954,14 @@ $(document).bind('presence.muc', function (event, jid, info, pres) { ...@@ -951,14 +954,14 @@ $(document).bind('presence.muc', function (event, jid, info, pres) {
/* BAO /* BAO
//check if the video bridge is available //check if the video bridge is available
if($(pres).find(">bridgeIsDown").length > 0 && !bridgeIsDown) { if($(pres).find("bridgeIsDown").length > 0 && !bridgeIsDown) {
bridgeIsDown = true; bridgeIsDown = true;
messageHandler.showError("Error", messageHandler.showError("Error",
"Jitsi Videobridge is currently unavailable. Please try again later!"); "Jitsi Videobridge is currently unavailable. Please try again later!");
} }
*/ */
var id = $(pres).find('>userID').text(); var id = $(pres).find('userID').text();
var email = $(pres).find('>email'); var email = $(pres).find('email');
if(email.length > 0) { if(email.length > 0) {
id = email.text(); id = email.text();
} }
......
...@@ -18250,7 +18250,18 @@ var ofmeet = (function(of) ...@@ -18250,7 +18250,18 @@ var ofmeet = (function(of)
var self = this; var self = this;
// Stop the stream to trigger onended event for old stream // Stop the stream to trigger onended event for old stream
oldStream.stop();
if (oldStream.getAudioTracks().length) {
oldStream.getAudioTracks().forEach(function(track) {
track.stop();
});
}
if (oldStream.getVideoTracks().length) {
oldStream.getVideoTracks().forEach(function(track) {
track.stop();
});
}
// Remember SDP to figure out added/removed SSRCs // Remember SDP to figure out added/removed SSRCs
var oldSdp = null; var oldSdp = null;
...@@ -18672,10 +18683,12 @@ var ofmeet = (function(of) ...@@ -18672,10 +18683,12 @@ var ofmeet = (function(of)
var self = this; var self = this;
//console.log('tell', self.peerjid, 'about ' + (isadd ? 'new' : 'removed') + ' ssrcs from' + self.me); //console.log('tell', self.peerjid, 'about ' + (isadd ? 'new' : 'removed') + ' ssrcs from' + self.me);
if (!(this.peerconnection.signalingState == 'stable' && this.peerconnection.iceConnectionState == 'connected')){ // BAO This code is now redundant
//console.log("Too early to send updates"); //
return; //if (!(this.peerconnection.signalingState == 'stable' && this.peerconnection.iceConnectionState == 'connected')){
} // console.log("Too early to send updates");
// return;
//}
this.sendSSRCUpdateIq(sdpMediaSsrcs, self.sid, self.initiator, self.peerjid, isadd); this.sendSSRCUpdateIq(sdpMediaSsrcs, self.sid, self.initiator, self.peerjid, isadd);
}; };
...@@ -28793,7 +28806,7 @@ var ofmeet = (function(of) ...@@ -28793,7 +28806,7 @@ var ofmeet = (function(of)
}, },
initPresenceMap: function (myroomjid) { initPresenceMap: function (myroomjid) {
this.presMap['to'] = myroomjid; this.presMap['to'] = myroomjid;
this.presMap['xns'] = 'http://jabber.org/protocol/muc'; this.presMap['xns'] = 'http://igniterealtime.org/protocol/ofmeet';
}, },
doJoin: function (jid, password) { doJoin: function (jid, password) {
this.myroomjid = jid; this.myroomjid = jid;
...@@ -28829,13 +28842,13 @@ var ofmeet = (function(of) ...@@ -28829,13 +28842,13 @@ var ofmeet = (function(of)
} }
// Parse etherpad tag. // Parse etherpad tag.
var etherpad = $(pres).find('>etherpad'); var etherpad = $(pres).find('etherpad');
if (etherpad.length) { if (etherpad.length) {
$(document).trigger('etherpadadded.muc', [from, etherpad.text()]); $(document).trigger('etherpadadded.muc', [from, etherpad.text()]);
} }
// Parse prezi tag. // Parse prezi tag.
var presentation = $(pres).find('>prezi'); var presentation = $(pres).find('prezi');
if (presentation.length) if (presentation.length)
{ {
var url = presentation.attr('url'); var url = presentation.attr('url');
...@@ -28859,18 +28872,18 @@ var ofmeet = (function(of) ...@@ -28859,18 +28872,18 @@ var ofmeet = (function(of)
} }
// Parse audio info tag. // Parse audio info tag.
var audioMuted = $(pres).find('>audiomuted'); var audioMuted = $(pres).find('audiomuted');
if (audioMuted.length) { if (audioMuted.length) {
$(document).trigger('audiomuted.muc', [from, audioMuted.text()]); $(document).trigger('audiomuted.muc', [from, audioMuted.text()]);
} }
// Parse video info tag. // Parse video info tag.
var videoMuted = $(pres).find('>videomuted'); var videoMuted = $(pres).find('videomuted');
if (videoMuted.length) { if (videoMuted.length) {
$(document).trigger('videomuted.muc', [from, videoMuted.text()]); $(document).trigger('videomuted.muc', [from, videoMuted.text()]);
} }
var stats = $(pres).find('>stats'); var stats = $(pres).find('stats');
if(stats.length) if(stats.length)
{ {
var statsObj = {}; var statsObj = {};
...@@ -28906,7 +28919,7 @@ var ofmeet = (function(of) ...@@ -28906,7 +28919,7 @@ var ofmeet = (function(of)
member.isFocus = true; member.isFocus = true;
} }
var nicktag = $(pres).find('>nick[xmlns="http://jabber.org/protocol/nick"]'); var nicktag = $(pres).find('nick[xmlns="http://jabber.org/protocol/nick"]');
member.displayName = (nicktag.length > 0 ? nicktag.text() : null); member.displayName = (nicktag.length > 0 ? nicktag.text() : null);
if (from == this.myroomjid) { if (from == this.myroomjid) {
...@@ -29119,7 +29132,7 @@ var ofmeet = (function(of) ...@@ -29119,7 +29132,7 @@ var ofmeet = (function(of)
pres.c('password').t(this.presMap['password']).up(); pres.c('password').t(this.presMap['password']).up();
} }
pres.up(); //pres.up(); // BAO made child elements of <x>
// Send XEP-0115 'c' stanza that contains our capabilities info // Send XEP-0115 'c' stanza that contains our capabilities info
if (connection.caps) { if (connection.caps) {
...@@ -29894,7 +29907,10 @@ var ofmeet = (function(of) ...@@ -29894,7 +29907,10 @@ var ofmeet = (function(of)
if (this.localStream) if (this.localStream)
{ {
this.localStream.stop(); this.localStream.getAudioTracks().forEach(function(track)
{
track.stop();
});
} }
var iq = $iq({to: config.hosts.bridge, type: 'get'}); var iq = $iq({to: config.hosts.bridge, type: 'get'});
...@@ -31867,8 +31883,8 @@ var ofmeet = (function(of) ...@@ -31867,8 +31883,8 @@ var ofmeet = (function(of)
'connected'); 'connected');
// Add Peer's container // Add Peer's container
var id = $(pres).find('>userID').text(); var id = $(pres).find('userId').text();
var email = $(pres).find('>email'); var email = $(pres).find('email');
if(email.length > 0) { if(email.length > 0) {
id = email.text(); id = email.text();
} }
...@@ -31918,11 +31934,12 @@ var ofmeet = (function(of) ...@@ -31918,11 +31934,12 @@ var ofmeet = (function(of)
messageHandler.showError("Error", messageHandler.showError("Error",
"Jitsi Videobridge is currently unavailable. Please try again later!"); "Jitsi Videobridge is currently unavailable. Please try again later!");
} }
*/
if (info.isFocus) if (info.isFocus)
{ {
return; return;
} }
*/
// Remove old ssrcs coming from the jid // Remove old ssrcs coming from the jid
Object.keys(ssrc2jid).forEach(function (ssrc) { Object.keys(ssrc2jid).forEach(function (ssrc) {
...@@ -31932,7 +31949,7 @@ var ofmeet = (function(of) ...@@ -31932,7 +31949,7 @@ var ofmeet = (function(of)
} }
}); });
$(pres).find('>media[xmlns="http://estos.de/ns/mjs"]>source').each(function (idx, ssrc) { $(pres).find('media[xmlns="http://estos.de/ns/mjs"]>source').each(function (idx, ssrc) {
//console.log(jid, 'assoc ssrc', ssrc.getAttribute('type'), ssrc.getAttribute('ssrc')); //console.log(jid, 'assoc ssrc', ssrc.getAttribute('type'), ssrc.getAttribute('ssrc'));
var ssrcV = ssrc.getAttribute('ssrc'); var ssrcV = ssrc.getAttribute('ssrc');
ssrc2jid[ssrcV] = jid; ssrc2jid[ssrcV] = jid;
...@@ -31961,8 +31978,8 @@ var ofmeet = (function(of) ...@@ -31961,8 +31978,8 @@ var ofmeet = (function(of)
if (displayName && displayName.length > 0) $(document).trigger('displaynamechanged', [jid, displayName]); if (displayName && displayName.length > 0) $(document).trigger('displaynamechanged', [jid, displayName]);
var id = $(pres).find('>userID').text(); var id = $(pres).find('userId').text();
var email = $(pres).find('>email'); var email = $(pres).find('email');
if(email.length > 0) { if(email.length > 0) {
id = email.text(); id = email.text();
} }
...@@ -172,12 +172,14 @@ JingleSession.prototype.accept = function () { ...@@ -172,12 +172,14 @@ JingleSession.prototype.accept = function () {
JingleSession.prototype.sendSSRCUpdate = function(sdpMediaSsrcs, fromJid, isadd) { JingleSession.prototype.sendSSRCUpdate = function(sdpMediaSsrcs, fromJid, isadd) {
var self = this; var self = this;
console.log('tell', self.peerjid, 'about ' + (isadd ? 'new' : 'removed') + ' ssrcs from' + self.me); //console.log('tell', self.peerjid, 'about ' + (isadd ? 'new' : 'removed') + ' ssrcs from' + self.me);
if (!(this.peerconnection.signalingState == 'stable' && this.peerconnection.iceConnectionState == 'connected')){ // BAO This code is now redundant
console.log("Too early to send updates"); //
return; //if (!(this.peerconnection.signalingState == 'stable' && this.peerconnection.iceConnectionState == 'connected')){
} // console.log("Too early to send updates");
// return;
//}
this.sendSSRCUpdateIq(sdpMediaSsrcs, self.sid, self.initiator, self.peerjid, isadd); this.sendSSRCUpdateIq(sdpMediaSsrcs, self.sid, self.initiator, self.peerjid, isadd);
}; };
......
...@@ -81,7 +81,18 @@ SessionBase.prototype.switchStreams = function (new_stream, oldStream, success_c ...@@ -81,7 +81,18 @@ SessionBase.prototype.switchStreams = function (new_stream, oldStream, success_c
var self = this; var self = this;
// Stop the stream to trigger onended event for old stream // Stop the stream to trigger onended event for old stream
oldStream.stop();
if (oldStream.getAudioTracks().length) {
oldStream.getAudioTracks().forEach(function(track) {
track.stop();
});
}
if (oldStream.getVideoTracks().length) {
oldStream.getVideoTracks().forEach(function(track) {
track.stop();
});
}
// Remember SDP to figure out added/removed SSRCs // Remember SDP to figure out added/removed SSRCs
var oldSdp = null; var oldSdp = null;
......
...@@ -18,7 +18,7 @@ Strophe.addConnectionPlugin('emuc', { ...@@ -18,7 +18,7 @@ Strophe.addConnectionPlugin('emuc', {
}, },
initPresenceMap: function (myroomjid) { initPresenceMap: function (myroomjid) {
this.presMap['to'] = myroomjid; this.presMap['to'] = myroomjid;
this.presMap['xns'] = 'http://jabber.org/protocol/muc'; this.presMap['xns'] = 'http://igniterealtime.org/protocol/ofmeet';
}, },
doJoin: function (jid, password) { doJoin: function (jid, password) {
this.myroomjid = jid; this.myroomjid = jid;
...@@ -54,13 +54,13 @@ Strophe.addConnectionPlugin('emuc', { ...@@ -54,13 +54,13 @@ Strophe.addConnectionPlugin('emuc', {
} }
// Parse etherpad tag. // Parse etherpad tag.
var etherpad = $(pres).find('>etherpad'); var etherpad = $(pres).find('etherpad');
if (etherpad.length) { if (etherpad.length) {
$(document).trigger('etherpadadded.muc', [from, etherpad.text()]); $(document).trigger('etherpadadded.muc', [from, etherpad.text()]);
} }
// Parse prezi tag. // Parse prezi tag.
var presentation = $(pres).find('>prezi'); var presentation = $(pres).find('prezi');
if (presentation.length) if (presentation.length)
{ {
var url = presentation.attr('url'); var url = presentation.attr('url');
...@@ -84,18 +84,18 @@ Strophe.addConnectionPlugin('emuc', { ...@@ -84,18 +84,18 @@ Strophe.addConnectionPlugin('emuc', {
} }
// Parse audio info tag. // Parse audio info tag.
var audioMuted = $(pres).find('>audiomuted'); var audioMuted = $(pres).find('audiomuted');
if (audioMuted.length) { if (audioMuted.length) {
$(document).trigger('audiomuted.muc', [from, audioMuted.text()]); $(document).trigger('audiomuted.muc', [from, audioMuted.text()]);
} }
// Parse video info tag. // Parse video info tag.
var videoMuted = $(pres).find('>videomuted'); var videoMuted = $(pres).find('videomuted');
if (videoMuted.length) { if (videoMuted.length) {
$(document).trigger('videomuted.muc', [from, videoMuted.text()]); $(document).trigger('videomuted.muc', [from, videoMuted.text()]);
} }
var stats = $(pres).find('>stats'); var stats = $(pres).find('stats');
if(stats.length) if(stats.length)
{ {
var statsObj = {}; var statsObj = {};
...@@ -131,7 +131,7 @@ Strophe.addConnectionPlugin('emuc', { ...@@ -131,7 +131,7 @@ Strophe.addConnectionPlugin('emuc', {
member.isFocus = true; member.isFocus = true;
} }
var nicktag = $(pres).find('>nick[xmlns="http://jabber.org/protocol/nick"]'); var nicktag = $(pres).find('nick[xmlns="http://jabber.org/protocol/nick"]');
member.displayName = (nicktag.length > 0 ? nicktag.text() : null); member.displayName = (nicktag.length > 0 ? nicktag.text() : null);
if (from == this.myroomjid) { if (from == this.myroomjid) {
...@@ -352,7 +352,7 @@ Strophe.addConnectionPlugin('emuc', { ...@@ -352,7 +352,7 @@ Strophe.addConnectionPlugin('emuc', {
pres.c('password').t(this.presMap['password']).up(); pres.c('password').t(this.presMap['password']).up();
} }
pres.up(); //pres.up(); // BAO made child elements of <x>
// Send XEP-0115 'c' stanza that contains our capabilities info // Send XEP-0115 'c' stanza that contains our capabilities info
if (connection.caps) { if (connection.caps) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment