def main():
    """
    Breaks the OVAL file into its constituent elements and writes each of those into the repository
    """
    
    
    
    parser = argparse.ArgumentParser(description='Separates an OVAL file into its component parts and saves them to the repository.')
    options = parser.add_argument_group('options')
    options.add_argument('-f', '--file', required=True, help='The name of the source file')
    options.add_argument('-v', '--verbose', required=False, action="store_true", help='Enable more verbose messages')
    args = vars(parser.parse_args())

    oval = OvalDocument(None)
    filename = args['file']
    if args['verbose']:
        verbose = True
    else:
        verbose = False
        
    
    if not oval.parseFromFile(filename):
        print("\n >> Unable to parse source file '{0}':  no actions taken".format(filename))
        return

    deflist = oval.getDefinitions()
    if not deflist or deflist is None or len(deflist) < 1:
        print("\n ## Error:  this document does not contain any OVAL definitions.  No further action will be taken")
        return
        
    if verbose:
        print(" Number of definitions to process: ", len(deflist))


    repository_root = lib_repo.get_repository_root_path()
    
    writeFiles(deflist, repository_root, verbose)
    writeFiles(oval.getTests(), repository_root, verbose)
    writeFiles(oval.getObjects(), repository_root, verbose)
    writeFiles(oval.getStates(), repository_root, verbose)
    writeFiles(oval.getVariables(), repository_root, verbose)
def decompose(filename, verbose):
    oval = OvalDocument(None)
    
    if not oval.parseFromFile(filename):
        print("\n >> Unable to parse source file '{0}':  no actions taken".format(filename))
        return

    deflist = oval.getDefinitions()
#    if not deflist or deflist is None or len(deflist) < 1:
#        print("\n ## Error:  this document does not contain any OVAL definitions.  No further action will be taken")
#        return
        
    if verbose:
        print(" Number of definitions to process: ", len(deflist))


    repository_root = lib_repo.get_repository_root_path()
    
    writeFiles(deflist, repository_root, verbose)
    writeFiles(oval.getTests(), repository_root, verbose)
    writeFiles(oval.getObjects(), repository_root, verbose)
    writeFiles(oval.getStates(), repository_root, verbose)
    writeFiles(oval.getVariables(), repository_root, verbose)
Exemple #3
0
def decompose(filename, verbose):
    oval = OvalDocument(None)

    if not oval.parseFromFile(filename):
        print("\n >> Unable to parse source file '{0}':  no actions taken".
              format(filename))
        return

    deflist = oval.getDefinitions()
    #    if not deflist or deflist is None or len(deflist) < 1:
    #        print("\n ## Error:  this document does not contain any OVAL definitions.  No further action will be taken")
    #        return

    if verbose:
        print(" Number of definitions to process: ", len(deflist))

    repository_root = lib_repo.get_repository_root_path()

    writeFiles(deflist, repository_root, verbose)
    writeFiles(oval.getTests(), repository_root, verbose)
    writeFiles(oval.getObjects(), repository_root, verbose)
    writeFiles(oval.getStates(), repository_root, verbose)
    writeFiles(oval.getVariables(), repository_root, verbose)
Exemple #4
0
def main():
    """
    """
    
    print("------------- Opening OVAL file -------------")
    
    tree = ElementTree()
    tree.parse("OvalTest.xml")
    document = OvalDocument(tree)
#     document.parseFromFile("OvalTest.xml")

    generator = document.getGenerator()
    if not generator:
        print("## Oops:  Generator element not found")
    else:
        print("--   Product: ", generator.getProduct())
        print("--    Schema: ", generator.getSchemaVersion())
        print("-- Timestamp: ", generator.getTimestamp())
        print("--   Edition: ", generator.getExtra("def:edition_field", OvalDocument.NS_DEFAULT))
        
    print("\n")
    
    def_list = document.getDefinitions()
    if not def_list:
        print("## Oops:  No definitions found in OVAL document")
    else:
        print("  Number of definitions: ", len(def_list), ", Expected = 489")
    
    test_list = document.getTests()
    if not test_list:
        print("## Oops:  No tests found in OVAL document")
    else:
        print("  Number of tests: ", len(test_list), ", Expected = 1439")
        
    object_list = document.getObjects()
    if not object_list:
        print("## Oops:  No objects found in OVAL document")
    else:
        print("  Number of objects: ", len(object_list), ", Expected = 1276")

    state_list = document.getStates()
    if not state_list:
        print("## Oops:  No states found in OVAL document")
    else:
        print("  Number of states: ", len(state_list), ", Expected = 713")

    var_list = document.getVariables()
    if not var_list:
        print("  Number of variables: 0, Expected = 0")
    else:
        print("  Number of variables: ", len(var_list), ", Expected = ")
        
        
    print("\n  Find the definition with OVAL ID 'oval:org.mitre.oval:def:22382'")
    definition = document.getElementByID("oval:org.mitre.oval:def:22382")
    if definition is None:
        print("##  Oops:  definition not found")
    else:
        print("  Found.  Definition details:")
        print("      Class: ", definition.getClass())
        print("    Version: ", definition.getVersion())
        definition.incrementVersion()
        print("New Version: ", definition.getVersion())
        
        meta = definition.getMetadata()
        if meta is None:
            print("      ## Oops.  Definition metadata not found")
        else:
            print("      Title: ", meta.getTitle())
            
            repo = meta.getOvalRepositoryInformation()
            if repo is None:
                print("        ### Oops.  No repository information")
            else:
                print("     ----- From the repository ------")
                print("         Status: ", repo.getStatus())
                repo.setStatus("Munged")
                print("     New Status: ", repo.getStatus())
                print("    Min Version: ", repo.getMinimumSchemaVersion())
                repo.setMinimumSchemaVersion("5.9")
                print("New Min Version: ", repo.getMinimumSchemaVersion())