Author: solomax
Date: Wed Feb 27 03:25:38 2013
New Revision: 1450589
URL: http://svn.apache.org/r1450589
Log:
SIP: all methods in SipDao works as expected;
debugging and Apache header are added;
documentation is updated
Modified:
openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml
Modified: openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html?rev=1450589&r1=1450588&r2=1450589&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html (original)
+++ openmeetings/trunk/singlewebapp/docs/red5sip-integration_2.1.html Wed Feb
27 03:25:38 2013
@@ -863,8 +863,8 @@ limitations under the License.
secret = 12345<br />
deny=0.0.0.0/0.0.0.0<br />
permit=127.0.0.1/255.255.255.0<br />
- read = all<br />
- write =
system,call,command,originate<br />
+ read = all,reporting<br />
+ write =
all,system,call,command,originate<br />
</i>
</blockquote>
</div>
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java?rev=1450589&r1=1450588&r2=1450589&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomManager.java
Wed Feb 27 03:25:38 2013
@@ -579,7 +579,7 @@ public class RoomManager {
*/
public Integer getSipConferenceMembersNumber(Long rooms_id) {
Room r = roomDao.get(rooms_id);
- return sipDao.countUsers(r.getConfno());
+ return r == null || r.getConfno() == null ? null :
sipDao.countUsers(r.getConfno());
}
/**
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java?rev=1450589&r1=1450588&r2=1450589&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/SipDao.java
Wed Feb 27 03:25:38 2013
@@ -1,16 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package org.apache.openmeetings.data.conference.dao;
import org.asteriskjava.manager.ManagerConnection;
import org.asteriskjava.manager.ManagerConnectionFactory;
+import org.asteriskjava.manager.ResponseEvents;
import org.asteriskjava.manager.action.ConfbridgeListAction;
import org.asteriskjava.manager.action.DbDelAction;
import org.asteriskjava.manager.action.DbDelTreeAction;
import org.asteriskjava.manager.action.DbGetAction;
import org.asteriskjava.manager.action.DbPutAction;
+import org.asteriskjava.manager.action.EventGeneratingAction;
import org.asteriskjava.manager.action.ManagerAction;
+import org.asteriskjava.manager.response.ManagerError;
import org.asteriskjava.manager.response.ManagerResponse;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
public class SipDao {
+ private static final Logger log =
Red5LoggerFactory.getLogger(SipDao.class);
public static final String ASTERISK_OM_FAMILY = "openmeetings";
public static final String ASTERISK_OM_KEY = "rooms";
private String sipHostname;
@@ -19,68 +43,93 @@ public class SipDao {
private String sipPassword;
private ManagerConnectionFactory factory;
private ManagerConnection connection;
-
+
@SuppressWarnings("unused")
private SipDao() {
- //prohibited default constructor
+ // prohibited default constructor
+ }
+
+ public SipDao(String sipHostname, int sipPort, String sipUsername,
String sipPassword) {
+ this.sipHostname = sipHostname;
+ this.sipPort = sipPort;
+ this.sipUsername = sipUsername;
+ this.sipPassword = sipPassword;
+ factory = new ManagerConnectionFactory(this.sipHostname,
this.sipPort, this.sipUsername, this.sipPassword);
+ connection = factory.createManagerConnection(); // TODO secure
+ }
+
+ private ManagerResponse exec(ManagerAction action) {
+ try {
+ connection.login();
+ ManagerResponse r = connection.sendAction(action);
+ connection.logoff();
+ return (r instanceof ManagerError) ? null : r;
+ } catch (Exception e) {
+ if (log.isDebugEnabled()) {
+ log.error("Error while executing ManagerAction:
" + action, e);
+ }
+ }
+ return null;
+ }
+
+ private ResponseEvents execEvent(EventGeneratingAction action) {
+ try {
+ connection.login("on");
+ ResponseEvents r =
connection.sendEventGeneratingAction(action);
+ connection.logoff();
+ if (log.isDebugEnabled() && r != null) {
+ log.debug(r.getResponse().toString());
+ }
+ return (r == null || r.getResponse() instanceof
ManagerError) ? null : r;
+ } catch (Exception e) {
+ if (log.isDebugEnabled()) {
+ log.error("Error while executing
EventGeneratingAction: " + action, e);
+ }
+ }
+ return null;
+ }
+
+ private String getKey(String confno) {
+ return ASTERISK_OM_KEY + "/" + confno;
+ }
+
+ public String get(String confno) {
+ String pin = null;
+ DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY,
getKey(confno));
+ ManagerResponse r = exec(da);
+ if (r != null) {
+ pin = r.getResponse();
+ }
+ return pin;
}
-
- public SipDao(String sipHostname, int sipPort, String sipUsername, String
sipPassword) {
- this.sipHostname = sipHostname;
- this.sipPort = sipPort;
- this.sipUsername = sipUsername;
- this.sipPassword = sipPassword;
- factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort,
this.sipUsername, this.sipPassword);
- connection = factory.createManagerConnection(); //TODO secure
- }
-
- private ManagerResponse exec(ManagerAction action) {
- try {
- connection.login();
- ManagerResponse r = connection.sendAction(action);
- connection.logoff();
- return r;
- } catch (Exception e) {
- //
- }
- return null;
- }
-
- public String get(String confno) {
- String pin = null;
- DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY +
"/" + confno);
- ManagerResponse r = exec(da);
- if (r != null) {
- pin = r.getResponse();
- }
- return pin;
- }
-
- public void update(String confno, String pin) {
- delete(confno);
- DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY,
ASTERISK_OM_KEY + "/" + confno, pin);
+
+ public void update(String confno, String pin) {
+ delete(confno);
+ DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY,
getKey(confno), pin);
+ exec(da);
+ }
+
+ public void delete() {
+ DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY,
ASTERISK_OM_KEY);
exec(da);
- }
-
- public void delete() {
- DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY,
ASTERISK_OM_KEY);
+ }
+
+ public void delete(String confno) {
+ DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY,
getKey(confno));
exec(da);
- }
-
- public void delete(String confno) {
- DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY +
"/" + confno);
- exec(da);
- }
-
- public Integer countUsers(String confno) {//TODO fixme
- if (confno == null) {
- return null;
- }
- ConfbridgeListAction da = new ConfbridgeListAction(confno);
- ManagerResponse r = exec(da);
- if (r != null) {
-
- }
- return 0;//TBD
- }
+ }
+
+ public Integer countUsers(String confno) {
+ if (confno == null) {
+ return null;
+ }
+ ConfbridgeListAction da = new ConfbridgeListAction(confno);
+ ResponseEvents r = execEvent(da);
+ if (r != null) {
+ log.debug("SipDao::countUsers size == " +
r.getEvents().size());
+ // "- 1" here means: ListComplete event
+ return r.getEvents().size() - 1; // TODO check if was
successfull
+ }
+ return 0;
+ }
}
Modified: openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml?rev=1450589&r1=1450588&r2=1450589&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml (original)
+++ openmeetings/trunk/singlewebapp/xdocs/red5sip-integration_2.1.xml Wed Feb
27 03:25:38 2013
@@ -188,8 +188,8 @@
secret = 12345<br />
deny=0.0.0.0/0.0.0.0<br />
permit=127.0.0.1/255.255.255.0<br />
- read = all<br />
- write =
system,call,command,originate<br />
+ read = all,reporting<br />
+ write =
all,system,call,command,originate<br />
</i>
</blockquote>
</div><br />