Source code for mods.system

# mods/system.py
#
#

""" system related commands. """

from mads.log import loglevel as _loglevel
from mads.shell import reboot as boot
from mads.shell import reset
from mads.join import j

from mads.object import Object
from mads.event import Event

from mids import aliases, cfg, kernel, runtime, users

import _thread
import logging
import termios
import time
import sys
import os

[docs]def loglevel(event): """ set loglevel. """ level = event._parsed.rest if not level: event.reply(cfg.loglevel) return cfg.loglevel = level kernel.sync() _loglevel(level, cfg.colors)
[docs]def exit(event): """ stop the bot. """ if not users.allowed(event.origin, "OPER"): event.reply("you are not allowed to give the exit command. ") return _thread.interrupt_main()
[docs]def reload(event): """ reload a plugin. """ if not users.allowed(event.origin, "OPER"): event.reply("you are not allowed to give the reload command.") return if not event._parsed.rest: event.reply(",".join([x.split(".")[-1] for x in kernel.modules()])) return user = kernel.last("user", event.origin) for modname in kernel.modules(): if event._parsed.rest not in modname: continue try: event.reply(kernel.reload(modname, True)) except ImportError as ex: event.reply(str(ex))
[docs]def start(event): """ start a plugin. """ if not users.allowed(event.origin, "OPER"): event.reply("you are not allowed to give the start command. ") return if not event._parsed.rest: res = set([x.split(".")[-1] for x in kernel._table.keys()]) event.reply(sorted(res)) return name = event._parsed.args[0] modname = "mids.%s" % name mod = kernel.reload(modname, force=True, event=event) event.ok(modname)
[docs]def stop(event): """ stop a plugin. """ if not users.allowed(event.origin, "OPER"): event.reply("you are not allowed to give the stop command.") return if not event._parsed.rest: event.reply("stop what ?") return name = "mids.%s" % event._parsed.rest try: mod = kernel.load_mod(name) mod.shutdown(event) except ImportError: event.reply("no %s module found." % name) return event.reply("stopped %s" % name)
[docs]def save(event): """ make a kernel dump. """ from mids import aliases, kernel, seen aliases.sync() kernel.sync() seen.sync() event.reply("saved")
[docs]def real_reboot(event): """ actual reboot. """ if not users.allowed(event.origin, "OPER"): event.reply("you are not allowed to give the real_reboot command.") return kernel.shutdown() reset() boot()
[docs]def reboot(event): """ reboot the bot, allowing statefull reboot (keeping connections alive). """ if not cfg.reboot: event.reply("# reboot is not enabled.") return if not users.allowed(event.origin, "OPER"): event.reply("you are not allowed to give the reboot command. ") return event.announce("rebooting") real_reboot("bla")