|
|
@ -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 { |
|
|
|