Nettacker/core/load_modules.py

67 lines
2.3 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from glob import glob
from core.alert import messages
from core.alert import info
from core.alert import warn
from core._die import __die_failure
def load_all_graphs():
graph_names = []
for lib in glob('lib/graph/*/engine.py'):
lib = lib.rsplit('\\' if sys.platform == 'win32' or sys.platform == 'win64' else '/')[-2]
if lib + '_graph' not in graph_names:
graph_names.append(lib + '_graph')
return graph_names
def load_all_modules():
# Search for Modules
module_names = []
for lib in glob('lib/*/*/engine.py'):
libname = lib.rsplit('\\' if sys.platform == 'win32' or sys.platform == 'win64' else '/')[-2]
category = lib.rsplit('\\' if sys.platform == 'win32' or sys.platform == 'win64' else '/')[1]
if category != 'graph' and libname + '_' + category not in module_names:
module_names.append(libname + '_' + category)
module_names.append('all')
return module_names
def load_all_method_args(language):
module_names = []
modules_args = {}
# get module names
for lib in glob('lib/*/*/engine.py'):
lib = lib.replace('/', '.').replace('\\', '.').rsplit('.py')[0]
if lib.rsplit('.')[1] != 'graph' and lib not in module_names:
module_names.append(lib)
# get args
for imodule in module_names:
try:
extra_requirements_dict = getattr(__import__(imodule, fromlist=['extra_requirements_dict']),
'extra_requirements_dict')
except:
warn(messages(language, 112).format(imodule))
imodule_args = extra_requirements_dict()
modules_args[imodule] = []
for imodule_arg in imodule_args:
modules_args[imodule].append(imodule_arg)
for imodule in modules_args:
info(imodule.rsplit('.')[2] + '_' + imodule.rsplit('.')[1] + ' --> '
+ ", ".join(modules_args[imodule]))
return module_names
def __check_external_modules():
external_modules = ["argparse", "netaddr", "requests", "paramiko", "texttable", "socks", "win_inet_pton",
"flask"]
for module in external_modules:
try:
__import__(module)
except:
__die_failure("pip install -r requirements.txt")
return True