Esempio n. 1
0
class _ChopLibShell(Thread):
    def __init__(self, queuetracker):
        Thread.__init__(self, name='ChopLibShell')
        self.request = None
        self.liason = None
        self.queuetracker = queuetracker

        self.choplib = None
        self.stopped = False

    def associate(self, liason, request):
        if self.liason is not None:
            try:
                self.request = None
                self.liason.deassociate()
            except:
                pass

        self.liason = liason
        self.request = request

    def deassociate(self, liason, request):
        if self.liason == liason:
            self.request = None
            self.liason = None

    def _force_deassociate(self):
        if self.liason is not None:
            self.request = None
            self.liason = None

    def stop(self):
        if self.liason is not None:
            try:
                self.liason.deassociate()
            except:
                pass
        self.stopped = True

    def send_message(self, message):
        self.request.ws_stream.send_message(message, binary=False)

    def setup_choplib(self):
        if self.choplib is not None:
            self.destroy_choplib()

        self.choplib = ChopLib()
        self.choplib.text = True

        if self.queuetracker is None:
            raise Exception  #queuetracker is managed by the the webui
        self.queuetracker.set_queue(self.choplib.get_message_queue())

    def setup_choplib_from_config(self, chopconfig):
        if self.choplib is not None:
            self.destroy_choplib()

        self.choplib = ChopLib()
        self.choplib.text = True

        if not os.path.exists(chopconfig.filename):
            raise ValueError("Unable to find file '%s'" % chopconfig.filename)
        self.choplib.filename = chopconfig.filename
        self.choplib.base_dir = chopconfig.base_dir
        self.choplib.mod_dir = chopconfig.mod_dir
        self.choplib.ext_dir = chopconfig.ext_dir
        self.choplib.aslist = chopconfig.aslist
        self.choplib.longrun = chopconfig.longrun
        self.choplib.modinfo = chopconfig.modinfo
        self.choplib.GMT = chopconfig.GMT
        self.choplib.bpf = chopconfig.bpf
        self.choplib.modules = chopconfig.modules
        #if chopconfig.savedir:
        #pass
        #chopui.savefiles = True
        #chopui.savedir = chopconfig.savedir
        #self.choplib.savefiles = True

        if self.queuetracker is None:
            raise Exception  #queuetracker is managed by the the webui
        self.queuetracker.set_queue(self.choplib.get_message_queue())

    def destroy_choplib(self):
        self.queuetracker.unset_queue()
        if self.choplib is not None:
            self.choplib.stop()
            self.choplib = None

    def reset_choplib(self):
        options = self.choplib.options
        self.destroy_choplib()
        self.setup_choplib()
        self.choplib.options = options

    def run_module_info(self, modules):
        clib = ChopLib()
        clib.text = True
        clib.modules = modules
        clib.modinfo = True
        clib.start()

        stopped = False
        message_queue = clib.get_message_queue()

        while not stopped and clib.is_alive():
            try:
                message = message_queue.get(True, .1)
            except Queue.Empty, e:
                continue

            #clean up messages
            if message['type'] == 'ctrl':
                #self.send_message(message['data']['msg'] )
                if message['data']['msg'] == 'finished':
                    stopped = True
            elif message['type'] == 'text':
                self.send_message(message['data']['data'])

        clib.join()
        del clib
Esempio n. 2
0
class _ChopLibShell(Thread):
    def __init__(self, queuetracker):
        Thread.__init__(self, name='ChopLibShell')
        self.request = None
        self.liason = None
        self.queuetracker = queuetracker

        self.choplib = None
        self.stopped = False

    def associate(self, liason, request):
        if self.liason is not None:
            try:
                self.request = None
                self.liason.deassociate()
            except:
                pass

        self.liason = liason
        self.request = request

    def deassociate(self, liason, request):
        if self.liason == liason:
            self.request = None
            self.liason = None

    def _force_deassociate(self):
        if self.liason is not None:
            self.request = None
            self.liason = None

    def stop(self):
        if self.liason is not None:
            try:
                self.liason.deassociate()
            except:
                pass
        self.stopped = True

    def send_message(self, message):
        self.request.ws_stream.send_message(message, binary=False)

    def setup_choplib(self):
        if self.choplib is not None:
            self.destroy_choplib()

        self.choplib = ChopLib()
        self.choplib.text = True

        if self.queuetracker is None:
            raise Exception  #queuetracker is managed by the the webui
        self.queuetracker.set_queue(self.choplib.get_message_queue())

    def destroy_choplib(self):
        self.queuetracker.unset_queue()
        if self.choplib is not None:
            self.choplib.stop()
            self.choplib = None

    def reset_choplib(self):
        options = self.choplib.options
        self.destroy_choplib()
        self.setup_choplib()
        self.choplib.options = options

    def run_module_info(self, modules):
        clib = ChopLib()
        clib.text = True
        clib.modules = modules
        clib.modinfo = True
        clib.start()

        stopped = False
        message_queue = clib.get_message_queue()

        while not stopped and clib.is_alive():
            try:
                message = message_queue.get(True, .1)
            except Queue.Empty, e:
                continue

            #clean up messages
            if message['type'] == 'ctrl':
                #self.send_message(message['data']['msg'] )
                if message['data']['msg'] == 'finished':
                    stopped = True
            elif message['type'] == 'text':
                self.send_message(message['data']['data'])

        clib.join()
        del clib
Esempio n. 3
0
class _ChopLibShell(Thread):
    def __init__(self, queuetracker):
        Thread.__init__(self, name = 'ChopLibShell')
        self.request = None 
        self.liason = None
        self.queuetracker = queuetracker

        self.choplib = None
        self.stopped = False


    def associate(self, liason, request):
        if self.liason is not None:
            try:
                self.request = None
                self.liason.deassociate()
            except:
                pass

        self.liason = liason
        self.request = request

    def deassociate(self, liason, request):
        if self.liason == liason:
            self.request = None
            self.liason = None
   
    def _force_deassociate(self):
        if self.liason is not None:
            self.request = None
            self.liason = None

    def stop(self):
        if self.liason is not None:
            try:
                self.liason.deassociate()
            except:
                pass
        self.stopped = True

    def send_message(self, message):
        self.request.ws_stream.send_message(message, binary = False)

    def setup_choplib(self):
        if self.choplib is not None:
            self.destroy_choplib()

        self.choplib = ChopLib()
        self.choplib.text = True

        if self.queuetracker is None:
            raise Exception #queuetracker is managed by the the webui
        self.queuetracker.set_queue(self.choplib.get_message_queue())

    def destroy_choplib(self):
        self.queuetracker.unset_queue()
        if self.choplib is not None:
            self.choplib.stop()
            self.choplib = None

    def reset_choplib(self):
        options = self.choplib.options
        self.destroy_choplib()
        self.setup_choplib()
        self.choplib.options = options

    def run_module_info(self, modules):
        clib = ChopLib()
        clib.text = True
        clib.modules = modules
        clib.modinfo = True
        clib.start()

        stopped = False
        message_queue = clib.get_message_queue()

        while not stopped and clib.is_alive():
            try:
                message = message_queue.get(True, .1)
            except Queue.Empty, e:
                continue

            #clean up messages
            if message['type'] == 'ctrl':
                #self.send_message(message['data']['msg'] )
                if message['data']['msg'] == 'finished':
                    stopped = True
            elif message['type'] == 'text':
                self.send_message(message['data']['data'])

        clib.join()         
        del clib
Esempio n. 4
0
class _ChopLibShell(Thread):
    def __init__(self, queuetracker):
        Thread.__init__(self, name = 'ChopLibShell')
        self.request = None 
        self.liason = None
        self.queuetracker = queuetracker

        self.choplib = None
        self.stopped = False


    def associate(self, liason, request):
        if self.liason is not None:
            try:
                self.request = None
                self.liason.deassociate()
            except:
                pass

        self.liason = liason
        self.request = request

    def deassociate(self, liason, request):
        if self.liason == liason:
            self.request = None
            self.liason = None
   
    def _force_deassociate(self):
        if self.liason is not None:
            self.request = None
            self.liason = None

    def stop(self):
        if self.liason is not None:
            try:
                self.liason.deassociate()
            except:
                pass
        self.stopped = True

    def send_message(self, message):
        self.request.ws_stream.send_message(message, binary = False)

    def setup_choplib(self):
        if self.choplib is not None:
            self.destroy_choplib()

        self.choplib = ChopLib()
        self.choplib.text = True

        if self.queuetracker is None:
            raise Exception #queuetracker is managed by the the webui
        self.queuetracker.set_queue(self.choplib.get_message_queue())

    def setup_choplib_from_config(self, chopconfig):
        if self.choplib is not None:
            self.destroy_choplib()

        self.choplib = ChopLib()
        self.choplib.text = True

        if not os.path.exists(chopconfig.filename):
            raise ValueError("Unable to find file '%s'" % chopconfig.filename)
        self.choplib.filename = chopconfig.filename
        self.choplib.base_dir = chopconfig.base_dir
        self.choplib.mod_dir = chopconfig.mod_dir
        self.choplib.ext_dir = chopconfig.ext_dir
        self.choplib.aslist = chopconfig.aslist
        self.choplib.longrun = chopconfig.longrun
        self.choplib.modinfo = chopconfig.modinfo
        self.choplib.GMT = chopconfig.GMT
        self.choplib.bpf = chopconfig.bpf
        self.choplib.modules = chopconfig.modules
        #if chopconfig.savedir:
            #pass
            #chopui.savefiles = True
            #chopui.savedir = chopconfig.savedir
            #self.choplib.savefiles = True

        if self.queuetracker is None:
            raise Exception #queuetracker is managed by the the webui
        self.queuetracker.set_queue(self.choplib.get_message_queue())

    def destroy_choplib(self):
        self.queuetracker.unset_queue()
        if self.choplib is not None:
            self.choplib.stop()
            self.choplib = None

    def reset_choplib(self):
        options = self.choplib.options
        self.destroy_choplib()
        self.setup_choplib()
        self.choplib.options = options

    def run_module_info(self, modules):
        clib = ChopLib()
        clib.text = True
        clib.modules = modules
        clib.modinfo = True
        clib.start()

        stopped = False
        message_queue = clib.get_message_queue()

        while not stopped and clib.is_alive():
            try:
                message = message_queue.get(True, .1)
            except Queue.Empty, e:
                continue

            #clean up messages
            if message['type'] == 'ctrl':
                #self.send_message(message['data']['msg'] )
                if message['data']['msg'] == 'finished':
                    stopped = True
            elif message['type'] == 'text':
                self.send_message(message['data']['data'])

        clib.join()         
        del clib