def do_add(self, arguments): """add a new remote module repository""" if len(arguments.options) == 1: url = arguments.options[0] Remote.create(url) print "Added remote: %s.\n" % url else: print "usage: andsploit module remote create http://path.to.repository/\n"
def __read_remote_module(self, module): """ Read a module file from a remote, and return the source. """ for url in Remote.all(): source = Remote.get(url).download(module) # if we found the source, we return straight away - this allows us to # install the module from the first source that we come across if source != None: return source return None
def do_remove(self, arguments): """remove a remote module repository""" if len(arguments.options) == 1: url = arguments.options[0] try: Remote.delete(url) print "Removed remove %s.\n" % url except UnknownRemote: print "The target (%s) is not a remote module repository.\n" % url else: print "usage: andsploit module remote delete http://path.to.repository/\n"
def do_list(self, arguments): """shows a list of all remotes""" print "Remote repositories:" for url in Remote.all(): print " %s" % url print
def __get_combined_index(self): """ Fetches INDEX files from all known remotes, and builds a combined INDEX listing of all available modules. """ index = set([]) for url in Remote.all(): source = Remote.get(url).download("INDEX.xml") if source != None: modules = xml.fromstring(source) index = index.union(map(lambda m: ModuleInfo(url, m.attrib['name'], m.find("./description").text), modules.findall("./module"))) return filter(lambda m: m != None and m != "", index)