Browse Source

Implemented fake sessions.

pull/71/head
Simon Eisenmann 11 years ago
parent
commit
724c4d27e5
  1. 26
      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

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

@ -204,10 +204,6 @@ func (h *Hub) CreateSuserid(session *Session) (suserid string) {
func (h *Hub) CreateSession(request *http.Request, st *SessionToken) *Session { 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 session *Session
var userid string var userid string
usersEnabled := h.config.UsersEnabled usersEnabled := h.config.UsersEnabled
@ -220,7 +216,7 @@ func (h *Hub) CreateSession(request *http.Request, st *SessionToken) *Session {
sid := NewRandomString(32) sid := NewRandomString(32)
id, _ := h.tickets.Encode("id", sid) id, _ := h.tickets.Encode("id", sid)
session = NewSession(h, 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 { } else {
if userid == "" { if userid == "" {
userid = st.Userid userid = st.Userid
@ -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 { func (h *Hub) ValidateSession(id, sid string) bool {
var decoded string var decoded string
@ -453,10 +460,13 @@ func (h *Hub) sessionsHandler(c *Connection, srq *DataSessionsRequest, iid strin
user, ok := h.userTable[userid] user, ok := h.userTable[userid]
h.mutex.RUnlock() h.mutex.RUnlock()
if !ok { 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)
} }
// Add sessions for forein user.
users = user.SubscribeSessions(c.Session)
case "session": case "session":
id, err := c.Session.attestation.Decode(srq.Token) id, err := c.Session.attestation.Decode(srq.Token)
if err != nil { 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{}) {
log.Println("Unicast error while encoding JSON", err) log.Println("Unicast error while encoding JSON", err)
return return
} }
log.Println("Unicast", b) //log.Println("Unicast", b)
var msg = &MessageRequest{From: c.Id, To: to, Message: b} var msg = &MessageRequest{From: c.Id, To: to, Message: b}
c.h.unicastHandler(msg) c.h.unicastHandler(msg)

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

@ -41,6 +41,7 @@ type Session struct {
Prio int Prio int
mutex sync.RWMutex mutex sync.RWMutex
userid string userid string
fake bool
stamp int64 stamp int64
attestation *SessionAttestation attestation *SessionAttestation
subscriptions map[string]*Session subscriptions map[string]*Session
@ -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 { func (s *Session) DataSessionLeft(state string) *DataSession {
s.mutex.RLock() s.mutex.RLock()

Loading…
Cancel
Save