Merge remote-tracking branch 'bigbluebutton/master' into mconf-live0.6.1

Conflicts:
	bbb-video/build.gradle
	bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as
	bigbluebutton-config/web/default.pdf
This commit is contained in:
Felipe Cecagno 2014-11-22 20:28:39 -02:00
commit a3acb00893
355 changed files with 10006 additions and 15154 deletions

View File

@ -20,4 +20,6 @@
<a href="demo_openid.jsp">Login with Openid</a> &nbsp;&nbsp;
<a href="demo11.jsp">Javascript API</a> &nbsp;&nbsp;
<a href="mobile.jsp">Mobile Demo</a> &nbsp;&nbsp

150
bbb-api-demo/src/main/webapp/mobile.jsp Normal file → Executable file
View File

@ -1,51 +1,119 @@
<%
/*
BigBlueButton - http://www.bigbluebutton.org
Copyright (c) 2011 by respective authors (see below). All rights reserved.
BigBlueButton is free software; you can redistribute it and/or modify it under the
terms of the GNU Lesser General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
Author: Felipe Cecagno <fcecagno@gmail.com>
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!--
BigBlueButton - http://www.bigbluebutton.org
Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
BigBlueButton is free software; you can redistribute it and/or modify it under the
terms of the GNU Lesser General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
Author: Chad Pilkey <capilkey@gmail.org>
-->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Join Demo Meeting From Mobile</title>
</head>
<%@page import="org.apache.commons.httpclient.HttpClient"%>
<%@page import="org.apache.commons.httpclient.HttpMethod"%>
<%@page import="org.apache.commons.httpclient.methods.GetMethod"%>
<body>
<%@ include file="bbb_api.jsp"%>
<%
if (request.getParameterMap().isEmpty()) {
//
// Assume we want to create a meeting
//
%>
<%@ include file="demo_header.jsp"%>
<h2>Join Demo Meeting From Mobile</h2>
You must have the BigBlueButton mobile client installed on your device for this demo to work.
<br /><br />
<FORM NAME="form1" METHOD="GET">
<table cellpadding="5" cellspacing="5" style="width: 400px; ">
<tbody>
<tr>
<td>
&nbsp;</td>
<td style="text-align: right; ">
Full Name:</td>
<td style="width: 5px; ">
&nbsp;</td>
<td style="text-align: left ">
<input type="text" autofocus required name="username" /></td>
</tr>
<tr>
<td>
&nbsp;</td>
<td>
&nbsp;</td>
<td>
&nbsp;</td>
<td>
<input type="submit" value="Join" /></td>
</tr>
</tbody>
</table>
<INPUT TYPE=hidden NAME=action VALUE="create">
</FORM>
<%@ include file="mobile_api.jsp"%>
<%
String result = error(E_INVALID_URL);
if (request.getParameterMap().isEmpty()) {
result = success("mobileSupported", "This server supports mobile devices.");
} else if (request.getParameter("action") == null) {
// return the default result
} else if (request.getParameter("action").equals("getTimestamp")) {
result = getTimestamp(request);
} else if (request.getParameter("action").equals("getMeetings")) {
result = mobileGetMeetings(request);
} else if (request.getParameter("action").equals("join")) {
result = mobileJoinMeeting(request);
} else if (request.getParameter("action").equals("create")) {
result = mobileCreate(request);
}
} else if (request.getParameter("action").equals("create")) {
//
// Got an action=create
//
String username = request.getParameter("username");
String url = BigBlueButtonURL.replace("bigbluebutton/","demo/");
// String preUploadPDF = "<?xml version='1.0' encoding='UTF-8'?><modules><module name='presentation'><document url='"+url+"pdfs/sample.pdf'/></module></modules>";
String joinURL = getJoinURL(request.getParameter("username"), "Demo Meeting", "false", null, null, null);
if (joinURL.startsWith("http://")) {
joinURL = joinURL.replace("http", "bigbluebutton");
%>
<%=result%>
<script language="javascript" type="text/javascript">
window.location.href="<%=joinURL%>";
</script>
<%
} else {
%>
Error: getJoinURL() failed
<p/>
<%=joinURL %>
<%
}
}
%>
<%@ include file="demo_footer.jsp"%>
</body>
</html>

View File

@ -1,182 +0,0 @@
<%
/*
BigBlueButton - http://www.bigbluebutton.org
Copyright (c) 2011 by respective authors (see below). All rights reserved.
BigBlueButton is free software; you can redistribute it and/or modify it under the
terms of the GNU Lesser General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
Author: Felipe Cecagno <fcecagno@gmail.com>
*/
%>
<%@ include file="bbb_api.jsp"%>
<%@ include file="mobile_conf.jsp"%>
<%@page import="org.apache.commons.httpclient.HttpClient"%>
<%@page import="org.apache.commons.httpclient.HttpMethod"%>
<%@page import="org.apache.commons.httpclient.methods.GetMethod"%>
<%!
public final int E_OK = 0;
public final int E_CHECKSUM_NOT_INFORMED = 1;
public final int E_INVALID_CHECKSUM = 2;
public final int E_INVALID_TIMESTAMP = 3;
public final int E_EMPTY_SECURITY_KEY = 4;
public final int E_MISSING_PARAM_MEETINGID = 5;
public final int E_MISSING_PARAM_FULLNAME = 6;
public final int E_MISSING_PARAM_PASSWORD = 7;
public final int E_MISSING_PARAM_TIMESTAMP = 8;
public final int E_INVALID_URL = 9;
public String error(int code) {
switch(code) {
case E_CHECKSUM_NOT_INFORMED:
case E_INVALID_CHECKSUM:
return error("checksumError", "You did not pass the checksum security check.");
case E_INVALID_TIMESTAMP:
return error("invalidTimestamp", "You did not pass the timestamp check.");
case E_EMPTY_SECURITY_KEY:
return error("emptySecurityKey", "The mobile security key is empty. Please contact the administrator.");
case E_MISSING_PARAM_MEETINGID:
return error("missingParamMeetingID", "You must specify a meeting ID for the meeting.");
case E_MISSING_PARAM_FULLNAME:
return error("missingParamFullName", "You must specify a name for the attendee who will be joining the meeting.");
case E_MISSING_PARAM_PASSWORD:
return error("invalidPassword", "You either did not supply a password or the password supplied is neither the attendee or moderator password for this conference.");
case E_MISSING_PARAM_TIMESTAMP:
return error("missingParamTimestamp", "You must specify the timestamp provided by the server when you called the method getTimestamp.");
case E_INVALID_URL:
return error("invalidAction", "The requested URL is unavailable.");
default:
return error("unknownError", "An unexpected error occurred");
}
}
private String getRequestURL(HttpServletRequest request) {
return request.getQueryString();
}
private String removeChecksum(String requestURL) {
return requestURL.substring(0, requestURL.lastIndexOf("&checksum="));
}
private String addValidChecksum(String requestURL) {
return requestURL + "&checksum=" + checksum(requestURL + mobileSalt);
}
private int isRequestValid(HttpServletRequest request) {
// if there's no checksum parameter, the request isn't valid
if (request.getParameter("checksum") == null)
return E_CHECKSUM_NOT_INFORMED;
// check the timestamp for all the requests except getTimestamp
if (!request.getParameter("action").equals("getTimestamp")) {
String requestTimestamp = request.getParameter("timestamp");
if (requestTimestamp == null)
return E_MISSING_PARAM_TIMESTAMP;
Long requestTimestampL = Long.valueOf(requestTimestamp);
// the timestamp is valid for 60 seconds
if (Math.abs(getTimestamp() - requestTimestampL) > 60)
return E_INVALID_TIMESTAMP;
}
if (mobileSalt.isEmpty())
return E_EMPTY_SECURITY_KEY;
String requestURL = getRequestURL(request);
String urlWithoutChecksum = removeChecksum(requestURL);
String urlWithChecksum = addValidChecksum(urlWithoutChecksum);
return (requestURL.equals(urlWithChecksum)? E_OK: E_INVALID_CHECKSUM);
}
private String mountResponse(String returncode, String messageKey, String message) {
return "<response><returncode>" + returncode + "</returncode><messageKey>" + messageKey + "</messageKey><message>" + message + "</message></response>";
}
public String success(String messageKey, String message) {
return mountResponse("SUCCESS", messageKey, message);
}
public String error(String messageKey, String message) {
return mountResponse("FAILED", messageKey, message);
}
private long getTimestamp() {
return (System.currentTimeMillis() / 1000L);
}
public String getTimestamp(HttpServletRequest request) {
int code = isRequestValid(request);
if (code != E_OK)
return error(code);
return "<response><returncode>SUCCESS</returncode><timestamp>" + getTimestamp() + "</timestamp></response>";
}
public String mobileGetMeetings(HttpServletRequest request) {
int code = isRequestValid(request);
if (code != E_OK)
return error(code);
return getMeetings();
}
public String mobileJoinMeeting(HttpServletRequest request) {
int code = isRequestValid(request);
if (code != E_OK)
return error(code);
String meetingID = request.getParameter("meetingID");
if (meetingID == null) return error(E_MISSING_PARAM_MEETINGID);
String fullName = request.getParameter("fullName");
if (fullName == null) return error(E_MISSING_PARAM_FULLNAME);
String password = request.getParameter("password");
if (password == null) return error(E_MISSING_PARAM_PASSWORD);
String result = error("failedJoin", "Couldn't join the meeting.");
String joinUrl = getJoinMeetingURL(fullName, meetingID, password, null);
String enterUrl = BigBlueButtonURL + "api/enter";
try {
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(joinUrl);
client.executeMethod(method);
method.releaseConnection();
method = new GetMethod(enterUrl);
client.executeMethod(method);
result = method.getResponseBodyAsString();
method.releaseConnection();
} catch (Exception e) {
}
return result;
}
public String mobileCreate(HttpServletRequest request) {
int code = isRequestValid(request);
if (code != E_OK)
return error(code);
String meetingID = request.getParameter("meetingID");
if (meetingID == null) return error(E_MISSING_PARAM_MEETINGID);
return createMeeting(meetingID, "", "", "", "", 0, BigBlueButtonURL);
}
// it's just for testing purposes
private String fixURL(HttpServletRequest request) {
return addValidChecksum(removeChecksum(getRequestURL(request)));
}
%>

View File

@ -1,6 +0,0 @@
<%!
// This is the mobile security salt that must be used to check the requests on mobile.jsp
String mobileSalt = "";
%>

View File

@ -1,9 +1,11 @@
bin-debug/
bin-release/
check/
.actionScriptProperties
.flexProperties
.project
org.eclipse.core.resources.prefs
org.eclipse.ltk.core.refactoring.prefs
FlexPrettyPrintCommand.prefs
index.template.html
conf/config.xml
resources/lib/bbb_webrtc_bridge_sip.js
resources/lib/sip.js

View File

@ -9,6 +9,11 @@
value="${basedir}"/>
<property name="SRC_DIR"
value="${BASE_DIR}/src"/>
<property name="TEST_IMAGE_URL" value="http://upload.wikimedia.org/wikipedia/commons/0/0a/Keswick,_Cumbria_Panorama_1_-_June_2009.jpg" />
<property name="OUTPUT_DIR"
value="check"/>
<property name="TEST_IMAGE_PATH"
value="${OUTPUT_DIR}/test_image.jpg"/>
<taskdef resource="flexTasks.tasks"
classpath="${FLEX_HOME}/ant/lib/flexTasks.jar"/>
<macrodef name="create-rsl">
@ -28,19 +33,19 @@
</macrodef>
<target name="Extract-rsls">
<!-- Third parties RSLs -->
<create-rsl rsl-dir="bin-release/rsls/"
<create-rsl rsl-dir="check/rsls/"
swc-dir="${BASE_DIR}/libs/"
swc-name="robotlegs-framework-v2.2.1"/>
<create-rsl rsl-dir="bin-release/rsls/"
<create-rsl rsl-dir="check/rsls/"
swc-dir="${BASE_DIR}/libs/"
swc-name="as3-signals-v0.9-BETA"/>
<create-rsl rsl-dir="bin-release/rsls/"
<create-rsl rsl-dir="check/rsls/"
swc-dir="${BASE_DIR}/libs/"
swc-name="as3-signals-utilities-async-v0.9-BETA"/>
<create-rsl rsl-dir="bin-release/rsls/"
<create-rsl rsl-dir="check/rsls/"
swc-dir="${BASE_DIR}/libs/"
swc-name="robotlegs-extensions-SignalCommandMap-v1.0.0b1"/>
<create-rsl rsl-dir="bin-release/rsls/"
<create-rsl rsl-dir="check/rsls/"
swc-dir="${BASE_DIR}/libs/"
swc-name="localelib"/>
</target>
@ -48,13 +53,13 @@
description="Compile MXML file to release SWF application.">
<echo>Compiling source...</echo>
<mxmlc file="${SRC_DIR}/BBBClientCheck.mxml"
output="bin-release/BBBClientCheck.swf"
output="check/BBBClientCheck.swf"
debug="false"
locale="en_US"
actionscript-file-encoding="UTF-8"
incremental="false">
<static-link-runtime-shared-libraries>false</static-link-runtime-shared-libraries>
<source-path>${SRC_DIR}/locale/{locale}</source-path>
<source-path>locale/{locale}</source-path>
<source-path path-element="src"/>
<include-resource-bundles>resources</include-resource-bundles>
<load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
@ -90,7 +95,7 @@
</mxmlc>
<antcall target="Resolve-Dependency">
<param name="html.output"
value="bin-release"/>
value="${OUTPUT_DIR}"/>
</antcall>
</target>
<target name="Build-Release">
@ -98,8 +103,14 @@
</target>
<target name="Resolve-Dependency"
description="Generate HTML wrapper">
<copy file="html-template/index.template.html"
tofile="${html.output}/BBBClientCheck.html"/>
<copy todir="resources/lib/" >
<fileset file="../bigbluebutton-client/resources/prod/lib/bbb_webrtc_bridge_sip.js" />
<fileset file="../bigbluebutton-client/resources/prod/lib/sip.js" />
</copy>
<get src="${TEST_IMAGE_URL}" dest="${html.output}/test_image.jpg" skipexisting="true" />
<copy file="html-template/index.html"
tofile="${html.output}/index.html"/>
<copy file="html-template/swfobject.js"
tofile="${html.output}/swfobject.js"/>
<copy file="${SRC_DIR}/AppStyle.css"
@ -115,6 +126,28 @@
</copy>
</target>
<target name="build"
depends="Extract-rsls, Build-Release"
depends="gen-config-xml, Extract-rsls, Build-Release"
description="Launcher for building whole release process"/>
<target name="get-local-ip">
<exec executable="bash" outputproperty="IP">
<arg value="-c"/>
<arg value="ifconfig | grep -v '127.0.0.1' | grep -E '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' | tail -1 | cut -d: -f2 | awk '{ print $1}'"/>
</exec>
</target>
<target name="init">
<available file="conf/config.xml" property="config.xml.exists" />
<available file="${TEST_IMAGE_PATH}" property="test_image.exists" />
</target>
<target name="gen-config-xml" depends="init, get-local-ip" unless="${config.xml.exists}">
<copy file="resources/config.xml.template" tofile="conf/config.xml" />
<exec executable="sed">
<arg value="-i"/>
<arg value="s:HOST:${IP}:g"/>
<arg value="conf/config.xml"/>
</exec>
<echo message="config.xml generated" />
</target>
</project>

View File

@ -0,0 +1,4 @@
location /check {
root /var/www/bigbluebutton;
index index.html index.htm;
}

3
bbb-client-check/gen-file.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
head -c $1 < /dev/urandom

View File

@ -0,0 +1,113 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<!--
Smart developers always View Source.
This application was built using Adobe Flex, an open source framework
for building rich Internet applications that get delivered via the
Flash Player or to desktops via Adobe AIR.
Learn more about Flex at http://flex.org
// -->
<head>
<title></title>
<meta name="google" value="notranslate" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- Include CSS to eliminate any default margins/padding and set the height of the html element and
the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as
the percentage of the height of its parent container, which has to be set explicitly. Fix for
Firefox 3.6 focus border issues. Initially, don't display flashContent div so it won't show
if JavaScript disabled.
-->
<style type="text/css" media="screen">
html, body { height:100%; }
body { margin:0; padding:0; overflow:auto; text-align:center;
background-color: #ffffff; }
object:focus { outline:none; }
#flashContent { display:none; }
</style>
<!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
<!-- BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css" />
<script type="text/javascript" src="history/history.js"></script>
<!-- END Browser History required section -->
<script type="text/javascript" src="resources/lib/api-bridge.js"></script>
<script type="text/javascript" src="resources/lib/sip.js"></script>
<script type="text/javascript" src="resources/lib/bbb_webrtc_bridge_sip.js"></script>
<script type="text/javascript" src="resources/lib/deployJava.js"></script>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
// For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection.
var swfVersionStr = "10.2.0";
// To use express install, set to playerProductInstall.swf, otherwise the empty string.
var xiSwfUrlStr = "playerProductInstall.swf";
var flashvars = {};
var params = {};
params.quality = "high";
params.bgcolor = "#ffffff";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
var attributes = {};
attributes.id = "BBBClientCheck";
attributes.name = "BBBClientCheck";
attributes.align = "middle";
swfobject.embedSWF(
"BBBClientCheck.swf", "flashContent",
"100%", "100%",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
// JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
swfobject.createCSS("#flashContent", "display:block;text-align:left;");
</script>
</head>
<body>
<div id="deployJavaPluginContainer" style="visibility:hidden; height:0px; "></div>
<!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough
JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
when JavaScript is disabled.
-->
<div id="flashContent">
<p>
To view this page ensure that Adobe Flash Player version
10.2.0 or greater is installed.
</p>
<script type="text/javascript">
var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");
document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"
+ pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" );
</script>
</div>
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="BBBClientCheck">
<param name="movie" value="BBBClientCheck.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="BBBClientCheck.swf" width="100%" height="100%">
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<!--<![endif]-->
<!--[if gte IE 6]>-->
<p>
Either scripts and active content are not permitted to run or Adobe Flash Player version
10.2.0 or greater is not installed.
</p>
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</noscript>
</body>
</html>

View File

@ -34,8 +34,10 @@
<script type="text/javascript" src="history/history.js"></script>
<!-- END Browser History required section -->
<script type="text/javascript" src="resources/lib/sip-0.6.2.js"></script>
<script type="text/javascript" src="resources/lib/api-bridge.js"></script>
<script type="text/javascript" src="resources/lib/api-bridge.js"></script>
<script type="text/javascript" src="resources/lib/sip.js"></script>
<script type="text/javascript" src="resources/lib/bbb_webrtc_bridge_sip.js"></script>
<script type="text/javascript" src="resources/lib/deployJava.js"></script>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
// For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection.
@ -62,6 +64,7 @@
</script>
</head>
<body>
<div id="deployJavaPluginContainer" style="visibility:hidden; height:0px; "></div>
<!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough
JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
when JavaScript is disabled.

View File

@ -0,0 +1,29 @@
bbbsystemcheck.title = BigBlueButton Client Check
bbbsystemcheck.refresh = Refresh
bbbsystemcheck.mail = Mail
bbbsystemcheck.version = Client Check Version
bbbsystemcheck.dataGridColumn.item = Item
bbbsystemcheck.dataGridColumn.status = Status
bbbsystemcheck.dataGridColumn.result = Result
bbbsystemcheck.copyAllText = Copy all text
bbbsystemcheck.result.undefined = Undefined
bbbsystemcheck.result.javaEnabled.disabled = Java is disabled in your browser
bbbsystemcheck.result.javaEnabled.notDetected = No Java detected
bbbsystemcheck.status.succeeded = Succeded
bbbsystemcheck.status.warning = Warning
bbbsystemcheck.status.failed = Failed
bbbsystemcheck.status.loading = Loading...
bbbsystemcheck.test.name.browser = Browser
bbbsystemcheck.test.name.cookieEnabled = Cookie Enabled
bbbsystemcheck.test.name.downloadSpeed = Download Speed
bbbsystemcheck.test.name.flashVersion = Flash Version
bbbsystemcheck.test.name.pepperFlash = Is Pepper Flash
bbbsystemcheck.test.name.javaEnabled = Java Enabled
bbbsystemcheck.test.name.language = Language
bbbsystemcheck.test.name.ping = Ping
bbbsystemcheck.test.name.screenSize = Screen Size
bbbsystemcheck.test.name.uploadSpeed = Upload Speed
bbbsystemcheck.test.name.userAgent = User Agent
bbbsystemcheck.test.name.webRTCEcho = WebRTC Echo Test
bbbsystemcheck.test.name.webRTCSocket = WebRTC Socket Test
bbbsystemcheck.test.name.webRTCSupported = WebRTC Supported

View File

@ -1,52 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<config>
<downloadFilePath url="http://142.204.133.83/images/test_image.jpg"/>
<version>VERSION</version>
<mail>MAIL</mail>
<downloadFilePath url="test_image.jpg"/>
<ports>
<port>
<name>Port 1935</name>
<number>1935</number>
</port>
<port>
<name>Port 9123</name>
<number>9123</number>
</port>
<port>
<name>Port 80</name>
<number>80</number>
</port>
</ports>
<rtmpapps>
<app>
<name>RTMP BigBlueButton app</name>
<uri>rtmp://142.204.133.83/bigbluebutton</uri>
<uri>rtmp://HOST/bigbluebutton</uri>
</app>
<app>
<name>RTMP deskShare app</name>
<uri>rtmp://142.204.133.83/deskShare</uri>
<uri>rtmp://HOST/deskShare</uri>
</app>
<app>
<name>RTMP video app</name>
<uri>rtmp://142.204.133.83/video</uri>
<uri>rtmp://HOST/video</uri>
</app>
<app>
<name>RTMP sip app</name>
<uri>rtmp://142.204.133.83/sip</uri>
<uri>rtmp://HOST/sip</uri>
</app>
<app>
<name>RTMPT BigBlueButton app</name>
<uri>rtmpt://142.204.133.83/bigbluebutton</uri>
<uri>rtmpt://HOST/bigbluebutton</uri>
</app>
<app>
<name>RTMPT deskShare app</name>
<uri>rtmpt://142.204.133.83/deskShare</uri>
<uri>rtmpt://HOST/deskShare</uri>
</app>
<app>
<name>RTMPT video app</name>
<uri>rtmpt://142.204.133.83/video</uri>
<uri>rtmpt://HOST/video</uri>
</app>
<app>
<name>RTMPT sip app</name>
<uri>rtmpt://142.204.133.83/sip</uri>
<uri>rtmpt://HOST/sip</uri>
</app>
</rtmpapps>
</config>

View File

@ -1,5 +1,6 @@
{
var BBBClientCheck = {};
var BBB = {};
var userAgent;
var userMicMedia;
var currentSession;
@ -149,13 +150,32 @@
}
BBBClientCheck.javaEnabled = function(){
var javaEnabledInfo = '';
var result = {
enabled: navigator.javaEnabled(),
version: [],
minimum: '1.7.0_51+',
appropriate: false
};
if (result.enabled) {
result.version = getJavaVersion();
result.appropriate = isJavaVersionAppropriateForDeskshare(result.minimum);
}
console.log(result);
var swfObj = getSwfObj();
javaEnabledInfo = navigator.javaEnabled();
swfObj.javaEnabled(javaEnabledInfo);
swfObj.javaEnabled(result);
}
function getJavaVersion() {
return deployJava.getJREs();
}
function isJavaVersionAppropriateForDeskshare(required) {
return deployJava.versionCheck(required);
}
BBBClientCheck.language = function(){
var languageInfo = '';
var swfObj = getSwfObj();
@ -165,152 +185,121 @@
}
BBBClientCheck.isWebRTCSupported = function() {
var isWebRTCSupportedInfo = SIP.WebRTC.isSupported();
var isWebRTCSupportedInfo = isWebRTCAvailable();
var swfObj = getSwfObj();
swfObj.isWebRTCSupported(isWebRTCSupportedInfo);
}
BBBClientCheck.webRTCEchoAndSocketTest = function() {
var audioContext = new (window.AudioContext || window.webkitAudioContext)();
var silentStream = audioContext.createMediaStreamDestination().stream;
userMicMedia = silentStream;
startWebRTCAudioTest();
}
function startWebRTCAudioTest() {
console.log("Starting WebRTC audio test...");
function sendWebRTCEchoTestAnswer(success, errorcode) {
var swfObj = getSwfObj();
var callback = function(message) {
switch(message.status) {
case 'websocketFailed':
console.log("websocketFailed");
swfObj.webRTCSocketTest(false, message.cause);
break;
case 'websocketSuccess':
console.log("websocketSuccess");
swfObj.webRTCSocketTest(true, 'Connected');
break;
case 'failed':
swfObj.webRTCEchoTest(false, message.cause);
console.log("call failed");
break;
case 'ended':
console.log("call ended");
break;
case 'started':
console.log("call started");
swfObj.webRTCEchoTest(true, 'Connected');
break;
case 'mediasuccess':
console.log("call mediasuccess");
break;
case 'mediafail':
console.log("call mediafail");
break;
}
}
var callerIdName = "12345" + "-bbbID-" + "bbbTestUser";
webrtc_call(callerIdName, "9196", callback);
}
function createUA(username, server, callback) {
/* VERY IMPORTANT
* - You must escape the username because spaces will cause the connection to fail
* - We are connecting to the websocket through an nginx redirect instead of directly to 5066
*/
var configuration = {
uri: 'sip:' + encodeURIComponent(username) + '@' + server,
wsServers: 'ws://' + server + '/ws',
displayName: username,
register: false,
traceSip: false,
userAgentString: "BigBlueButton",
stunServers: "stun:stun.freeswitch.org"
};
console.log("Creating SIP.UA");
userAgent = new SIP.UA(configuration);
userAgent.on('disconnected', function() {
if (userAgent !== undefined) {
userAgent.stop();
userAgent = null;
callback({status: 'websocketFailed', cause: 'Could not make a WebSocket Connection'});
}
});
userAgent.on('connected', function() {
callback({status: 'websocketSuccess'});
});
userAgent.start();
}
function make_call(username, voiceBridge, server, callback) {
var audioContext = new (window.AudioContext || window.webkitAudioContext)();
var silentStream = audioContext.createMediaStreamDestination().stream;
console.log("Setting options.. ");
var options = {
media: {
stream: silentStream,
render: {
remote: {
audio: document.getElementById('remote-media')
}
}
}
};
console.log("Calling to " + voiceBridge + "....");
currentSession = userAgent.invite('sip:' + voiceBridge + '@' + server, options);
console.log("Call connecting...");
currentSession.on('failed', function(response, cause) {
console.log('call failed with the case ' + casuse);
callback({status: 'failed', cause: cause});
});
currentSession.on('bye', function(request) {
console.log('call ended ' + currentSession.endTime);
callback({status: 'ended'})
});
currentSession.on('accepted', function(data) {
console.log('BigBlueClient Test Call started');
callback({status: 'started'});
swfObj.webRTCEchoTest(success, errorcode);
webrtc_hangup(function() {
console.log("[BBBClientCheck] Handling webRTC hangup callback");
var userAgentTemp = userAgent;
userAgent = null;
userAgentTemp.stop();
});
}
function webrtc_call(username, voiceBridge, callback) {
console.log("webrtc_call started...");
if (!SIP.WebRTC.isSupported()) {
callback({status: "failed", cause: "Browser version not supported" });
BBB.getMyUserInfo = function(callback) {
var obj = {
myUserID: "12345",
myUsername: "bbbTestUser",
myAvatarURL: "undefined",
myRole: "undefined",
amIPresenter: "undefined",
dialNumber: "undefined",
voiceBridge: "undefined",
customdata: "undefined"
}
var server = window.document.location.host;
console.log("webrtc_call server: " + server);
if(userAgent == undefined) {
createUA(username, server, callback);
}
else {
callback({status: 'websocketSuccess'});
}
make_call(username, voiceBridge, server, callback);
callback(obj);
}
function getUserMicMedia(getUserMediaSuccess, getUserMicMediaFail) {
if (userMicMedia == undefined) {
SIP.WebRTC.getUserMedia({audio:true, video:false}, getUserMediaSuccess, getUserMicMediaFail);
} else {
getUserMicMediaSuccess(userMicMedia);
}
// webrtc test callbacks
BBB.webRTCEchoTestFailed = function(errorcode) {
console.log("[BBBClientCheck] Handling webRTCEchoTestFailed");
sendWebRTCEchoTestAnswer(false, errorcode);
}
BBB.webRTCEchoTestEnded = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestEnded");
}
BBB.webRTCEchoTestStarted = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestStarted");
sendWebRTCEchoTestAnswer(true, 'Connected');
}
BBB.webRTCEchoTestConnecting = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestConnecting");
}
BBB.webRTCEchoTestWaitingForICE = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestWaitingForICE");
}
BBB.webRTCEchoTestWebsocketSucceeded = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestWebsocketSucceeded");
var swfObj = getSwfObj();
swfObj.webRTCSocketTest(true, 'Connected');
}
BBB.webRTCEchoTestWebsocketFailed = function(errorcode) {
console.log("[BBBClientCheck] Handling webRTCEchoTestWebsocketFailed");
var swfObj = getSwfObj();
swfObj.webRTCSocketTest(false, errorcode);
}
// webrtc callbacks
BBB.webRTCConferenceCallFailed = function(errorcode) {
console.log("[BBBClientCheck] Handling webRTCConferenceCallFailed");
}
BBB.webRTCConferenceCallEnded = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallEnded");
}
BBB.webRTCConferenceCallStarted = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallStarted");
}
BBB.webRTCConferenceCallConnecting = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallConnecting");
}
BBB.webRTCConferenceCallWaitingForICE = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallWaitingForICE");
}
BBB.webRTCConferenceCallWebsocketSucceeded = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallWebsocketSucceeded");
}
BBB.webRTCConferenceCallWebsocketFailed = function(errorcode) {
console.log("[BBBClientCheck] Handling webRTCConferenceCallWebsocketFailed");
}
BBB.webRTCMediaRequest = function() {
console.log("[BBBClientCheck] Handling webRTCMediaRequest");
}
BBB.webRTCMediaSuccess = function() {
console.log("[BBBClientCheck] Handling webRTCMediaSuccess");
}
BBB.webRTCMediaFail = function() {
console.log("[BBBClientCheck] Handling webRTCMediaFail");
}
}

File diff suppressed because one or more lines are too long

View File

@ -11,6 +11,7 @@ s|Application {
fontSize: 15;
fontFamily: Arial;
color: #e1e2e5;
textAlign: center;
}
.borderContainerStyle {

View File

@ -2,8 +2,8 @@
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:view="org.bigbluebutton.clientcheck.view.*"
width="50%"
xmlns:view="org.bigbluebutton.clientcheck.view.mainview.*"
width="100%"
height="100%"
preinitialize="preinitializeHandler(event)"
xmlns:mainview="org.bigbluebutton.clientcheck.view.mainview.*">
@ -20,6 +20,8 @@
import org.bigbluebutton.clientcheck.AppConfig;
import org.bigbluebutton.clientcheck.view.mainview.MainViewConfig;
import org.bigbluebutton.clientcheck.view.mainview.RefreshButtonConfig;
import org.bigbluebutton.clientcheck.view.mainview.MailButtonConfig;
import robotlegs.bender.bundles.mvcs.MVCSBundle;
import robotlegs.bender.extensions.contextView.ContextView;
@ -40,20 +42,28 @@
*/
private function setupRobotlegsContext():void
{
robotlegsContext=new Context().install(MVCSBundle, SignalCommandMapExtension).configure(AppConfig).configure(MainViewConfig).configure(new ContextView(this));
robotlegsContext=new Context().install(MVCSBundle, SignalCommandMapExtension)
.configure(AppConfig)
.configure(MainViewConfig)
.configure(RefreshButtonConfig)
.configure(MailButtonConfig)
.configure(new ContextView(this));
}
]]>
</fx:Script>
<s:controlBarContent>
<mx:Spacer width="50%"/>
<mx:Label id="controlBarLabel"
text="{resourceManager.getString('resources', 'bbbsystemcheck.title')}"
styleName="controlBarLabelStyle"/>
<mx:Spacer width="50%"/>
width="100%"
text="{resourceManager.getString('resources', 'bbbsystemcheck.title')}"
styleName="controlBarLabelStyle"/>
<view:RefreshButton id="refreshBtn"
label="{resourceManager.getString('resources', 'bbbsystemcheck.refresh')}"/>
<view:MailButton id="mailBtn"
label="{resourceManager.getString('resources', 'bbbsystemcheck.mail')}"/>
</s:controlBarContent>
<mainview:MainView width="60%"
<mainview:MainView width="80%"
height="97%"
styleName="borderContainerStyle"/>
</s:Application>

View File

@ -1,3 +1,21 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck
{
import org.bigbluebutton.clientcheck.command.GetConfigXMLDataCommand;
@ -12,8 +30,10 @@ package org.bigbluebutton.clientcheck
import org.bigbluebutton.clientcheck.command.RequestRTMPAppsSignal;
import org.bigbluebutton.clientcheck.model.ISystemConfiguration;
import org.bigbluebutton.clientcheck.model.IXMLConfig;
import org.bigbluebutton.clientcheck.model.IDataProvider;
import org.bigbluebutton.clientcheck.model.SystemConfiguration;
import org.bigbluebutton.clientcheck.model.XMLConfig;
import org.bigbluebutton.clientcheck.model.DataProvider;
import org.bigbluebutton.clientcheck.service.DownloadBandwidthService;
import org.bigbluebutton.clientcheck.service.ExternalApiCallbacks;
import org.bigbluebutton.clientcheck.service.ExternalApiCalls;
@ -66,6 +86,7 @@ package org.bigbluebutton.clientcheck
{
injector.map(ISystemConfiguration).toSingleton(SystemConfiguration);
injector.map(IXMLConfig).toSingleton(XMLConfig);
injector.map(IDataProvider).toSingleton(DataProvider);
}
private function configureSignalsToCommands():void

View File

@ -1,6 +1,26 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import flash.net.URLRequest;
import flash.utils.getTimer;
import mx.core.FlexGlobals;
import mx.utils.URLUtil;
@ -23,7 +43,7 @@ package org.bigbluebutton.clientcheck.command
[Inject]
public var config:IXMLConfig;
private var CONFIG_XML:String="client/client-check/conf/config.xml";
private var CONFIG_XML:String="check/conf/config.xml";
private var _urlRequest:URLRequest;
public override function execute():void
@ -41,7 +61,7 @@ package org.bigbluebutton.clientcheck.command
var protocol:String=URLUtil.getProtocol(swfPath);
systemConfiguration.serverName=URLUtil.getServerNameWithPort(swfPath);
return protocol + "://" + systemConfiguration.serverName + "/" + CONFIG_XML;
return protocol + "://" + systemConfiguration.serverName + "/" + CONFIG_XML + "?t=" + getTimer().toString();
}
private function fail(reason:String):void

View File

@ -0,0 +1,31 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import org.osflash.signals.Signal;
public class GetConfigXMLDataSignal extends Signal
{
public function GetConfigXMLDataSignal()
{
super();
}
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import org.bigbluebutton.clientcheck.model.ISystemConfiguration;

View File

@ -0,0 +1,31 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import org.osflash.signals.Signal;
public class RequestBandwidthInfoSignal extends Signal
{
public function RequestBandwidthInfoSignal()
{
super();
}
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import flash.external.ExternalInterface;

View File

@ -0,0 +1,31 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import org.osflash.signals.Signal;
public class RequestBrowserInfoSignal extends Signal
{
public function RequestBrowserInfoSignal()
{
super();
}
}
}

View File

@ -0,0 +1,36 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import org.bigbluebutton.clientcheck.service.IPortTunnelingService;
import robotlegs.bender.bundles.mvcs.Command;
public class RequestPortsCommand extends Command
{
[Inject]
public var portTunnelingService:IPortTunnelingService;
public override function execute():void
{
portTunnelingService.init();
}
}
}

View File

@ -0,0 +1,31 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import org.osflash.signals.Signal;
public class RequestPortsSignal extends Signal
{
public function RequestPortsSignal()
{
super();
}
}
}

View File

@ -0,0 +1,41 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import org.bigbluebutton.clientcheck.model.test.IPortTest;
import org.bigbluebutton.clientcheck.model.test.IRTMPAppTest;
import org.bigbluebutton.clientcheck.model.ISystemConfiguration;
import org.bigbluebutton.clientcheck.model.test.PortTest;
import org.bigbluebutton.clientcheck.service.IRTMPTunnelingService;
import robotlegs.bender.bundles.mvcs.Command;
import org.bigbluebutton.clientcheck.model.test.RTMPAppTest;
public class RequestRTMPAppsCommand extends Command
{
[Inject]
public var rtmpTunnelingService:IRTMPTunnelingService;
public override function execute():void
{
rtmpTunnelingService.init();
}
}
}

View File

@ -0,0 +1,31 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.command
{
import org.osflash.signals.Signal;
public class RequestRTMPAppsSignal extends Signal
{
public function RequestRTMPAppsSignal()
{
super();
}
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model
{

View File

@ -0,0 +1,40 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model
{
import flash.net.Socket;
public class CustomSocket extends Socket
{
// need to add a port property in order to distinguish sockets when getting connection response
private var _port:int;
public override function connect(host:String, port:int):void
{
_port=port;
super.connect(host, port);
}
public function get port():int
{
return _port;
}
}
}

View File

@ -0,0 +1,86 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model
{
import mx.collections.ArrayCollection;
import spark.collections.Sort;
import spark.collections.SortField;
public class DataProvider implements IDataProvider
{
private var _dataProvider:ArrayCollection = new ArrayCollection;
public function addData(obj:Object, status:Object):void
{
_dataProvider.addItem(mergeWithStatusObject(obj, status));
}
public function getData():ArrayCollection
{
return _dataProvider;
}
private function sortData():void
{
var itemSortField:SortField = new SortField();
var statusSortField:SortField = new SortField();
itemSortField.name = "Item";
statusSortField.name = "StatusPriority";
statusSortField.numeric = true;
var dataSort:Sort = new Sort();
dataSort.fields = [statusSortField, itemSortField];
_dataProvider.sort = dataSort;
_dataProvider.refresh();
}
public function updateData(obj:Object, status:Object):void
{
var merged:Object = mergeWithStatusObject(obj, status);
var i:int = 0;
while (i < _dataProvider.length && _dataProvider.getItemAt(i).Item != merged.Item) i++;
if (_dataProvider.getItemAt(i).Item == merged.Item)
{
_dataProvider.removeItemAt(i);
_dataProvider.addItemAt(merged, i);
}
else trace("Something is missing at MainViewMediator's initDataProvider");
sortData();
}
public function mergeWithStatusObject(obj:Object, status:Object):Object
{
var merged:Object = new Object();
var p:String;
for (p in obj) {
merged[p] = obj[p];
}
for (p in status) {
merged[p] = status[p];
}
return merged;
}
}
}

View File

@ -0,0 +1,30 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model
{
import mx.collections.ArrayCollection;
public interface IDataProvider
{
function addData(obj:Object, status:Object):void;
function getData():ArrayCollection;
function updateData(obj:Object, status:Object):void;
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model
{
import org.bigbluebutton.clientcheck.model.test.BrowserTest;

View File

@ -0,0 +1,35 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model
{
import org.osflash.signals.ISignal;
public interface IXMLConfig
{
function init(config:XML):void;
function get configParsedSignal():ISignal;
function get downloadFilePath():Object;
function get serverUrl():Object;
function getPorts():XMLList;
function getRTMPApps():XMLList;
function getVersion():String;
function getMail():String;
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model
{
import org.bigbluebutton.clientcheck.model.test.BrowserTest;

View File

@ -0,0 +1,76 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
public class XMLConfig implements IXMLConfig
{
private var _config:XML;
private var _configParsedSignal:ISignal=new Signal;
public function init(config:XML):void
{
_config=config;
}
public function get configParsedSignal():ISignal
{
return _configParsedSignal;
}
public function get downloadFilePath():Object
{
var downloadFilePath:Object=new Object();
downloadFilePath.url=_config.downloadFilePath.@url;
return downloadFilePath;
}
public function get serverUrl():Object
{
var serverUrl:Object=new Object();
serverUrl.url=_config.server.@url;
return serverUrl;
}
public function getPorts():XMLList
{
return new XMLList(_config.ports).children();
}
public function getRTMPApps():XMLList
{
return new XMLList(_config.rtmpapps).children();
}
public function getVersion():String
{
var version:String = _config.version;
return version;
}
public function getMail():String
{
var mail:String = _config.mail;
return mail;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class BrowserTest implements ITestable
{
public static var BROWSER:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.browser');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _browserTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
_browserTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get browserTestSuccessfullChangedSignal():ISignal
{
return _browserTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class CookieEnabledTest implements ITestable
{
public static var COOKIE_ENABLED:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.cookieEnabled');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _cookieEnabledTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
cookieEnabledTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get cookieEnabledTestSuccessfullChangedSignal():ISignal
{
return _cookieEnabledTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.bigbluebutton.clientcheck.model.Bandwidth;
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class DownloadBandwidthTest extends Bandwidth implements ITestable
{
public static var DOWNLOAD_SPEED:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.downloadSpeed');
private var _testResult:String;
private var _testSuccessfull:Boolean;
private var _downloadSpeedTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
_downloadSpeedTestSuccessfullChangedSignal.dispatch();
}
public function get downloadSpeedTestSuccessfullChangedSignal():ISignal
{
return _downloadSpeedTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class FlashVersionTest implements ITestable
{
public static var FLASH_VERSION:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.flashVersion');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _flashVersionTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
flashVersionTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get flashVersionTestSuccessfullChangedSignal():ISignal
{
return _flashVersionTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,32 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
public interface IPortTest extends ITestable
{
function get portNumber():int;
function set portNumber(value:int):void;
function get portName():String;
function set portName(value:String):void;
function get tunnelResultSuccessfullChangedSignal():ISignal;
}
}

View File

@ -0,0 +1,32 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
public interface IRTMPAppTest extends ITestable
{
function get applicationUri():String;
function set applicationUri(value:String):void;
function get applicationName():String;
function set applicationName(value:String):void;
function get connectionResultSuccessfullChangedSignal():ISignal;
}
}

View File

@ -0,0 +1,30 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
public interface ITestable
{
function get testSuccessfull():Boolean;
function set testSuccessfull(value:Boolean):void;
function get testResult():String;
function set testResult(value:String):void;
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.Signal;
import org.osflash.signals.ISignal;
import mx.resources.ResourceManager;
public class IsPepperFlashTest implements ITestable
{
public static var PEPPER_FLASH:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.pepperFlash');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _pepperFlashTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
pepperFlashTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get pepperFlashTestSuccessfullChangedSignal():ISignal
{
return _pepperFlashTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class JavaEnabledTest implements ITestable
{
public static var JAVA_ENABLED:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.javaEnabled');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _javaEnabledTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
javaEnabledTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get javaEnabledTestSuccessfullChangedSignal():ISignal
{
return _javaEnabledTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class LanguageTest implements ITestable
{
public static var LANGUAGE:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.language');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _languageTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
languageTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get languageTestSuccessfullChangedSignal():ISignal
{
return _languageTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.bigbluebutton.clientcheck.model.Bandwidth;
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class PingTest extends Bandwidth
{
public static var PING:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.ping');
private var _testResult:String;
private var _testSuccessfull:Boolean;
private var _pingSpeedTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
_pingSpeedTestSuccessfullChangedSignal.dispatch();
}
public function get pingSpeedTestSuccessfullChangedSignal():ISignal
{
return _pingSpeedTestSuccessfullChangedSignal;
}
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class ScreenSizeTest implements ITestable
{
public static var SCREEN_SIZE:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.screenSize');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _screenSizeTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
_screenSizeTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get screenSizeTestSuccessfullChangedSignal():ISignal
{
return _screenSizeTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.bigbluebutton.clientcheck.model.Bandwidth;
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class UploadBandwidthTest extends Bandwidth implements ITestable
{
public static var UPLOAD_SPEED:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.uploadSpeed');
private var _testResult:String;
private var _testSuccessfull:Boolean;
private var _uploadSpeedTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
_uploadSpeedTestSuccessfullChangedSignal.dispatch();
}
public function get uploadSpeedTestSuccessfullChangedSignal():ISignal
{
return _uploadSpeedTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class UserAgentTest implements ITestable
{
public static var USER_AGENT:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.userAgent');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _userAgentTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
_userAgentTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get userAgentTestSuccessfullChangedSignal():ISignal
{
return _userAgentTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class WebRTCEchoTest implements ITestable
{
public static var WEBRTC_ECHO_TEST:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.webRTCEcho');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _webRTCEchoTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
webRTCEchoTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get webRTCEchoTestSuccessfullChangedSignal():ISignal
{
return _webRTCEchoTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class WebRTCSocketTest implements ITestable
{
public static var WEBRTC_SOCKET_TEST:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.webRTCSocket');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _webRTCSocketTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
webRTCSocketTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get webRTCSocketTestSuccessfullChangedSignal():ISignal
{
return _webRTCSocketTestSuccessfullChangedSignal;
}
}
}

View File

@ -0,0 +1,62 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.model.test
{
import org.osflash.signals.ISignal;
import org.osflash.signals.Signal;
import mx.resources.ResourceManager;
public class WebRTCSupportedTest implements ITestable
{
public static var WEBRTC_SUPPORTED:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.test.name.webRTCSupported');
private var _testSuccessfull:Boolean;
private var _testResult:String;
private var _webRTCSupportedTestSuccessfullChangedSignal:ISignal=new Signal;
public function get testSuccessfull():Boolean
{
return _testSuccessfull;
}
public function set testSuccessfull(value:Boolean):void
{
_testSuccessfull=value;
webRTCSupportedTestSuccessfullChangedSignal.dispatch();
}
public function get testResult():String
{
return _testResult;
}
public function set testResult(value:String):void
{
_testResult=value;
}
public function get webRTCSupportedTestSuccessfullChangedSignal():ISignal
{
return _webRTCSupportedTestSuccessfullChangedSignal;
}
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.events.Event;

View File

@ -0,0 +1,135 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.TimerEvent;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
import flash.utils.getTimer;
import flash.utils.Timer;
import mx.formatters.NumberBaseRoundType;
import mx.formatters.NumberFormatter;
import org.bigbluebutton.clientcheck.model.ISystemConfiguration;
public class DownloadBandwidthService implements IDownloadBandwidthService
{
[Inject]
public var systemConfiguration:ISystemConfiguration;
private static const NUM_OF_SECONDS:Number = 10;
private static const BYTES_IN_MBIT:Number=Math.pow(2, 17);
private static const BYTES_IN_MBYTE:Number=Math.pow(2, 20);
private var _imageLoader:Loader;
private var _initiated:Boolean = false;
private var _loading:Boolean = false;
private var _ignoreBytes:int = 0;
private var _startTime:int;
private var _endTime:int;
private var _timer:Timer;
private var _secondsCounter:int = 0;
public function init():void
{
_initiated=false;
_timer = new Timer(1000, NUM_OF_SECONDS);
_timer.addEventListener(TimerEvent.TIMER, onTimerListener)
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerCompleted);
_timer.reset();
_timer.start();
_imageLoader=new Loader;
_imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, contentLoaderProgressHandler);
_imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, contentLoaderCompleteHandler, false, 0, true);
_imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, contentLoaderIoErrorHandler, false, 0, true);
_loading = true;
_imageLoader.load(new URLRequest(systemConfiguration.downloadFilePath + "?t=" + getTimer().toString()));
}
protected function onTimerListener(event:TimerEvent):void {
step();
}
protected function step():void {
if (_initiated) {
_secondsCounter = Math.min(_secondsCounter + 1, NUM_OF_SECONDS);
updateData(_secondsCounter == NUM_OF_SECONDS);
}
}
protected function updateData(lastUpdate:Boolean = false):void {
var now:int = getTimer();
var duration:Number = ((now - _startTime) / 1000)
var loadedSoFar:int = _imageLoader.contentLoaderInfo.bytesLoaded - _ignoreBytes;
var loadedInMB:Number = loadedSoFar / BYTES_IN_MBYTE;
var loadedInMb:Number = loadedSoFar / BYTES_IN_MBIT;
var speed:Number = loadedInMb / duration;
var dataFormatter:NumberFormatter=new NumberFormatter();
dataFormatter.precision=3;
dataFormatter.rounding=NumberBaseRoundType.NEAREST;
var msg:String;
if (lastUpdate) {
msg = dataFormatter.format(speed) + " Mbps (" + dataFormatter.format(loadedInMB) + " MB in " + _secondsCounter + " seconds)";
} else {
msg = dataFormatter.format(speed) + " Mbps (" + dataFormatter.format(loadedInMB) + " MB, " + (NUM_OF_SECONDS - _secondsCounter) + " seconds remaining)";
}
systemConfiguration.downloadBandwidthTest.testResult=msg;
systemConfiguration.downloadBandwidthTest.testSuccessfull=true;
}
protected function onTimerCompleted(event:TimerEvent):void {
_imageLoader.close();
step();
}
protected function contentLoaderProgressHandler(event:ProgressEvent):void
{
if (!_initiated)
{
_startTime = getTimer();
_ignoreBytes = event.bytesLoaded;
_initiated=true;
}
}
protected function contentLoaderIoErrorHandler(event:IOErrorEvent):void
{
systemConfiguration.downloadBandwidthTest.testResult=event.text;
systemConfiguration.downloadBandwidthTest.testSuccessfull=false;
}
protected function contentLoaderCompleteHandler(event:Event):void
{
_timer.stop();
updateData(true);
}
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.external.ExternalInterface;
@ -5,13 +24,13 @@ package org.bigbluebutton.clientcheck.service
import org.bigbluebutton.clientcheck.model.ISystemConfiguration;
import org.bigbluebutton.clientcheck.model.test.ITestable;
import mx.resources.ResourceManager;
public class ExternalApiCallbacks implements IExternalApiCallbacks
{
[Inject]
public var systemConfiguration:ISystemConfiguration;
private static var UNDEFINED:String="Undefined";
public function ExternalApiCallbacks()
{
if (ExternalInterface.available)
@ -33,13 +52,13 @@ package org.bigbluebutton.clientcheck.service
{
if ((result == null) || (result == ""))
{
item.testResult=UNDEFINED;
item.testResult = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.result.undefined');
item.testSuccessfull=false;
}
else
{
item.testResult=result;
item.testSuccessfull=true
item.testSuccessfull=true;
}
}
@ -65,9 +84,19 @@ package org.bigbluebutton.clientcheck.service
checkResult(value, systemConfiguration.language);
}
public function javaEnabledCallbackHandler(value:String):void
public function javaEnabledCallbackHandler(value:Object):void
{
checkResult(value, systemConfiguration.javaEnabled);
var testResult:String;
if (!value.enabled) {
testResult = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.result.javaEnabled.disabled');
} else if (value.version.length == 0) {
testResult = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.result.javaEnabled.notDetected');
} else {
testResult = value.version.join(', ');
}
systemConfiguration.javaEnabled.testResult = testResult;
systemConfiguration.javaEnabled.testSuccessfull = value.appropriate;
}
public function isWebRTCSupportedCallbackHandler(value:String):void

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.external.ExternalInterface;

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.system.Capabilities;

View File

@ -0,0 +1,27 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
public interface IDownloadBandwidthService
{
function init():void;
}
}

View File

@ -0,0 +1,35 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
public interface IExternalApiCallbacks
{
function userAgentCallbackHandler(value:String):void;
function cookieEnabledCallbackHandler(value:String):void;
function isPepperFlashCallbackHandler(value:String):void;
function languageCallbackHandler(value:String):void;
function javaEnabledCallbackHandler(value:Object):void;
function screenSizeCallbackHandler(value:String):void;
function isWebRTCSupportedCallbackHandler(value:String):void;
function webRTCEchoTestCallbackHandler(success:Boolean, result:String):void;
function webRTCSocketTestCallbackHandler(success:Boolean, result:String):void;
}
}

View File

@ -0,0 +1,35 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
public interface IExternalApiCalls
{
function requestUserAgent():void;
function requestBrowser():void;
function requestScreenSize():void;
function requestIsPepperFlash():void;
function requestCookiesEnabled():void;
function requestJavaEnabled():void;
function requestLanguage():void;
function requestIsWebRTCSupported():void;
function requestWebRTCEchoAndSocketTest():void;
}
}

View File

@ -0,0 +1,27 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
public interface IFlashService
{
function requestFlashVersion():void;
}
}

View File

@ -0,0 +1,27 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
public interface IPingService
{
function init():void;
}
}

View File

@ -0,0 +1,27 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
public interface IPortTunnelingService
{
function init():void;
}
}

View File

@ -0,0 +1,27 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
public interface IRTMPTunnelingService
{
function init():void;
}
}

View File

@ -0,0 +1,27 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
public interface IUploadBandwidthService
{
function init():void;
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.events.Event;
@ -76,7 +95,7 @@ package org.bigbluebutton.clientcheck.service
}
var formatter:NumberFormatter=new NumberFormatter();
formatter.precision=3;
formatter.precision=1;
formatter.rounding=NumberBaseRoundType.NEAREST;
var result:String=formatter.format(totalResult / systemConfiguration.pingTest.testResultArray.length);

View File

@ -1,7 +1,27 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.Socket;
import org.bigbluebutton.clientcheck.model.CustomSocket;
@ -27,6 +47,7 @@ package org.bigbluebutton.clientcheck.service
_sockets.push(_socket);
_socket.addEventListener(Event.CONNECT, socketConnectHandler);
_socket.addEventListener(IOErrorEvent.IO_ERROR, socketIoErrorHandler);
_socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, socketSecurityErrorHandler);
_socket.connect(systemConfiguration.serverName, systemConfiguration.ports[i].portNumber);
}
catch (error:Error)
@ -58,11 +79,7 @@ package org.bigbluebutton.clientcheck.service
protected function socketIoErrorHandler(event:IOErrorEvent):void
{
var port:PortTest=getPortItemByPortName(event.currentTarget.port);
port.testResult=event.type;
port.testSuccessfull=false;
getSocketItemByPortName(event.currentTarget.port).close();
genericErrorHandler(event);
}
protected function socketConnectHandler(event:Event):void
@ -73,5 +90,17 @@ package org.bigbluebutton.clientcheck.service
getSocketItemByPortName(event.currentTarget.port).close();
}
protected function socketSecurityErrorHandler(event:SecurityErrorEvent):void {
genericErrorHandler(event);
}
protected function genericErrorHandler(event:Event):void {
var port:PortTest=getPortItemByPortName(event.currentTarget.port);
port.testResult=event.type;
port.testSuccessfull=false;
getSocketItemByPortName(event.currentTarget.port).close();
}
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.events.AsyncErrorEvent;
@ -32,10 +51,7 @@ package org.bigbluebutton.clientcheck.service
{
_netConnection=new NetConnection();
_netConnection.client={};
_netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
_netConnection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, netASyncError);
_netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError);
_netConnection.addEventListener(IOErrorEvent.IO_ERROR, netIOError);
registerListeners(_netConnection);
if (systemConfiguration.rtmpApps[i].applicationUri)
{
@ -44,7 +60,7 @@ package org.bigbluebutton.clientcheck.service
// sip has a different way of connecting to the red5 server, need to fake connection data.
if (systemConfiguration.rtmpApps[i].applicationUri.indexOf("sip") > 0)
{
_netConnection.connect(systemConfiguration.rtmpApps[i].applicationUri, EXTERNAL_USER_ID_MOCK, USER_NAME_MOCK);
_netConnection.connect(systemConfiguration.rtmpApps[i].applicationUri, ROOM_MOCK, EXTERNAL_USER_ID_MOCK, USER_NAME_MOCK);
continue;
}
else
@ -61,6 +77,24 @@ package org.bigbluebutton.clientcheck.service
}
}
private function registerListeners(nc:NetConnection):void
{
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, netASyncError);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError);
nc.addEventListener(IOErrorEvent.IO_ERROR, netIOError);
}
private function unregisterListeners(nc:NetConnection):void
{
nc.removeEventListener(NetStatusEvent.NET_STATUS, netStatus);
nc.removeEventListener(AsyncErrorEvent.ASYNC_ERROR, netASyncError);
nc.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError);
nc.removeEventListener(IOErrorEvent.IO_ERROR, netIOError);
nc.close();
}
private function notifyErrorOccured(event:Event):void
{
var rtmpAppItem:RTMPAppTest=getRTMPAppItemByURI(event.currentTarget.uri);
@ -81,6 +115,7 @@ package org.bigbluebutton.clientcheck.service
}
rtmpAppItem.testSuccessfull=false;
unregisterListeners(event.target as NetConnection);
}
}
@ -111,9 +146,11 @@ package org.bigbluebutton.clientcheck.service
break;
default:
rtmpAppItem.testResult += ": " + info.description;
rtmpAppItem.testSuccessfull=false;
break;
}
unregisterListeners(event.target as NetConnection);
}
else
{

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service
{
import flash.events.DataEvent;

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.service.util
{
import flash.events.Event;

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
clipAndEnableScrolling="true">
<fx:Script>
<![CDATA[
private static var FAILED:int = 1;
private static var WARNING:int = 2;
private static var LOADING:int = 3;
private static var SUCCEEDED:int = 4;
override public function prepare(hasBeenRecycled:Boolean):void
{
lblData.text = data[column.dataField];
}
override public function set data(value:Object):void
{
super.data=value;
switch (value.StatusPriority) {
case SUCCEEDED:
case LOADING:
colorRect.visible = false;
break;
case WARNING:
colorRect.visible = true;
solid.color = 0xFFFF00;
break;
case FAILED:
colorRect.visible = true;
solid.color = 0xFF0000;
break;
default:
colorRect.visible = false;
break;
}
}
]]>
</fx:Script>
<s:Rect id="colorRect" top="0" bottom="0" right="0" left="0">
<s:fill>
<s:SolidColor id="solid" alpha="0.4"/>
</s:fill>
</s:Rect>
<s:Label id="lblData"
top="9"
left="7"/>
</s:GridItemRenderer>

View File

@ -0,0 +1,26 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
public interface IMailButton
{
function dispose(): void;
}
}

View File

@ -0,0 +1,31 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
import spark.components.Button;
import spark.components.DataGrid;
import spark.components.BorderContainer;
public interface IMainView
{
function get dataGrid():DataGrid;
function get view():BorderContainer;
}
}

View File

@ -0,0 +1,26 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
public interface IRefreshButton
{
function dispose(): void;
}
}

View File

@ -0,0 +1,36 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
import spark.components.Button;
public class MailButton extends Button implements IMailButton
{
public function MailButton()
{
super();
}
public function dispose():void
{
}
}
}

View File

@ -0,0 +1,44 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
import robotlegs.bender.extensions.mediatorMap.api.IMediatorMap;
import robotlegs.bender.framework.api.IConfig;
import robotlegs.bender.framework.api.IInjector;
public class MailButtonConfig implements IConfig
{
[Inject]
public var injector:IInjector;
[Inject]
public var mediatorMap:IMediatorMap;
public function configure():void
{
configureMediators();
}
private function configureMediators():void
{
mediatorMap.map(IMailButton).toMediator(MailButtonMediator);
}
}
}

View File

@ -0,0 +1,118 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLRequestMethod;
import flash.net.navigateToURL;
import mx.resources.ResourceManager;
import mx.collections.ArrayCollection;
import org.bigbluebutton.clientcheck.model.IXMLConfig;
import org.bigbluebutton.clientcheck.model.IDataProvider;
import robotlegs.bender.bundles.mvcs.Mediator;
public class MailButtonMediator extends Mediator
{
[Inject]
public var view: IMailButton;
[Inject]
public var config: IXMLConfig;
[Inject]
public var dp: IDataProvider;
private static var FAILED:int = 1;
private static var WARNING:int = 2;
private static var LOADING:int = 3;
private static var SUCCEEDED:int = 4;
/**
* Initialize listener
*/
override public function initialize():void
{
(view as MailButton).addEventListener(MouseEvent.CLICK, mouseClickHandler);
}
/**
* Handle events to compose email
*/
private function mouseClickHandler(e:MouseEvent):void
{
var mailMsg:URLRequest = new URLRequest('mailto:' + config.getMail());
var variables:URLVariables = new URLVariables();
variables.subject = signWithVersion(ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.title'));
variables.body = buildMailBody(dp.getData());
mailMsg.data = variables;
mailMsg.method = URLRequestMethod.GET;
navigateToURL(mailMsg, "_blank");
}
/**
* Concatenate with the client-check version
*/
private function signWithVersion(value:String):String
{
return value + " " + config.getVersion();
}
public function buildMailBody(data:ArrayCollection):String {
var body:String = "";
var statusPriority:int = 0;
for (var i:int = 0; i < data.length; i++)
{
if (data.getItemAt(i).StatusPriority != statusPriority)
{
statusPriority = data.getItemAt(i).StatusPriority;
var statusName:String = "";
switch (statusPriority)
{
case FAILED:
statusName = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.status.failed');
break;
case WARNING:
statusName = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.status.warning');
break;
case LOADING:
statusName = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.status.loading');
break;
case SUCCEEDED:
statusName = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.status.succeeded');
break;
default:
trace("Bad status name at MailButtonMediator!")
break;
}
body += "\n" + statusName + "\n";
}
body += data.getItemAt(i).Item + ":\t\t" + data.getItemAt(i).Result + "\n";
}
return body;
}
}
}

View File

@ -1,3 +1,22 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
import flash.events.ContextMenuEvent;

View File

@ -8,6 +8,11 @@
borderStyle="inset"
borderWeight="4">
<fx:Script>
<![CDATA[
import spark.components.gridClasses.GridSelectionMode;
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout paddingLeft="10"
paddingRight="10"
@ -18,12 +23,15 @@
<s:DataGrid width="100%"
height="100%"
id="_dataGrid"
selectionMode="{GridSelectionMode.NONE}"
itemRenderer="org.bigbluebutton.clientcheck.view.mainview.CustomItemRenderer">
<s:typicalItem>
<s:DataItem Item="*****************"
Result="*************************************************************"
Status="*********************"/>
</s:typicalItem>
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="Item" headerText="{resourceManager.getString('resources', 'bbbsystemcheck.dataGridColumn.item')}" width="200"/>
<s:GridColumn dataField="Result" headerText="{resourceManager.getString('resources', 'bbbsystemcheck.dataGridColumn.result')}" width="500"/>
<s:GridColumn dataField="StatusMessage" headerText="{resourceManager.getString('resources', 'bbbsystemcheck.dataGridColumn.status')}"/>
</s:ArrayList>
</s:columns>
<s:ArrayCollection>
<fx:Object>
<fx:Item/>

View File

@ -0,0 +1,54 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
import robotlegs.bender.extensions.mediatorMap.api.IMediatorMap;
import robotlegs.bender.extensions.signalCommandMap.api.ISignalCommandMap;
import robotlegs.bender.framework.api.IConfig;
import robotlegs.bender.framework.api.IInjector;
public class MainViewConfig implements IConfig
{
[Inject]
public var injector:IInjector;
[Inject]
public var mediatorMap:IMediatorMap;
[Inject]
public var signalCommandMap:ISignalCommandMap;
public function configure():void
{
configureMediators();
configureSignalsToCommands();
}
private function configureSignalsToCommands():void
{
}
private function configureMediators():void
{
mediatorMap.map(IMainView).toMediator(MainViewMediator);
}
}
}

View File

@ -1,9 +1,29 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
import flash.events.Event;
import flash.events.MouseEvent;
import mx.collections.ArrayCollection;
import mx.resources.ResourceManager;
import org.bigbluebutton.clientcheck.command.GetConfigXMLDataSignal;
import org.bigbluebutton.clientcheck.command.RequestBandwidthInfoSignal;
@ -12,6 +32,7 @@ package org.bigbluebutton.clientcheck.view.mainview
import org.bigbluebutton.clientcheck.command.RequestRTMPAppsSignal;
import org.bigbluebutton.clientcheck.model.ISystemConfiguration;
import org.bigbluebutton.clientcheck.model.IXMLConfig;
import org.bigbluebutton.clientcheck.model.IDataProvider;
import org.bigbluebutton.clientcheck.model.test.BrowserTest;
import org.bigbluebutton.clientcheck.model.test.CookieEnabledTest;
import org.bigbluebutton.clientcheck.model.test.DownloadBandwidthTest;
@ -61,10 +82,10 @@ package org.bigbluebutton.clientcheck.view.mainview
[Inject]
public var config:IXMLConfig;
private var dataProvider:ArrayCollection=new ArrayCollection;
private static var FAILED:String="Fail";
private static var SUCCEED:String="Succeed";
[Inject]
public var dp:IDataProvider;
private static var VERSION:String=ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.version');
override public function initialize():void
{
@ -81,8 +102,9 @@ package org.bigbluebutton.clientcheck.view.mainview
private function configParsedHandler():void
{
initPropertyListeners();
initDataProvider();
view.dataGrid.dataProvider=dataProvider;
view.dataGrid.dataProvider=dp.getData();
requestBrowserInfoSignal.dispatch();
requestRTMPAppsInfoSignal.dispatch();
@ -118,6 +140,44 @@ package org.bigbluebutton.clientcheck.view.mainview
}
}
/**
* Gather all Item names even before it's tested
*/
private function initDataProvider():void
{
dp.addData({Item: BrowserTest.BROWSER, Result: null}, StatusENUM.LOADING);
dp.addData({Item: CookieEnabledTest.COOKIE_ENABLED, Result: null}, StatusENUM.LOADING);
dp.addData({Item: DownloadBandwidthTest.DOWNLOAD_SPEED, Result: null}, StatusENUM.LOADING);
dp.addData({Item: FlashVersionTest.FLASH_VERSION, Result: null}, StatusENUM.LOADING);
dp.addData({Item: IsPepperFlashTest.PEPPER_FLASH, Result: null}, StatusENUM.LOADING);
dp.addData({Item: JavaEnabledTest.JAVA_ENABLED, Result: null}, StatusENUM.LOADING);
dp.addData({Item: LanguageTest.LANGUAGE, Result: null}, StatusENUM.LOADING);
dp.addData({Item: PingTest.PING, Result: null}, StatusENUM.LOADING);
dp.addData({Item: ScreenSizeTest.SCREEN_SIZE, Result: null}, StatusENUM.LOADING);
// The upload is not working right now
// dp.addData({Item: UploadBandwidthTest.UPLOAD_SPEED, Result: "This is supposed to be failing right now"}, StatusENUM.FAILED);
dp.addData({Item: UserAgentTest.USER_AGENT, Result: null}, StatusENUM.LOADING);
dp.addData({Item: WebRTCEchoTest.WEBRTC_ECHO_TEST, Result: null}, StatusENUM.LOADING);
dp.addData({Item: WebRTCSocketTest.WEBRTC_SOCKET_TEST, Result: null}, StatusENUM.LOADING);
dp.addData({Item: WebRTCSupportedTest.WEBRTC_SUPPORTED, Result: null}, StatusENUM.LOADING);
if (systemConfiguration.rtmpApps)
{
for (var i:int=0; i < systemConfiguration.rtmpApps.length; i++)
{
dp.addData({Item: systemConfiguration.rtmpApps[i].applicationName, Result: null}, StatusENUM.LOADING);
}
}
if (systemConfiguration.ports)
{
for (var j:int=0; j < systemConfiguration.ports.length; j++)
{
dp.addData({Item: systemConfiguration.ports[j].portName, Result: null}, StatusENUM.LOADING);
}
}
dp.addData({Item: VERSION, Result: config.getVersion()}, StatusENUM.SUCCEED);
}
/**
* When RTMPApp item is getting updated we receive notification with 'applicationUri' of updated item
* We need to retrieve this item from the list of the available items and put it inside datagrid
@ -132,40 +192,14 @@ package org.bigbluebutton.clientcheck.view.mainview
return null;
}
/**
* Check if item is already in datagrid, if yes update, otherwise add new item
**/
public function updateItemInDataProvider(obj:Object):void
{
var index:int=-1;
for (var i:int=0; i < dataProvider.length; i++)
{
if (dataProvider.getItemAt(i).Item == obj.Item)
{
index=i;
}
}
if (index != -1)
{
dataProvider.removeItemAt(index);
dataProvider.addItemAt(obj, index);
}
else
{
dataProvider.addItem(obj);
}
}
private function rtmpAppConnectionResultSuccessfullChangedHandler(applicationUri:String):void
{
var appObj:RTMPAppTest=getRTMPAppItemByURI(applicationUri);
if (appObj)
{
var obj:Object={Item: appObj.applicationName, Result: appObj.testResult, Status: ((appObj.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (appObj.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: appObj.applicationName, Result: appObj.testResult}, status);
}
else
{
@ -189,8 +223,8 @@ package org.bigbluebutton.clientcheck.view.mainview
if (portObj)
{
var obj:Object={Item: portObj.portName, Result: portObj.testResult, Status: ((portObj.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (portObj.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: portObj.portName, Result: portObj.testResult}, status);
}
else
{
@ -200,87 +234,86 @@ package org.bigbluebutton.clientcheck.view.mainview
private function pingSpeedTestChangedHandler():void
{
var obj:Object={Item: PingTest.PING, Result: systemConfiguration.pingTest.testResult, Status: ((systemConfiguration.pingTest.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.pingTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: PingTest.PING, Result: systemConfiguration.pingTest.testResult}, status);
}
private function downloadSpeedTestChangedHandler():void
{
var obj:Object={Item: DownloadBandwidthTest.DOWNLOAD_SPEED, Result: systemConfiguration.downloadBandwidthTest.testResult, Status: ((systemConfiguration.downloadBandwidthTest.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.downloadBandwidthTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: DownloadBandwidthTest.DOWNLOAD_SPEED, Result: systemConfiguration.downloadBandwidthTest.testResult}, status);
}
private function uploadSpeedTestChangedHandler():void
{
var obj:Object={Item: UploadBandwidthTest.UPLOAD_SPEED, Result: systemConfiguration.uploadBandwidthTest.testResult, Status: ((systemConfiguration.uploadBandwidthTest.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.uploadBandwidthTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: UploadBandwidthTest.UPLOAD_SPEED, Result: systemConfiguration.uploadBandwidthTest.testResult}, status);
}
private function webRTCSocketTestChangedHandler():void
{
var obj:Object={Item: WebRTCSocketTest.WEBRTC_SOCKET_TEST, Result: systemConfiguration.webRTCSocketTest.testResult, Status: ((systemConfiguration.webRTCSocketTest.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.webRTCSocketTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: WebRTCSocketTest.WEBRTC_SOCKET_TEST, Result: systemConfiguration.webRTCSocketTest.testResult}, status);
}
private function webRTCEchoTestChangedHandler():void
{
var obj:Object={Item: WebRTCEchoTest.WEBRTC_ECHO_TEST, Result: systemConfiguration.webRTCEchoTest.testResult, Status: ((systemConfiguration.webRTCEchoTest.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.webRTCEchoTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: WebRTCEchoTest.WEBRTC_ECHO_TEST, Result: systemConfiguration.webRTCEchoTest.testResult}, status);
}
private function isPepperFlashChangedHandler():void
{
var obj:Object={Item: IsPepperFlashTest.PEPPER_FLASH, Result: systemConfiguration.isPepperFlash.testResult, Status: ((systemConfiguration.isPepperFlash.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.isPepperFlash.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: IsPepperFlashTest.PEPPER_FLASH, Result: systemConfiguration.isPepperFlash.testResult}, status);
}
private function languageChangedHandler():void
{
var obj:Object={Item: LanguageTest.LANGUAGE, Result: systemConfiguration.language.testResult, Status: ((systemConfiguration.language.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.language.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: LanguageTest.LANGUAGE, Result: systemConfiguration.language.testResult}, status);
}
private function javaEnabledChangedHandler():void
{
var obj:Object={Item: JavaEnabledTest.JAVA_ENABLED, Result: systemConfiguration.javaEnabled.testResult, Status: ((systemConfiguration.javaEnabled.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.javaEnabled.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.WARNING;
dp.updateData({Item: JavaEnabledTest.JAVA_ENABLED, Result: systemConfiguration.javaEnabled.testResult}, status);
}
private function isWebRTCSupportedChangedHandler():void
{
var obj:Object={Item: WebRTCSupportedTest.WEBRTC_SUPPORTED, Result: systemConfiguration.isWebRTCSupported.testResult, Status: ((systemConfiguration.isWebRTCSupported.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.isWebRTCSupported.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: WebRTCSupportedTest.WEBRTC_SUPPORTED, Result: systemConfiguration.isWebRTCSupported.testResult}, status);
}
private function cookieEnabledChangedHandler():void
{
var obj:Object={Item: CookieEnabledTest.COOKIE_ENABLED, Result: systemConfiguration.cookieEnabled.testResult, Status: ((systemConfiguration.cookieEnabled.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.cookieEnabled.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: CookieEnabledTest.COOKIE_ENABLED, Result: systemConfiguration.cookieEnabled.testResult}, status);
}
private function screenSizeChangedHandler():void
{
var obj:Object={Item: ScreenSizeTest.SCREEN_SIZE, Result: systemConfiguration.screenSize.testResult, Status: ((systemConfiguration.screenSize.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.screenSize.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: ScreenSizeTest.SCREEN_SIZE, Result: systemConfiguration.screenSize.testResult}, status);
}
private function browserChangedHandler():void
{
var obj:Object={Item: BrowserTest.BROWSER, Result: systemConfiguration.browser.testResult, Status: ((systemConfiguration.browser.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.browser.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: BrowserTest.BROWSER, Result: systemConfiguration.browser.testResult}, status);
}
private function userAgentChangedHandler():void
{
var obj:Object={Item: UserAgentTest.USER_AGENT, Result: systemConfiguration.userAgent.testResult, Status: ((systemConfiguration.userAgent.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.userAgent.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: UserAgentTest.USER_AGENT, Result: systemConfiguration.userAgent.testResult}, status);
}
private function flashVersionChangedHandler():void
{
var obj:Object={Item: FlashVersionTest.FLASH_VERSION, Result: systemConfiguration.flashVersion.testResult, Status: ((systemConfiguration.flashVersion.testSuccessfull == true) ? SUCCEED : FAILED)};
updateItemInDataProvider(obj);
var status:Object = (systemConfiguration.flashVersion.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED;
dp.updateData({Item: FlashVersionTest.FLASH_VERSION, Result: systemConfiguration.flashVersion.testResult}, status);
}
override public function destroy():void

View File

@ -0,0 +1,36 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2014 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.clientcheck.view.mainview
{
import spark.components.Button;
public class RefreshButton extends Button implements IRefreshButton
{
public function RefreshButton()
{
super();
}
public function dispose():void
{
}
}
}

Some files were not shown because too many files have changed in this diff Show More