def main(): env = Environment.getInstance() config = env.config # Load configuration path = config.get('backend-monitor.audit-log', default='/var/lib/clacks/ldap-audit.log') modifier = config.get('backend-monitor.modifier') user = config.get('core.id') password = config.get('amqp.key') url = parseURL(makeAuthURL(config.get('amqp.url'), user, password)) # Connect to Clacks BUS proxy = AMQPServiceProxy(url['source'] + "/" + env.domain) # Main loop while True: sleep(1) # Wait for file to pop up if not os.path.exists(path): continue # Wait for file to be file if not os.path.isfile(path): continue # Check if it is effectively readable try: with open(path) as f: pass except IOError as e: continue # Listen for changes monitor(path, modifier, proxy)
def __init__(self): env = Environment.getInstance() self.log = logging.getLogger(__name__) self.log.debug("initializing AMQP handler") self.env = env self.config = env.config # Initialize parser schema_root = etree.XML(PluginRegistry.getEventSchema()) schema = etree.XMLSchema(schema_root) self._parser = objectify.makeparser(schema=schema) # Evaluate username user = self.env.uuid password = self.config.get("amqp.key") # Load configuration self.url = parseURL(makeAuthURL(self.config.get('amqp.url'), user, password)) self.reconnect = self.config.get('amqp.reconnect', True) self.reconnect_interval = self.config.get('amqp.reconnect_interval', 3) self.reconnect_limit = self.config.get('amqp.reconnect_limit', 0) # Go for it self.start()