Browse Source

Implemented fake sessions.

pull/71/head
Simon Eisenmann 11 years ago
parent
commit
724c4d27e5
  1. 24
      src/app/spreed-webrtc-server/hub.go
  2. 2
      src/app/spreed-webrtc-server/server.go
  3. 10
      src/app/spreed-webrtc-server/session.go

24
src/app/spreed-webrtc-server/hub.go

@ -204,10 +204,6 @@ func (h *Hub) CreateSuserid(session *Session) (suserid string) { @@ -204,10 +204,6 @@ func (h *Hub) CreateSuserid(session *Session) (suserid string) {
func (h *Hub) CreateSession(request *http.Request, st *SessionToken) *Session {
// NOTE(longsleep): Is it required to make this a secure cookie,
// random data in itself should be sufficent if we do not validate
// session ids somewhere?
var session *Session
var userid string
usersEnabled := h.config.UsersEnabled
@ -220,7 +216,7 @@ func (h *Hub) CreateSession(request *http.Request, st *SessionToken) *Session { @@ -220,7 +216,7 @@ func (h *Hub) CreateSession(request *http.Request, st *SessionToken) *Session {
sid := NewRandomString(32)
id, _ := h.tickets.Encode("id", sid)
session = NewSession(h, id, sid)
log.Println("Created new session id", len(id), id, sid)
log.Println("Created new session id", id)
} else {
if userid == "" {
userid = st.Userid
@ -239,6 +235,17 @@ func (h *Hub) CreateSession(request *http.Request, st *SessionToken) *Session { @@ -239,6 +235,17 @@ func (h *Hub) CreateSession(request *http.Request, st *SessionToken) *Session {
}
func (h *Hub) CreateFakeSession(userid string) *Session {
sid := fmt.Sprintf("fake-%s", NewRandomString(27))
id, _ := h.tickets.Encode("id", sid)
log.Println("Created new fake session id", id)
session := NewSession(h, id, sid)
session.SetUseridFake(userid)
return session
}
func (h *Hub) ValidateSession(id, sid string) bool {
var decoded string
@ -453,10 +460,13 @@ func (h *Hub) sessionsHandler(c *Connection, srq *DataSessionsRequest, iid strin @@ -453,10 +460,13 @@ func (h *Hub) sessionsHandler(c *Connection, srq *DataSessionsRequest, iid strin
user, ok := h.userTable[userid]
h.mutex.RUnlock()
if !ok {
return
}
// No user. Create fake session.
users = make([]*DataSession, 1, 1)
users[0] = h.CreateFakeSession(userid).Data()
} else {
// Add sessions for forein user.
users = user.SubscribeSessions(c.Session)
}
case "session":
id, err := c.Session.attestation.Decode(srq.Token)
if err != nil {

2
src/app/spreed-webrtc-server/server.go

@ -193,7 +193,7 @@ func (s *Server) Unicast(c *Connection, to string, m interface{}) { @@ -193,7 +193,7 @@ func (s *Server) Unicast(c *Connection, to string, m interface{}) {
log.Println("Unicast error while encoding JSON", err)
return
}
log.Println("Unicast", b)
//log.Println("Unicast", b)
var msg = &MessageRequest{From: c.Id, To: to, Message: b}
c.h.unicastHandler(msg)

10
src/app/spreed-webrtc-server/session.go

@ -41,6 +41,7 @@ type Session struct { @@ -41,6 +41,7 @@ type Session struct {
Prio int
mutex sync.RWMutex
userid string
fake bool
stamp int64
attestation *SessionAttestation
subscriptions map[string]*Session
@ -233,6 +234,15 @@ func (s *Session) Userid() (userid string) { @@ -233,6 +234,15 @@ func (s *Session) Userid() (userid string) {
}
func (s *Session) SetUseridFake(userid string) {
s.mutex.Lock()
s.userid = userid
s.fake = true
s.mutex.Unlock()
}
func (s *Session) DataSessionLeft(state string) *DataSession {
s.mutex.RLock()

Loading…
Cancel
Save