Exemple #1
0
        public AuditResultInfo(AuditResultInfo audit)
        {
            if (audit != null)
            {
                this.FindWords = new List <AuditInfo>();
                for (int i = 0; i < audit.FindWords.Count; i++)
                {
                    FindWords.Add(new AuditInfo(audit.FindWords[i]));
                }

                File = audit.File;
            }
        }
 public ModuleBox(ModuleBox moduleBox)
 {
     if (moduleBox != null)
     {
         ScanListener       = moduleBox.ScanListener;
         ModListener        = moduleBox.ModListener;
         MainFListener      = moduleBox.MainFListener;
         ScanFListener      = moduleBox.ScanFListener;
         CodeId             = moduleBox.CodeId;
         StringBody         = moduleBox.StringBody;
         ApplicationOptions = new ApplicationOptions(moduleBox.ApplicationOptions);
         Ari             = new AuditResultInfo(moduleBox.Ari);
         ListReportAudit = new List <AuditResultInfo>(moduleBox.ListReportAudit);
     }
 }
Exemple #3
0
        public static void AuditValid(object obj)
        {
            lock (FileLocker)//if not lock exp out of mem
            {
                var  param = obj as ModuleBox;
                bool tryDo = true;

                byte[] file = null;
                if (param != null)
                {
                    byte[] pattern = Encoding.Default.GetBytes(param.ApplicationOptions.PatternForReplaceWord)
                                     .ToArray();
                    List <byte[]>   listB     = new List <byte[]>();
                    byte[]          fileWrite = null;
                    AuditResultInfo result    = new AuditResultInfo(param.StringBody);
                    try
                    {
                        file = File.ReadAllBytes(param.StringBody).ToArray();
                    }
                    catch
                    {
                        tryDo = false;
                    }

                    if (tryDo)
                    {
                        param.ScanFListener?.Invoke(new ModuleBox()
                        {
                            CodeId = CodeId.UpdateLblCurFile, StringBody = Path.GetFileName(param.StringBody)
                        });

                        for (int i = 0; i < param.ApplicationOptions.FilePatterns.Count; i++)
                        {
                            listB.Add(Encoding.Default.GetBytes(param.ApplicationOptions.FilePatterns[i]).ToArray());
                        }

                        for (int i = 0; i < listB.Count; i++)
                        {
                            var l = new ReplaceOccurrenceArr1WithArr2(file, listB[i], pattern);
                            if (l.CountReplace > 0)
                            {
                                result.FindWords.Add(new AuditInfo()
                                {
                                    CountInFile = l.CountReplace, WordIndexArr = i
                                });
                                fileWrite = l.Result.ToArray();
                            }
                        }

                        if (result.FindWords.Count > 0)
                        {
                            try
                            {
                                File.WriteAllBytes(
                                    param.ApplicationOptions.PathToCopyFile + @"\" + Path.GetFileName(param.StringBody),
                                    fileWrite ?? throw new InvalidOperationException());
                            }
                            catch
                            {
                                //
                            }

                            string write = "\r\n<" + DateTime.UtcNow.ToLongDateString();
                            write += "\r\nФайл : " + param.StringBody;
                            param.ModListener(new ModuleBox()
                            {
                                CodeId = CodeId.AddToAuditResult, Ari = new AuditResultInfo(result)
                            });
                            foreach (var t in result.FindWords)
                            {
                                write += "\r\nСлово: " +
                                         param.ApplicationOptions.FilePatterns[t.WordIndexArr] +
                                         "[ " + t.CountInFile.ToString() + " ]";
                            }

                            write += "\r\n>";

                            File.AppendAllText(param.ApplicationOptions.PathToCopyFile + @"\Report.txt", write);


                            param.MainFListener?.Invoke(
                                new ModuleBox()
                            {
                                CodeId = CodeId.UpdateAuditMonitor, StringBody = write
                            });
                        }
                    }
                }
            }
        }