private void SaveSessionToDatabase(SessionId sessionId, User user, ConnectionTicket ticket) { lock (_lockObj) { try { using (ServerDataContext context = new ServerDataContext()) { ActiveSession session = new ActiveSession { Id = ObjectId.NewId(), SessionId = sessionId.ToString(), UserId = user.Id, ClientComputer = ticket.ClientComputer, Port = ticket.Port }; context.ActiveSessions.Add(session); context.SaveChanges(); } } catch (Exception e) { ApplicationContext.Log.Error(GetType(), e); throw; } } }
public UserData CreateUser(string username) { lock (_lockObj) { using (ServerDataContext context = new ServerDataContext()) { User user = context.Users.Create(); user.Id = ObjectId.NewId(); user.Name = username; user.SecurityToken = ObjectId.NewId().ToString(); context.Users.Add(user); context.SaveChanges(); return(context.CreateUserData(user)); } } }
public bool ChangeUserName(Guid userId, string newName) { lock (_lockObj) { using (ServerDataContext context = new ServerDataContext()) { User user = context.Users.Find(userId); if (user == null) { return(false); } user.Name = newName; context.SaveChanges(); return(true); } } }
public bool RemoveUser(Guid userId) { lock (_lockObj) { using (ServerDataContext context = new ServerDataContext()) { User user = context.Users.Find(userId); if (user == null) { return(false); } context.Users.Remove(user); context.SaveChanges(); return(true); } } }
private void RemoveSessionFromDatabase(SessionId sessionId) { lock (_lockObj) { try { using (ServerDataContext context = new ServerDataContext()) { context.RemoveSession(sessionId); context.SaveChanges(); } } catch (Exception e) { ApplicationContext.Log.Error(GetType(), e); throw; } } }
public void ReconnectSessions() { using (ServerDataContext context = new ServerDataContext()) { List <SessionId> toRemove = new List <SessionId>(); foreach (ActiveSession session in context.ActiveSessions) { SessionId sessionId = new SessionId(session.SessionId); SessionData data = new SessionData(sessionId, context.CreateFakeTicket(session)); _sessions.TryAdd(sessionId, data); try { using (ClientProxy proxy = CreateClientProxy(data.Ticket)) { proxy.ConnectionRestarted(); Logger.Info("Restarted session to computer {0}.", data.Ticket.ClientComputer); } } catch (Exception e) { toRemove.Add(sessionId); ApplicationContext.Log.Error(GetType(), e); ApplicationContext.Log.Info(GetType(), "Removed session to: {0}", data.Ticket.ClientComputer); } } if (toRemove.Count > 0) { foreach (SessionId sessionId in toRemove) { SessionData tmpData; context.RemoveSession(sessionId); _sessions.TryRemove(sessionId, out tmpData); } context.SaveChanges(); } } }