示例#1
0
    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: drozer module remote create http://path.to.repository/\n"
示例#2
0
文件: manager.py 项目: 0xr0ot/drozer
    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: drozer module remote create http://path.to.repository/\n"
示例#3
0
    def do_list(self, arguments):
        """shows a list of all remotes"""

        print "Remote repositories:"
        for url in Remote.all():
            print "  %s" % url

            try:
                Remote(url).download("INDEX.xml")
            except NetworkException:
                print "    INACCESSIBLE"
        print
示例#4
0
 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
示例#5
0
文件: manager.py 项目: 0xr0ot/drozer
 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: drozer module remote delete http://path.to.repository/\n"
示例#6
0
    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: drozer module remote delete http://path.to.repository/\n"
示例#7
0
    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
示例#8
0
    def testItShouldRetrieveAllWithoutAConfigFile(self):
        Configuration._Configuration__config = self.mockConfigWithoutRemotes()
        # if there are no remotes specified, we should create a default one pointing
        # to the Github repository

        assert Remote.all() == [
            'https://raw.github.com/mwrlabs/drozer-modules/repository/'
        ]
示例#9
0
 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)
示例#10
0
 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)
示例#11
0
    def testItShouldNotRemoteARemoteTheDoesNotExist(self):
        Configuration._Configuration__config = self.mockConfigWithRemotes([])

        try:
            assert Remote.delete("http://myremote.com/")

            assert False, "expected UnknownRemote"
        except UnknownRemote:
            pass
示例#12
0
文件: manager.py 项目: 0xr0ot/drozer
    def do_list(self, arguments):
        """shows a list of all remotes"""
        
        print "Remote repositories:"
        for url in Remote.all():
            print "  %s" % url

            try:
                Remote(url).download("INDEX.xml")
            except NetworkException:
                print "    INACCESSIBLE"
        print
示例#13
0
    def testItShouldRetrieveNoRemotes(self):
        Configuration._Configuration__config = self.mockConfigWithRemotes([])

        assert Remote.all() == []
示例#14
0
    def testItShouldNotReAddARemote(self):
        Configuration._Configuration__config = self.mockConfigWithRemotes(
            ["http://myremote.com/"])

        assert not Remote.create("http://myremote.com/")
        assert Remote.all() == ["http://myremote.com/"]
示例#15
0
    def testItShouldRemoveARemote(self):
        Configuration._Configuration__config = self.mockConfigWithRemotes(
            ["http://myremote.com/"])

        assert Remote.delete("http://myremote.com/")
        assert Remote.all() == []
示例#16
0
    def testItShouldGetARemote(self):
        Configuration._Configuration__config = self.mockConfigWithRemotes(
            ["http://myremote.com/"])

        assert isinstance(Remote.get("http://myremote.com/"), Remote)
示例#17
0
    def testItShouldGetNoneIfARemoteDoesNotExist(self):
        Configuration._Configuration__config = self.mockConfigWithRemotes([])

        assert Remote.get("http://myremote.com/") == None
示例#18
0
 def testItShouldConstructAValidDownloadPathIfNoTrailingSlashIsGiven(self):
     assert Remote("http://myremote.com").buildPath(
         "INDEX") == "http://myremote.com/INDEX"
示例#19
0
    def testItShouldRetrieveASingleRemote(self):
        Configuration._Configuration__config = self.mockConfigWithRemotes(
            ['http://www.mercury.com'])

        assert Remote.all() == ['http://www.mercury.com']