diff --git a/src/app/spreed-webrtc-server/hub.go b/src/app/spreed-webrtc-server/hub.go index ee059157..8ded010e 100644 --- a/src/app/spreed-webrtc-server/hub.go +++ b/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 { - // 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 { 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 { } +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 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) } - // Add sessions for forein user. - users = user.SubscribeSessions(c.Session) case "session": id, err := c.Session.attestation.Decode(srq.Token) if err != nil { diff --git a/src/app/spreed-webrtc-server/server.go b/src/app/spreed-webrtc-server/server.go index e539960e..9ea70ad2 100644 --- a/src/app/spreed-webrtc-server/server.go +++ b/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) return } - log.Println("Unicast", b) + //log.Println("Unicast", b) var msg = &MessageRequest{From: c.Id, To: to, Message: b} c.h.unicastHandler(msg) diff --git a/src/app/spreed-webrtc-server/session.go b/src/app/spreed-webrtc-server/session.go index d7bdd375..ccb8bacd 100644 --- a/src/app/spreed-webrtc-server/session.go +++ b/src/app/spreed-webrtc-server/session.go @@ -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) { } +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()