Revision: 2519 Author: seba.wagner Date: Mon Oct 26 08:09:44 2009 Log: New table and dao for storing a secure hash key for each direct link for a room http://code.google.com/p/openmeetings/source/detail?r=2519
Added: /trunk/singlewebapp/src/app/hibernate.cfg.xml /trunk/singlewebapp/src/app/org/openmeetings/app/data/basic/dao /trunk/singlewebapp/src/app/org/openmeetings/app/data/basic/dao/SOAPLoginDAO.java /trunk/singlewebapp/src/app/org/openmeetings/app/hibernate/beans/basic/SOAPLogin.hbm.xml /trunk/singlewebapp/src/app/org/openmeetings/app/hibernate/beans/basic/SOAPLogin.java Modified: /trunk/singlewebapp/WebContent/conf/any_hibernate.cfg.xml /trunk/singlewebapp/WebContent/conf/mysql_hibernate.cfg.xml /trunk/singlewebapp/WebContent/conf/postgres_hibernate.cfg.xml /trunk/singlewebapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomClient.hbm.xml /trunk/singlewebapp/src/userservice/org/openmeetings/axis/services/UserService.java ======================================= --- /dev/null +++ /trunk/singlewebapp/src/app/hibernate.cfg.xml Mon Oct 26 08:09:44 2009 @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> + +<hibernate-configuration> + <session-factory> + <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> + <property name="hibernate.connection.url">jdbc:postgresql://localhost/xmlcrm</property> + <property name="hibernate.connection.username">postgres</property> + <property name="hibernate.connection.password">*****</property> + <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> + <property name="hibernate.show_sql">true</property> + <property name="hibernate.hbm2ddl.auto">update</property> + <mapping resource="org/openmeetings/app/hibernate/beans/adresses/Adresses.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/adresses/States.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/Configuration.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/ErrorType.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/ErrorValues.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/Naviglobal.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/Navimain.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/Navisub.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/SOAPLogin.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/Sessiondata.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/calendar/Appointment.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/calendar/AppointmentCategory.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/calendar/AppointmentReminderTyps.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/calendar/MeetingMember.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/domain/Organisation.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/domain/Organisation_Users.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/invitation/Invitations.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/lang/FieldLanguage.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/lang/Fieldlanguagesvalues.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/lang/Fieldvalues.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/logs/ConferenceLog.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/logs/ConferenceLogType.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/recording/ChatvaluesEvent.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/recording/Recording.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/recording/RecordingClient.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/recording/RoomClient.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/recording/RoomRecording.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/recording/RoomStream.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/recording/WhiteBoardEvent.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/rooms/RoomTypes.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/rooms/Rooms.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/rooms/Rooms_Organisation.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/user/Salutations.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/user/Userdata.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/user/Usergroups.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/user/Userlevel.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/user/Users.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/user/Users_Usergroups.hbm.xml"/> + </session-factory> +</hibernate-configuration> ======================================= --- /dev/null +++ /trunk/singlewebapp/src/app/org/openmeetings/app/data/basic/dao/SOAPLoginDAO.java Mon Oct 26 08:09:44 2009 @@ -0,0 +1,103 @@ +package org.openmeetings.app.data.basic.dao; + +import java.util.Date; +import java.util.List; + +import org.apache.log4j.Logger; +import org.hibernate.HibernateException; +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.Transaction; +import org.openmeetings.app.data.basic.FieldLanguageDaoImpl; +import org.openmeetings.app.hibernate.beans.basic.SOAPLogin; +import org.openmeetings.app.hibernate.beans.lang.FieldLanguage; +import org.openmeetings.app.hibernate.utils.HibernateUtil; +import org.openmeetings.app.remote.red5.ScopeApplicationAdapter; +import org.openmeetings.utils.crypt.ManageCryptStyle; +import org.slf4j.LoggerFactory; + +public class SOAPLoginDAO { + + private static final Logger log = Logger.getLogger(SOAPLoginDAO.class); + + private SOAPLoginDAO() { + } + + private static SOAPLoginDAO instance = null; + + public static synchronized SOAPLoginDAO getInstance() { + if (instance == null) { + instance = new SOAPLoginDAO(); + } + return instance; + } + + public String addSOAPLogin(String sessionHash, Long room_id) { + try { + + String thistime = "TIME_"+(new Date().getTime()); + + String hash = ManageCryptStyle.getInstance().getInstanceOfCrypt().createPassPhrase(thistime); + + Object idf = HibernateUtil.createSession(); + Session session = HibernateUtil.getSession(); + Transaction tx = session.beginTransaction(); + + SOAPLogin soapLogin = new SOAPLogin(); + soapLogin.setCreated(new Date()); + soapLogin.setUsed(false); + soapLogin.setRoom_id(room_id); + soapLogin.setHash(hash); + soapLogin.setSessionHash(sessionHash); + + Long soapLoginId = (Long) session.save(soapLogin); + + tx.commit(); + HibernateUtil.closeSession(idf); + + if (soapLoginId > 0) { + return hash; + } else { + throw new Exception("Could not store SOAPLogin"); + } + + } catch (HibernateException ex) { + log.error("[addSOAPLogin]: ",ex); + } catch (Exception ex2) { + log.error("[addSOAPLogin]: ",ex2); + } + return null; + } + + public SOAPLogin getSOAPLoginByHash(String hash) { + try { + String hql = "select c from SOAPLogin as sl " + + "WHERE c.hash != :hash"; + Object idf = HibernateUtil.createSession(); + Session session = HibernateUtil.getSession(); + Transaction tx = session.beginTransaction(); + Query query = session.createQuery(hql); + query.setString("hash", hash); + List<SOAPLogin> sList = query.list(); + tx.commit(); + HibernateUtil.closeSession(idf); + + if (sList.size() > 1) { + throw new Exception ("there are more then one SOAPLogin with identical hash! "+hash); + } + + if (sList.size() == 1) { + return sList.get(0); + } + + + } catch (HibernateException ex) { + log.error("[getSOAPLoginByHash]: ",ex); + } catch (Exception ex2) { + log.error("[getSOAPLoginByHash]: ",ex2); + } + return null; + } + + +} ======================================= --- /dev/null +++ /trunk/singlewebapp/src/app/org/openmeetings/app/hibernate/beans/basic/SOAPLogin.hbm.xml Mon Oct 26 08:09:44 2009 @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping> + <class table="soaplogin" name="org.openmeetings.app.hibernate.beans.basic.SOAPLogin"> + <id column="soapLoginId" name="soapLoginId"> + <generator class="increment"/> + </id> + <property name="hash" type="string" column="hash"/> + <property name="room_id" type="long" column="room_id"/> + <property name="sessionHash" type="string" column="session_hash"/> + <property name="created" type="java.util.Date" column="created"/> + <property name="used" type="boolean" column="used"/> + <property name="useDate" type="java.util.Date" column="use_date"/> + </class> +</hibernate-mapping> ======================================= --- /dev/null +++ /trunk/singlewebapp/src/app/org/openmeetings/app/hibernate/beans/basic/SOAPLogin.java Mon Oct 26 08:09:44 2009 @@ -0,0 +1,105 @@ +package org.openmeetings.app.hibernate.beans.basic; + +import java.util.Date; + +/** + * + * @hibernate.class table="soaplogin" + * + */ +public class SOAPLogin { + + private long soapLoginId; + private String hash; + private Long room_id; + private String sessionHash; + private Date created; + private Boolean used; + private Date useDate; + + /** + * + * @hibernate.id + * column="soapLoginId" + * generator-class="increment" + */ + public long getSoapLoginId() { + return soapLoginId; + } + public void setSoapLoginId(long soapLoginId) { + this.soapLoginId = soapLoginId; + } + + /** + * @hibernate.property + * column="hash" + * type="string" + */ + public String getHash() { + return hash; + } + public void setHash(String hash) { + this.hash = hash; + } + + /** + * @hibernate.property + * column="room_id" + * type="long" + */ + public Long getRoom_id() { + return room_id; + } + public void setRoom_id(Long room_id) { + this.room_id = room_id; + } + + /** + * @hibernate.property + * column="session_hash" + * type="string" + */ + public String getSessionHash() { + return sessionHash; + } + public void setSessionHash(String sessionHash) { + this.sessionHash = sessionHash; + } + + /** + * @hibernate.property + * column="created" + * type="java.util.Date" + */ + public Date getCreated() { + return created; + } + public void setCreated(Date created) { + this.created = created; + } + + /** + * @hibernate.property + * column="used" + * type="boolean" + */ + public Boolean getUsed() { + return used; + } + public void setUsed(Boolean used) { + this.used = used; + } + + /** + * @hibernate.property + * column="use_date" + * type="java.util.Date" + */ + public Date getUseDate() { + return useDate; + } + public void setUseDate(Date useDate) { + this.useDate = useDate; + } + +} ======================================= --- /trunk/singlewebapp/WebContent/conf/any_hibernate.cfg.xml Mon Oct 12 03:12:27 2009 +++ /trunk/singlewebapp/WebContent/conf/any_hibernate.cfg.xml Mon Oct 26 08:09:44 2009 @@ -51,6 +51,7 @@ <mapping resource="org/openmeetings/app/hibernate/beans/basic/Naviglobal.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Navimain.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Navisub.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/SOAPLogin.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Sessiondata.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/calendar/Appointment.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/calendar/AppointmentCategory.hbm.xml"/> @@ -58,7 +59,6 @@ <mapping resource="org/openmeetings/app/hibernate/beans/calendar/MeetingMember.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/domain/Organisation.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/domain/Organisation_Users.hbm.xml"/> - <mapping resource="org/openmeetings/app/hibernate/beans/files/FileExplorerItem.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/invitation/Invitations.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/lang/FieldLanguage.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/lang/Fieldlanguagesvalues.hbm.xml"/> ======================================= --- /trunk/singlewebapp/WebContent/conf/mysql_hibernate.cfg.xml Mon Oct 12 03:12:27 2009 +++ /trunk/singlewebapp/WebContent/conf/mysql_hibernate.cfg.xml Mon Oct 26 08:09:44 2009 @@ -57,6 +57,7 @@ <mapping resource="org/openmeetings/app/hibernate/beans/basic/Naviglobal.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Navimain.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Navisub.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/SOAPLogin.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Sessiondata.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/calendar/Appointment.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/calendar/AppointmentCategory.hbm.xml"/> @@ -64,7 +65,6 @@ <mapping resource="org/openmeetings/app/hibernate/beans/calendar/MeetingMember.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/domain/Organisation.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/domain/Organisation_Users.hbm.xml"/> - <mapping resource="org/openmeetings/app/hibernate/beans/files/FileExplorerItem.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/invitation/Invitations.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/lang/FieldLanguage.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/lang/Fieldlanguagesvalues.hbm.xml"/> ======================================= --- /trunk/singlewebapp/WebContent/conf/postgres_hibernate.cfg.xml Mon Oct 12 03:12:27 2009 +++ /trunk/singlewebapp/WebContent/conf/postgres_hibernate.cfg.xml Mon Oct 26 08:09:44 2009 @@ -40,6 +40,7 @@ <mapping resource="org/openmeetings/app/hibernate/beans/basic/Naviglobal.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Navimain.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Navisub.hbm.xml"/> + <mapping resource="org/openmeetings/app/hibernate/beans/basic/SOAPLogin.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/basic/Sessiondata.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/calendar/Appointment.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/calendar/AppointmentCategory.hbm.xml"/> @@ -47,7 +48,6 @@ <mapping resource="org/openmeetings/app/hibernate/beans/calendar/MeetingMember.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/domain/Organisation.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/domain/Organisation_Users.hbm.xml"/> - <mapping resource="org/openmeetings/app/hibernate/beans/files/FileExplorerItem.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/invitation/Invitations.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/lang/FieldLanguage.hbm.xml"/> <mapping resource="org/openmeetings/app/hibernate/beans/lang/Fieldlanguagesvalues.hbm.xml"/> ======================================= --- /trunk/singlewebapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomClient.hbm.xml Mon Oct 12 02:51:43 2009 +++ /trunk/singlewebapp/src/app/org/openmeetings/app/hibernate/beans/recording/RoomClient.hbm.xml Mon Oct 26 08:09:44 2009 @@ -36,5 +36,6 @@ <property name="publicSID" type="string" column="public_sid"/> <property name="zombieCheckFlag" type="boolean" column="zombieCheckFlag"/> <property name="canDraw" type="boolean" column="canDraw"/> + <property name="isBroadcasting" type="boolean" column="isBroadcasting"/> </class> </hibernate-mapping> ======================================= --- /trunk/singlewebapp/src/userservice/org/openmeetings/axis/services/UserService.java Mon Oct 12 02:56:03 2009 +++ /trunk/singlewebapp/src/userservice/org/openmeetings/axis/services/UserService.java Mon Oct 26 08:09:44 2009 @@ -130,7 +130,7 @@ return new Long(-26); } } catch (Exception err){ - log.error("sendInvitationLink",err); + log.error("setUserObject",err); } return new Long(-1); } @@ -185,10 +185,51 @@ return new Long(-26); } } catch (Exception err){ - log.error("sendInvitationLink",err); + log.error("setUserObjectWithExternalUser",err); } return new Long(-1); } + + public String setUserObjectAndGenerateRoomHash(String SID, String username, String firstname, String lastname, + String profilePictureUrl, String email, Long externalUserId, String externalUserType, + Long room_id){ + log.debug("UserService.setUserObject"); + + try { + Long users_id = Sessionmanagement.getInstance().checkSession(SID); + Long user_level = Usermanagement.getInstance().getUserLevelByID(users_id); + if (AuthLevelmanagement.getInstance().checkAdminLevel(user_level)){ + + RemoteSessionObject remoteSessionObject = new RemoteSessionObject(username, firstname, lastname, + profilePictureUrl, email, externalUserId, externalUserType); + + + log.debug("username "+username); + log.debug("firstname "+firstname); + log.debug("lastname "+lastname); + log.debug("profilePictureUrl "+profilePictureUrl); + log.debug("email "+email); + log.debug("externalUserId "+externalUserId); + log.debug("externalUserType " +externalUserType); + + //XStream xStream = new XStream(new XppDriver()); + XStream xStream = new XStream(new DomDriver("UTF-8")); + xStream.setMode(XStream.NO_REFERENCES); + String xmlString = xStream.toXML(remoteSessionObject); + + log.debug("xmlString "+xmlString); + + Sessionmanagement.getInstance().updateUserRemoteSession(SID, xmlString); + + return ""+new Long(1); + } else { + return ""+new Long(-26); + } + } catch (Exception err){ + log.error("setUserObjectWithAndGenerateRoomHash",err); + } + return ""+new Long(-1); + } public Long addUserToOrganisation(String SID, Long user_id, Long organisation_id, Long insertedby, String comment) { --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "OpenMeetings developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/openmeetings-dev?hl=en -~----------~----~----~----~------~----~------~--~---
