Example #1
0
 def do_run(self, options, args):        
 
     try:
         fs_url = args[0]
     except IndexError:
         fs_url = './'            
         
     fs, path = self.open_fs(fs_url)
     
     if fs.isdir(path):
         fs = fs.opendir(path)
         path = '/'
             
     self.output("Opened %s\n" % fs, verbose=True)
                 
     port = options.port
         
     try:
                             
         if options.type == 'http':            
             from fs.expose.http import serve_fs            
             if port is None:
                 port = 80
             self.output("Starting http server on %s:%i\n" % (options.addr, port), verbose=True)         
             serve_fs(fs, options.addr, port)                
                 
         elif options.type == 'rpc':            
             from fs.expose.xmlrpc import RPCFSServer
             if port is None:
                 port = 80
             s = RPCFSServer(fs, (options.addr, port))
             self.output("Starting rpc server on %s:%i\n" % (options.addr, port), verbose=True)
             s.serve_forever()                
         
         elif options.type == 'sftp':            
             from fs.expose.sftp import BaseSFTPServer
             import logging
             log = logging.getLogger('paramiko')
             if options.debug:
                 log.setLevel(logging.DEBUG)
             elif options.verbose:
                 log.setLevel(logging.INFO)
             ch = logging.StreamHandler()
             ch.setLevel(logging.DEBUG)
             log.addHandler(ch)
             
             if port is None:
                 port = 22
             server = BaseSFTPServer((options.addr, port), fs)
             try:
                 self.output("Starting sftp server on %s:%i\n" % (options.addr, port), verbose=True)
                 server.serve_forever()
             except Exception, e:
                 pass
             finally:
                 server.server_close()
Example #2
0
    def do_run(self, options, args):

        try:
            fs_url = args[0]
        except IndexError:
            fs_url = './'

        fs, path = self.open_fs(fs_url)

        if fs.isdir(path):
            fs = fs.opendir(path)
            path = '/'

        self.output("Opened %s\n" % fs, verbose=True)

        port = options.port

        try:

            if options.type == 'http':
                from fs.expose.http import serve_fs
                if port is None:
                    port = 80
                self.output("Starting http server on %s:%i\n" %
                            (options.addr, port),
                            verbose=True)
                serve_fs(fs, options.addr, port)

            elif options.type == 'rpc':
                from fs.expose.xmlrpc import RPCFSServer
                if port is None:
                    port = 80
                s = RPCFSServer(fs, (options.addr, port))
                self.output("Starting rpc server on %s:%i\n" %
                            (options.addr, port),
                            verbose=True)
                s.serve_forever()

            elif options.type == 'ftp':
                from fs.expose.ftp import serve_fs
                if port is None:
                    port = 21
                self.output("Starting ftp server on %s:%i\n" %
                            (options.addr, port),
                            verbose=True)
                serve_fs(fs, options.addr, port)

            elif options.type == 'sftp':
                from fs.expose.sftp import BaseSFTPServer
                import logging
                log = logging.getLogger('paramiko')
                if options.debug:
                    log.setLevel(logging.DEBUG)
                elif options.verbose:
                    log.setLevel(logging.INFO)
                ch = logging.StreamHandler()
                ch.setLevel(logging.DEBUG)
                log.addHandler(ch)

                if port is None:
                    port = 22
                server = BaseSFTPServer((options.addr, port), fs)
                try:
                    self.output("Starting sftp server on %s:%i\n" %
                                (options.addr, port),
                                verbose=True)
                    server.serve_forever()
                except Exception, e:
                    pass
                finally:
                    server.server_close()
Example #3
0
def start(capability, address = '', port = 8000):
    fs = TahoeLAFS(capability)
    http.serve_fs(fs, address, port)