def add_event(self, event): if (not self.event_subscriptions.has_key(event['type'])): return False for client in self.event_subscriptions[event['type']]: try: self.clients[client]['thread'].add_event(event) except: lerror('unable to pass event to client thread')
def listen(self): serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: serversocket.bind((self.address, self.port)) except ValueError, serror: lerror('listening socket address error: %s ' % serror) return False
def listen(self): serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) try: serversocket.bind((self.address, self.port)) except ValueError, serror: lerror('listening socket address error: %s ' % serror) return False
def run(self): ldebug('starting asterisk manager thread') while self.runthread: self.mgsocket = self.login(self.host, self.port, self.user, self.password) if (self.mgsocket == False): lerror('failed to open asterisk manager connection to %s:%d' % (self.host, self.port)) if (self.runthread): sleep(1) continue ldebug('opening asterisk manager connection to %s:%d' % (self.host, self.port)) while self.runthread: try: data = self.mgsocket.recv(65634) timeout = False except: timeout = True if (timeout): continue events = data.split("\r\n\r\n") for event_line in events: if (not event_line): continue event = event_line.splitlines() event_array = self.to_array(event) self.addevent(event_array) if not data: break if (self.runthread): ldebug('lost connection to manager') sleep(1) if (self.mgsocket): self.mgsocket.close() ldebug('closing asterisk manager thread')
def run (self): ldebug('starting asterisk manager thread') while self.runthread: self.mgsocket = self.login(self.host, self.port, self.user, self.password) if (self.mgsocket == False): lerror('failed to open asterisk manager connection to %s:%d' % (self.host, self.port)) if (self.runthread): sleep(1) continue ldebug('opening asterisk manager connection to %s:%d' % (self.host, self.port)) while self.runthread: try: data = self.mgsocket.recv(65634) timeout = False except: timeout = True if (timeout): continue events = data.split("\r\n\r\n") for event_line in events: if (not event_line): continue event = event_line.splitlines() event_array = self.to_array(event) self.addevent(event_array) if not data: break if (self.runthread): ldebug('lost connection to manager') sleep(1) if (self.mgsocket): self.mgsocket.close() ldebug('closing asterisk manager thread')
def run(self): listen = NetSocket(self.port, self.address) serversocket = listen.listen() if (not serversocket): lerror('cannot start server process') return 1 ret = self.em.add_event_handler('NetServer', 2) ipcalc = IPCalc() while (self.runthread): try: clientsocket, address = serversocket.accept() except socket.error, serror: lerror('socket error (%d): %s ' % (serror[0], serror[1])) continue except:
def start_modules(conf): ldebug('loading modules') modules_listeners = conf['modules']['listeners'].split(',') for key in range(0, len(modules_listeners)): modules_listeners[key] = modules_listeners[key].strip() modules_handlers = conf['modules']['handlers'].split(',') for key in range(0, len(modules_handlers)): modules_handlers[key] = modules_handlers[key].strip() modules_all = modules_listeners + modules_handlers plugins = {} for module_name in modules_all: if (modules.has_key(module_name)): continue ldebug('loading module %s' % module_name) try: module_file, module_path, module_info = find_module(module_name, conf['general']['modulepath'].split(',')) except: lerror('unable to load module: %s' % module_name) continue try: module_object = load_module(module_name, module_file, module_path, module_info) finally: if (module_file): module_file.close() if (module_name in modules_listeners): try: for module_class in module_object.classes_list(1): plugins[module_class.__name__] = {} plugins[module_class.__name__]['type'] = [1,] ldebug('loading listener %s' % module_class.__name__) plugins[module_class.__name__]['object'] = module_class() except: lerror('unable to load listeners of module: %s' % module_name) if (module_name in modules_handlers): try: for module_class in module_object.classes_list(2): if (plugins.has_key(module_class.__name__)): plugins[module_class.__name__]['type'].append(2) continue plugins[module_class.__name__] = {} plugins[module_class.__name__]['type'] = [2,] ldebug('loading handler %s' % module_class.__name__) plugins[module_class.__name__]['object'] = module_class() except: lerror('unable to load handlers of module: %s' % module_name) return plugins
class NetSocket(): def __init__(self, port=None, address=None): self.daemon = True self.port = int(port) self.address = address def listen(self): serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: serversocket.bind((self.address, self.port)) except ValueError, serror: lerror('listening socket address error: %s ' % serror) return False except socket.error, serror: lerror('listening socket error (%d): %s ' % (serror[0], serror[1])) return False
def add_event_handler(self, handler, eventtype): if (not self.handler_thread): lerror('EventManager: no handler thread') return False return self.handler_thread.add_handler(handler, eventtype)
def start_modules(conf): ldebug('loading modules') modules_listeners = conf['modules']['listeners'].split(',') for key in range(0, len(modules_listeners)): modules_listeners[key] = modules_listeners[key].strip() modules_handlers = conf['modules']['handlers'].split(',') for key in range(0, len(modules_handlers)): modules_handlers[key] = modules_handlers[key].strip() modules_all = modules_listeners + modules_handlers plugins = {} for module_name in modules_all: if (modules.has_key(module_name)): continue ldebug('loading module %s' % module_name) try: module_file, module_path, module_info = find_module( module_name, conf['general']['modulepath'].split(',')) except: lerror('unable to load module: %s' % module_name) continue try: module_object = load_module(module_name, module_file, module_path, module_info) finally: if (module_file): module_file.close() if (module_name in modules_listeners): try: for module_class in module_object.classes_list(1): plugins[module_class.__name__] = {} plugins[module_class.__name__]['type'] = [ 1, ] ldebug('loading listener %s' % module_class.__name__) plugins[module_class.__name__]['object'] = module_class() except: lerror('unable to load listeners of module: %s' % module_name) if (module_name in modules_handlers): try: for module_class in module_object.classes_list(2): if (plugins.has_key(module_class.__name__)): plugins[module_class.__name__]['type'].append(2) continue plugins[module_class.__name__] = {} plugins[module_class.__name__]['type'] = [ 2, ] ldebug('loading handler %s' % module_class.__name__) plugins[module_class.__name__]['object'] = module_class() except: lerror('unable to load handlers of module: %s' % module_name) return plugins
self.address = address def listen(self): serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: serversocket.bind((self.address, self.port)) except ValueError, serror: lerror('listening socket address error: %s ' % serror) return False except socket.error, serror: lerror('listening socket error (%d): %s ' % (serror[0], serror[1])) return False except: lerror('listening socket error') return False serversocket.listen(5) ldebug('server listening on %s:%d' % (self.address, self.port)) return serversocket class NetServer(Thread): def __init__(self, port=None, address=None): Thread.__init__(self) self.daemon = True self.runthread = True self.port = port self.address = address
self.address = address def listen(self): serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) try: serversocket.bind((self.address, self.port)) except ValueError, serror: lerror('listening socket address error: %s ' % serror) return False except socket.error, serror: lerror('listening socket error (%d): %s ' % (serror[0], serror[1])) return False except: lerror('listening socket error') return False serversocket.listen(5) ldebug('server listening on %s:%d' % (self.address, self.port)) return serversocket class NetServer(Thread): def __init__(self, port=None, address=None): Thread.__init__(self) self.daemon = True self.runthread = True self.port = port self.address = address