Module: Rex::FileUtils
- Defined in:
- lib/rex/file.rb
Overview
This class provides helper methods for dealing with files that are not supplied by the standard ruby API.
Defined Under Namespace
Classes: UnitTest
Class Method Summary collapse
-
.clean_path(old) ⇒ Object
This methods cleans the supplied path of directory traversal sequences It must accept path/with/..a/folder../starting/or/ending/in/two/dots but clean ../something as well as path/with/..traversal.
-
.find_full_path(file_name) ⇒ Object
This method searches the PATH environment variable for a fully qualified path to the supplied file name.
Class Method Details
.clean_path(old) ⇒ Object
This methods cleans the supplied path of directory traversal sequences It must accept path/with/..a/folder../starting/or/ending/in/two/dots but clean ../something as well as path/with/..traversal
21 22 23 24 25 26 27 28 29 |
# File 'lib/rex/file.rb', line 21 def self.clean_path(old) path = old while(path.index(/\/..\/|\/..\\|\\..\\|\\..\/|\A..\\|\A..\//) != nil) path.gsub!(/\A..\\|\A..\//,'') #eliminate starting ..\ or ../ path.gsub!(/\/..\/|\/..\\/,'/') #clean linux style path.gsub!(/\\..\\|\\..\//,'\\') #clean windows style end path end |
.find_full_path(file_name) ⇒ Object
This method searches the PATH environment variable for a fully qualified path to the supplied file name.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/rex/file.rb', line 35 def self.find_full_path(file_name) # Check for the absolute fast first if (file_name[0,1] == "/" and ::File.exists?(file_name) and ::File::Stat.new(file_name)) return file_name end path = Rex::Compat.getenv('PATH') if (path) path.split(::File::PATH_SEPARATOR).each { |base| begin # Deal with Windows paths surrounded by quotes. Prevents # silliness like trying to look for # '"C:\\framework\\nmap"\\nmap.exe' which will always fail. base = $1 if base =~ /^"(.*)"$/ path = base + ::File::SEPARATOR + file_name if (::File::Stat.new(path) and not ::File.directory?(path)) return path end rescue end } end return nil end |