def __list_all_modules(): import glob from os.path import basename, dirname, isfile # This generates a list of modules in this folder for the * in __main__ to work. mod_paths = glob.glob(dirname(__file__) + "/*.py") all_modules = [ basename(f)[:-3] for f in mod_paths if isfile(f) and f.endswith(".py") and not f.endswith("__init__.py") ] if LOAD or NO_LOAD: to_load = LOAD if to_load: if not all( any(mod == module_name for module_name in all_modules) for mod in to_load): LOGGER.error("Invalid loadorder names. Quitting.") quit(1) all_modules = sorted(set(all_modules) - set(to_load)) to_load = list(all_modules) + to_load else: to_load = all_modules if NO_LOAD: LOGGER.info("Not loading: {}".format(NO_LOAD)) return [item for item in to_load if item not in NO_LOAD] return to_load return all_modules
def term(cmd, info): process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) stdout, stderr = process.communicate() stderr = stderr.decode() stdout = stdout.decode() if stdout: log.info(f"{info} successful!") log.info(f"{stdout}") if stderr: log.error(f"error while running {info}") log.info(f"{stderr}")
def shell(update: Update, context: CallbackContext): message = update.effective_message cmd = message.text.split(" ", 1) if len(cmd) == 1: message.reply_text("No command to execute was given.") return cmd = cmd[1] process = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) stdout, stderr = process.communicate() msg = "" stderr = stderr.decode() stdout = stdout.decode() if stdout: msg += f"*Stdout*\n`{stdout}`\n" LOGGER.info(f"Shell - {cmd} - {stdout}") if stderr: msg += f"*Stderr*\n`{stderr}`\n" LOGGER.error(f"Shell - {cmd} - {stderr}") if len(msg) > 3000: with open("shell_output.txt", "w") as file: file.write(msg) with open("shell_output.txt", "rb") as doc: message.reply_document( document = doc, filename = doc.name, reply_to_message_id = message.message_id, ) else: message.reply_text( text = msg, parse_mode = ParseMode.MARKDOWN, disable_web_page_preview = True, )