Exemplo n.º 1
0
 def stat(self, params):
     self.assert_permission(Session.MODE_INFO)
     if params is None:
         params = ""
     tokens = params.split(" ", 1)
     asFile = tokens[0]!="N"
     if len(tokens)>1:
         path = tokens[1]
     else:
         path = "."
     path = self.makeabs(path)
     fi = FileInfo(path)
     if not fi.exists():
         self.control.write_message("500 Directory/file does not exist or cannot be accessed!")
         return Session.ACTION_CONTINUE
     if asFile or not fi.is_dir():
         file_list = [ fi ]
     else:
         file_list = [ FileInfo(os.path.normpath(os.path.join(path,p))) for p in os.listdir(path)]
     self.control.write_message("211- Sending file list")
     for f in file_list:
         try:
             self.control.write_message(" %s" % f.simple_list())
         except:
             # don't want to fail here
             pass
     self.control.write_message("211 End of file list")
     return Session.ACTION_CONTINUE
Exemplo n.º 2
0
 def send_directory_listing(self, path, mlsd=False, linux_mode=False):
     fi = FileInfo(path)
     if not fi.exists() or not fi.is_dir():
         self.control.write_message("500 Directory does not exist.")
         return Session.ACTION_CLOSE_DATA
     try:
         file_list = os.listdir(path)
     except Exception as e:
         self.control.write_message("500 Error listing <%s>: %s"% (path, str(e)))
         return Session.ACTION_CLOSE_DATA
     self.control.write_message("150 OK")
     for p in file_list:
         try:
             fi = FileInfo(os.path.normpath(os.path.join(path,p)))
             if mlsd:
                 self.data.write_message(fi.as_mlist())
             elif linux_mode:
                 self.data.write_message(fi.list())
             else:
                 self.data.write_message(fi.simple_list())
         except Exception as e:
             self.LOG.debug("Error listing %s : %s" % (p, str(e)) )
     self.post_transfer()
     return Session.ACTION_CLOSE_DATA