diff options
| author | makefu <github@syntax-fehler.de> | 2011-09-17 14:22:22 +0200 | 
|---|---|---|
| committer | makefu <github@syntax-fehler.de> | 2011-09-17 14:22:22 +0200 | 
| commit | 2a54f1cef0d547be126d77a315afdf5dff58d1c2 (patch) | |
| tree | 61874a3a09f81cc1b5751456da370033b98fdf9c /Reaktor/UDP/index | |
| parent | c614e25114faafb4795338ecb93c284835a677ce (diff) | |
Reaktor/UDP: add matcher function for ubot
Diffstat (limited to 'Reaktor/UDP/index')
| -rwxr-xr-x | Reaktor/UDP/index | 28 | 
1 files changed, 21 insertions, 7 deletions
diff --git a/Reaktor/UDP/index b/Reaktor/UDP/index index c46202b8..b7a21508 100755 --- a/Reaktor/UDP/index +++ b/Reaktor/UDP/index @@ -2,8 +2,9 @@  import asyncore, socket  import logging +import re  import sys -log = logging.getLogger('asybot') +log = logging.getLogger('ubot')  def enable_syslog(logger):    import logging.handlers as handlers @@ -15,6 +16,7 @@ def enable_syslog(logger):    hdlr.setFormatter(formatter)    logger.addHandler(hdlr) +  class ubot(asyncore.dispatcher):    """ UDP Bot """    def __init__(self, port,pattern,action,bind_addr="",): @@ -22,21 +24,25 @@ class ubot(asyncore.dispatcher):      self.bind_addr = bind_addr      self.port = port      self.data = '' +    self.pattern = pattern +    self.action = action      self.bind_socket()    def bind_socket(self):      """      if the socket is already bound we want to reuse this socket anyway      """ -          self.create_socket(socket.AF_INET,socket.SOCK_DGRAM)      self.set_reuse_addr() -    self.socket.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1) -    log.info("Binding Socket at %s:%d" %(self.bind_addr,self.port)) +    self.socket.setsockopt( +        socket.SOL_SOCKET,socket.SO_BROADCAST,1) +    log.info("Binding Socket at %s:%d"  +        %(self.bind_addr,self.port))      self.bind( (self.bind_addr,self.port) )    def handle_connect(self):      log.info("Server Started") +    def handle_read(self):      self.data,addr = self.recvfrom(2048)      log.debug('<< %s' % self.data) @@ -46,17 +52,25 @@ class ubot(asyncore.dispatcher):    def find_pattern(self):      """ returns true if own pattern is found""" -    log.error("not yet implemented") -    sys.exit(23) +    log.debug("Pattern is %s" %self.pattern) +    ret = re.search(self.pattern,self.data) +    if ret: +      log.info("Match \"%s\" with pattern \"%s\"" % ((ret.string.strip()),self.pattern)) +    else: +      log.info("No Match") +    return ret +    def start_action(self):      """ runs all the defined actions""" +    log.debug("Actions: %s" % str(self.action))      log.error("not yet implemented")      sys.exit(23)  if __name__ == "__main__":    import os +  #enable_syslog(log)    lol = logging.DEBUG if os.environ.get('debug',False) else logging.INFO    logging.basicConfig(level=lol) -  ubot(1337,r'',{}) +  ubot(1337,r'abc',{})    asyncore.loop()  | 
