Module: Ftpd::DiskFileSystem::List
- Includes:
- TranslateExceptions
- Included in:
- Ftpd::DiskFileSystem, ReadOnlyDiskFileSystem
- Defined in:
- lib/ftpd/disk_file_system.rb
Overview
DiskFileSystem mixin providing directory listing
Instance Method Summary collapse
-
#dir(ftp_path) ⇒ Array<String>
Expand a path that may contain globs into a list of paths of matching files and directories.
-
#file_info(ftp_path) ⇒ FileInfo
Get information about a single file or directory.
Methods included from TranslateExceptions
included, #translate_exception
Instance Method Details
#dir(ftp_path) ⇒ Array<String>
Expand a path that may contain globs into a list of paths of matching files and directories. The paths returned are fully qualified, relative to the root of the virtual file system.
For example, suppose these files exist on the physical file system:
/var/lib/ftp/foo/foo
/var/lib/ftp/foo/subdir/bar
/var/lib/ftp/foo/subdir/baz
and that the directory /var/lib/ftp is the root of the virtual file system. Then:
dir('foo') # => ['/foo']
dir('subdir') # => ['/subdir']
dir('subdir/*') # => ['/subdir/bar', '/subdir/baz']
dir('*') # => ['/foo', '/subdir']
Called for:
-
LIST
-
NLST
If missing, then these commands are not supported.
303 304 305 306 307 |
# File 'lib/ftpd/disk_file_system.rb', line 303 def dir(ftp_path) Dir[(ftp_path)].map do |path| path.sub(/^#{@data_dir}/, '') end end |
#file_info(ftp_path) ⇒ FileInfo
Get information about a single file or directory. Should follow symlinks (per http://cr.yp.to/ftp/list/eplf.html, “lstat() is not a good idea for FTP directory listings”).
Called for:
-
LIST
If missing, then these commands are not supported.
260 261 262 263 264 265 266 267 268 269 270 271 |
# File 'lib/ftpd/disk_file_system.rb', line 260 def file_info(ftp_path) stat = File.stat((ftp_path)) FileInfo.new(:ftype => stat.ftype, :group => gid_name(stat.gid), :identifier => identifier(stat), :mode => stat.mode, :mtime => stat.mtime, :nlink => stat.nlink, :owner => uid_name(stat.uid), :path => ftp_path, :size => stat.size) end |