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")