Merge branch 'master' into sync-deskshare-that-will-work-with-0.8-with-master
This commit is contained in:
commit
dcecac18f9
@ -40,6 +40,7 @@ public class Application extends MultiThreadedApplicationAdapter {
|
||||
private ClientConnectionManager clientConnManager;
|
||||
|
||||
private String sipServerHost = "localhost";
|
||||
private String sipClientRtpIp = "";
|
||||
private int sipPort = 5070;
|
||||
private int startAudioPort = 3000;
|
||||
private int stopAudioPort = 3029;
|
||||
@ -55,7 +56,7 @@ public class Application extends MultiThreadedApplicationAdapter {
|
||||
callStreamFactory.setScope(scope);
|
||||
sipPeerManager.setCallStreamFactory(callStreamFactory);
|
||||
sipPeerManager.setClientConnectionManager(clientConnManager);
|
||||
sipPeerManager.createSipPeer("default", sipServerHost, sipPort, startAudioPort, stopAudioPort);
|
||||
sipPeerManager.createSipPeer("default", sipClientRtpIp, sipServerHost, sipPort, startAudioPort, stopAudioPort);
|
||||
try {
|
||||
sipPeerManager.register("default", username, password);
|
||||
} catch (PeerNotFoundException e) {
|
||||
@ -180,6 +181,10 @@ public class Application extends MultiThreadedApplicationAdapter {
|
||||
sipServerHost = h.trim();
|
||||
}
|
||||
|
||||
public void setSipClientRtpIp(String ipAddr) {
|
||||
this.sipClientRtpIp = ipAddr.trim();
|
||||
}
|
||||
|
||||
public void setUsername(String un) {
|
||||
this.username = un.trim();
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ public class CallAgent extends CallListenerAdapter implements CallStreamObserver
|
||||
|
||||
private final SipPeerProfile userProfile;
|
||||
private final SipProvider sipProvider;
|
||||
private final String clientRtpIp;
|
||||
private ExtendedCall call;
|
||||
private CallStream callStream;
|
||||
private String localSession = null;
|
||||
@ -65,8 +66,9 @@ public class CallAgent extends CallListenerAdapter implements CallStreamObserver
|
||||
|
||||
private CallState callState;
|
||||
|
||||
public CallAgent(SipProvider sipProvider, SipPeerProfile userProfile, AudioConferenceProvider portProvider, String clientId) {
|
||||
public CallAgent(String sipClientRtpIp, SipProvider sipProvider, SipPeerProfile userProfile, AudioConferenceProvider portProvider, String clientId) {
|
||||
this.sipProvider = sipProvider;
|
||||
this.clientRtpIp = sipClientRtpIp;
|
||||
this.userProfile = userProfile;
|
||||
this.portProvider = portProvider;
|
||||
this.clientId = clientId;
|
||||
@ -77,15 +79,15 @@ public class CallAgent extends CallListenerAdapter implements CallStreamObserver
|
||||
}
|
||||
|
||||
private void initSessionDescriptor() {
|
||||
log.debug("initSessionDescriptor");
|
||||
log.debug("initSessionDescriptor");
|
||||
SessionDescriptor newSdp = SdpUtils.createInitialSdp(userProfile.username,
|
||||
sipProvider.getViaAddress(), userProfile.audioPort,
|
||||
userProfile.videoPort, userProfile.audioCodecsPrecedence );
|
||||
this.clientRtpIp, userProfile.audioPort,
|
||||
userProfile.videoPort, userProfile.audioCodecsPrecedence );
|
||||
localSession = newSdp.toString();
|
||||
log.debug("localSession Descriptor = " + localSession );
|
||||
}
|
||||
|
||||
public void call(String callerName, String destination) {
|
||||
public void call(String callerName, String destination) {
|
||||
log.debug("{} making a call to {}", callerName, destination);
|
||||
try {
|
||||
localSocket = getLocalAudioSocket();
|
||||
|
@ -45,6 +45,7 @@ public class SipPeer implements SipRegisterAgentListener {
|
||||
private CallManager callManager = new CallManager();
|
||||
|
||||
private SipProvider sipProvider;
|
||||
private String clientRtpIp;
|
||||
private SipRegisterAgent registerAgent;
|
||||
private final String id;
|
||||
private final AudioConferenceProvider audioconfProvider;
|
||||
@ -52,8 +53,9 @@ public class SipPeer implements SipRegisterAgentListener {
|
||||
private boolean registered = false;
|
||||
private SipPeerProfile registeredProfile;
|
||||
|
||||
public SipPeer(String id, String host, int sipPort, int startAudioPort, int stopAudioPort) {
|
||||
public SipPeer(String id, String sipClientRtpIp, String host, int sipPort, int startAudioPort, int stopAudioPort) {
|
||||
this.id = id;
|
||||
this.clientRtpIp = sipClientRtpIp;
|
||||
audioconfProvider = new AudioConferenceProvider(host, sipPort, startAudioPort, stopAudioPort);
|
||||
initSipProvider(host, sipPort);
|
||||
}
|
||||
@ -112,7 +114,7 @@ public class SipPeer implements SipRegisterAgentListener {
|
||||
}
|
||||
|
||||
SipPeerProfile callerProfile = SipPeerProfile.copy(registeredProfile);
|
||||
CallAgent ca = new CallAgent(sipProvider, callerProfile, audioconfProvider, clientId);
|
||||
CallAgent ca = new CallAgent(this.clientRtpIp, sipProvider, callerProfile, audioconfProvider, clientId);
|
||||
ca.setClientConnectionManager(clientConnManager);
|
||||
ca.setCallStreamFactory(callStreamFactory);
|
||||
callManager.add(ca);
|
||||
|
@ -41,13 +41,14 @@ public final class SipPeerManager {
|
||||
|
||||
private Map<String, SipPeer> sipPeers;
|
||||
private int sipStackDebugLevel = 8;
|
||||
private int sipRemotePort = 5060;
|
||||
|
||||
public SipPeerManager() {
|
||||
sipPeers = Collections.synchronizedMap(new HashMap<String, SipPeer>());
|
||||
}
|
||||
|
||||
public void createSipPeer(String peerId, String host, int sipPort, int startRtpPort, int stopRtpPort) {
|
||||
SipPeer sipPeer = new SipPeer(peerId, host, sipPort, startRtpPort, stopRtpPort);
|
||||
public void createSipPeer(String peerId, String clientRtpIp, String host, int sipPort, int startRtpPort, int stopRtpPort) {
|
||||
SipPeer sipPeer = new SipPeer(peerId, clientRtpIp, host, sipPort, startRtpPort, stopRtpPort);
|
||||
sipPeer.setClientConnectionManager(clientConnManager);
|
||||
sipPeer.setCallStreamFactory(callStreamFactory);
|
||||
sipPeers.put(peerId, sipPeer);
|
||||
@ -127,6 +128,12 @@ public final class SipPeerManager {
|
||||
SipStack.log_path = "log";
|
||||
}
|
||||
|
||||
public void setSipRemotePort(int port) {
|
||||
this.sipRemotePort = port;
|
||||
SipStack.init();
|
||||
SipStack.default_port = sipRemotePort;
|
||||
}
|
||||
|
||||
public void setCallStreamFactory(CallStreamFactory csf) {
|
||||
callStreamFactory = csf;
|
||||
}
|
||||
|
@ -1,16 +1,19 @@
|
||||
# The address of your FreeSWITCH/asterisk server
|
||||
sip.server.host=127.0.0.1
|
||||
sip.server.port=5070
|
||||
# The ip and port the BBB SIP app is going to use
|
||||
bbb.sip.app.ip=127.0.0.1
|
||||
bbb.sip.app.port=5070
|
||||
|
||||
# The username and password the BBB SIP app to use to
|
||||
# register with FreeSWITCH
|
||||
sip.server.username=bbbuser
|
||||
sip.server.password=secret
|
||||
|
||||
|
||||
# The ip and port of the FreeSWITCH server
|
||||
freeswitch.ip=127.0.0.1
|
||||
freeswitch.port=5060
|
||||
|
||||
# The start/stop RTP port the application is going to use
|
||||
# for the media stream.
|
||||
# NOTE: This will also be used as SIP users to REGISTER with
|
||||
# Asterisk. Therefore, make sure you have this range of users
|
||||
# in your bbb_sip.conf.
|
||||
# See http://code.google.com/p/bigbluebutton/source/browse/#svn/trunk/bbb-voice-conference/config/asterisk
|
||||
# create-sip-users.sh script to create the users.
|
||||
startAudioPort=15000
|
||||
stopAudioPort=16383
|
||||
|
||||
|
@ -49,8 +49,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
</bean>
|
||||
|
||||
<bean id="web.handler" class="org.bigbluebutton.voiceconf.red5.Application">
|
||||
<property name="sipServerHost" value="${sip.server.host}" />
|
||||
<property name="sipPort" value="${sip.server.port}" />
|
||||
<property name="sipClientRtpIp" value="${bbb.sip.app.ip}" />
|
||||
<property name="sipServerHost" value="${freeswitch.ip}" />
|
||||
<property name="sipPort" value="${bbb.sip.app.port}" />
|
||||
<property name="username" value="${sip.server.username}" />
|
||||
<property name="password" value="${sip.server.password}" />
|
||||
<property name="startAudioPort" value="${startAudioPort}" />
|
||||
@ -65,6 +66,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
<bean id="sipPeerManager" class="org.bigbluebutton.voiceconf.sip.SipPeerManager">
|
||||
<property name="sipStackDebugLevel" value="${sipStackDebugLevel}"/>
|
||||
<property name="sipRemotePort" value="${freeswitch.port}"/>
|
||||
</bean>
|
||||
|
||||
<bean id="clientConnectionManager" class="org.bigbluebutton.voiceconf.red5.ClientConnectionManager"/>
|
||||
|
@ -40,12 +40,10 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter {
|
||||
private RecorderApplication recorderApplication;
|
||||
private AbstractApplicationContext appCtx;
|
||||
private ConnectionInvokerService connInvokerService;
|
||||
|
||||
private String version;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean appStart(IScope app) {
|
||||
log.debug("Starting BigBlueButton version " + version);
|
||||
log.debug("Starting BigBlueButton ");
|
||||
IContext context = app.getContext();
|
||||
appCtx = (AbstractApplicationContext) context.getApplicationContext();
|
||||
appCtx.addApplicationListener(new ShutdownHookListener());
|
||||
@ -55,7 +53,7 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter {
|
||||
|
||||
@Override
|
||||
public void appStop(IScope app) {
|
||||
log.debug("Stopping BigBlueButton version " + version);
|
||||
log.debug("Stopping BigBlueButton ");
|
||||
super.appStop(app);
|
||||
}
|
||||
|
||||
@ -98,7 +96,7 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter {
|
||||
* equivalent (i.e. zero (0) becomes 48) if we don't.
|
||||
*/
|
||||
long clientID = Long.parseLong(Red5.getConnectionLocal().getClient().getId());
|
||||
String sessionName = connection.getScope().getName();
|
||||
String sessionName = ((String)params[3]).toString();
|
||||
log.info("[clientid=" + clientID + "] connected from " + remoteHost + ":" + remotePort + ".");
|
||||
|
||||
String voiceBridge = ((String) params[4]).toString();
|
||||
@ -163,11 +161,7 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter {
|
||||
super.addListener((IApplication) iter.next());
|
||||
}
|
||||
}
|
||||
|
||||
public void setVersion(String v) {
|
||||
version = v;
|
||||
}
|
||||
|
||||
|
||||
private BigBlueButtonSession getBbbSession() {
|
||||
return (BigBlueButtonSession) Red5.getConnectionLocal().getAttribute(Constants.SESSION);
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ public class RoomManager {
|
||||
rooms = new ConcurrentHashMap<String, RoomImp>();
|
||||
}
|
||||
|
||||
public void createRoom(String name,boolean record, String meetingid) {
|
||||
public void createRoom(String name, boolean record, String meetingid) {
|
||||
log.debug("Creating room: " + name);
|
||||
RoomImp r = new RoomImp(name,record,meetingid);
|
||||
rooms.putIfAbsent(name, r);
|
||||
|
@ -42,9 +42,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
</beans:bean>
|
||||
|
||||
<beans:bean id="eslConnection" class="org.freeswitch.esl.client.manager.DefaultManagerConnection">
|
||||
<beans:property name="hostname" value="${esl.host}"/>
|
||||
<beans:property name="port" value="${esl.port}"/>
|
||||
<beans:property name="password" value="${esl.password}"/>
|
||||
<beans:property name="hostname" value="${freeswitch.esl.host}"/>
|
||||
<beans:property name="port" value="${freeswitch.esl.port}"/>
|
||||
<beans:property name="password" value="${freeswitch.esl.password}"/>
|
||||
</beans:bean>
|
||||
|
||||
</beans:beans>
|
||||
|
@ -16,35 +16,12 @@
|
||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
#
|
||||
# NOTE: bigbluebutton default properties.
|
||||
#
|
||||
# NOTE!!!! NOTE!!!! NOTE!!!! NOTE!!!! NOTE!!!!
|
||||
# When making changes that you don't want checked-in, do
|
||||
# git update-index --assume-unchanged src/main/webapp/WEB-INF/bigbluebutton.properties
|
||||
#
|
||||
# To have git track the changes again
|
||||
# git update-index --no-assume-unchanged src/main/webapp/WEB-INF/bigbluebutton.properties
|
||||
#
|
||||
|
||||
# These settings enable bbb-apps to connect to the Asterisk conference server
|
||||
# to receive events (such as when someone is talking).
|
||||
# These properties are for Asterisk Management Interface (AMI)
|
||||
# These should match with /etc/asterisk/manager.d/bigbluebutton.conf
|
||||
ami.host=127.0.0.1
|
||||
ami.port=5038
|
||||
ami.username=bbb
|
||||
ami.password=secret
|
||||
|
||||
# These settings enable bbb-apps to connect to the Freeswitch conference server
|
||||
# These should match with the freeswitch event_socket_client.xml config
|
||||
esl.host=127.0.0.1
|
||||
esl.port=8021
|
||||
esl.password=ClueCon
|
||||
|
||||
# When using asterisk, specify the conference application: [meetme, konference]
|
||||
asterisk.application=konference
|
||||
version=0.63
|
||||
freeswitch.esl.host=127.0.0.1
|
||||
freeswitch.esl.port=8021
|
||||
freeswitch.esl.password=ClueCon
|
||||
|
||||
redis.host=127.0.0.1
|
||||
redis.port=6379
|
||||
|
@ -58,8 +58,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
</set>
|
||||
</property>
|
||||
<property name="recorderApplication"> <ref bean="recorderApplication"/></property>
|
||||
<property name="connInvokerService"> <ref bean="connInvokerService"/></property>
|
||||
<property name="version" value="${version}"/>
|
||||
<property name="connInvokerService"> <ref bean="connInvokerService"/></property>
|
||||
</bean>
|
||||
|
||||
<bean id="connInvokerService" class="org.bigbluebutton.conference.ConnectionInvokerService"/>
|
||||
|
@ -624,3 +624,8 @@ MDIWindow {
|
||||
downSkin: Embed('assets/images/resizeHandler.png');
|
||||
disabledSkin: Embed('assets/images/resizeHandler.png');
|
||||
}
|
||||
|
||||
.cameraDisplaySettingsWindowStartBtn
|
||||
{
|
||||
|
||||
}
|
||||
|
BIN
bigbluebutton-client/branding/default/style/css/assets/images/webcam.png
Executable file
BIN
bigbluebutton-client/branding/default/style/css/assets/images/webcam.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 728 B |
@ -252,3 +252,6 @@ bbb.shortcutkey.chat.chatbox.gofirst = control+shift+32
|
||||
bbb.shortcutkey.chat.chatbox.gofirst.function = Go to first message
|
||||
bbb.shortcutkey.chat.chatbox.goread = control+shift+82
|
||||
bbb.shortcutkey.chat.chatbox.goread.function = Go to the most recent message you have read
|
||||
|
||||
bbb.publishVideo.startPublishBtn.labelText = Start Sharing
|
||||
bbb.publishVideo.changeCameraBtn.labelText = Change Camera Settings
|
@ -28,52 +28,52 @@ bbb.viewers.viewersGrid.statusItemRenderer = अवस्था
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.raiseHand.toolTip == हात उठौनुहोस {0}
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.streamIcon.toolTip =हेर्नको लागि क्लिक गर्नुहोस
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.presIcon.toolTip = प्रस्तुतकर्ता
|
||||
bbb.viewers.presentBtn.toolTip =
|
||||
bbb.viewers.raiseHandBtn.toolTip =
|
||||
bbb.viewers.presentBtn.label =
|
||||
bbb.viewers.kickUserBtn.toolTip =
|
||||
bbb.presentation.title =
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn =
|
||||
bbb.presentation.uploadPresBtn.toolTip =
|
||||
bbb.presentation.backBtn.toolTip =
|
||||
bbb.presentation.slideNumLbl.toolTip =
|
||||
bbb.presentation.forwardBtn.toolTip =
|
||||
bbb.presentation.resetZoomBtn.toolTip =
|
||||
bbb.presentation.presenterNameLbl =
|
||||
bbb.presentation.clickToUpload =
|
||||
bbb.presentation.maxUploadFileExceededAlert =
|
||||
bbb.presentation.uploadcomplete =
|
||||
bbb.presentation.uploaded =
|
||||
bbb.presentation.document.supported =
|
||||
bbb.presentation.document.converted =
|
||||
bbb.presentation.error.document.convert.failed =
|
||||
bbb.presentation.error.io =
|
||||
bbb.presentation.error.security =
|
||||
bbb.presentation.error.convert.format =
|
||||
bbb.presentation.error.convert.notsupported =
|
||||
bbb.presentation.error.convert.nbpage =
|
||||
bbb.presentation.error.convert.maxnbpagereach =
|
||||
bbb.presentation.error.convert.swf =
|
||||
bbb.presentation.converted =
|
||||
bbb.presentation.ok =
|
||||
bbb.presentation.uploadwindow.presentationfile =
|
||||
bbb.viewers.presentBtn.toolTip = प्रयोगकर्तालाई प्रस्तुताकर्ताको रूपमा छान्नुहोस
|
||||
bbb.viewers.raiseHandBtn.toolTip = हातउठाउनको लागि क्लिक गर्नुहोस
|
||||
bbb.viewers.presentBtn.label = प्रस्तुताकर्ताकोरूपमा परिबर्तन गर्नुहोस
|
||||
bbb.viewers.kickUserBtn.toolTip = प्रयोगकर्तालाई हटाउनुहोस
|
||||
bbb.presentation.title = प्रस्तुती
|
||||
bbb.presentation.fitToWidth.toolTip =मनिटरको आकारमा मिलाउनुहोस
|
||||
bbb.presentation.fitToPage.toolTip = पेजको आकारमा मिलाउनुहोस
|
||||
bbb.presentation.uploadPresBtn = सर्भरमा प्रस्तुती सामग्री पठाउनुहोस
|
||||
bbb.presentation.uploadPresBtn.toolTip = सर्भरमा प्रस्तुती सामग्री पठाउनुहोस
|
||||
bbb.presentation.backBtn.toolTip = पुरानो प्रस्तुती
|
||||
bbb.presentation.slideNumLbl.toolTip = पस्तुती छान्नुहोस
|
||||
bbb.presentation.forwardBtn.toolTip = अघिल्लो प्रस्तुती पेजमा जानुहोस
|
||||
bbb.presentation.resetZoomBtn.toolTip = zoomलाइ पहिलेको अबस्थामा लैजानुहोस
|
||||
bbb.presentation.presenterNameLbl = {0} प्रस्तुतकर्ताले प्रस्तुत गर्दैहुनुहुन्छ
|
||||
bbb.presentation.clickToUpload = सर्भरमा प्रस्तुती पठाउनुहोस
|
||||
bbb.presentation.maxUploadFileExceededAlert = क्षमाप्रार्थी छौ अनुमति भन्दा बढी आकारको सामग्री पठाउन खोजियो
|
||||
bbb.presentation.uploadcomplete = सर्भरमा प्रस्तुती पठाउने काम सम्पन्न भयो
|
||||
bbb.presentation.uploaded = सर्भरमा प्रस्तुती पठाउने काम सम्पन्न भयो
|
||||
bbb.presentation.document.supported = तपाइले पठाउनु भएको प्रस्तुती ठिक छ
|
||||
bbb.presentation.document.converted = परिबर्तन सफल भयो
|
||||
bbb.presentation.error.document.convert.failed = परिबर्तन गसमस्या भयो
|
||||
bbb.presentation.error.io = IO Error कृपया Administratorलाइ सम्पर्क गर्नुहोस
|
||||
bbb.presentation.error.security = security मा समस्या भयो
|
||||
bbb.presentation.error.convert.format = प्रस्तुती सामग्री परिबर्तन गर्न समस्या भयो
|
||||
bbb.presentation.error.convert.notsupported = तपाइले सर्भरमा पठाउनुभएको सामग्रीको format बुझिएन
|
||||
bbb.presentation.error.convert.nbpage = कति पेज छ भन्ने अनुमान गर्न सकिएन
|
||||
bbb.presentation.error.convert.maxnbpagereach = क्षमाप्रार्थी छौ धेरै पेज भयो
|
||||
bbb.presentation.error.convert.swf = सर्भरमा पठाइएको सामग्री परिबर्तन गर्न समस्या भयो कृपया Administrator लाइ सम्पर्क गर्नुहोस
|
||||
bbb.presentation.converted = {0} मा {1} परिबर्तन भयो
|
||||
bbb.presentation.ok = ठिक भयो
|
||||
bbb.presentation.uploadwindow.presentationfile = प्रस्तुती सामग्री
|
||||
bbb.presentation.uploadwindow.pdf =
|
||||
bbb.presentation.uploadwindow.word =
|
||||
bbb.presentation.uploadwindow.excel =
|
||||
bbb.presentation.uploadwindow.powerpoint =
|
||||
bbb.presentation.uploadwindow.image = चित्र
|
||||
bbb.presentation.uploadwindow.closeLabel =
|
||||
bbb.fileupload.title =
|
||||
bbb.fileupload.fileLbl =
|
||||
bbb.fileupload.selectBtn.toolTip =
|
||||
bbb.fileupload.uploadBtn =
|
||||
bbb.fileupload.uploadBtn.toolTip =
|
||||
bbb.fileupload.presentationNamesLbl =
|
||||
bbb.fileupload.deleteBtn.toolTip =
|
||||
bbb.presentation.uploadwindow.closeLabel = बन्द गर्न क्लिक गर्नुहोस
|
||||
bbb.fileupload.title = सामग्री पठाउनुहोस
|
||||
bbb.fileupload.fileLbl = सामग्री
|
||||
bbb.fileupload.selectBtn.toolTip = सर्भरमा पठाउनुहोस
|
||||
bbb.fileupload.uploadBtn = सर्भरमा पठाउनुहोस
|
||||
bbb.fileupload.uploadBtn.toolTip = सर्भरमा पठाउनुहोस
|
||||
bbb.fileupload.presentationNamesLbl = सर्भरमा पठाउनुहोस
|
||||
bbb.fileupload.deleteBtn.toolTip = मेट्नुहोस
|
||||
bbb.fileupload.showBtn = देखाउनुहोस्
|
||||
bbb.fileupload.showBtn.toolTip =
|
||||
bbb.fileupload.showBtn.toolTip = सामग्री देखाउनुहोस
|
||||
bbb.fileupload.okCancelBtn =
|
||||
bbb.fileupload.genThumbText =
|
||||
bbb.fileupload.progBarLbl =
|
||||
|
@ -98,6 +98,10 @@ package org.bigbluebutton.core
|
||||
return UserManager.getInstance().getConference().amIThisUser(userID);
|
||||
}
|
||||
|
||||
public static function getMyExternalUserID():String {
|
||||
return UserManager.getInstance().getConference().getMyExternalUserID();
|
||||
}
|
||||
|
||||
public static function getMyUserID():String {
|
||||
return UserManager.getInstance().getConference().getMyUserId();
|
||||
}
|
||||
|
@ -224,7 +224,8 @@ package org.bigbluebutton.core.services
|
||||
}
|
||||
|
||||
private function log(s:String):void {
|
||||
LogUtil.debug("[StreamMonitor] " + s);
|
||||
//LogUtil.debug("[StreamMonitor] " + s);
|
||||
trace("[StreamMonitor] " + s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ package org.bigbluebutton.main.model.users {
|
||||
public var meetingName:String;
|
||||
public var externalMeetingID:String;
|
||||
public var internalMeetingID:String;
|
||||
public var externalUserID:String;
|
||||
public var avatarURL:String;
|
||||
|
||||
private var _myCamSettings:CameraSettingsVO = new CameraSettingsVO();
|
||||
@ -273,6 +274,10 @@ package org.bigbluebutton.main.model.users {
|
||||
return me.voiceLocked;
|
||||
}
|
||||
|
||||
public function getMyExternalUserID():String {
|
||||
return externalUserID;
|
||||
}
|
||||
|
||||
public function getMyUserId():String {
|
||||
return me.userID;
|
||||
}
|
||||
|
@ -71,6 +71,7 @@ package org.bigbluebutton.main.model.users
|
||||
UserManager.getInstance().getConference().externalMeetingID = result.externMeetingID;
|
||||
UserManager.getInstance().getConference().meetingName = result.confereceName;
|
||||
UserManager.getInstance().getConference().internalMeetingID = result.room;
|
||||
UserManager.getInstance().getConference().externalUserID = result.externUserID;
|
||||
UserManager.getInstance().getConference().avatarURL = result.avatarURL;
|
||||
|
||||
_conferenceParameters = new ConferenceParameters();
|
||||
|
@ -21,18 +21,16 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
|
||||
xmlns:view="org.bigbluebutton.main.views.*"
|
||||
layout="absolute"
|
||||
width="600" height="400" creationComplete="onCreationComplete()"
|
||||
verticalScrollPolicy="off" horizontalScrollPolicy="off"
|
||||
width="630" height="450" creationComplete="onCreationComplete()" styleName="cameraDisplaySettingsWindowStyle"
|
||||
showCloseButton="true" close="onCancelClicked()" keyDown="handleKeyDown(event)">
|
||||
<mx:Script>
|
||||
<![CDATA[
|
||||
import com.asfusion.mate.events.Dispatcher;
|
||||
|
||||
import flash.ui.Keyboard;
|
||||
|
||||
import com.asfusion.mate.events.Dispatcher;
|
||||
import flash.ui.Keyboard;
|
||||
import mx.events.CloseEvent;
|
||||
import mx.events.ItemClickEvent;
|
||||
import mx.managers.PopUpManager;
|
||||
|
||||
import mx.managers.PopUpManager;
|
||||
import org.bigbluebutton.common.Images;
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.core.UsersUtil;
|
||||
@ -63,16 +61,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
static private var _cameraAccessDenied:Boolean = false;
|
||||
|
||||
[Bindable]
|
||||
private var camIcon:Class = images.webcam;
|
||||
|
||||
private var _video:Video;
|
||||
private var aspectRatio:Number = 1;
|
||||
|
||||
private function onCreationComplete():void {
|
||||
changeDefaultCamForMac();
|
||||
|
||||
if (UsersUtil.amIPresenter()) {
|
||||
if (UsersUtil.amIPresenter() && resolutions.length > 1) {
|
||||
showResControls(true);
|
||||
}
|
||||
|
||||
@ -87,7 +82,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
for (var i:int = 0; i < Camera.names.length; i++){
|
||||
if (Camera.names[i] == "USB Video Class Video") {
|
||||
/** Set as default for Macs */
|
||||
cmbCameraSelector.selectedIndex = i;
|
||||
_camera = Camera.getCamera("USB Video Class Video");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -96,12 +91,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
if (show) {
|
||||
this.visible = true;
|
||||
btnStartPublish.visible = true;
|
||||
cmbCameraSelector.visible = true;
|
||||
} else{
|
||||
this.width = 0;
|
||||
this.height = 0;
|
||||
btnStartPublish.visible = false;
|
||||
cmbCameraSelector.visible = false;
|
||||
this.visible = false;
|
||||
}
|
||||
}
|
||||
@ -195,6 +188,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
}
|
||||
|
||||
private function startPublishing():void {
|
||||
updateCamera();
|
||||
|
||||
// Save the index of the camera. Need it to send the message.
|
||||
var camIndex:int = _camera.index;
|
||||
|
||||
@ -279,13 +274,22 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
]]>
|
||||
</mx:Script>
|
||||
|
||||
<mx:VBox id="webcamDisplay" width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
|
||||
<view:VideoHolder id="_videoHolder" width="100%" height="90%"/>
|
||||
<mx:HBox width="100%">
|
||||
<mx:Button id="btnStartPublish" toolTip="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.toolTip')}" icon="{camIcon}" click="startPublishing()" enabled="true"/>
|
||||
<mx:ComboBox id="cmbCameraSelector" dataProvider="{Camera.names}" width="150" visible="false" change="updateCamera()"/>
|
||||
<mx:Button id="changeCamera" label="Change Camera" toolTip="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.toolTip')}" click="showCameraSettings()"/>
|
||||
<mx:ComboBox id="cmbResolution" dataProvider="{resolutions}" width="20%" visible="false" change="updateCamera()"/>
|
||||
<mx:VBox id="webcamDisplay" width="100%" height="100%" paddingTop="10" styleName="cameraDisplaySettingsWindowBackground">
|
||||
<view:VideoHolder id="_videoHolder" width="100%" height="75%" />
|
||||
<mx:HBox width="100%" height="20%">
|
||||
<mx:Spacer width="5"/>
|
||||
<mx:Button id="changeCamera" styleName="cameraDisplaySettingsWindowChangeCamBtn"
|
||||
label="{ResourceUtil.getInstance().getString('bbb.publishVideo.changeCameraBtn.labelText')}"
|
||||
toolTip="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.toolTip')}"
|
||||
click="showCameraSettings()"/>
|
||||
<mx:Spacer width="70%"/>
|
||||
<mx:ComboBox id="cmbResolution" styleName="cameraDisplaySettingsWindowChangeResolutionCombo"
|
||||
dataProvider="{resolutions}" visible="false" change="updateCamera()"/>
|
||||
<mx:Spacer width="5"/>
|
||||
<mx:Button id="btnStartPublish" toolTip="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.toolTip')}"
|
||||
click="startPublishing()" enabled="true" styleName="cameraDisplaySettingsWindowStartBtn"
|
||||
label="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.labelText')}" />
|
||||
<mx:Spacer width="5"/>
|
||||
</mx:HBox>
|
||||
|
||||
</mx:VBox>
|
||||
|
@ -22,6 +22,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
|
||||
title="Logged Out" showCloseButton="false" creationComplete="init()"
|
||||
verticalScrollPolicy="off" horizontalScrollPolicy="off"
|
||||
x="168" y="86" layout="vertical" width="400" height="100" horizontalAlign="center">
|
||||
<mx:Script>
|
||||
<![CDATA[
|
||||
|
@ -18,12 +18,14 @@
|
||||
*/
|
||||
package org.bigbluebutton.modules.listeners.business
|
||||
{
|
||||
import com.asfusion.mate.events.Dispatcher;
|
||||
import com.asfusion.mate.events.Dispatcher;
|
||||
|
||||
import flash.events.AsyncErrorEvent;
|
||||
import flash.events.NetStatusEvent;
|
||||
import flash.net.NetConnection;
|
||||
import flash.net.Responder;
|
||||
import flash.net.SharedObject;
|
||||
import flash.net.SharedObject;
|
||||
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.core.EventConstants;
|
||||
import org.bigbluebutton.core.UsersUtil;
|
||||
@ -109,6 +111,8 @@ package org.bigbluebutton.modules.listeners.business
|
||||
}
|
||||
|
||||
public function userJoin(userId:Number, cidName:String, cidNum:String, muted:Boolean, talking:Boolean, locked:Boolean):void {
|
||||
trace("***************** Voice user joining [" + cidName + "]");
|
||||
|
||||
if (! _listeners.hasListener(userId)) {
|
||||
var n:Listener = new Listener();
|
||||
n.callerName = cidName != null ? cidName : "<Unknown Caller>";
|
||||
@ -125,17 +129,23 @@ package org.bigbluebutton.modules.listeners.business
|
||||
var pattern:RegExp = /(.*)-(.*)$/;
|
||||
var result:Object = pattern.exec(n.callerName);
|
||||
if (result != null) {
|
||||
|
||||
trace("******************** [" + n.callerName + "," + result[1] + "," + result[2] + "] ****************");
|
||||
|
||||
/**
|
||||
* The first item is the userid and the second is the username.
|
||||
*/
|
||||
if (UserManager.getInstance().getConference().amIThisUser(result[1])) {
|
||||
var externUserID:String = result[1] as String;
|
||||
var internUserID:String = UsersUtil.externalUserIDToInternalUserID(externUserID);
|
||||
|
||||
if (UsersUtil.getMyExternalUserID() == externUserID) {
|
||||
UserManager.getInstance().getConference().setMyVoiceUserId(n.userid);
|
||||
UserManager.getInstance().getConference().muteMyVoice(n.muted);
|
||||
UserManager.getInstance().getConference().setMyVoiceJoined(true);
|
||||
}
|
||||
|
||||
if (UsersUtil.hasUser(result[1])) {
|
||||
var bu:BBBUser = UsersUtil.getUser(result[1]);
|
||||
if (UsersUtil.hasUser(internUserID)) {
|
||||
var bu:BBBUser = UsersUtil.getUser(internUserID);
|
||||
bu.voiceUserid = n.userid;
|
||||
bu.voiceMuted = n.muted;
|
||||
bu.voiceJoined = true;
|
||||
|
@ -26,6 +26,7 @@ package org.bigbluebutton.modules.phone.managers {
|
||||
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.core.BBB;
|
||||
import org.bigbluebutton.core.UsersUtil;
|
||||
import org.bigbluebutton.core.managers.UserManager;
|
||||
import org.bigbluebutton.main.events.BBBEvent;
|
||||
import org.bigbluebutton.modules.phone.PhoneOptions;
|
||||
@ -115,7 +116,7 @@ package org.bigbluebutton.modules.phone.managers {
|
||||
userHangup = false;
|
||||
setupMic(autoJoin);
|
||||
var uid:String = String(Math.floor(new Date().getTime()));
|
||||
var uname:String = encodeURIComponent(UserManager.getInstance().getConference().getMyUserId() + "-" + attributes.username);
|
||||
var uname:String = encodeURIComponent(UsersUtil.getMyExternalUserID() + "-" + attributes.username);
|
||||
connectionManager.connect(uid, attributes.internalUserID, uname , attributes.room, attributes.uri);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user