mirror of
https://github.com/volatilityfoundation/volatility3.git
synced 2026-09-06 17:57:38 +02:00
Refactor the plugin listing code.
This commit is contained in:
@@ -13,10 +13,12 @@ import inspect
|
||||
import json
|
||||
import logging
|
||||
import sys
|
||||
import typing
|
||||
|
||||
import volatility.framework
|
||||
import volatility.framework.configuration.requirements
|
||||
import volatility.plugins
|
||||
from volatility import framework
|
||||
from volatility.framework import automagic, constants, contexts, interfaces
|
||||
from volatility.framework.configuration import requirements
|
||||
from volatility.framework.renderers import text
|
||||
@@ -98,15 +100,10 @@ class CommandLine(object):
|
||||
|
||||
# Do the initialization
|
||||
ctx = contexts.Context() # Construct a blank context
|
||||
volatility.framework.import_files(volatility.plugins) # Will not log as console's default level is WARNING
|
||||
framework.import_files(volatility.plugins) # Will not log as console's default level is WARNING
|
||||
automagics = automagic.available(ctx)
|
||||
|
||||
plugin_list = {}
|
||||
for plugin in volatility.framework.class_subclasses(interfaces.plugins.PluginInterface):
|
||||
plugin_name = plugin.__module__ + "." + plugin.__name__
|
||||
if plugin_name.startswith("volatility.plugins."):
|
||||
plugin_name = plugin_name[len("volatility.plugins."):]
|
||||
plugin_list[plugin_name] = plugin
|
||||
plugin_list = framework.list_plugins()
|
||||
|
||||
seen_automagics = set()
|
||||
configurables_list = {}
|
||||
|
||||
@@ -104,6 +104,16 @@ def import_files(base_module) -> None:
|
||||
return None
|
||||
|
||||
|
||||
def list_plugins() -> typing.Dict[str, typing.Type[interfaces.plugins.PluginInterface]]:
|
||||
plugin_list = {}
|
||||
for plugin in class_subclasses(interfaces.plugins.PluginInterface):
|
||||
plugin_name = plugin.__module__ + "." + plugin.__name__
|
||||
if plugin_name.startswith("volatility.plugins."):
|
||||
plugin_name = plugin_name[len("volatility.plugins."):]
|
||||
plugin_list[plugin_name] = plugin
|
||||
return plugin_list
|
||||
|
||||
|
||||
# Check the python version to ensure it's suitable
|
||||
# We currently require 3.5.3 since 3.5.1 has no typing.Type and 3.5.2 is broken for ''/delayed encapsulated types
|
||||
required_python_version = (3, 5, 3)
|
||||
|
||||
Reference in New Issue
Block a user