diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as index fe094f6dd7dbe9747859fe0d7653eceef578296b..e96b3e54f8826b34111adff8d16bdfdd96294b06 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as +++ b/bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as @@ -149,7 +149,6 @@ package org.bigbluebutton.core.managers LOGGER.info(JSON.stringify(logData)); dispatchReconnectionSucceededEvent(type); - delete _connections[type]; if (type == BIGBLUEBUTTON_CONNECTION) { reconnect(); @@ -161,7 +160,7 @@ package org.bigbluebutton.core.managers _dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.SUCCESS_MESSAGE_EVENT, ResourceUtil.getInstance().getString('bbb.connection.reestablished'), - msg)); + msg, 'bbb.connection.reestablished')); _reconnectTimeout.reset(); removePopUp(); diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/events/ClientStatusEvent.as b/bigbluebutton-client/src/org/bigbluebutton/main/events/ClientStatusEvent.as index c8a890e8cc05779962bd236414711ee3f989a871..2fe1797d611a365012c7ee4f07f91e0b933c58f8 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/events/ClientStatusEvent.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/events/ClientStatusEvent.as @@ -29,12 +29,14 @@ package org.bigbluebutton.main.events public var title:String; public var message:String; - - public function ClientStatusEvent(type:String, title:String, message:String) + public var logCode:String; + + public function ClientStatusEvent(type:String, title:String, message:String, logCode:String) { super(type); this.title = title; this.message = message; + this.logCode = logCode; } } -} \ No newline at end of file +} diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml index ffa3e7ae610a24cbc71b140b767f41c81f5d4a3f..78e3b193e179a4385a7cabfe37363590cc45f3c7 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml @@ -11,6 +11,7 @@ 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. @@ -318,7 +319,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. // this is a terrible place for these checks because this function runs 4 times on startup if (BBB.initConnectionManager().isTunnelling) { isTunneling = true; - globalDispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.clientstatus.tunneling.title"), ResourceUtil.getInstance().getString("bbb.clientstatus.tunneling.message"))); + globalDispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, + ResourceUtil.getInstance().getString("bbb.clientstatus.tunneling.title"), + ResourceUtil.getInstance().getString("bbb.clientstatus.tunneling.message"), + 'bbb.clientstatus.tunneling')); } versionCheck(); @@ -340,7 +344,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. if ((browserVersion[0].toString().toLowerCase() == "chrome" && browserVersion[1] < xml.@chrome) || browserVersion[0].toString().toLowerCase() == "firefox" && browserVersion[1] < xml.@firefox) { globalDispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.clientstatus.browser.title"), - ResourceUtil.getInstance().getString("bbb.clientstatus.browser.message", [browserVersion[0]+" "+browserVersion[1]]))); + ResourceUtil.getInstance().getString("bbb.clientstatus.browser.message", [browserVersion[0]+" "+browserVersion[1]]), + 'bbb.clientstatus.browser.message')); } //find flash version @@ -350,7 +355,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. ((flashVersion.os != 'LNX' || browserVersion[0].toString().toLowerCase() == "chrome") && flashVersion.major < xml.@flash)) { globalDispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.clientstatus.flash.title"), - ResourceUtil.getInstance().getString("bbb.clientstatus.flash.message", [flashVersion.major+"."+flashVersion.minor+"."+flashVersion.build]))); + ResourceUtil.getInstance().getString("bbb.clientstatus.flash.message", [flashVersion.major+"."+flashVersion.minor+"."+flashVersion.build]), + 'bbb.clientstatus.flash.message')); } } diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/WarningButton.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/WarningButton.mxml index 7f26f8fed5ce801c28189543d1a470b5e7a93587..50013250951b357b8ba4157c9f3c70e624e1c9c8 100644 --- a/bigbluebutton-client/src/org/bigbluebutton/main/views/WarningButton.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/WarningButton.mxml @@ -94,7 +94,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. messages.push(obj); showNotification(); - LOGGER.warn("ClientNotification:" + e.title + " " + e.message); + + var logData:Object = {}; + logData.type = "ClientNotification"; + logData.logCode = e.logCode; + logData.message = e.message; + logData.title = e.title; + LOGGER.warn(JSON.stringify(logData)); } private function showNotification():void { @@ -102,7 +108,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. visible = includeInLayout = true; if (hideTimer.running) hideTimer.reset(); - hideTimer.start() + hideTimer.start(); if (!notification) { notification = ToolTipManager.createToolTip(ResourceUtil.getInstance().getString("bbb.clientstatus.notification"), 100, 100, "errorTipAbove", this) as ToolTip; diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as index fa182bb265371e07c876e632c1a0abb1b8c8f543..3c09198bbdcfb67951e6ca4c4a8be89421367623 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as @@ -14,7 +14,6 @@ package org.bigbluebutton.modules.phone.managers import org.as3commons.logging.util.jsonXify; import org.bigbluebutton.core.UsersUtil; import org.bigbluebutton.main.api.JSAPI; - import org.bigbluebutton.main.api.JSLog; import org.bigbluebutton.main.events.ClientStatusEvent; import org.bigbluebutton.main.model.users.AutoReconnect; import org.bigbluebutton.modules.phone.PhoneModel; @@ -32,7 +31,7 @@ package org.bigbluebutton.modules.phone.managers public class WebRTCCallManager { - private static const LOGGER:ILogger = getClassLogger(WebRTCCallManager); + private static const LOGGER:ILogger = getClassLogger(WebRTCCallManager); private const MAX_RETRIES:Number = 3; private var browserType:String = "unknown"; @@ -60,7 +59,8 @@ package org.bigbluebutton.modules.phone.managers if (options.useWebRTCIfAvailable && !isWebRTCSupported()) { dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.clientstatus.webrtc.title"), - ResourceUtil.getInstance().getString("bbb.clientstatus.webrtc.message"))); + ResourceUtil.getInstance().getString("bbb.clientstatus.webrtc.message"), + 'bbb.clientstatus.webrtc.title')); } usingWebRTC = checkIfToUseWebRTC(); @@ -135,7 +135,8 @@ package org.bigbluebutton.modules.phone.managers if(reconnecting) { dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.SUCCESS_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reestablished"), - ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reestablished"))); + ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reestablished"), + 'bbb.webrtcWarning.connection.reestablished')); reconnecting = false; } } @@ -150,8 +151,12 @@ package org.bigbluebutton.modules.phone.managers } public function handleJoinVoiceConferenceCommand(event:JoinVoiceConferenceCommand):void { - LOGGER.debug("handleJoinVoiceConferenceCommand - usingWebRTC: " + usingWebRTC + ", event.mic: " + event.mic); - + var logData:Object = UsersUtil.initLogData(); + logData.usingWebRTC = usingWebRTC; + logData.eventMic = event.mic; + logData.message = "handleJoinVoiceConferenceCommand - usingWebRTC:"; + LOGGER.info(JSON.stringify(logData)); + if (!usingWebRTC || !event.mic) return; if (options.skipCheck || echoTestDone) { @@ -200,26 +205,34 @@ package org.bigbluebutton.modules.phone.managers errorString = ResourceUtil.getInstance().getString("bbb.webrtcWarning.failedError.unknown", [event.errorCode]); } - var logData:Object = UsersUtil.initLogData(); - logData.user.reason = errorString; + var logData:Object = UsersUtil.initLogData(); + logData.user.reason = errorString; logData.tags = ["voice", "webrtc"]; - logData.message = "WebRtc Echo test failed."; - LOGGER.info(jsonXify(logData)); - - sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), errorString); + logData.message = "WebRtc Echo test failed."; + logData.errorEvent = event; + LOGGER.info(jsonXify(logData)); + + sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), + ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), + errorString, + 'bbb.webrtcWarning webRTCEchoTestFailedEvent'); } public function handleWebRTCEchoTestEndedUnexpectedly():void { model.state = Constants.INITED; - var errorString:String = ResourceUtil.getInstance().getString("bbb.webrtcWarning.failedError.endedunexpectedly"); - - var logData:Object = UsersUtil.initLogData(); - logData.user.reason = errorString; + var logCode:String = "bbb.webrtcWarning.failedError.endedunexpectedly"; + var errorString:String = ResourceUtil.getInstance().getString(logCode); + + var logData:Object = UsersUtil.initLogData(); + logData.user.reason = errorString; logData.tags = ["voice", "webrtc"]; logData.message = "WebRtc Echo test ended unexpectedly."; - LOGGER.info(jsonXify(logData)); - - sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), errorString); + LOGGER.info(jsonXify(logData)); + + sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), + ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), + errorString, + logCode); } public function handleWebRTCCallFailedEvent(event:WebRTCCallEvent):void { @@ -231,7 +244,8 @@ package org.bigbluebutton.modules.phone.managers reconnecting = true; dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.WARNING_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.dropped"), - ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reconnecting"))); + ResourceUtil.getInstance().getString("bbb.webrtcWarning.connection.reconnecting"), + 'bbb.webrtcWarning.connection.dropped,reconnecting')); reconnect.onDisconnect(joinVoiceConference, []); } else { @@ -256,23 +270,30 @@ package org.bigbluebutton.modules.phone.managers var logData:Object = UsersUtil.initLogData(); logData.tags = ["voice", "webrtc"]; - logData.user.reason = errorString; + logData.errorEvent = event; LOGGER.info(jsonXify(logData)); - sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), errorString); + sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), + ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), + errorString, + 'bbb.webrtcWarning.failedError'); } } } public function handleWebRTCMediaFailedEvent():void { model.state = Constants.INITED; - var errorString:String = ResourceUtil.getInstance().getString("bbb.webrtcWarning.failedError.mediamissing"); - - var logData:Object = UsersUtil.initLogData(); - logData.user.reason = errorString; - LOGGER.info(jsonXify(logData)); - - sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), errorString); + var logCode:String = "bbb.webrtcWarning.failedError.mediamissing"; + var errorString:String = ResourceUtil.getInstance().getString(logCode); + + var logData:Object = UsersUtil.initLogData(); + logData.user.reason = errorString; + LOGGER.info(jsonXify(logData)); + + sendWebRTCAlert(ResourceUtil.getInstance().getString("bbb.webrtcWarning.title"), + ResourceUtil.getInstance().getString("bbb.webrtcWarning.message", [errorString]), + errorString, + logCode); } private var popUpDelayTimer:Timer = new Timer(100, 1); @@ -294,7 +315,7 @@ package org.bigbluebutton.modules.phone.managers } } - private function sendWebRTCAlert(title:String, message:String, error:String):void { + private function sendWebRTCAlert(title:String, message:String, error:String, logCode:String):void { /** * There is a bug in Flex SDK 4.14 where the screen stays blurry if a * pop-up is opened from another pop-up. I delayed the second open to @@ -305,9 +326,15 @@ package org.bigbluebutton.modules.phone.managers Alert.show(message, title, Alert.YES | Alert.NO, null, handleCallFailedUserResponse, null, Alert.YES); }); popUpDelayTimer.start(); - dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.FAIL_MESSAGE_EVENT, title, error)); + dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.FAIL_MESSAGE_EVENT, title, error, logCode)); - LOGGER.warn("WebRTCAlert:" + title + " " + error + " " + message); + var logData:Object = UsersUtil.initLogData(); + logData.type = "WebRTCAlert"; + logData.title = title; + logData.error = error; + logData.message = message; + logData.logCode = logCode; + LOGGER.warn(JSON.stringify(logData)); } } } diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/WebRTCConnection.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/WebRTCConnection.as index a6965b457b45195a7a497535f7b29aa5052eaab8..a362e16fef74968067106e731f76f40dacf04104 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/WebRTCConnection.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/WebRTCConnection.as @@ -38,9 +38,9 @@ package org.bigbluebutton.modules.screenshare.services.red5 import org.bigbluebutton.core.UsersUtil; import org.bigbluebutton.core.managers.ReconnectionManager; import org.bigbluebutton.main.events.BBBEvent; - import org.bigbluebutton.modules.screenshare.events.WebRTCViewStreamEvent; - import org.bigbluebutton.modules.screenshare.services.red5.WebRTCConnectionEvent; - + import org.bigbluebutton.modules.screenshare.events.WebRTCViewStreamEvent; + import org.bigbluebutton.modules.screenshare.services.red5.WebRTCConnectionEvent; + public class WebRTCConnection { private static const LOGGER:ILogger = getClassLogger(Connection); @@ -168,6 +168,12 @@ package org.bigbluebutton.modules.screenshare.services.red5 private function netStatusHandler(event:NetStatusEvent):void { LOGGER.debug("Connected to [" + getURI() + "]. [" + event.info.code + "]"); + var logData:Object = {}; + logData.type = "ConnectionStatusChanged"; + logData.newStatus = event.info.code; + logData.connection = getURI(); + LOGGER.info(JSON.stringify(logData)); + if (retryTimer) { retryCount = 0; LOGGER.debug("Cancelling retry timer."); @@ -211,7 +217,7 @@ package org.bigbluebutton.modules.screenshare.services.red5 LOGGER.debug(result); }, function(status:String):void { // status - On error occurred - LOGGER.error(status); + LOGGER.error(status); } ); @@ -257,7 +263,8 @@ package org.bigbluebutton.modules.screenshare.services.red5 break; case "NetConnection.Connect.NetworkChange": - LOGGER.info("Detected network change. User might be on a wireless and temporarily dropped connection. Doing nothing. Just making a note."); + // LOGGER.info("Detected network change. User might be on a wireless and + // temporarily dropped connection. Doing nothing. Just making a note."); break; default :