Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }