diff --git a/bigbluebutton-web/web-app/demo/bbb_api.jsp b/bigbluebutton-web/web-app/demo/bbb_api.jsp index e65e1f1ded2990001399e4d10abec63e0f2f837f..702b03ca814506af36b8d296dc592e2f90445f62 100755 --- a/bigbluebutton-web/web-app/demo/bbb_api.jsp +++ b/bigbluebutton-web/web-app/demo/bbb_api.jsp @@ -201,6 +201,8 @@ public String getJoinURLViewer(String username, String meetingID) { return base_url_join + join_parameters + "&checksum=" + checksum("join" + join_parameters + salt); } + + // // checksum() -- create a hash based on the shared salt (located in bbb_api_conf.jsp) // @@ -380,6 +382,39 @@ public String getMeetings() { } } +// +public String endMeeting(String meetingID, String moderatorPassword) { + + String base_main = "meetingID=" + urlEncode(meetingID) + "&password=" + urlEncode(moderatorPassword); + String base_url = BigBlueButtonURL + "api/end?"; + String checksum =""; + + try { + checksum = DigestUtils.shaHex("end" + base_main + salt); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + String xml = getURL(base_url + base_main + "&checksum=" + checksum); + + Document doc = null; + try { + doc = parseXml(xml); + } catch (Exception e) { + e.printStackTrace(); + } + + if (doc.getElementsByTagName("returncode").item(0).getTextContent() + .trim().equals("SUCCESS")) { + return "true"; + } + + return "Error " + doc.getElementsByTagName("messageKey").item(0).getTextContent().trim() + + ": " + doc.getElementsByTagName("message").item(0).getTextContent().trim(); + +} + // // parseXml() -- return a DOM of the XML // diff --git a/bigbluebutton-web/web-app/demo/demo4.js b/bigbluebutton-web/web-app/demo/demo4.js index ef3f55aac4b2a43cd99a02aee84bd26b199052b5..b674123a85a119db8fa999dad86a365f80790047 100755 --- a/bigbluebutton-web/web-app/demo/demo4.js +++ b/bigbluebutton-web/web-app/demo/demo4.js @@ -102,7 +102,20 @@ function getMeetingsInfoURL(meetingID, password, checksum) { } function createMeetingTable(meeting) { - var tableContent = '<table name="' + meeting.meetingID + '" class="hor-minimalist-b" cellspacing="0" summary="The current participants in a meeting"><caption>' + meeting.meetingID + '</caption><tr><th scope="col" abbr="Participants">Participants</th><th scope="col" abbr="Name">Name</th><th scope="col" abbr="Role">Role</th></tr>'; + + var form = '<th><FORM NAME="form1" METHOD="GET"><input type="hidden" name="meetingID" value="' + meeting.meetingID + '"/>'; + form += '<input type="hidden" name="moderatorPW" value="' + meeting.moderatorPW + '"/>'; + form += '<INPUT TYPE=hidden NAME=action VALUE="end">'; + form += '<input type="submit" value="End"/></FORM>'; + form += '</th>'; + + var tableContent = '<table name="' + meeting.meetingID + '" class="hor-minimalist-b" cellspacing="0" summary="The current participants in a meeting"><caption>' + meeting.meetingID + '<caption><tr><th scope="col" abbr="Participants">Participants</th><th scope="col" abbr="Name">Name</th><th scope="col" abbr="Role">Role</th>'; + + //uncomment below to add the ability to end meetings in the activity monitor + //tableContent += form; + + tableContent += '</tr>'; + var encodedMeetingID = encode(meeting.meetingID); var tableRowId; var newRows = new Array(); @@ -112,7 +125,7 @@ function createMeetingTable(meeting) { for (var i in meeting.attendees.attendee) { var attendee = (meeting.attendees.attendee[i].userID != null) ? meeting.attendees.attendee[i] : meeting.attendees.attendee; tableRowId = encodedMeetingID + '_' + attendee.userID; - tableContent += '<tr id="' + tableRowId + '"><td>' + attendee.userID + '<td>' + attendee.fullName + '</td><td>' + attendee.role + '</td></tr>' + tableContent += '<tr id="' + tableRowId + '"><td>' + attendee.userID + '<td>' + attendee.fullName + '</td><td>' + attendee.role + '</td></tr>'; // if there is a new row to be added, then add to the new rows array to display it with a flash effect. if ($("#" + tableRowId).length == 0) { diff --git a/bigbluebutton-web/web-app/demo/demo4.jsp b/bigbluebutton-web/web-app/demo/demo4.jsp index 8c7925f68c82eed118b1f47f74ef108d3603cbd9..edee4c1e9b8f2465bab232799863635390fe69a1 100755 --- a/bigbluebutton-web/web-app/demo/demo4.jsp +++ b/bigbluebutton-web/web-app/demo/demo4.jsp @@ -51,13 +51,56 @@ Author: Islam El-Ashi <ielashi@gmail.com> <%@ include file="demo_header.jsp"%> + +<% +if (request.getParameterMap().isEmpty()) { +%> + <h2>Demo #4: Activity Monitor</h2> <p id="no_meetings"></p> <div id="meetings"></div> + + +<% +} else if (request.getParameter("action").equals("end")) { + + String mp = request.getParameter("moderatorPW"); + String meetingID = request.getParameter("meetingID"); + + String result = endMeeting(meetingID, mp); + + if ( result.equals("true") ){ + +%> + +<h2>Demo #4: Activity Monitor</h2> + +<%=meetingID%> has been terminated. + +<p id="no_meetings"></p> + +<div id="meetings"></div> + +<% } else { %> + +<h2>Demo #4: Activity Monitor</h2> + + +Unable to end meeting: <%=meetingID%> + +<%=result%> + + + + +<% } + }%> + <%@ include file="demo_footer.jsp"%> </body> </html> +