def __init__(self, configfile, base_dir, log_dir, stdin=None, stdout=None, stderr=None): """@brief Initialize the Fuzzbunch object @param configfile The main Fuzzbunch configuration file (an XML file) @param base_dir @param log_dir Location for Fuzzbunch log files @param stdin @param stdout @param stderr """ # Initialize the command interpreter, which creates a CmdCtx self.configvars = {} # Stores global config info (not setg globals) self.readconfig(configfile) # Read in variables set for Fuzzbunch # Fix bug #2910 - Color breaks in some terminals that don't support ansi encoding. Added # option to disable color enablecolor = eval(self.configvars['globals']['Color']) FbCmd.__init__(self, stdin=stdin, stdout=stdout, stderr=stderr, enablecolor=enablecolor ) # Set the info function to Fuzzbunch's print_info function self.defaultcontext.print_info = self.print_info self.preconfig() self.fbglobalvars = util.iDict() # Our Fuzzbunch global variables self.pluginmanagers = util.iDict() # A list of PluginManagers, each # of which contains a list of Plugins. # Create our Session manager, which has a list of the plugins we've run self.session = session.Session(self.name) self.session.set_dirs(base_dir, log_dir) # Set the logdir from the Fuzzbunch.xml file, which will be overridden # later when retarget is executed self.default_logdir = os.path.normpath(log_dir) self.set_logdir(log_dir) # Create a Redirection object to keep track of the status of redirection, and to # perform transforms on the parameters prior to and after executing plugins self.redirection = redirection.RedirectionManager(self.io) self.fontdir = os.path.join(base_dir, "fonts") self.storage = os.path.join(base_dir, "storage") self.setbanner() self.postconfig() self.pwnies = False self.conv_tools = util.iDict([('MultiLine', self.toolpaste_ep), ('MD5', self.toolpaste_md5), ('SHA1', self.toolpaste_sha1), ('Base64', self.toolpaste_base64), ]) self.log = log(self.name, self.version, dict(debugging=True, enabled=True, verbose=False))
def precmd(self, line): """Intercept user cmd line to global replacement""" newline = util.variable_replace(line, self.fbglobalvars) return FbCmd.precmd(self, newline)