ruby_smb 3.1.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +1 -2
  3. data/examples/file_server.rb +8 -1
  4. data/examples/virtual_file_server.rb +143 -0
  5. data/lib/ruby_smb/fscc/file_information/file_access_information.rb +15 -0
  6. data/lib/ruby_smb/fscc/file_information/file_alignment_information.rb +45 -0
  7. data/lib/ruby_smb/fscc/file_information/file_all_information.rb +23 -0
  8. data/lib/ruby_smb/fscc/file_information/file_basic_information.rb +20 -0
  9. data/lib/ruby_smb/fscc/file_information/file_both_directory_information.rb +3 -3
  10. data/lib/ruby_smb/fscc/file_information/file_directory_information.rb +3 -3
  11. data/lib/ruby_smb/fscc/file_information/file_ea_information.rb +1 -0
  12. data/lib/ruby_smb/fscc/file_information/file_full_directory_information.rb +3 -3
  13. data/lib/ruby_smb/fscc/file_information/file_id_both_directory_information.rb +3 -3
  14. data/lib/ruby_smb/fscc/file_information/file_id_full_directory_information.rb +3 -3
  15. data/lib/ruby_smb/fscc/file_information/file_internal_information.rb +15 -0
  16. data/lib/ruby_smb/fscc/file_information/file_mode_information.rb +29 -0
  17. data/lib/ruby_smb/fscc/file_information/file_name_information.rb +16 -0
  18. data/lib/ruby_smb/fscc/file_information/file_names_information.rb +1 -1
  19. data/lib/ruby_smb/fscc/file_information/file_normalized_name_information.rb +16 -0
  20. data/lib/ruby_smb/fscc/file_information/file_position_information.rb +15 -0
  21. data/lib/ruby_smb/fscc/file_information/file_rename_information.rb +1 -1
  22. data/lib/ruby_smb/fscc/file_information/file_standard_information.rb +20 -0
  23. data/lib/ruby_smb/fscc/file_information/file_stream_information.rb +3 -0
  24. data/lib/ruby_smb/fscc/file_information.rb +41 -8
  25. data/lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information.rb +1 -0
  26. data/lib/ruby_smb/fscc/file_system_information/file_fs_volume_information.rb +1 -0
  27. data/lib/ruby_smb/fscc/file_system_information.rb +4 -0
  28. data/lib/ruby_smb/gss/provider/ntlm.rb +16 -3
  29. data/lib/ruby_smb/gss/provider.rb +10 -1
  30. data/lib/ruby_smb/server/server_client/session_setup.rb +4 -2
  31. data/lib/ruby_smb/server/server_client.rb +9 -1
  32. data/lib/ruby_smb/server/session.rb +5 -1
  33. data/lib/ruby_smb/server/share/provider/disk/processor/close.rb +9 -5
  34. data/lib/ruby_smb/server/share/provider/disk/processor/create.rb +2 -2
  35. data/lib/ruby_smb/server/share/provider/disk/processor/query.rb +2 -2
  36. data/lib/ruby_smb/server/share/provider/disk/processor/read.rb +15 -14
  37. data/lib/ruby_smb/server/share/provider/disk/processor.rb +76 -12
  38. data/lib/ruby_smb/server/share/provider/disk.rb +8 -2
  39. data/lib/ruby_smb/server/share/provider/virtual_disk/virtual_file.rb +85 -0
  40. data/lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname.rb +196 -0
  41. data/lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat.rb +175 -0
  42. data/lib/ruby_smb/server/share/provider/virtual_disk.rb +116 -0
  43. data/lib/ruby_smb/server/share/provider.rb +1 -0
  44. data/lib/ruby_smb/server.rb +13 -3
  45. data/lib/ruby_smb/smb2/tree.rb +1 -0
  46. data/lib/ruby_smb/version.rb +1 -1
  47. data/spec/lib/ruby_smb/fscc/file_information/file_access_information_spec.rb +21 -0
  48. data/spec/lib/ruby_smb/fscc/file_information/file_alignment_information_spec.rb +21 -0
  49. data/spec/lib/ruby_smb/fscc/file_information/file_all_information_spec.rb +61 -0
  50. data/spec/lib/ruby_smb/fscc/file_information/file_basic_information_spec.rb +41 -0
  51. data/spec/lib/ruby_smb/fscc/file_information/file_both_directory_information_spec.rb +59 -10
  52. data/spec/lib/ruby_smb/fscc/file_information/file_directory_information_spec.rb +30 -12
  53. data/spec/lib/ruby_smb/fscc/file_information/file_ea_information_spec.rb +21 -0
  54. data/spec/lib/ruby_smb/fscc/file_information/file_full_directory_information_spec.rb +30 -12
  55. data/spec/lib/ruby_smb/fscc/file_information/file_id_both_directory_information_spec.rb +63 -10
  56. data/spec/lib/ruby_smb/fscc/file_information/file_id_full_directory_information_spec.rb +30 -12
  57. data/spec/lib/ruby_smb/fscc/file_information/file_internal_information_spec.rb +21 -0
  58. data/spec/lib/ruby_smb/fscc/file_information/file_mode_information_spec.rb +21 -0
  59. data/spec/lib/ruby_smb/fscc/file_information/file_name_information_spec.rb +44 -0
  60. data/spec/lib/ruby_smb/fscc/file_information/file_names_information_spec.rb +30 -12
  61. data/spec/lib/ruby_smb/fscc/file_information/file_network_open_information_spec.rb +51 -0
  62. data/spec/lib/ruby_smb/fscc/file_information/file_normalized_name_information_spec.rb +44 -0
  63. data/spec/lib/ruby_smb/fscc/file_information/file_position_information_spec.rb +21 -0
  64. data/spec/lib/ruby_smb/fscc/file_information/file_rename_information_spec.rb +1 -1
  65. data/spec/lib/ruby_smb/fscc/file_information/file_standard_information_spec.rb +41 -0
  66. data/spec/lib/ruby_smb/fscc/file_information/file_stream_information_spec.rb +51 -0
  67. data/spec/lib/ruby_smb/fscc/file_information_spec.rb +14 -0
  68. data/spec/lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information_spec.rb +46 -0
  69. data/spec/lib/ruby_smb/fscc/file_system_information/file_fs_volume_information_spec.rb +51 -0
  70. data/spec/lib/ruby_smb/fscc/file_system_information_spec.rb +14 -0
  71. data/spec/lib/ruby_smb/server/server_client_spec.rb +15 -0
  72. data/spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname_spec.rb +581 -0
  73. data/spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat_spec.rb +207 -0
  74. data/spec/lib/ruby_smb/server/share/provider/virtual_disk_spec.rb +122 -0
  75. data.tar.gz.sig +0 -0
  76. metadata +57 -2
  77. metadata.gz.sig +0 -0
@@ -0,0 +1,207 @@
1
+ RSpec.describe RubySMB::Server::Share::Provider::VirtualDisk::VirtualStat do
2
+ subject(:virtual_stat) { described_class.new }
3
+
4
+ it { is_expected.to respond_to :atime }
5
+ it { is_expected.to respond_to :blksize }
6
+ it { is_expected.to respond_to :blockdev? }
7
+ it { is_expected.to respond_to :blocks }
8
+ it { is_expected.to respond_to :chardev? }
9
+ it { is_expected.to respond_to :ctime }
10
+ it { is_expected.to respond_to :dev }
11
+ it { is_expected.to respond_to :directory? }
12
+ it { is_expected.to respond_to :executable? }
13
+ it { is_expected.to respond_to :file? }
14
+ it { is_expected.to respond_to :ftype }
15
+ it { is_expected.to respond_to :gid }
16
+ it { is_expected.to respond_to :grpowned? }
17
+ it { is_expected.to respond_to :ino }
18
+ it { is_expected.to respond_to :mode }
19
+ it { is_expected.to respond_to :mtime }
20
+ it { is_expected.to respond_to :nlink }
21
+ it { is_expected.to respond_to :owned? }
22
+ it { is_expected.to respond_to :pipe? }
23
+ it { is_expected.to respond_to :readable? }
24
+ it { is_expected.to respond_to :setgid? }
25
+ it { is_expected.to respond_to :setuid? }
26
+ it { is_expected.to respond_to :size }
27
+ it { is_expected.to respond_to :socket? }
28
+ it { is_expected.to respond_to :sticky? }
29
+ it { is_expected.to respond_to :symlink? }
30
+ it { is_expected.to respond_to :uid }
31
+ it { is_expected.to respond_to :world_readable? }
32
+ it { is_expected.to respond_to :world_writable? }
33
+ it { is_expected.to respond_to :writable? }
34
+ it { is_expected.to respond_to :zero? }
35
+
36
+ describe '#initialize' do
37
+ it 'defaults to being a directory' do
38
+ expect(virtual_stat.directory?).to be true
39
+ end
40
+
41
+ it 'throws an exception when it is both a file and a directory' do
42
+ expect { described_class.new(directory?: true, file?: true) }.to raise_error(ArgumentError)
43
+ end
44
+
45
+ it 'throws an exception when it is neither a file or a directory' do
46
+ expect { described_class.new(directory?: false, file?: false) }.to raise_error(ArgumentError)
47
+ end
48
+
49
+ it 'is a directory when it is a directory' do
50
+ expect(described_class.new(directory?: true).directory?).to be true
51
+ end
52
+
53
+ it 'is a directory when not a file' do
54
+ expect(described_class.new(file?: false).directory?).to be true
55
+ end
56
+
57
+ it 'is a file when it is a file' do
58
+ expect(described_class.new(file?: true).file?).to be true
59
+ end
60
+
61
+ it 'is a file when not a directory' do
62
+ expect(described_class.new(directory?: false).file?).to be true
63
+ end
64
+ end
65
+
66
+ describe '#atime' do
67
+ it 'is expected to default to now' do
68
+ now = Time.now
69
+ expect(Time).to receive(:now).and_return(now)
70
+ expect(virtual_stat.atime).to eq now
71
+ end
72
+ end
73
+
74
+ describe '#ctime' do
75
+ it 'is expected to default to now' do
76
+ now = Time.now
77
+ expect(Time).to receive(:now).and_return(now)
78
+ expect(virtual_stat.ctime).to eq now
79
+ end
80
+ end
81
+
82
+ describe '#mtime' do
83
+ it 'is expected to default to now' do
84
+ now = Time.now
85
+ expect(Time).to receive(:now).and_return(now)
86
+ expect(virtual_stat.mtime).to eq now
87
+ end
88
+ end
89
+
90
+ describe '#birthtime' do
91
+ it 'is expected to default to now' do
92
+ now = Time.now
93
+ expect(Time).to receive(:now).and_return(now)
94
+ expect(virtual_stat.birthtime).to eq now
95
+ end
96
+ end
97
+
98
+ describe '#uid' do
99
+ it 'is expected to default to the current process uid' do
100
+ expect(virtual_stat.uid).to eq Process.uid
101
+ end
102
+ end
103
+
104
+ describe '#owned?' do
105
+ it 'is expected to return true when uid is this process' do
106
+ expect(virtual_stat).to receive(:uid).and_return(Process.uid)
107
+ expect(virtual_stat.owned?).to be true
108
+ end
109
+
110
+ it 'is expected to return false when uid is not this process' do
111
+ expect(virtual_stat).to receive(:uid)
112
+ expect(virtual_stat.owned?).to be false
113
+ end
114
+ end
115
+
116
+ describe '#gid' do
117
+ it 'is expected to default to the current process gid' do
118
+ expect(virtual_stat.gid).to eq Process.gid
119
+ end
120
+ end
121
+
122
+ describe '#grpowned?' do
123
+ it 'is expected to return true when gid is this process' do
124
+ expect(virtual_stat).to receive(:gid).and_return(Process.gid)
125
+ expect(virtual_stat.grpowned?).to be true
126
+ end
127
+
128
+ it 'is expected to return false when gid is not this process' do
129
+ expect(virtual_stat).to receive(:gid)
130
+ expect(virtual_stat.grpowned?).to be false
131
+ end
132
+ end
133
+
134
+ describe '#readable?' do
135
+ it 'is expected to readable by default' do
136
+ expect(virtual_stat.readable?).to be true
137
+ end
138
+ end
139
+
140
+ describe '#writable?' do
141
+ it 'is expected to writable by default' do
142
+ expect(virtual_stat.writable?).to be true
143
+ end
144
+ end
145
+
146
+ describe '#ftype' do
147
+ it 'is expected to be a String' do
148
+ expect(virtual_stat.ftype).to be_a String
149
+ end
150
+ end
151
+
152
+ # test each and every permission represented by the 12 possible bits
153
+ (0..12).each.map { |bit| (1 << bit) & 0o7777 }.each do |mode|
154
+ context "when mode is 0o#{mode.to_s(8).rjust(4, '0')}" do
155
+ before(:each) { expect(virtual_stat).to receive(:mode).at_least(:once).and_return(mode) }
156
+
157
+ describe '#executable?' do
158
+ it 'is correct' do
159
+ expect(virtual_stat.executable?).to eq mode & 0o111 != 0
160
+ end
161
+ end
162
+
163
+ describe '#readable?' do
164
+ it 'is correct' do
165
+ expect(virtual_stat.readable?).to eq mode & 0o444 != 0
166
+ end
167
+ end
168
+
169
+ describe '#setgid?' do
170
+ it 'is correct' do
171
+ expect(virtual_stat.setgid?).to eq mode & 0o2000 != 0
172
+ end
173
+ end
174
+
175
+ describe '#setuid?' do
176
+ it 'is correct' do
177
+ expect(virtual_stat.setuid?).to eq mode & 0o4000 != 0
178
+ end
179
+ end
180
+
181
+ describe '#sticky?' do
182
+ it 'is correct' do
183
+ expect(virtual_stat.sticky?).to eq mode & 0o1000 != 0
184
+ end
185
+ end
186
+
187
+ describe '#world_readable?' do
188
+ it 'is correct' do
189
+ expect(virtual_stat.world_readable?).to eq mode & 0o004 != 0
190
+ end
191
+ end
192
+
193
+ describe '#world_writable?' do
194
+ it 'is correct' do
195
+ expect(virtual_stat.world_writable?).to eq mode & 0o002 != 0
196
+ end
197
+ end
198
+
199
+ describe '#writable?' do
200
+ it 'is correct' do
201
+ expect(virtual_stat.writable?).to eq mode & 0o222 != 0
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end
207
+
@@ -0,0 +1,122 @@
1
+ RSpec.describe RubySMB::Server::Share::Provider::VirtualDisk do
2
+ let(:name) { 'vdisk' }
3
+ subject(:virtual_disk) { described_class.new(name) }
4
+
5
+ it { is_expected.to respond_to :name }
6
+ it { is_expected.to respond_to :path }
7
+ it { is_expected.to respond_to :type }
8
+ context 'it provides the basic Hash methods' do
9
+ it { is_expected.to respond_to :[] }
10
+ it { is_expected.to respond_to :each }
11
+ it { is_expected.to respond_to :each_key }
12
+ it { is_expected.to respond_to :each_value }
13
+ it { is_expected.to respond_to :keys }
14
+ it { is_expected.to respond_to :length }
15
+ it { is_expected.to respond_to :values }
16
+ end
17
+
18
+ describe '#add' do
19
+ let(:path) { '/path' }
20
+
21
+ it 'does not throw an exception if the stat object is not a file' do
22
+ stat = RubySMB::Server::Share::Provider::VirtualDisk::VirtualStat.new(file?: false)
23
+ vp = RubySMB::Server::Share::Provider::VirtualDisk::VirtualPathname.new({}, path, stat: stat)
24
+ expect { virtual_disk.add(vp) }.not_to raise_error
25
+ end
26
+
27
+ it 'throws an exception if the path is not absolute' do
28
+ vp = RubySMB::Server::Share::Provider::VirtualDisk::VirtualPathname.new({}, path[1..])
29
+ expect { virtual_disk.add(vp) }.to raise_error(ArgumentError)
30
+ end
31
+
32
+ it 'automatically creates parent directories' do
33
+ expect(virtual_disk.length).to eq 1 # starts with just the root folder
34
+ expect(RubySMB::Server::Share::Provider::VirtualDisk::VirtualPathname).to receive(:new).exactly(3).times.and_call_original
35
+ virtual_disk.add(RubySMB::Server::Share::Provider::VirtualDisk::VirtualPathname.new({}, File.join(path, 'sub', 'dir')))
36
+ expect(virtual_disk.length).to eq 4 # ends with the added item and 2 parent folders
37
+ end
38
+ end
39
+
40
+ describe '#add_dynamic_file' do
41
+ let(:path) { 'path' }
42
+ let(:content) { 'Hello World!' }
43
+ let(:block) { Proc.new { content } }
44
+
45
+ before(:each) { allow(virtual_disk).to receive(:add) }
46
+
47
+ it 'normalizes the path argument' do
48
+ expect(RubySMB::Server::Share::Provider::VirtualDisk::VirtualDynamicFile).to receive(:new).with(virtual_disk, File::SEPARATOR + path, stat: nil, &block)
49
+ virtual_disk.add_dynamic_file(path + '/dir/..', &block)
50
+ end
51
+
52
+ it 'initializes a new VirtualDynamicFile instance' do
53
+ expect(RubySMB::Server::Share::Provider::VirtualDisk::VirtualDynamicFile).to receive(:new)
54
+ virtual_disk.add_dynamic_file(path, &block)
55
+ end
56
+
57
+ it 'adds the mapped file' do
58
+ expect(virtual_disk).to receive(:add)
59
+ expect(virtual_disk.add_dynamic_file(path, &block))
60
+ end
61
+
62
+ it 'throws an exception if the stat object is not a file' do
63
+ stat = RubySMB::Server::Share::Provider::VirtualDisk::VirtualStat.new(file?: false)
64
+ expect { virtual_disk.add_dynamic_file(path, stat: stat, &block) }. to raise_error(ArgumentError)
65
+ end
66
+ end
67
+
68
+ describe '#add_mapped_file' do
69
+ let(:path) { 'path' }
70
+ let(:mapped_path) { 'mapped_path' }
71
+
72
+ before(:each) { allow(virtual_disk).to receive(:add) }
73
+
74
+ it 'normalizes the path argument' do
75
+ expect(RubySMB::Server::Share::Provider::VirtualDisk::VirtualMappedFile).to receive(:new).with(virtual_disk, File::SEPARATOR + path, mapped_path)
76
+ virtual_disk.add_mapped_file(path + '/dir/..', mapped_path)
77
+ end
78
+
79
+ it 'initializes a new VirtualMappedFile instance' do
80
+ expect(RubySMB::Server::Share::Provider::VirtualDisk::VirtualMappedFile).to receive(:new)
81
+ virtual_disk.add_mapped_file(path, mapped_path)
82
+ end
83
+
84
+ it 'adds the mapped file' do
85
+ expect(virtual_disk).to receive(:add)
86
+ expect(virtual_disk.add_mapped_file(path, mapped_path))
87
+ end
88
+
89
+ it 'throws an exception if the stat object is not a file' do
90
+ stat = RubySMB::Server::Share::Provider::VirtualDisk::VirtualStat.new(file?: false)
91
+ expect { virtual_disk.add_mapped_file(path, mapped_path, stat: stat) }. to raise_error(ArgumentError)
92
+ end
93
+ end
94
+
95
+ describe '#add_static_file' do
96
+ let(:path) { 'path' }
97
+ let(:content) { 'Hello World!' }
98
+
99
+ before(:each) { allow(virtual_disk).to receive(:add) }
100
+
101
+ it 'normalizes the path argument' do
102
+ expect(RubySMB::Server::Share::Provider::VirtualDisk::VirtualStaticFile).to receive(:new).with(virtual_disk, File::SEPARATOR + path, content, stat: nil)
103
+ virtual_disk.add_static_file(path + '/dir/..', content)
104
+ end
105
+
106
+ it 'initializes a new VirtualStaticFile instance' do
107
+ expect(RubySMB::Server::Share::Provider::VirtualDisk::VirtualStaticFile).to receive(:new)
108
+ virtual_disk.add_static_file(path, content)
109
+ end
110
+
111
+ it 'adds the mapped file' do
112
+ expect(virtual_disk).to receive(:add)
113
+ expect(virtual_disk.add_static_file(path, content))
114
+ end
115
+
116
+ it 'throws an exception if the stat object is not a file' do
117
+ stat = RubySMB::Server::Share::Provider::VirtualDisk::VirtualStat.new(file?: false)
118
+ expect { virtual_disk.add_static_file(path, content, stat: stat) }.to raise_error(ArgumentError)
119
+ end
120
+ end
121
+ end
122
+
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_smb
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Metasploit Hackers
@@ -97,7 +97,7 @@ cert_chain:
97
97
  EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
98
98
  9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
99
99
  -----END CERTIFICATE-----
100
- date: 2022-04-21 00:00:00.000000000 Z
100
+ date: 2022-05-04 00:00:00.000000000 Z
101
101
  dependencies:
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: redcarpet
@@ -279,6 +279,7 @@ files:
279
279
  - examples/read_registry_key_value.rb
280
280
  - examples/rename_file.rb
281
281
  - examples/tree_connect.rb
282
+ - examples/virtual_file_server.rb
282
283
  - examples/write_file.rb
283
284
  - lib/ruby_smb.rb
284
285
  - lib/ruby_smb/client.rb
@@ -436,6 +437,10 @@ files:
436
437
  - lib/ruby_smb/fscc/file_attributes.rb
437
438
  - lib/ruby_smb/fscc/file_full_ea_info.rb
438
439
  - lib/ruby_smb/fscc/file_information.rb
440
+ - lib/ruby_smb/fscc/file_information/file_access_information.rb
441
+ - lib/ruby_smb/fscc/file_information/file_alignment_information.rb
442
+ - lib/ruby_smb/fscc/file_information/file_all_information.rb
443
+ - lib/ruby_smb/fscc/file_information/file_basic_information.rb
439
444
  - lib/ruby_smb/fscc/file_information/file_both_directory_information.rb
440
445
  - lib/ruby_smb/fscc/file_information/file_directory_information.rb
441
446
  - lib/ruby_smb/fscc/file_information/file_disposition_information.rb
@@ -443,9 +448,15 @@ files:
443
448
  - lib/ruby_smb/fscc/file_information/file_full_directory_information.rb
444
449
  - lib/ruby_smb/fscc/file_information/file_id_both_directory_information.rb
445
450
  - lib/ruby_smb/fscc/file_information/file_id_full_directory_information.rb
451
+ - lib/ruby_smb/fscc/file_information/file_internal_information.rb
452
+ - lib/ruby_smb/fscc/file_information/file_mode_information.rb
453
+ - lib/ruby_smb/fscc/file_information/file_name_information.rb
446
454
  - lib/ruby_smb/fscc/file_information/file_names_information.rb
447
455
  - lib/ruby_smb/fscc/file_information/file_network_open_information.rb
456
+ - lib/ruby_smb/fscc/file_information/file_normalized_name_information.rb
457
+ - lib/ruby_smb/fscc/file_information/file_position_information.rb
448
458
  - lib/ruby_smb/fscc/file_information/file_rename_information.rb
459
+ - lib/ruby_smb/fscc/file_information/file_standard_information.rb
449
460
  - lib/ruby_smb/fscc/file_information/file_stream_information.rb
450
461
  - lib/ruby_smb/fscc/file_system_information.rb
451
462
  - lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information.rb
@@ -481,6 +492,10 @@ files:
481
492
  - lib/ruby_smb/server/share/provider/disk/processor/read.rb
482
493
  - lib/ruby_smb/server/share/provider/pipe.rb
483
494
  - lib/ruby_smb/server/share/provider/processor.rb
495
+ - lib/ruby_smb/server/share/provider/virtual_disk.rb
496
+ - lib/ruby_smb/server/share/provider/virtual_disk/virtual_file.rb
497
+ - lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname.rb
498
+ - lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat.rb
484
499
  - lib/ruby_smb/signing.rb
485
500
  - lib/ruby_smb/smb1.rb
486
501
  - lib/ruby_smb/smb1/andx_block.rb
@@ -752,14 +767,31 @@ files:
752
767
  - spec/lib/ruby_smb/field/utime_spec.rb
753
768
  - spec/lib/ruby_smb/fscc/ea_info_array_spec.rb
754
769
  - spec/lib/ruby_smb/fscc/file_full_ea_info_spec.rb
770
+ - spec/lib/ruby_smb/fscc/file_information/file_access_information_spec.rb
771
+ - spec/lib/ruby_smb/fscc/file_information/file_alignment_information_spec.rb
772
+ - spec/lib/ruby_smb/fscc/file_information/file_all_information_spec.rb
773
+ - spec/lib/ruby_smb/fscc/file_information/file_basic_information_spec.rb
755
774
  - spec/lib/ruby_smb/fscc/file_information/file_both_directory_information_spec.rb
756
775
  - spec/lib/ruby_smb/fscc/file_information/file_directory_information_spec.rb
757
776
  - spec/lib/ruby_smb/fscc/file_information/file_disposition_information_spec.rb
777
+ - spec/lib/ruby_smb/fscc/file_information/file_ea_information_spec.rb
758
778
  - spec/lib/ruby_smb/fscc/file_information/file_full_directory_information_spec.rb
759
779
  - spec/lib/ruby_smb/fscc/file_information/file_id_both_directory_information_spec.rb
760
780
  - spec/lib/ruby_smb/fscc/file_information/file_id_full_directory_information_spec.rb
781
+ - spec/lib/ruby_smb/fscc/file_information/file_internal_information_spec.rb
782
+ - spec/lib/ruby_smb/fscc/file_information/file_mode_information_spec.rb
783
+ - spec/lib/ruby_smb/fscc/file_information/file_name_information_spec.rb
761
784
  - spec/lib/ruby_smb/fscc/file_information/file_names_information_spec.rb
785
+ - spec/lib/ruby_smb/fscc/file_information/file_network_open_information_spec.rb
786
+ - spec/lib/ruby_smb/fscc/file_information/file_normalized_name_information_spec.rb
787
+ - spec/lib/ruby_smb/fscc/file_information/file_position_information_spec.rb
762
788
  - spec/lib/ruby_smb/fscc/file_information/file_rename_information_spec.rb
789
+ - spec/lib/ruby_smb/fscc/file_information/file_standard_information_spec.rb
790
+ - spec/lib/ruby_smb/fscc/file_information/file_stream_information_spec.rb
791
+ - spec/lib/ruby_smb/fscc/file_information_spec.rb
792
+ - spec/lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information_spec.rb
793
+ - spec/lib/ruby_smb/fscc/file_system_information/file_fs_volume_information_spec.rb
794
+ - spec/lib/ruby_smb/fscc/file_system_information_spec.rb
763
795
  - spec/lib/ruby_smb/fscc/fscc_file_attributes_spec.rb
764
796
  - spec/lib/ruby_smb/generic_packet_spec.rb
765
797
  - spec/lib/ruby_smb/gss/provider/ntlm/account_spec.rb
@@ -774,6 +806,9 @@ files:
774
806
  - spec/lib/ruby_smb/server/session_spec.rb
775
807
  - spec/lib/ruby_smb/server/share/provider/disk_spec.rb
776
808
  - spec/lib/ruby_smb/server/share/provider/pipe_spec.rb
809
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname_spec.rb
810
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat_spec.rb
811
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk_spec.rb
777
812
  - spec/lib/ruby_smb/server/share/provider_spec.rb
778
813
  - spec/lib/ruby_smb/server_spec.rb
779
814
  - spec/lib/ruby_smb/smb1/andx_block_spec.rb
@@ -1042,14 +1077,31 @@ test_files:
1042
1077
  - spec/lib/ruby_smb/field/utime_spec.rb
1043
1078
  - spec/lib/ruby_smb/fscc/ea_info_array_spec.rb
1044
1079
  - spec/lib/ruby_smb/fscc/file_full_ea_info_spec.rb
1080
+ - spec/lib/ruby_smb/fscc/file_information/file_access_information_spec.rb
1081
+ - spec/lib/ruby_smb/fscc/file_information/file_alignment_information_spec.rb
1082
+ - spec/lib/ruby_smb/fscc/file_information/file_all_information_spec.rb
1083
+ - spec/lib/ruby_smb/fscc/file_information/file_basic_information_spec.rb
1045
1084
  - spec/lib/ruby_smb/fscc/file_information/file_both_directory_information_spec.rb
1046
1085
  - spec/lib/ruby_smb/fscc/file_information/file_directory_information_spec.rb
1047
1086
  - spec/lib/ruby_smb/fscc/file_information/file_disposition_information_spec.rb
1087
+ - spec/lib/ruby_smb/fscc/file_information/file_ea_information_spec.rb
1048
1088
  - spec/lib/ruby_smb/fscc/file_information/file_full_directory_information_spec.rb
1049
1089
  - spec/lib/ruby_smb/fscc/file_information/file_id_both_directory_information_spec.rb
1050
1090
  - spec/lib/ruby_smb/fscc/file_information/file_id_full_directory_information_spec.rb
1091
+ - spec/lib/ruby_smb/fscc/file_information/file_internal_information_spec.rb
1092
+ - spec/lib/ruby_smb/fscc/file_information/file_mode_information_spec.rb
1093
+ - spec/lib/ruby_smb/fscc/file_information/file_name_information_spec.rb
1051
1094
  - spec/lib/ruby_smb/fscc/file_information/file_names_information_spec.rb
1095
+ - spec/lib/ruby_smb/fscc/file_information/file_network_open_information_spec.rb
1096
+ - spec/lib/ruby_smb/fscc/file_information/file_normalized_name_information_spec.rb
1097
+ - spec/lib/ruby_smb/fscc/file_information/file_position_information_spec.rb
1052
1098
  - spec/lib/ruby_smb/fscc/file_information/file_rename_information_spec.rb
1099
+ - spec/lib/ruby_smb/fscc/file_information/file_standard_information_spec.rb
1100
+ - spec/lib/ruby_smb/fscc/file_information/file_stream_information_spec.rb
1101
+ - spec/lib/ruby_smb/fscc/file_information_spec.rb
1102
+ - spec/lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information_spec.rb
1103
+ - spec/lib/ruby_smb/fscc/file_system_information/file_fs_volume_information_spec.rb
1104
+ - spec/lib/ruby_smb/fscc/file_system_information_spec.rb
1053
1105
  - spec/lib/ruby_smb/fscc/fscc_file_attributes_spec.rb
1054
1106
  - spec/lib/ruby_smb/generic_packet_spec.rb
1055
1107
  - spec/lib/ruby_smb/gss/provider/ntlm/account_spec.rb
@@ -1064,6 +1116,9 @@ test_files:
1064
1116
  - spec/lib/ruby_smb/server/session_spec.rb
1065
1117
  - spec/lib/ruby_smb/server/share/provider/disk_spec.rb
1066
1118
  - spec/lib/ruby_smb/server/share/provider/pipe_spec.rb
1119
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname_spec.rb
1120
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat_spec.rb
1121
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk_spec.rb
1067
1122
  - spec/lib/ruby_smb/server/share/provider_spec.rb
1068
1123
  - spec/lib/ruby_smb/server_spec.rb
1069
1124
  - spec/lib/ruby_smb/smb1/andx_block_spec.rb
metadata.gz.sig CHANGED
Binary file