public MinimalResponse Logout(SessionContextRequest request) { var response = new MinimalResponse(); var session = CheckSession(ref request, ref response); if (session != null) { try { session.DisconnectAndRemoveAllConnections(); Sessions.Remove(request.Sid); response.Success = true; response.Message = Strings.SERVER_SIDE + string.Format(Strings.SESSION_LOGOUT, session.Username); } catch (Exception ex) { response.Success = false; response.Message = Strings.SERVER_SIDE + ex.Message; } } Log(response.Message, ESeverity.INFO); return(response); }
public MonitorResponse Monitor(SessionContextRequest request) { var response = new MonitorResponse(); var session = CheckSession(ref request, ref response); if (session == null) { return(response); } try { if (session.Admin) { var exportsessions = new List <Session>(); foreach (var sid in Sessions.Keys) { var cursession = Sessions[sid]; var export = new Session { Sid = sid.ToString("x"), Admin = cursession.Admin, Connections = cursession.GetConnectionsStruct(), LastAccess = cursession.LastAccess, Logon = cursession.Logon, Username = cursession.Username }; exportsessions.Add(export); } response.Sessions = exportsessions.ToArray(); response.Success = true; response.Message = string.Empty; } else { response.Success = false; response.Sessions = null; response.Message = Strings.SERVER_SIDE + Strings.ADMIN_REQUIRED; } } catch (Exception ex) { response.Success = false; response.Sessions = null; response.Message = Strings.SERVER_SIDE + ex.Message; } return(response); }
public ConnectionContextResponse KillConnection(KillConnectionRequest request) { var response = new ConnectionContextResponse(); var targetsession = CheckSession(ref request, ref response); if (targetsession != null) { var targetconnection = targetsession.CheckConnection(ref request, ref response); if (targetconnection != null) { var fake = new SessionContextRequest(request.AdminSid); var adminsession = CheckSession(ref fake, ref response); if (adminsession != null) { if (adminsession.Admin) { try { response.Message = Strings.SERVER_SIDE + string.Format(Strings.CONNECTION_KILLED, targetconnection.TcpClient.Client.RemoteEndPoint, targetsession.Username, adminsession.Username); targetconnection.SafeDisconnect(); response.Connected = false; response.DataAvailable = false; response.Success = true; targetsession.RemoveConnection(request.Cid); } catch (Exception ex) { response.Success = false; response.Message = Strings.SERVER_SIDE + ex.Message; } } else { response.Success = false; response.Message = Strings.SERVER_SIDE + Strings.ADMIN_REQUIRED; } } } } Log(response.Message, ESeverity.INFO); return(response); }
public MinimalResponse KillSession(KillSessionRequest request) { var response = new MinimalResponse(); var targetsession = CheckSession(ref request, ref response); if (targetsession != null) { var fake = new SessionContextRequest(request.AdminSid); var adminsession = CheckSession(ref fake, ref response); if (adminsession != null) { if (adminsession.Admin) { try { targetsession.DisconnectAndRemoveAllConnections(); Sessions.Remove(request.Sid); response.Success = true; response.Message = Strings.SERVER_SIDE + String.Format(Strings.SESSION_KILLED, targetsession.Username, adminsession.Username); } catch (Exception ex) { response.Success = false; response.Message = Strings.SERVER_SIDE + ex.Message; } } else { response.Success = false; response.Message = Strings.SERVER_SIDE + Strings.ADMIN_REQUIRED; } } } Log(response.Message, ESeverity.INFO); return(response); }