예제 #1
0
파일: netserver.py 프로젝트: well100/GS3
    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')
예제 #2
0
	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')
예제 #3
0
파일: netserver.py 프로젝트: well100/GS3
    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
예제 #4
0
	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
예제 #5
0
    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')
예제 #6
0
파일: asterisk.py 프로젝트: Hibbelharry/GS3
	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')
예제 #7
0
파일: netserver.py 프로젝트: well100/GS3
    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:
예제 #8
0
	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:
예제 #9
0
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
예제 #10
0
파일: netserver.py 프로젝트: well100/GS3
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
예제 #11
0
파일: eventmanager.py 프로젝트: well100/GS3
    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)
예제 #12
0
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
예제 #13
0
파일: netserver.py 프로젝트: well100/GS3
        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
예제 #14
0
	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)
예제 #15
0
		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