From 9d3e2e684cd61989b90293d94f3af05834bd1154 Mon Sep 17 00:00:00 2001 From: Tib3rius <48113936+Tib3rius@users.noreply.github.com> Date: Sun, 10 Apr 2022 01:34:11 -0400 Subject: [PATCH] Update main.py Potential fix for imports. --- autorecon/main.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/autorecon/main.py b/autorecon/main.py index dcddca2..2d4b18e 100644 --- a/autorecon/main.py +++ b/autorecon/main.py @@ -911,19 +911,17 @@ async def run(): plugins_dirs.append(config['add_plugins_dir']) for plugins_dir in plugins_dirs: - for plugin_file in os.listdir(plugins_dir): + for plugin_file in sorted(os.listdir(plugins_dir)): if not plugin_file.startswith('_') and plugin_file.endswith('.py'): dirname, filename = os.path.split(os.path.join(plugins_dir, plugin_file)) dirname = os.path.abspath(dirname) - # Temporarily insert the plugin directory into the sys.path so importing plugins works. - sys.path.insert(1, dirname) - try: - plugin = importlib.import_module(filename[:-3]) - # Remove the plugin directory from the path after import. - sys.path.pop(1) + spec = importlib.util.spec_from_file_location("autorecon." + filename[:-3], os.path.join(dirname, filename)) + plugin = importlib.util.module_from_spec(spec) + spec.loader.exec_module(plugin) + clsmembers = inspect.getmembers(plugin, predicate=inspect.isclass) for (_, c) in clsmembers: if c.__module__ in ['autorecon.plugins', 'autorecon.targets']: