Exemple #1
0
        private TextFileContentEntityOperationEvaluator CreateMockForSimpleFileContent(
            IEnumerable <string> fileNames, IEnumerable <string> paths)
        {
            MockRepository mocks = new MockRepository();
            var            fakeFileContentProvider = mocks.DynamicMock <IFileProvider>();
            var            fakePathOperator        = mocks.DynamicMock <PathOperatorEvaluator>();

            Expect.Call(fakeFileContentProvider.GetFileLinesContentFromHost("")).IgnoreArguments().Repeat.Any()
            .Return(this.CreateFakeFileLines());
            Expect.Call(fakePathOperator.ProcessOperationFileName(null, null, true)).IgnoreArguments()
            .Return(fileNames);
            Expect.Call(fakePathOperator.ProcessOperationsPaths(null)).IgnoreArguments()
            .Return(paths);

            mocks.ReplayAll();

            var objectCollector = new TextFileContentObjectCollector()
            {
                TargetInfo          = ProbeHelper.CreateFakeTarget(),
                FileContentProvider = fakeFileContentProvider
            };

            var operationEvaluator = new TextFileContentEntityOperationEvaluator(objectCollector, null, FamilyEnumeration.windows);

            operationEvaluator.PathOperatorEvaluator = fakePathOperator;

            return(operationEvaluator);
        }
        public void Should_be_possible_to_get_textfilecontent_with_notequal_operation_on_instance_entity()
        {
            var parameters =
                TextFileContentObjectCollector
                .GetDictionaryWithParametersToSearchTextFileConten("c:\\file.ini", "3gp", 3);

            var result = GetObjectCollectorWithBehavior().GetValues(parameters);
        }
        public void Should_be_possible_to_get_textfilecontent_instance_as_specified_by_OVAL()
        {
            var parameters =
                TextFileContentObjectCollector
                .GetDictionaryWithParametersToSearchTextFileConten("c:\\file.ini", "3gp.*?\r\n", 1);

            var result = GetObjectCollectorWithBehavior().GetValues(parameters);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("3gp=MPEGVideo", result.Single().Trim());
        }
        public void Should_be_possible_to_get_one_line_with_pattern_match()
        {
            var fileContentSearchingParameters =
                TextFileContentObjectCollector.GetDictionaryWithParametersToSearchTextFileConten("c:\\windows\\win.ini", @"CMCDL.*?\r\n", 1);
            var textFileContentObjectCollector =
                new TextFileContentObjectCollector()
            {
                FileContentProvider = CreateFakeFileContentProvider(CreateFakeFileContent())
            };

            var result = textFileContentObjectCollector.GetValues(fileContentSearchingParameters);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("CMCDLLNAME32=mapi32.dll", result[0].Trim());
        }
        public void Should_be_possible_to_get_xml_entries_with_pattern_match()
        {
            var fileContentSearchingParameters =
                TextFileContentObjectCollector.GetDictionaryWithParametersToSearchTextFileConten("c:\\windows\\win.ini", @"<book>.*?</book>", 1, true, true);
            var textFileContentObjectCollector =
                new TextFileContentObjectCollector()
            {
                FileContentProvider = CreateFakeFileContentProvider(GetFakeLines())
            };

            var result = textFileContentObjectCollector.GetValues(fileContentSearchingParameters);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.IsTrue(result[0].Contains("<title>The Lord of the Rings</title>"));
        }
        public void Should_be_possible_to_get_the_second_instance_of_pattern_match()
        {
            var fileContentSearchingParameters =
                TextFileContentObjectCollector.GetDictionaryWithParametersToSearchTextFileConten("c:\\windows\\win.ini", @"<title>.*?</title>", 2);
            var textFileContentObjectCollector =
                new TextFileContentObjectCollector()
            {
                FileContentProvider = CreateFakeFileContentProvider(GetFakeLines())
            };

            var result = textFileContentObjectCollector.GetValues(fileContentSearchingParameters);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(@"<title>Bible</title>", result[0].Trim());
        }
        public void Should_be_possible_to_get_textfilecontent_entries_with_pattern_match()
        {
            string regex = @"\s*net\.ipv4\.conf\.all\.accept_redirects\s*=\s*0\s*(#.*)?";
            var    fileContentSearchingParameters =
                TextFileContentObjectCollector.GetDictionaryWithParametersToSearchTextFileConten
                    ("c:\\temp\\filecontent_base.xml", regex, 1);
            var textFileContentObjectCollector =
                new TextFileContentObjectCollector()
            {
                FileContentProvider = CreateFakeFileContentProvider(GetFakeLinesInFileContent())
            };

            var result = textFileContentObjectCollector.GetValues(fileContentSearchingParameters);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.IsTrue(result[0].Contains("net.ipv4.conf.all.accept_redirects = 0"));
        }
Exemple #8
0
        protected override void ConfigureObjectCollector()
        {
            if (base.ObjectCollector == null)
            {
                var connectionScope    = ((FileConnectionProvider)FileConnectionProvider).ConnectionScope;
                var newWmiDataProvider = new WmiDataProvider(connectionScope);
                var newFileProvider    = new WindowsFileProvider(TargetInfo)
                {
                    WmiDataProvider = newWmiDataProvider
                };

                ObjectCollector = new TextFileContentObjectCollector()
                {
                    FileContentProvider = newFileProvider, TargetInfo = TargetInfo
                };
                FileDataSource = new FileObjectCollector()
                {
                    WmiDataProvider = newWmiDataProvider
                };
            }

            if (base.ItemTypeGenerator == null)
            {
                var newFileProvider =
                    new WindowsFileProvider(this.TargetInfo)
                {
                    WmiDataProvider =
                        WmiDataProviderFactory
                        .CreateWmiDataProviderForFileSearching(this.TargetInfo)
                };

                var newOperationEvaluator =
                    new TextFileContentEntityOperationEvaluator(ObjectCollector, newFileProvider, FamilyEnumeration.windows);

                ItemTypeGenerator = new TextFileContentItemTypeGenerator()
                {
                    OperationEvaluator = newOperationEvaluator
                };
            }
        }
Exemple #9
0
        public IEnumerable <ItemType> GetItemsToCollect(Definitions.ObjectType objectType, VariablesEvaluated variables)
        {
            var fileObject        = ((textfilecontent54_object)objectType);
            var variableEvaluator = new VariableEntityEvaluator(variables);

            IList <string> filepaths = new List <string>();
            IList <string> paths     = new List <string>();
            IList <string> filenames = new List <string>();

            if (fileObject.IsFilePathDefined())
            {
                filepaths =
                    variableEvaluator
                    .EvaluateVariableForEntity(
                        (EntitySimpleBaseType)fileObject.GetItemValue(
                            textfilecontent54_ItemsChoices.filepath)).ToList();

                foreach (var filepath in filepaths)
                {
                    var indexOfLastSlash = filepath.LastIndexOf("/");
                    var path             = filepath.Substring(0, indexOfLastSlash + 1);
                    var filename         = filepath.Replace(path, string.Empty);

                    paths.Add(path);
                    filenames.Add(filename);
                }
            }
            else
            {
                paths =
                    variableEvaluator
                    .EvaluateVariableForEntity(
                        (EntitySimpleBaseType)fileObject.GetItemValue(
                            textfilecontent54_ItemsChoices.path)).ToList();
                filenames =
                    variableEvaluator
                    .EvaluateVariableForEntity(
                        (EntitySimpleBaseType)fileObject.GetItemValue(
                            textfilecontent54_ItemsChoices.filename)).ToList();

                foreach (var path in paths)
                {
                    foreach (var filename in filenames)
                    {
                        filepaths.Add(string.Format("{0}/{1}", path, filename).Replace("//", "/"));
                    }
                }
            }

            var entityPattern = (EntitySimpleBaseType)fileObject.GetItemValue(textfilecontent54_ItemsChoices.pattern);
            var pattern       = variableEvaluator.EvaluateVariableForEntity(entityPattern).SingleOrDefault();

            var entityInstance = (EntitySimpleBaseType)fileObject.GetItemValue(textfilecontent54_ItemsChoices.instance);
            var instance       = variableEvaluator.EvaluateVariableForEntity(entityInstance).SingleOrDefault();

            var itemsToCollect = new List <ItemType>();

            foreach (var filepath in filepaths)
            {
                if (string.IsNullOrWhiteSpace(pattern))
                {
                    continue;
                }

                var fileContentSearchParameters =
                    TextFileContentObjectCollector
                    .GetDictionaryWithParametersToSearchTextFileConten(
                        filepath, pattern, int.Parse(instance), fileObject.IsMultiline());

                try
                {
                    var matchLines = ObjectCollector.GetValues(fileContentSearchParameters);
                    if (matchLines == null || matchLines.Count <= 0)
                    {
                        var newNotExistsItem = CreateTextFileContentItem(filepath, "", "", pattern, instance, null);
                        newNotExistsItem.status = StatusEnumeration.doesnotexist;
                        itemsToCollect.Add(newNotExistsItem);
                    }
                    else
                    {
                        var newCollectedItem = CreateTextFileContentItem(filepath, "", "", pattern, instance, null);
                        var result           = string.Join(System.Environment.NewLine, matchLines);
                        ((textfilecontent_item)newCollectedItem).text = new EntityItemAnySimpleType()
                        {
                            Value = result
                        };
                        itemsToCollect.Add(newCollectedItem);
                    }
                }
                catch (UnauthorizedAccessException)
                {
                    var newNotCollectedItem = CreateTextFileContentItem(filepath, "", "", pattern, instance, null);
                    newNotCollectedItem.status = StatusEnumeration.notcollected;
                    itemsToCollect.Add(newNotCollectedItem);
                }
            }

            //IList<ItemType> itemsToCollect = new List<ItemType>();
            //for (int i = 0; i < filepaths.Count; i++)
            //{
            //    if ((filepaths[i] != null) && (paths[i] != null) && (filenames[i] != null) && (pattern != null) && (instance != null))
            //    {
            //        var fileContents = this.FileContentCollector.GetTextFileFullContentInLines(filepaths[i]); //this.FileContentCollector.GetTextFileContent(filepaths[i], pattern);
            //        if ((fileContents == null) || (fileContents.Count() <= 0))
            //        {
            //            var newFileContentItem = CreateTextFileContentItem(filepaths[i], "", "", "", "", "");
            //            newFileContentItem.status = StatusEnumeration.doesnotexist;
            //            itemsToCollect.Add(newFileContentItem);
            //            continue;
            //        }

            //        var matchLines = new Dictionary<int, string>();
            //        for (int currentInstance = 1; currentInstance <= fileContents.Count(); currentInstance++)
            //        {
            //            var comparator = new OvalComparatorFactory().GetComparator(entityInstance.datatype);
            //            if (comparator.Compare(instance, currentInstance.ToString(), entityInstance.operation))
            //            {
            //                var instanceNumber = currentInstance - 1;
            //                var matchLine = fileContents[instanceNumber].Text;
            //                matchLines.Add(currentInstance, matchLine);
            //            }
            //        }

            //        foreach (var matchLine in matchLines)
            //        {
            //            var newTextFileContent =
            //                CreateTextFileContentItem(
            //                    filepaths[i],
            //                    paths[i],
            //                    filenames[i],
            //                    pattern,
            //                    matchLine.Key.ToString(),
            //                    matchLine.Value);

            //            itemsToCollect.Add(newTextFileContent);
            //        }
            //    }
            //}

            return(itemsToCollect);
        }