diff options
-rw-r--r-- | Reaktor/IRC/README.md | 49 | ||||
-rwxr-xr-x | Reaktor/IRC/index | 6 | ||||
-rw-r--r-- | Reaktor/reaktor/__init__.py | 0 | ||||
-rwxr-xr-x | Reaktor/reaktor/core.py (renamed from Reaktor/IRC/reaktor.py) | 49 | ||||
-rw-r--r-- | Reaktor/reaktor/getconf.py (renamed from Reaktor/IRC/getconf.py) | 0 | ||||
-rw-r--r-- | Reaktor/reaktor/ircasy.py (renamed from Reaktor/IRC/ircasy.py) | 0 | ||||
-rw-r--r-- | Reaktor/reaktor/translate_colors.py (renamed from Reaktor/IRC/translate_colors.py) | 0 |
7 files changed, 33 insertions, 71 deletions
diff --git a/Reaktor/IRC/README.md b/Reaktor/IRC/README.md deleted file mode 100644 index 63a0ebd2..00000000 --- a/Reaktor/IRC/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# //Reaktor/IRC - -This component implements a remote shell daemon that exposes the -executable files (which may be symlinks) below -`//Reaktor/public_commands/` through IRC. - -## Security - -Access to the IRC server implies full access to all the exposed executable -files. The daemon is executing the commands without dropping privileges. - -## Quickstart - - #? /bin/sh - set -euf - - export nick="$LOGNAME|$HOSTNAME" - export host=irc.freenode.org - export target='#tincspasm' - - exec Reaktor/IRC/index - -## Environment variables - -The following environment variables are processed by `//Reaktor/IRC`: - -### nick - -Use a specific nickname. - -Optional if the node running `//Reaktor/IRC` is part of Retiolum, in -which case it defaults to `Name` in `/etc/tinc/retiolum/tinc.conf`. - -### host and port - -Connect to a specific IRC server. - -Optional if the node running `//Reaktor/IRC` is part of Retiolum, in -which case it defaults to `supernode` and `6667` (well, it always -defaults to these two, but they only make science in Retiolum^_^). - -### target - -Join a specific channel. - -As always, this does the right thing for properly configured hosts: it -uses the default `#retiolum`, which is the only really relevant -channel.^_^ - diff --git a/Reaktor/IRC/index b/Reaktor/IRC/index deleted file mode 100755 index af557a89..00000000 --- a/Reaktor/IRC/index +++ /dev/null @@ -1,6 +0,0 @@ -#! /bin/sh -set -xeuf - -# cd //Reaktor -cd $(dirname $(readlink -f $0))/.. -exec IRC/reaktor.py "$@" diff --git a/Reaktor/reaktor/__init__.py b/Reaktor/reaktor/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/Reaktor/reaktor/__init__.py diff --git a/Reaktor/IRC/reaktor.py b/Reaktor/reaktor/core.py index 124fa017..15166d9e 100755 --- a/Reaktor/IRC/reaktor.py +++ b/Reaktor/reaktor/core.py @@ -1,17 +1,16 @@ #!/usr/bin/env python3 import os -from ircasy import asybot +from reaktor.ircasy import asybot from asyncore import loop -from translate_colors import translate_colors +from reaktor.translate_colors import translate_colors import shlex from re import split, search, match default_config = './config.py' -from getconf import make_getconf -getconf = None +from reaktor.getconf import make_getconf import logging,logging.handlers -log = logging.getLogger('asybot') +log = logging.getLogger('Reaktor') #hdlr = logging.handlers.SysLogHandler(address='/dev/log', facility=logging.handlers.SysLogHandler.LOG_DAEMON) #formatter = logging.Formatter( '%(filename)s: %(levelname)s: %(message)s') #hdlr.setFormatter(formatter) @@ -20,14 +19,27 @@ log = logging.getLogger('asybot') class Reaktor(asybot): - def __init__(self,config=default_config): + def __init__(self,config=default_config,getconf=None): self.config = config + + if not getconf: + self.getconf = make_getconf(self.conf) + else: + self.getconf = getconf log.info("using config file %s"%(config)) - asybot.__init__(self, getconf('irc_server'), getconf('irc_port'), getconf('irc_nickname'), getconf('irc_channels'), hammer_interval=getconf('irc_hammer_interval'), alarm_timeout=getconf('irc_alarm_timeout'), kill_timeout=getconf('irc_kill_timeout')) + + asybot.__init__(self, + getconf('irc_server'), + getconf('irc_port'), + getconf('irc_nickname'), + getconf('irc_channels'), + hammer_interval=getconf('irc_hammer_interval'), + alarm_timeout=getconf('irc_alarm_timeout'), + kill_timeout=getconf('irc_kill_timeout')) def is_admin(self,prefix): try: - with open(getconf('auth_file')) as f: + with open(self.getconf('auth_file')) as f: for line in f: if line.strip() == prefix: return True @@ -36,17 +48,17 @@ class Reaktor(asybot): return False def on_join(self, prefix, command, params, rest): - for command in getconf('on_join', []): + for command in self.getconf('on_join', []): self.execute_command(command, None, prefix, params) def on_ping(self, prefix, command, params, rest): - for command in getconf('on_ping', []): + for command in self.getconf('on_ping', []): prefix = '!' # => env = { _prefix: '!', _from: '' } params = command.get('targets') # TODO why don't we get a list here and use ','.join() ? self.execute_command(command, None, prefix, params) def on_privmsg(self, prefix, command, params, rest): - for command in getconf('commands'): + for command in self.getconf('commands'): y = match(command['pattern'], rest) if y: if not self.is_admin(prefix): @@ -54,7 +66,7 @@ class Reaktor(asybot): else: return self.execute_command(command, y, prefix, params) - for command in getconf('public_commands'): + for command in self.getconf('public_commands'): y = match(command['pattern'], rest) if y: return self.execute_command(command, y, prefix, params) @@ -74,7 +86,7 @@ class Reaktor(asybot): except: log.info("cannot parse args!") - cwd = getconf('workdir') + cwd = self.getconf('workdir') if not os.access(cwd,os.W_OK): log.error("Workdir '%s' is not Writable! Falling back to root dir"%cwd) cwd = "/" @@ -116,10 +128,15 @@ class Reaktor(asybot): if code != 0: self.ME(target, 'mimimi') -if __name__ == "__main__": +def main(): import sys conf = sys.argv[1] if len(sys.argv) == 2 else default_config getconf = make_getconf(conf) - logging.basicConfig(level = logging.DEBUG if getconf('debug') else logging.INFO) - Reaktor(conf) + logging.basicConfig(level = logging.DEBUG if getconf('debug') else + logging.INFO) + log.debug("Debug enabled") + Reaktor(conf,getconf) loop() + +if __name__ == "__main__": + main() diff --git a/Reaktor/IRC/getconf.py b/Reaktor/reaktor/getconf.py index 168c908c..168c908c 100644 --- a/Reaktor/IRC/getconf.py +++ b/Reaktor/reaktor/getconf.py diff --git a/Reaktor/IRC/ircasy.py b/Reaktor/reaktor/ircasy.py index 38f202fc..38f202fc 100644 --- a/Reaktor/IRC/ircasy.py +++ b/Reaktor/reaktor/ircasy.py diff --git a/Reaktor/IRC/translate_colors.py b/Reaktor/reaktor/translate_colors.py index bd716618..bd716618 100644 --- a/Reaktor/IRC/translate_colors.py +++ b/Reaktor/reaktor/translate_colors.py |