forked from rapid7/metasploit-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfile.rb
172 lines (157 loc) · 3.25 KB
/
file.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# -*- coding: binary -*-
require 'rex/post/io'
module Rex
module Post
# make this a module so we can mix it in, and have inheritence like..
# => [Rex::Post::DispatchNinja::File, Rex::Post::File,
# Rex::Post::DispatchNinja::IO, Rex::Post::IO, Object, Kernel]
###
#
# This module simulates the behavior that one would expect from the Ruby File
# class against a remote entity. Refer to the ruby documentation for expected
# behavior.
#
###
module File
protected
# inherits fd and mode from IO
attr_accessor :filename
public
# f = File.new("testfile", "r")
# f = File.new("newfile", "w+")
# f = File.new("newfile", File::CREAT|File::TRUNC|File::RDWR, 0644)
# !!! I suppose I should figure out the correct default for perm..
def initialize(name, mode='r', perm=0)
end
def path
filename
end
# ctime/atime blah need fstat..
# need lchown/chown/fchown, etc, etc
# proxy these methods
def File.basename(*a)
::File.basename(*a)
end
def File.dirname(*a)
::File.dirname(*a)
end
def File.extname(*a)
::File.extname(*a)
end
# !!! we might actually want to handle this File::SEPERATOR stuff
# for win32 support, etc.
def File.join(*a)
::File.join(*a)
end
def File.chmod
raise NotImplementedError
end
def File.chown
raise NotImplementedError
end
def File.delete(*a)
unlink(*a)
end
def File.unlink
raise NotImplementedError
end
def File.lchmod
raise NotImplementedError
end
def File.lchown
raise NotImplementedError
end
def File.link
raise NotImplementedError
end
def File.lstat
raise NotImplementedError
end
# this, along with all the other globbing/search stuff, probably
# won't get implemented, atleast for a bit...
def File.expand_path
raise NotImplementedError
end
def File.fnmatch(*a)
fnmatch?(*a)
end
def File.fnmatch?
raise NotImplementedError
end
#
# autogen'd stat passthroughs
#
def File.atime(name)
stat(name).atime
end
def File.blockdev?(name)
stat(name).blockdev?
end
def File.chardev?(name)
stat(name).chardev?
end
def File.ctime(name)
stat(name).ctime
end
def File.directory?(name)
stat(name).directory?
end
def File.executable?(name)
stat(name).executable?
end
def File.executable_real?(name)
stat(name).executable_real?
end
def File.file?(name)
stat(name).file?
end
def File.ftype(name)
stat(name).ftype
end
def File.grpowned?(name)
stat(name).grpowned?
end
def File.mtime(name)
stat(name).mtime
end
def File.owned?(name)
stat(name).owned?
end
def File.pipe?(name)
stat(name).pipe?
end
def File.readable?(name)
stat(name).readable?
end
def File.readable_real?(name)
stat(name).readable_real?
end
def File.setuid?(name)
stat(name).setuid?
end
def File.setgid?(name)
stat(name).setgid?
end
def File.size(name)
stat(name).size
end
def File.socket?(name)
stat(name).socket?
end
def File.sticky?(name)
stat(name).sticky?
end
def File.symlink?(name)
stat(name).symlink?
end
def File.writeable?(name)
stat(name).writeable?
end
def File.writeable_real?(name)
stat(name).writeable_real?
end
def File.zero?(name)
stat(name).zero?
end
end
end; end # Post/Rex