示例#1
0
        public static List <IpLog> GetLoginsIPListForMulti(string htmlContent, string nick)
        {
            List <IpLog> ipLogList = new List <IpLog>();

            htmlContent = htmlContent.Replace("&nbsp;", " ");
            Regex           objRegEx = new Regex(@"(?<Date>\d{2}-\d{2}\s*\d{2}:\d{2}:\d{2}):\s*(?<First>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?<Second>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?<Third>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?<Fourth>2[0-4]\d|25[0-5]|[01]?\d\d?)(?<UserName>.*?)<br\s>");
            MatchCollection matches  = objRegEx.Matches(htmlContent);

            //Regex Error = new Regex("<tr><td>input\\serror</td></tr>");

            int count = 1;

            foreach (Match match in matches)
            {
                GroupCollection groups = match.Groups;

                IpLog ipLog = new IpLog();
                ipLog.Id        = count;
                ipLog.IpString  = groups["First"].Value + "." + groups["Second"].Value + "." + groups["Third"].Value + "." + groups["Fourth"].Value;
                ipLog.IpAddress = IPAddress.Parse(ipLog.IpString);
                ipLog.Date      = groups["Date"].Value.Trim();
                if (!nick.Equals(groups["UserName"].Value.Trim()))
                {
                    ipLog.Nick = groups["UserName"].Value.Trim() + " (" + nick + ")";//UserName
                }
                else
                {
                    ipLog.Nick = groups["UserName"].Value.Trim();//UserName
                }
                ipLog.DateTime = ConvertToDatetimeIPLog(ipLog.Date);

                ipLogList.Add(ipLog);
                count++;
            }
            return(ipLogList);
        }
        private void GenerateMultiReport()
        {
            if (_accountList == null || _accountList.Count == 0)
            {
                return;
            }

            List <IpLog> ipLogList = new List <IpLog>();

            foreach (Account account in _accountList)
            {
                foreach (IpLog ipLog in account.IpLogList)
                {
                    ipLogList.Add(ipLog);
                }
            }

            if (ipLogList.Count == 0)
            {
                webBrowser1.DocumentText = "No ip log was found!";
                return;
            }

            string body          = "";
            int    countLess60   = 0;
            int    countLess300  = 0;
            int    countLess1800 = 0;

            string header = "";

            //header += "<font color=\"#ff0000\">Log in under 60 seconds apart</font><br />";
            //header += "<font color=\"#ff8000\">Log in under 300 seconds apart</font><br />";
            //header += "<font color=\"#0000ff\">Log in under 1800 seconds apart</font><br /><br />";
            body += "<table>";

            IpLog prevLog    = null;
            bool  notPrinted = true;
            bool  newDay     = false;

            //multiIpLogList.OrderBy(d => d.DateTime);
            var multiLoginsList = from log in ipLogList
                                  orderby log.DateTime ascending
                                  select log;

            foreach (IpLog log in multiLoginsList)
            {
                if (prevLog == null)
                {
                    prevLog = log;
                }
                else
                {
                    TimeSpan diff = log.DateTime - prevLog.DateTime;
                    //if (diff.TotalHours < 24 && log.DateTime.Month > prevLog.DateTime.Month && log.DateTime.Day > prevLog.DateTime.Day)
                    //{
                    //    newDay = true;
                    //}

                    if (prevLog.IpString.Equals(log.IpString) && !prevLog.Nick.Equals(log.Nick))
                    {
                        if (diff.TotalSeconds < 60)
                        {
                            countLess60++;
                            if (notPrinted)
                            {
                                body += "<tr><td><font color=\"#ff0000\">" + prevLog.Date + "</font>&nbsp;&nbsp;</td><td><font color=\"#ff0000\">" + prevLog.IpString + "</font>&nbsp;&nbsp;</td><td><font color=\"#ff0000\">" + prevLog.Nick + "</font></td></tr>";
                            }
                            if (newDay)
                            {
                                body += "<tr><td colspan=\"3\"><hr /></td></tr>";
                            }
                            body      += "<tr><td><font color=\"#ff0000\">" + log.Date + "</font>&nbsp;&nbsp;</td><td><font color=\"#ff0000\">" + log.IpString + "</font>&nbsp;&nbsp;</td><td><font color=\"#ff0000\">" + log.Nick + "</font></td></tr>";
                            notPrinted = false;
                        }
                        else if (diff.TotalSeconds < 300)
                        {
                            countLess300++;
                            if (notPrinted)
                            {
                                body += "<tr><td><font color=\"#ff8000\">" + prevLog.Date + "</font>&nbsp;&nbsp;</td><td><font color=\"#ff8000\">" + prevLog.IpString + "</font>&nbsp;&nbsp;</td><td><font color=\"#ff8000\">" + prevLog.Nick + "</font></td></tr>";
                            }
                            if (newDay)
                            {
                                body += "<tr><td colspan=\"3\"><hr /></td></tr>";
                            }
                            body      += "<tr><td><font color=\"#ff8000\">" + log.Date + "</font>&nbsp;&nbsp;</td><td><font color=\"#ff8000\">" + log.IpString + "</font>&nbsp;&nbsp;</td><td><font color=\"#ff8000\">" + log.Nick + "</font></td></tr>";
                            notPrinted = false;
                        }
                        else if (diff.TotalSeconds < 1800)
                        {
                            countLess1800++;
                            if (notPrinted)
                            {
                                body += "<tr><td><font color=\"#0000ff\">" + prevLog.Date + "</font>&nbsp;&nbsp;</td><td><font color=\"#0000ff\">" + prevLog.IpString + "</font>&nbsp;&nbsp;</td><td><font color=\"#0000ff\">" + prevLog.Nick + "</font></td></tr>";
                            }
                            if (newDay)
                            {
                                body += "<tr><td colspan=\"3\"><hr /></td></tr>";
                            }
                            body      += "<tr><td><font color=\"#0000ff\">" + log.Date + "</font>&nbsp;&nbsp;</td><td><font color=\"#0000ff\">" + log.IpString + "</font>&nbsp;&nbsp;</td><td><font color=\"#0000ff\">" + log.Nick + "</font></td></tr>";
                            notPrinted = false;
                        }
                        else
                        {
                            if (notPrinted)
                            {
                                body += "<tr><td>" + prevLog.Date + "&nbsp;&nbsp;</td><td>" + prevLog.IpString + "&nbsp;&nbsp;</td><td>" + prevLog.Nick + "</td></tr>";
                            }
                            if (newDay)
                            {
                                body += "<tr><td colspan=\"3\"><hr /></td></tr>";
                            }
                            notPrinted = true;
                            //temp += "<tr><td>" + log.Date + "&nbsp;&nbsp;</td><td>" + log.IpString + "&nbsp;&nbsp;</td><td>" + log.Nick + "</td></tr>";
                        }
                    }
                    else
                    {
                        if (notPrinted)
                        {
                            body += "<tr><td>" + prevLog.Date + "&nbsp;&nbsp;</td><td>" + prevLog.IpString + "&nbsp;&nbsp;</td><td>" + prevLog.Nick + "</td></tr>";
                        }
                        if (newDay)
                        {
                            body += "<tr><td colspan=\"3\"><hr /></td></tr>";
                        }
                        notPrinted = true;
                    }
                    //temp += "<tr><td>" + log.Date + "&nbsp;&nbsp;</td><td>" + log.IpString + "&nbsp;&nbsp;</td><td>" + log.Nick + "</td></tr>";
                    prevLog = log;
                    newDay  = false;
                }
            }

            body += "</table>";

            string report = "******** Results ********<br /><font color=\"#ff0000\"># of logins under 60 sec = " + countLess60 + "</font><br />";

            report += "<font color=\"#ff8000\"># of logins under 300 sec = " + countLess300 + "</font><br />";
            report += "<font color=\"#0000ff\"># of logins under 1800 sec = " + countLess1800 + "</font><br /><br />";

            webBrowser1.DocumentText = header + report + body;
        }
示例#3
0
        static void ParseIpAddresses()
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json");
            var Configuration = configBuilder.Build();

            Console.WriteLine("Starting Parsing Ip Addresses");
            Console.WriteLine("Reading DB Config");
            var builder          = new DbContextOptionsBuilder <AppDbContext>();
            var connectionString = Configuration.GetConnectionString("DefaultConnection");

            builder.UseSqlite(connectionString);


            var clearDbConfig = Configuration["deleteDb"];
            var clearDb       = false;

            bool.TryParse(clearDbConfig, out clearDb);

            using (var db = new AppDbContext(builder.Options))
            {
                if (clearDb)
                {
                    Console.WriteLine("Clearing IP Logs");
                    foreach (var ipLog in db.IpLogs)
                    {
                        db.IpLogs.Remove(ipLog);
                    }
                    db.SaveChanges();
                }

                IQueryable <Server> Servers;
                if (ServerId == 0)
                {
                    Servers = db.Servers;
                }
                else
                {
                    Servers = db.Servers.Where(x => x.ServerId == ServerId);
                }
                foreach (var server in Servers)
                {
                    Console.WriteLine("Processing: " + server.ServerSearchString);
                    var lines = new string[0];
                    if (ReadAllLines == true)
                    {
                        lines = System.IO.File.ReadAllLines(server.LogFileLocation);
                    }
                    else
                    {
                        lines = System.IO.File.ReadLines(server.LogFileLocation).Reverse().Take(200).ToArray();
                    }
                    foreach (var radioId in db.RadioIdLogs)
                    {
                        foreach (var line in lines)
                        {
                            if (line.Contains(radioId.RadioId) && line.Contains("Repeater Logging in with Radio ID"))
                            {
                                var strDate = line.Split(',')[0].Replace("INFO ", "");
                                var date    = DateTime.MinValue;
                                DateTime.TryParse(strDate, out date);
                                var ipStartIndex = line.LastIndexOf(",");
                                var ipEndIndex   = line.LastIndexOf(":");
                                var ipAddress    = line.Substring(ipStartIndex, ipEndIndex - ipStartIndex).Replace(",", "").Trim();
                                var existingLog  = db.IpLogs.Where(x => x.RadioIdLogId == radioId.RadioIdLogId && x.IpAddress == ipAddress).FirstOrDefault();
                                if (existingLog == null)
                                {
                                    Console.WriteLine("Adding IP Log for " + radioId.RadioId + " IP: " + ipAddress + " Date: " + date);
                                    var ipLog = new IpLog();
                                    ipLog.RadioIdLogId = radioId.RadioIdLogId;
                                    ipLog.LogDateTime  = date;
                                    ipLog.IpAddress    = ipAddress;
                                    db.IpLogs.Add(ipLog);
                                    db.SaveChanges();
                                }
                                else
                                {
                                    Console.WriteLine("Updating Date for IP Log " + radioId.RadioId + " IP: " + ipAddress + " Date: " + date);
                                    existingLog.LogDateTime = date;
                                    db.SaveChanges();
                                }
                            }
                        }
                    }
                    db.SaveChanges();
                }
            }
        }