Ejemplo n.º 1
0
 def chattr(self, path, attr):
     path = self._realpath(path)
     try:
         SFTPServer.set_file_attr(path, attr)
     except OSError as e:
         return SFTPServer.convert_errno(e.errno)
     return SFTP_OK
Ejemplo n.º 2
0
 def chattr(self, attr):
     # python doesn't have equivalents to fchown or fchmod, so we have to
     # use the stored filename
     try:
         SFTPServer.set_file_attr(self.filename, attr)
         return SFTP_OK
     except OSError, e:
         return SFTPServer.convert_errno(e.errno)
Ejemplo n.º 3
0
 def mkdir(self, path, attr):
     path = self._realpath(path)
     try:
         os.mkdir(path)
         if attr is not None:
             SFTPServer.set_file_attr(path, attr)
     except OSError, e:
         return SFTPServer.convert_errno(e.errno)
Ejemplo n.º 4
0
 def open(self, path, flags, attr):
     path = self._realpath(path)
     try:
         binary_flag = getattr(os, 'O_BINARY',  0)
         flags |= binary_flag
         mode = getattr(attr, 'st_mode', None)
         if mode is not None:
             fd = os.open(path, flags, mode)
         else:
             # os.open() defaults to 0777 which is
             # an odd default mode for files
             fd = os.open(path, flags, 0o666)
     except OSError as e:
         return SFTPServer.convert_errno(e.errno)
     if (flags & os.O_CREAT) and (attr is not None):
         attr._flags &= ~attr.FLAG_PERMISSIONS
         SFTPServer.set_file_attr(path, attr)
     if flags & os.O_WRONLY:
         if flags & os.O_APPEND:
             fstr = 'ab'
         else:
             fstr = 'wb'
     elif flags & os.O_RDWR:
         if flags & os.O_APPEND:
             fstr = 'a+b'
         else:
             fstr = 'r+b'
     else:
         # O_RDONLY (== 0)
         fstr = 'rb'
     try:
         f = os.fdopen(fd, fstr)
     except OSError as e:
         return SFTPServer.convert_errno(e.errno)
     fobj = StubSFTPHandle(flags)
     fobj.filename = path
     fobj.readfile = f
     fobj.writefile = f
     return fobj
Ejemplo n.º 5
0
 def chattr(self, path, attr):
     path = self._realpath(path)
     try:
         SFTPServer.set_file_attr(path, attr)
     except OSError, e:
         return SFTPServer.convert_errno(e.errno)
Ejemplo n.º 6
0
 path = self._realpath(path)
 try:
     binary_flag = getattr(os, 'O_BINARY',  0)
     flags |= binary_flag
     mode = getattr(attr, 'st_mode', None)
     if mode is not None:
         fd = os.open(path, flags, mode)
     else:
         # os.open() defaults to 0777 which is
         # an odd default mode for files
         fd = os.open(path, flags, 0666)
 except OSError, e:
     return SFTPServer.convert_errno(e.errno)
 if (flags & os.O_CREAT) and (attr is not None):
     attr._flags &= ~attr.FLAG_PERMISSIONS
     SFTPServer.set_file_attr(path, attr)
 if flags & os.O_WRONLY:
     if flags & os.O_APPEND:
         fstr = 'ab'
     else:
         fstr = 'wb'
 elif flags & os.O_RDWR:
     if flags & os.O_APPEND:
         fstr = 'a+b'
     else:
         fstr = 'r+b'
 else:
     # O_RDONLY (== 0)
     fstr = 'rb'
 try:
     f = os.fdopen(fd, fstr)