Permalink
Browse files

ofmeet version 0.0.20

  • Loading branch information...
Dele Olajide
Dele Olajide committed Apr 30, 2016
1 parent 60c997d commit 14ccdc0fce95b46a607cad286c7af8952724220d
View
@@ -41,10 +41,10 @@ compile-jsps:
jar:
[copy] Copying 506 files to C:\Projects\ignite\community-plugins\ofmeet\build\jar
[copy] Copying 53 files to C:\Projects\ignite\community-plugins\ofmeet\build\jar\lib
[copy] Copying 59 files to C:\Projects\ignite\community-plugins\ofmeet\build\jar
[copy] Copying 59 files to C:\Projects\ignite\community-plugins\ofmeet\build\jar\lib
[copy] Copying 65 files to C:\Projects\ignite\community-plugins\ofmeet\build\jar
[jar] Building jar: C:\Projects\ignite\community-plugins\openfire_4_0_2\target\openfire\plugins\ofmeet.jar
[delete] Deleting directory C:\Projects\ignite\community-plugins\ofmeet\build
BUILD SUCCESSFUL
Total time: 23 seconds
Total time: 19 seconds
View
@@ -49,6 +49,12 @@ <h1>
Openfire Meetings Plugin Changelog
</h1>
<p><b>0.3.20</b> -- May 1st, 2016</p>
<ul>
<li>Added support for Azure AD authentication. Login as "user@domain" to create a new username "user.doman"</li>
</ul>
<p><b>0.3.19</b> -- April 27, 2016</p>
<ul>
View
Binary file not shown.
Binary file not shown.
View
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
View
@@ -5,8 +5,8 @@
<name>Openfire Meetings</name>
<description>Provides high quality, scalable video conferences using Jitsi Meet and Jitsi Videobridge</description>
<author>Ignite Realtime</author>
<version>0.3.19</version>
<date>04/27/2016</date>
<version>0.3.20</version>
<date>05/01/2016</date>
<minServerVersion>4.0.1</minServerVersion>
<adminconsole>
<tab id="tab-ofmeet" name="${plugin.title}" url="ofmeet-summary.jsp" description="${plugin.description}">
View
@@ -226,6 +226,15 @@ <h3><a id="user-content--openfire-meetings-enhanced-fastpath" class="anchor" hre
<p>After installation of Openfire Meetings, the FastPath javascript library can be accessed on <code>https://your-server.com:7443/ofmeet/fastpath/</code>.</p>
</article>
<p>
<h3>... Openfire Meetings-enhanced Monitoring</h3>
<p>
Openfire Meetings works with the monitoring plugin to enable easy playback of meeting recordings from the server using the monitoring archive search admin web web page or from a client using Jitsi Meet and Candy. For this feature to work, accept the default location for the recordings or ensure your recording folder is under the "./resources/spank" folder.
</p>
<p>
Openfire Meetings will inject two groupchat messages into every meeting with clickable weblinks to the audio and video recording files for each participant in a conference. These are then archived and retrieved normally by the monitoring plugin.
</p>
</div>
View
@@ -175,3 +175,7 @@ enter a managed queue.
After installation of Openfire Meetings, the Fastpath JavaScript library can be accessed at ```https://your-server.com:7443/ofmeet/fastpath/```.
### ... Openfire Meetings-enhanced Monitoring
Openfire Meetings works with the monitoring plugin to enable easy playback of meeting recordings from the server using the monitoring archive search admin web web page or from a client using Jitsi Meet and Candy. For this feature to work, accept the default location for the recordings or ensure your recording folder is under the "./resources/spank" folder.
Openfire Meetings will inject two groupchat messages into every meeting with clickable weblinks to the audio and video recording files for each participant in a conference. These are then archived and retrieved normally by the monitoring plugin.
@@ -9,8 +9,13 @@ CandyShop.OfMeet = (function(self, Candy, $) {
$('#ofmeet-control-icon').click(function(event)
{
var roomJid = Candy.View.getCurrent().roomJid;
Candy.Core.Action.Jabber.Room.Leave(roomJid);
self.showOfMeet(roomJid);
if (!Strophe.getResourceFromJid(roomJid))
{
Candy.Core.Action.Jabber.Room.Leave(roomJid);
}
self.showOfMeet(roomJid);
});
if (!window.inExtension)
@@ -33,7 +38,15 @@ CandyShop.OfMeet = (function(self, Candy, $) {
self.showOfMeet = function(roomJid)
{
var room = Strophe.getNodeFromJid(roomJid);
var room = Strophe.getNodeFromJid(roomJid);
if (Strophe.getResourceFromJid(roomJid))
{
var fromUser = Strophe.escapeNode(Strophe.getResourceFromJid(roomJid));
var toUser = Strophe.escapeNode(Candy.Core.getUser().getNick());
room = fromUser > toUser ? toUser + fromUser : fromUser + toUser;
}
if (!window.inExtension)
{
@@ -92,6 +92,7 @@ config.page.configuration.advanced.features.title=Advanced Features
config.page.configuration.focus.jid=Focus JID
config.page.configuration.focus.password=Focus Password
config.page.configuration.archive.speaking=Archive Speaking Events
config.page.configuration.archive.recording=Archive Recording Files
ofmeet.conference.summary=Below is an overview of meetings.
ofmeet.conference.expired=Conference has been expired.
@@ -11,6 +11,7 @@
import org.jivesoftware.openfire.*;
import org.jivesoftware.openfire.vcard.VCardManager;
import org.jivesoftware.openfire.plugin.spark.*;
import org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin;
import org.jivesoftware.openfire.group.Group;
import org.jivesoftware.openfire.group.GroupManager;
import org.jivesoftware.openfire.group.GroupNotFoundException;
@@ -52,6 +53,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
String domain = XMPPServer.getInstance().getServerInfo().getXMPPDomain();
String userName = "null";
String userAvatar = "null";
String conferences = "[";
String securityEnabled = JiveGlobals.getProperty("ofmeet.security.enabled", "true");
@@ -72,43 +74,42 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
userAvatar = "data:" + type + ";base64," + binval.replace("\n", "").replace("\r", "");;
}
}
}
String conferences = "[";
try {
boolean isBookmarksAvailable = XMPPServer.getInstance().getPluginManager().getPlugin("bookmarks") != null;
try {
if (isBookmarksAvailable)
{
final Collection<Bookmark> bookmarks = BookmarkManager.getBookmarks();
boolean isBookmarksAvailable = XMPPServer.getInstance().getPluginManager().getPlugin("bookmarks") != null;
for (Bookmark bookmark : bookmarks)
if (isBookmarksAvailable)
{
boolean addBookmarkForUser = bookmark.isGlobalBookmark() || isBookmarkForJID(userName, bookmark);
final Collection<Bookmark> bookmarks = BookmarkManager.getBookmarks();
if (addBookmarkForUser)
for (Bookmark bookmark : bookmarks)
{
if (bookmark.getType() == Bookmark.Type.group_chat)
{
String url = bookmark.getProperty("url");
boolean addBookmarkForUser = bookmark.isGlobalBookmark() || isBookmarkForJID(userName, bookmark);
if (url == null)
if (addBookmarkForUser)
{
if (bookmark.getType() == Bookmark.Type.group_chat)
{
String id = bookmark.getBookmarkID() + "" + System.currentTimeMillis();
String rootUrl = JiveGlobals.getProperty("ofmeet.root.url.secure", "https://" + hostname + ":" + JiveGlobals.getProperty("httpbind.port.secure", "7443"));
url = rootUrl + "/ofmeet/?b=" + id;
bookmark.setProperty("url", url);
String url = bookmark.getProperty("url");
if (url == null)
{
String id = bookmark.getBookmarkID() + "" + System.currentTimeMillis();
String rootUrl = JiveGlobals.getProperty("ofmeet.root.url.secure", "https://" + hostname + ":" + JiveGlobals.getProperty("httpbind.port.secure", "7443"));
url = rootUrl + "/ofmeet/?b=" + id;
bookmark.setProperty("url", url);
}
conferences = conferences + (conferences.equals("[") ? "" : ",");
conferences = conferences + "{url: '" + url + "', name: '" + bookmark.getName() + "', jid: '" + bookmark.getValue() + "'}";
}
conferences = conferences + (conferences.equals("[") ? "" : ",");
conferences = conferences + "{url: '" + url + "', name: '" + bookmark.getName() + "', jid: '" + bookmark.getValue() + "'}";
}
}
}
}
} catch (Exception e) {
} catch (Exception e) {
}
}
@@ -151,6 +152,8 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
String minChromeExtVer = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.min.chrome.ext.ver", "0.1");
String enableFirefoxSupport = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.enable.firefox.support", "false");
String archiveSpeaking = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.archive.speaking", "off");
String archiveRecording = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.archive.recording", "off");
String recordingPath = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.recording.path", OfMeetPlugin.ofmeetHome + File.separator + "recordings");
String logStats = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.enable.stats.logging", "false");
String focusUserJid = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.focus.user.jid", "focus@"+domain);
String iceServers = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.iceservers", "");
@@ -177,9 +180,13 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
if (globalConferenceId == null || videobridge.getConference(globalConferenceId, null) == null)
{
Conference conference = videobridge.createConference(null);
if (recordVideo.equals("true")) conference.setRecording(true);
conference.setLastKnownFocus(domain);
globalConferenceId = conference.getID();
if (conference != null)
{
if (recordVideo.equals("true")) conference.setRecording(true);
conference.setLastKnownFocus(domain);
globalConferenceId = conference.getID();
}
}
}
@@ -250,6 +257,8 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
out.println(" conferences: " + conferences + ",");
if (globalConferenceId != null) out.println(" globalConferenceId: '" + globalConferenceId + "',");
out.println(" archiveSpeaking: " + (archiveSpeaking.equals("on") ? "true" : "false") + ",");
out.println(" archiveRecording: " + (archiveRecording.equals("on") ? "true" : "false") + ",");
out.println(" recordingPath: '" + recordingPath.replace("\\", File.separator) + "',");
out.println(" bosh: window.location.protocol + '//' + window.location.host + '/http-bind/'");
out.println("}; ");
@@ -288,6 +297,20 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
out.println(" APP_NAME: '" + applicationName + "',");
out.println(" ACTIVE_SPEAKER_AVATAR_SIZE: " + activeSpkrAvatarSize);
out.println("}; ");
if ("true".equals(securityEnabled))
{
out.println("setTimeout(function()");
out.println("{");
out.println("if ($('#ofmeet-extension-installed').length > 0)");
out.println(" {");
out.println(" var msg = {type: 'ofmeetSetConfig', host: window.location.host, username: '" + userName + "'};");
out.println(" console.log('window.post.ofmeetSetConfig', msg);");
out.println(" window.postMessage(msg, '*');");
out.println(" }");
out.println("}, 5000);");
}
}
catch(Exception e) {
Log.error("Config doGet Error", e);
@@ -95,6 +95,7 @@
private OfMeetIQHandler ofmeetIQHandler = null;
public static OfMeetPlugin self;
public static String ofmeetHome = JiveGlobals.getHomeDirectory() + File.separator + "resources" + File.separator + "spank" + File.separator + "ofmeet-cdn";
public String sipRegisterStatus = "";
@@ -346,8 +347,6 @@ private static final SecurityHandler basicAuth(String realm) {
private void checkDownloadFolder(File pluginDirectory)
{
String ofmeetHome = JiveGlobals.getHomeDirectory() + File.separator + "resources" + File.separator + "spank" + File.separator + "ofmeet-cdn";
try
{
File ofmeetFolderPath = new File(ofmeetHome);
@@ -367,12 +366,22 @@ private void checkDownloadFolder(File pluginDirectory)
if(!downloadHome.exists())
{
downloadHome.mkdirs();
}
File recordingsHome = new File(ofmeetHome + File.separator + "recordings");
if(!recordingsHome.exists())
{
recordingsHome.mkdirs();
}
lines = Arrays.asList("Move on, nothing here....");
file = Paths.get(downloadHome + File.separator + "index.html");
Files.write(file, lines, Charset.forName("UTF-8"));
file = Paths.get(recordingsHome + File.separator + "index.html");
Files.write(file, lines, Charset.forName("UTF-8"));
}
catch (Exception e)
{
@@ -747,6 +756,25 @@ private void getConferenceId(String defaultUsername, IQ reply, JSONObject reques
JSONObject userJSON = new JSONObject();
userJSON.put("conference", confId);
Path dir = Paths.get(JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.recording.path", ofmeetHome + File.separator + "recordings"));
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir))
{
for (Path file: stream)
{
String fileName = file.getFileName().toString();
if (fileName.indexOf(confId) > -1)
{
userJSON.put("folder", fileName);
}
}
} catch (IOException | DirectoryIteratorException x) {
Log.error("getConferenceId", x);
}
childElement.setText(userJSON.toString());
} else {
Oops, something went wrong.

0 comments on commit 14ccdc0

Please sign in to comment.