def setup_gui(self): if self.options.gui: self.cui = ChopUI() self.cui.setup_core_ref(self.inq)
class UiCommander: def __init__(self, inq, outq, dataq): self.inq = inq self.outq = outq self.dataq = dataq self.helpers = [] self.panellist = [] self.to_outs = {} self.dbgid = -1 self.cui = None self.formats = {} def setup_opts(self, optparser): optparser.add_option("-g", "--gui", action="store_true", dest="gui", default=False, help="Enable ChopShop Gui") optparser.add_option("-D", "--debug", action="store_true", dest="debug", default=False, help="Enable Debug") optparser.add_option( "-S", "--stdout", action="store_true", dest="stdout", default=False, help="Explicitly enable output to stdout", ) optparser.add_option( "-F", "--fileout", action="store", dest="fileout", type="string", default=None, help="Enable File Output" ) optparser.add_option( "-s", "--savedir", action="store", dest="savedir", type="string", default="/tmp", help="Location to save carved files", ) optparser.add_option( "-J", "--jsonout", action="store", dest="jsonout", type="string", default=None, help="Enable JSON Output" ) def setup_var(self, options): status = "" if not options.gui and options.fileout is None and not options.stdout: self.to_outs["to_stdout"] = True status += "\tDefaulted to stdout output\n" if options.stdout: self.to_outs["to_stdout"] = True status += "\tEnabled stdout output\n" if options.gui: self.to_outs["to_ui"] = True status += "\tEnabled ui output\n" if options.fileout is not None: if options.fileout[0] == "-": print ("Ambiguous file format: '" + options.fileout + "' -- please fix and run again\n") sys.exit(-1) else: if __parse_filepath__(options.fileout, "placeholder") is None: print ("Invalid syntax for file output\n") sys.exit(-1) else: status += "\tEnabled file output to '" + options.fileout + "'\n" self.to_outs["to_file"] = True self.formats["fileformat"] = options.fileout if options.jsonout is not None: if options.jsonout[0] == "-": print ("Ambigous json format: '" + options.jsonout + "' -- please fix and run again\n") sys.exit(-1) else: status += "\tEnabled json output to '" + options.jsonout + "'\n" self.to_outs["to_json"] = True self.formats["jsonformat"] = options.jsonout if __parse_filepath__(options.jsonout, "placeholder") is None: print ("Invalid syntax for json output\n") sys.exit(-1) # Check the format of savedir if options.savedir[0] == "-": print ("Ambigous savedir format: '" + options.savedir + "' -- please fix and run again\n") sys.exit(-1) else: status += "\tSet file save directory to '" + options.savedir + "'\n" self.to_outs["savedir"] = True self.formats["savedir"] = options.savedir if __parse_filepath__(options.savedir, "placeholder") is None: print ("Invalid syntax for savedir\n") sys.exit(-1) # Save the options we got for later use and create a printlock self.options = options self.printlock = Lock() # -1 removes the last \n since chop.print adds a \n return status[:-1] def setup_gui(self): if self.options.gui: self.cui = ChopUI() self.cui.setup_core_ref(self.inq) def setup_windows(self): data = self.inq.get() if data[0] != "ready": pass self.outq.put(["to_outs", self.to_outs]) self.outq.put(["formats", self.formats]) self.uihelper = UiHelper(self.dataq, self.to_outs, self.printlock, self.panellist) self.uihelper.setDaemon(True) self.uihelper.start() while True: data = self.inq.get() if data[0] == "window": self.setup_window(data[1]) elif data[0] == "fini": break self.uihelper.set_dbgid(self.dbgid) def setup_window(self, name): self.__add_panel_(name) def start_gui(self): if self.options.gui: self.cui.go() def stop_gui(self): if self.options.gui: self.cui.stop() def join(self): if self.options.gui: self.cui.join() self.uihelper.stop() self.uihelper.join() ### Internal Functions ### def __add_panel_(self, name): mypan = None if self.options.gui: mypan = self.cui.new_panel(name) self.panellist.append(mypan) if name == "Debug": self.dbgid = len(self.panellist) - 1