Пример #1
0
        private static bool InExcludeGroups(string user)
        {
            bool contains = false;

            if (Global.Config.ExcludeGroups != null)
            {
                var u = DomainUser.Create(user);
                if (u.IsSystemUser)
                {
                    string[] groups = new SystemUserAccess().GetUserGroups(u.UserName);
                    contains = Array.Exists(Global.Config.ExcludeGroups, s => Array.Exists(groups, g => string.Equals(s, g, StringComparison.OrdinalIgnoreCase)));
                }
                else if (Global.Config.ADValid && ContainsADGroup(Global.Config.ExcludeGroups))
                {
                    var cfg = Global.Config;
                    var ada = new ADUserAccess(cfg.ADPath, cfg.ADUser, cfg.ADPasswordValue, cfg.ADOrganization);
                    if (string.Equals(u.Domain, ada.DomainName, StringComparison.OrdinalIgnoreCase))
                    {
                        var groups = ada.GetUserGroups(u.UserName);
                        contains = Array.Exists(Global.Config.ExcludeGroups, s => Array.Exists(groups, g =>
                                                                                               string.Equals(s, ada.DomainName + "\\" + g, StringComparison.OrdinalIgnoreCase)));
                    }
                }
            }
            return(contains);
        }
Пример #2
0
        public object[] SearchFile(DateTime start, DateTime end, string user, string drive, string file)
        {
            StringBuilder filter = new StringBuilder();

            filter.AppendFormat(" '{0:yyyy-MM-dd}'<=date(StartTime) AND date(StartTime)<='{1:yyyy-MM-dd}' ", start, end);
            if (!string.IsNullOrEmpty(user) && ValidUser(user))
            {
                var domainUser = DomainUser.Create(user);
                if (domainUser != null)
                {
                    filter.AppendFormat(" AND Domain='{0}' AND UserName='******'", domainUser.Domain, domainUser.UserName);
                }
            }
            if (!string.IsNullOrEmpty(drive) && ValidDrive(drive))
            {
                filter.AppendFormat(" AND UrlHost='{0}' ", drive);
            }
            else
            {
                filter.AppendFormat(" AND UrlHost LIKE '_:'");
            }
            if (!string.IsNullOrEmpty(file) && ValidKey(file))
            {
                filter.AppendFormat(" AND WindowUrl LIKE 'file:///%{0}%' ", file);
            }

            var segments = Database.Execute(db => db.SelectObjects <SnapshotGroup>("SearchUrl", filter.ToString(),
                                                                                   "SessionDate", "SessionId", "Domain", "UserName", "StartTime", "EndTime", "UrlHost", "WindowUrl", "SnapshotCount"));

            List <object> objs = new List <object>();

            foreach (var sg in segments)
            {
                objs.Add(new
                {
                    SID   = sg.SID,
                    Date  = sg.SessionDate,
                    User  = sg.User,
                    Host  = sg.UrlHost,
                    Time  = sg.TimeRange,
                    Url   = sg.WindowUrl,
                    Count = sg.SnapshotCount,
                });
            }

            return(objs.ToArray());
        }
Пример #3
0
        public object[] SearchText(DateTime start, DateTime end, string user, string prog, string text)
        {
            StringBuilder filter = new StringBuilder();

            filter.AppendFormat(" '{0:yyyy-MM-dd}'<=date(StartTime) AND date(StartTime)<='{1:yyyy-MM-dd}' ", start, end);
            filter.Append(" AND length(trim(InputText)) > 0 ");
            if (!string.IsNullOrEmpty(user) && ValidUser(user))
            {
                var domainUser = DomainUser.Create(user);
                if (domainUser != null)
                {
                    filter.AppendFormat(" AND Domain='{0}' AND UserName='******'", domainUser.Domain, domainUser.UserName);
                }
            }
            if (!string.IsNullOrEmpty(prog) && ValidProgram(prog))
            {
                filter.AppendFormat(" AND ProcessName='{0}' ", prog);
            }
            if (!string.IsNullOrEmpty(text) && ValidKey(text))
            {
                filter.AppendFormat(" AND InputText LIKE '%{0}%' ", text);
            }

            var segments = Database.Execute(db => db.SelectObjects <SnapshotGroup>("SearchText", filter.ToString(),
                                                                                   "SessionDate", "SessionId", "Domain", "UserName", "ProcessName", "WindowTitle", "StartTime", "EndTime", "InputText", "SnapshotCount"));

            List <object> objs = new List <object>();

            foreach (var sg in segments)
            {
                objs.Add(new
                {
                    Date  = sg.SessionDate,
                    User  = sg.User,
                    Prog  = sg.ProcessName,
                    Title = sg.WindowTitle,
                    Text  = sg.Text,
                    SID   = sg.SessionId,
                    Time  = sg.TimeRange,
                    Count = sg.SnapshotCount,
                });
            }
            return(objs.ToArray());
        }
Пример #4
0
        public object[] GetSessions(DateTime start, DateTime end, string user)
        {
            StringBuilder sbFilter = new StringBuilder();

            sbFilter.AppendFormat(" '{0:yyyy-MM-dd}'<=date(CreateTime) AND date(CreateTime)<='{1:yyyy-MM-dd}' ", start, end);
            sbFilter.Append(" AND SnapshotCount>0 ");
            if (!string.IsNullOrEmpty(user) && ValidUser(user))
            {
                var domainUser = DomainUser.Create(user);
                if (domainUser != null)
                {
                    sbFilter.AppendFormat(" AND Domain='{0}' AND UserName='******'", domainUser.Domain, domainUser.UserName);
                }
            }

            var sessions = Database.Execute(db => db.SelectObjects <SessionObj>("SessionView", sbFilter.ToString(),
                                                                                "SessionId", "CreateTime", "LastActiveTime", "UserName", "Domain", "ClientName", "ClientAddress", "IsEnd", "SnapshotCount", "DataLength"));

            List <object> objs = new List <object>();

            foreach (var s in sessions)
            {
                objs.Add(new
                {
                    SID     = s.SID,
                    Date    = s.Date,
                    User    = s.User,
                    Time    = s.TimeRange,
                    Count   = s.SnapshotCount,
                    Length  = s.DataLength,
                    Active  = s.IsActive,
                    Client  = s.ClientName,
                    Address = s.ClientAddress,
                });
            }

            return(objs.ToArray());
        }