diff options
| -rwxr-xr-x | IRC/asybot.py | 37 | 
1 files changed, 23 insertions, 14 deletions
| diff --git a/IRC/asybot.py b/IRC/asybot.py index 1a84b9d..9021d22 100755 --- a/IRC/asybot.py +++ b/IRC/asybot.py @@ -3,8 +3,6 @@  # //Reaktor/IRC/asybot.py  # -from __future__ import print_function -  def is_executable(x):    import os    return os.path.exists(x) and os.access(x, os.X_OK) @@ -16,6 +14,10 @@ from signal import SIGALRM, signal, alarm  from datetime import datetime as date, timedelta  from sys import exit  from re import split, search + +import logging +log = logging.getLogger() +  class asybot(asychat):    def __init__(self, server, port, nickname, targets, **kwargs):      asychat.__init__(self) @@ -41,7 +43,6 @@ class asybot(asychat):      signal(SIGALRM, lambda signum, frame: self.alarm_handler())      self.reset_alarm() -    loop()    def reset_alarm(self):      self.last_activity = date.now() @@ -50,10 +51,10 @@ class asybot(asychat):    def alarm_handler(self):      delta = date.now() - self.last_activity      if delta > timedelta(seconds=self.kill_timeout): -      print('No data for %s.  Giving up...' % delta) +      log.error('No data for %s.  Giving up...' % delta)        exit(2)      else: -      print('No data for %s.  PINGing server...' % delta) +      log.error('No data for %s.  PINGing server...' % delta)        self.push('PING :%s' % self.nickname)        alarm(self.hammer_interval) @@ -61,7 +62,7 @@ class asybot(asychat):      self.data += data    def found_terminator(self): -    print('< %s' % self.data) +    log.debug('<< %s' % self.data)      message = self.data      self.data = '' @@ -73,6 +74,7 @@ class asybot(asychat):      if command == 'PING':        self.push('PONG :%s' % rest) +      log.info("Replying to servers PING with PONG :%s" %rest)      elif command == 'PRIVMSG':        self.on_privmsg(prefix, command, params, rest) @@ -88,7 +90,7 @@ class asybot(asychat):      self.reset_alarm()    def push(self, message): -    print('> %s' % message) +    log.debug('>> %s' % message)      asychat.push(self, message + self.get_terminator())    def handle_connect(self): @@ -99,7 +101,8 @@ class asybot(asychat):    def on_privmsg(self, prefix, command, params, rest):      def PRIVMSG(text): -      self.push('PRIVMSG %s :%s' % (','.join(params), text)) +      msg = 'PRIVMSG %s :%s' % (','.join(params), text) +      self.push(msg)      def ME(text):        PRIVMSG('ACTION ' + text + '') @@ -132,8 +135,8 @@ class asybot(asychat):          try:            p = popen([command], stdin=PIPE, stdout=PIPE, stderr=PIPE, env=env)          except OSError, error: -          ME('is made of stupid') -          print('OSError@%s: %s' % (command, error)) +          ME('brain damaged') +          log.error('OSError@%s: %s' % (command, error))            return          stdout, stderr = [ x[:len(x)-1] for x in @@ -141,9 +144,9 @@ class asybot(asychat):          code = p.returncode          pid = p.pid -        print('command: %s -> %s' % (command, code)) -        [print('%s stdout: %s' % (pid, x)) for x in stdout] -        [print('%s stderr: %s' % (pid, x)) for x in stderr] +        log.info('command: %s -> %s' % (command, code)) +        [log.debug('%s stdout: %s' % (pid, x)) for x in stdout] +        [log.debug('%s stderr: %s' % (pid, x)) for x in stderr]          if code == 0:            [PRIVMSG(x) for x in stdout] @@ -154,6 +157,7 @@ class asybot(asychat):        else:          if _handle != '*':            PRIVMSG(_from + ': you are made of stupid') +  # retrieve the value of a [singleton] variable from a tinc.conf(5)-like file  def getconf1(x, path): @@ -170,15 +174,20 @@ def getconf1(x, path):  if __name__ == "__main__":    from os import environ as env + +  lol = logging.DEBUG if env.get('debug',False) else logging.INFO +  logging.basicConfig(level=lol)    name = getconf1('Name', '/etc/tinc/retiolum/tinc.conf')    hostname = '%s.retiolum' % name    nick = str(env.get('nick', name))    host = str(env.get('host', 'supernode'))    port = int(env.get('port', 6667))    target = str(env.get('target', '#retiolum')) -  print('====> irc://%s@%s:%s/%s' % (nick, host, port, target)) +  log.info('=> irc://%s@%s:%s/%s' % (nick, host, port, target))    from getpass import getuser    asybot(host, port, nick, [target], username=getuser(),        ircname='//Reaktor running at %s' % hostname,        hostname=hostname) + +  loop() | 
