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); }
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()); }
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()); }
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()); }