예제 #1
0
        public IEnumerable <LogLineView> GetLogLines()
        {
            var repo      = new DisconnectedRepository();
            var ipDetails = repo.GetIpDetails();
            var lines     = repo.GetLogLines();
            var providers = new Providers(ipDetails);



            var result = lines.Select(p => new LogLineView
            {
                Date          = p.Date.ToString("MM/dd/yyyy"),
                Time          = p.Time,
                IpClient      = p.IpClient,
                MediaItem     = p.MediaItem,
                IspProvider   = providers.GetValue(p.IpClient).IspProvider,
                Country       = providers.GetValue(p.IpClient).Country,
                State         = providers.GetValue(p.IpClient).State,
                Location      = providers.GetValue(p.IpClient).Location,
                IpDetailId    = providers.GetValue(p.IpClient).IpDetailId,
                Client        = p.Client,
                ClientVersion = p.ClientVersion,
                Platform      = p.Platform,
                IsHidden      = providers.GetValue(p.IpClient).IsHidden
            });



            return(result);
        }
예제 #2
0
        public IEnumerable <IpDetail> GetIpDetails()
        {
            var repo      = new DisconnectedRepository();
            var ipDetails = repo.GetIpDetails()
                            .OrderBy(p => p.IpNumber).ToList();

            return(ipDetails);
        }
예제 #3
0
        public void ScanFolder()
        {
            string searchPattern = SearchPattern.Log;
            var    repo          = new DisconnectedRepository();
            var    fileProcessor = new FileProcessor();

            LocalSetting setting        = repo.GetLocalSettings();
            string       folderPath     = @"" + setting.FolderPath;
            var          filesToProcess = fileProcessor.FindNewFiles(folderPath, searchPattern);

            var ipDetails = repo.GetIpDetails();

            List <string> ipNumbers        = ipDetails.Select(p => p.IpNumber).ToList();
            List <string> scannedIpNumbers = new List <string>();


            Guid id = new Guid();

            var logProcessor = new LogProcessor();

            foreach (var logFile in filesToProcess)
            {
                var linesToProcess = logProcessor.FindNewlogLines(logFile);
                var fileInDatabase = repo.GetLogFileByFileName(logFile.FileName);

                if (fileInDatabase != null)
                {
                    id = fileInDatabase.LogFileId;
                }
                else
                {
                    id = logFile.LogFileId;
                    repo.AddNewLogFile(logFile);
                }


                foreach (var logLine in linesToProcess)
                {
                    scannedIpNumbers.Add(logLine.IpClient);

                    logLine.LogFileId = id;

                    repo.AddNewLogLine(logLine);
                }
            }

            var newIpNumbers = scannedIpNumbers.Except(ipNumbers);

            foreach (var item in newIpNumbers)
            {
                var ipDetail = new IpDetail();
                ipDetail.IpNumber = item;
                repo.AddNewIpDetail(ipDetail);
                Console.WriteLine(item);
            }
        }
예제 #4
0
        public void BackupDetails()
        {
            var repo         = new DisconnectedRepository();
            var ipDetails    = repo.GetIpDetails();
            var files        = repo.GetLogFiles();
            var lines        = repo.GetLogLines();
            var setting      = repo.GetLocalSettings();
            var backupWriter = new BackupWriter(ipDetails, lines, files, setting);


            var time = DateTime.Now.ToString("yyyy.dd.mm.HH.mm");

            var path     = setting.BackupFolder;
            var fileName = path + setting.BackupName + "_details_" + time + BackupFormat.Xml;

            backupWriter.BackupIpDetails(fileName);
        }