def stat(self): if self.content_provider.get(self.path) is None: return SFTP_NO_SUCH_FILE mtime = calendar.timegm(datetime.now().timetuple()) sftp_attrs = SFTPAttributes() sftp_attrs.st_size = self.content_provider.get_size(self.path) sftp_attrs.st_uid = 0 sftp_attrs.st_gid = 0 sftp_attrs.st_mode = (stat.S_IRWXO | stat.S_IRWXG | stat.S_IRWXU | (stat.S_IFDIR if self.content_provider.is_dir( self.path) else stat.S_IFREG)) sftp_attrs.st_atime = mtime sftp_attrs.st_mtime = mtime sftp_attrs.filename = os.path.basename(self.path) return sftp_attrs
def chattr(self, path: Text, attr: SFTPAttributes) -> int: self.session.sftp_client_ready.wait() if self.session.sftp_client is None: raise MissingClient("self.session.sftp_client is None!") if attr.st_mode: return self.session.sftp_client.chmod(path, attr.st_mode) remotestat = self.stat(path) if isinstance(remotestat, int): return remotestat oldattr = paramiko.SFTPAttributes.from_stat( cast(os.stat_result, remotestat)) if not attr.st_uid: attr.st_uid = oldattr.st_uid if not attr.st_gid: attr.st_gid = oldattr.st_gid if attr.st_uid is None or attr.st_gid is None: return paramiko.sftp.SFTP_FAILURE return self.session.sftp_client.chown(path, attr.st_uid, attr.st_gid)
def stat(self): if self.content_provider.get(self.path) is None: return SFTP_NO_SUCH_FILE mtime = calendar.timegm(datetime.now().timetuple()) sftp_attrs = SFTPAttributes() sftp_attrs.st_size = self.content_provider.get_size(self.path) sftp_attrs.st_uid = 0 sftp_attrs.st_gid = 0 sftp_attrs.st_mode = ( stat.S_IRWXO | stat.S_IRWXG | stat.S_IRWXU | ( stat.S_IFDIR if self.content_provider.is_dir(self.path) else stat.S_IFREG ) ) sftp_attrs.st_atime = mtime sftp_attrs.st_mtime = mtime sftp_attrs.filename = os.path.basename(self.path) return sftp_attrs