load all available modules Returns: an array of all module names
()
| 45 | |
| 46 | |
| 47 | def load_all_modules(): |
| 48 | """ |
| 49 | load all available modules |
| 50 | |
| 51 | Returns: |
| 52 | an array of all module names |
| 53 | """ |
| 54 | # Search for Modules |
| 55 | # the modules are available in |
| 56 | # modules/category_name/module_name (e.g. modules/ftp/weak_password |
| 57 | # they will be listed based on the folder names and if "Dockerfile" exist! |
| 58 | # structure of module name: |
| 59 | # module_name = modules/(category_name/module_name)/__init.py |
| 60 | # example: module_name = modules/(ftp/weak_password)/__init.py |
| 61 | # = ftp/weak_password |
| 62 | module_names = [] |
| 63 | module_basepath = os.path.dirname(inspect.getfile(modules)) |
| 64 | path_pattern = module_basepath + '/*/*/__init__.py' |
| 65 | |
| 66 | for module in glob(path_pattern): |
| 67 | |
| 68 | module_dir = os.path.split(module)[0] |
| 69 | sub_module_name = os.path.split(module_dir)[1] |
| 70 | category_name = os.path.split(os.path.split(module_dir)[0])[1] |
| 71 | module_name = category_name + '/' + sub_module_name |
| 72 | dockerfile_path = os.path.join(module_dir, "Dockerfile") |
| 73 | |
| 74 | if os.path.exists(dockerfile_path): |
| 75 | if module_name not in module_names: |
| 76 | module_names.append(module_name) |
| 77 | else: |
| 78 | warn(messages["module_not_available"].format(module_name)) |
| 79 | return module_names |