ruby_smb 3.1.0 → 3.1.3

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 (85) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/examples/file_server.rb +6 -61
  4. data/examples/virtual_file_server.rb +91 -0
  5. data/lib/ruby_smb/client/negotiation.rb +7 -7
  6. data/lib/ruby_smb/client.rb +2 -2
  7. data/lib/ruby_smb/fscc/file_information/file_access_information.rb +15 -0
  8. data/lib/ruby_smb/fscc/file_information/file_alignment_information.rb +45 -0
  9. data/lib/ruby_smb/fscc/file_information/file_all_information.rb +23 -0
  10. data/lib/ruby_smb/fscc/file_information/file_basic_information.rb +20 -0
  11. data/lib/ruby_smb/fscc/file_information/file_both_directory_information.rb +3 -3
  12. data/lib/ruby_smb/fscc/file_information/file_directory_information.rb +3 -3
  13. data/lib/ruby_smb/fscc/file_information/file_ea_information.rb +1 -0
  14. data/lib/ruby_smb/fscc/file_information/file_full_directory_information.rb +3 -3
  15. data/lib/ruby_smb/fscc/file_information/file_id_both_directory_information.rb +3 -3
  16. data/lib/ruby_smb/fscc/file_information/file_id_full_directory_information.rb +3 -3
  17. data/lib/ruby_smb/fscc/file_information/file_internal_information.rb +15 -0
  18. data/lib/ruby_smb/fscc/file_information/file_mode_information.rb +29 -0
  19. data/lib/ruby_smb/fscc/file_information/file_name_information.rb +16 -0
  20. data/lib/ruby_smb/fscc/file_information/file_names_information.rb +1 -1
  21. data/lib/ruby_smb/fscc/file_information/file_normalized_name_information.rb +16 -0
  22. data/lib/ruby_smb/fscc/file_information/file_position_information.rb +15 -0
  23. data/lib/ruby_smb/fscc/file_information/file_rename_information.rb +1 -1
  24. data/lib/ruby_smb/fscc/file_information/file_standard_information.rb +20 -0
  25. data/lib/ruby_smb/fscc/file_information/file_stream_information.rb +3 -0
  26. data/lib/ruby_smb/fscc/file_information.rb +41 -8
  27. data/lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information.rb +1 -0
  28. data/lib/ruby_smb/fscc/file_system_information/file_fs_volume_information.rb +1 -0
  29. data/lib/ruby_smb/fscc/file_system_information.rb +4 -0
  30. data/lib/ruby_smb/gss/provider/ntlm.rb +20 -3
  31. data/lib/ruby_smb/gss/provider.rb +10 -1
  32. data/lib/ruby_smb/ntlm/client.rb +74 -0
  33. data/lib/ruby_smb/ntlm.rb +1 -0
  34. data/lib/ruby_smb/server/cli.rb +121 -0
  35. data/lib/ruby_smb/server/server_client/session_setup.rb +4 -2
  36. data/lib/ruby_smb/server/server_client.rb +9 -1
  37. data/lib/ruby_smb/server/session.rb +5 -1
  38. data/lib/ruby_smb/server/share/provider/disk/processor/close.rb +9 -5
  39. data/lib/ruby_smb/server/share/provider/disk/processor/create.rb +2 -2
  40. data/lib/ruby_smb/server/share/provider/disk/processor/query.rb +2 -2
  41. data/lib/ruby_smb/server/share/provider/disk/processor/read.rb +15 -14
  42. data/lib/ruby_smb/server/share/provider/disk/processor.rb +76 -12
  43. data/lib/ruby_smb/server/share/provider/disk.rb +8 -2
  44. data/lib/ruby_smb/server/share/provider/virtual_disk/virtual_file.rb +85 -0
  45. data/lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname.rb +196 -0
  46. data/lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat.rb +175 -0
  47. data/lib/ruby_smb/server/share/provider/virtual_disk.rb +116 -0
  48. data/lib/ruby_smb/server/share/provider.rb +1 -0
  49. data/lib/ruby_smb/server.rb +14 -3
  50. data/lib/ruby_smb/smb2/tree.rb +1 -0
  51. data/lib/ruby_smb/version.rb +1 -1
  52. data/spec/lib/ruby_smb/client_spec.rb +11 -2
  53. data/spec/lib/ruby_smb/fscc/file_information/file_access_information_spec.rb +21 -0
  54. data/spec/lib/ruby_smb/fscc/file_information/file_alignment_information_spec.rb +21 -0
  55. data/spec/lib/ruby_smb/fscc/file_information/file_all_information_spec.rb +61 -0
  56. data/spec/lib/ruby_smb/fscc/file_information/file_basic_information_spec.rb +41 -0
  57. data/spec/lib/ruby_smb/fscc/file_information/file_both_directory_information_spec.rb +59 -10
  58. data/spec/lib/ruby_smb/fscc/file_information/file_directory_information_spec.rb +30 -12
  59. data/spec/lib/ruby_smb/fscc/file_information/file_ea_information_spec.rb +21 -0
  60. data/spec/lib/ruby_smb/fscc/file_information/file_full_directory_information_spec.rb +30 -12
  61. data/spec/lib/ruby_smb/fscc/file_information/file_id_both_directory_information_spec.rb +63 -10
  62. data/spec/lib/ruby_smb/fscc/file_information/file_id_full_directory_information_spec.rb +30 -12
  63. data/spec/lib/ruby_smb/fscc/file_information/file_internal_information_spec.rb +21 -0
  64. data/spec/lib/ruby_smb/fscc/file_information/file_mode_information_spec.rb +21 -0
  65. data/spec/lib/ruby_smb/fscc/file_information/file_name_information_spec.rb +44 -0
  66. data/spec/lib/ruby_smb/fscc/file_information/file_names_information_spec.rb +30 -12
  67. data/spec/lib/ruby_smb/fscc/file_information/file_network_open_information_spec.rb +51 -0
  68. data/spec/lib/ruby_smb/fscc/file_information/file_normalized_name_information_spec.rb +44 -0
  69. data/spec/lib/ruby_smb/fscc/file_information/file_position_information_spec.rb +21 -0
  70. data/spec/lib/ruby_smb/fscc/file_information/file_rename_information_spec.rb +1 -1
  71. data/spec/lib/ruby_smb/fscc/file_information/file_standard_information_spec.rb +41 -0
  72. data/spec/lib/ruby_smb/fscc/file_information/file_stream_information_spec.rb +51 -0
  73. data/spec/lib/ruby_smb/fscc/file_information_spec.rb +14 -0
  74. data/spec/lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information_spec.rb +46 -0
  75. data/spec/lib/ruby_smb/fscc/file_system_information/file_fs_volume_information_spec.rb +51 -0
  76. data/spec/lib/ruby_smb/fscc/file_system_information_spec.rb +14 -0
  77. data/spec/lib/ruby_smb/ntlm/client/session_spec.rb +114 -0
  78. data/spec/lib/ruby_smb/ntlm/client_spec.rb +36 -0
  79. data/spec/lib/ruby_smb/server/server_client_spec.rb +15 -0
  80. data/spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname_spec.rb +581 -0
  81. data/spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat_spec.rb +207 -0
  82. data/spec/lib/ruby_smb/server/share/provider/virtual_disk_spec.rb +122 -0
  83. data.tar.gz.sig +2 -2
  84. metadata +63 -2
  85. 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
@@ -1,2 +1,2 @@
1
- ��,�xAD[NFOr���}����l�C� N���6�M�#+�q��H͓(�ސ��Դ���Eݎ(��9qi!��fjfWVk�#�@��g�����O~�˫��1�w*��R�B�`HP�J�b�ppЂ���\i*&{Xh4@��q%$Iu�Ur���r�r�c����H4�&�r�D0ǔ�3���뫭�X��8�����x�E^+C�:N�כ�j�!�F��$ CS��/I�
2
- ��HW0�ޟj
1
+ ��組��IFhvh����Pwv}�!��D��*�(Ba%�"'G`�^P w���
2
+ �h$byj}�������D6���pW[d�y.«����M���d)�@��\��٧
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.0
4
+ version: 3.1.3
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-12 00:00:00.000000000 Z
100
+ date: 2022-05-24 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
@@ -462,7 +473,9 @@ files:
462
473
  - lib/ruby_smb/nbss/session_header.rb
463
474
  - lib/ruby_smb/nbss/session_request.rb
464
475
  - lib/ruby_smb/ntlm.rb
476
+ - lib/ruby_smb/ntlm/client.rb
465
477
  - lib/ruby_smb/server.rb
478
+ - lib/ruby_smb/server/cli.rb
466
479
  - lib/ruby_smb/server/server_client.rb
467
480
  - lib/ruby_smb/server/server_client/encryption.rb
468
481
  - lib/ruby_smb/server/server_client/negotiation.rb
@@ -481,6 +494,10 @@ files:
481
494
  - lib/ruby_smb/server/share/provider/disk/processor/read.rb
482
495
  - lib/ruby_smb/server/share/provider/pipe.rb
483
496
  - lib/ruby_smb/server/share/provider/processor.rb
497
+ - lib/ruby_smb/server/share/provider/virtual_disk.rb
498
+ - lib/ruby_smb/server/share/provider/virtual_disk/virtual_file.rb
499
+ - lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname.rb
500
+ - lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat.rb
484
501
  - lib/ruby_smb/signing.rb
485
502
  - lib/ruby_smb/smb1.rb
486
503
  - lib/ruby_smb/smb1/andx_block.rb
@@ -752,14 +769,31 @@ files:
752
769
  - spec/lib/ruby_smb/field/utime_spec.rb
753
770
  - spec/lib/ruby_smb/fscc/ea_info_array_spec.rb
754
771
  - spec/lib/ruby_smb/fscc/file_full_ea_info_spec.rb
772
+ - spec/lib/ruby_smb/fscc/file_information/file_access_information_spec.rb
773
+ - spec/lib/ruby_smb/fscc/file_information/file_alignment_information_spec.rb
774
+ - spec/lib/ruby_smb/fscc/file_information/file_all_information_spec.rb
775
+ - spec/lib/ruby_smb/fscc/file_information/file_basic_information_spec.rb
755
776
  - spec/lib/ruby_smb/fscc/file_information/file_both_directory_information_spec.rb
756
777
  - spec/lib/ruby_smb/fscc/file_information/file_directory_information_spec.rb
757
778
  - spec/lib/ruby_smb/fscc/file_information/file_disposition_information_spec.rb
779
+ - spec/lib/ruby_smb/fscc/file_information/file_ea_information_spec.rb
758
780
  - spec/lib/ruby_smb/fscc/file_information/file_full_directory_information_spec.rb
759
781
  - spec/lib/ruby_smb/fscc/file_information/file_id_both_directory_information_spec.rb
760
782
  - spec/lib/ruby_smb/fscc/file_information/file_id_full_directory_information_spec.rb
783
+ - spec/lib/ruby_smb/fscc/file_information/file_internal_information_spec.rb
784
+ - spec/lib/ruby_smb/fscc/file_information/file_mode_information_spec.rb
785
+ - spec/lib/ruby_smb/fscc/file_information/file_name_information_spec.rb
761
786
  - spec/lib/ruby_smb/fscc/file_information/file_names_information_spec.rb
787
+ - spec/lib/ruby_smb/fscc/file_information/file_network_open_information_spec.rb
788
+ - spec/lib/ruby_smb/fscc/file_information/file_normalized_name_information_spec.rb
789
+ - spec/lib/ruby_smb/fscc/file_information/file_position_information_spec.rb
762
790
  - spec/lib/ruby_smb/fscc/file_information/file_rename_information_spec.rb
791
+ - spec/lib/ruby_smb/fscc/file_information/file_standard_information_spec.rb
792
+ - spec/lib/ruby_smb/fscc/file_information/file_stream_information_spec.rb
793
+ - spec/lib/ruby_smb/fscc/file_information_spec.rb
794
+ - spec/lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information_spec.rb
795
+ - spec/lib/ruby_smb/fscc/file_system_information/file_fs_volume_information_spec.rb
796
+ - spec/lib/ruby_smb/fscc/file_system_information_spec.rb
763
797
  - spec/lib/ruby_smb/fscc/fscc_file_attributes_spec.rb
764
798
  - spec/lib/ruby_smb/generic_packet_spec.rb
765
799
  - spec/lib/ruby_smb/gss/provider/ntlm/account_spec.rb
@@ -770,10 +804,15 @@ files:
770
804
  - spec/lib/ruby_smb/nbss/netbios_name_spec.rb
771
805
  - spec/lib/ruby_smb/nbss/session_header_spec.rb
772
806
  - spec/lib/ruby_smb/nbss/session_request_spec.rb
807
+ - spec/lib/ruby_smb/ntlm/client/session_spec.rb
808
+ - spec/lib/ruby_smb/ntlm/client_spec.rb
773
809
  - spec/lib/ruby_smb/server/server_client_spec.rb
774
810
  - spec/lib/ruby_smb/server/session_spec.rb
775
811
  - spec/lib/ruby_smb/server/share/provider/disk_spec.rb
776
812
  - spec/lib/ruby_smb/server/share/provider/pipe_spec.rb
813
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname_spec.rb
814
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat_spec.rb
815
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk_spec.rb
777
816
  - spec/lib/ruby_smb/server/share/provider_spec.rb
778
817
  - spec/lib/ruby_smb/server_spec.rb
779
818
  - spec/lib/ruby_smb/smb1/andx_block_spec.rb
@@ -1042,14 +1081,31 @@ test_files:
1042
1081
  - spec/lib/ruby_smb/field/utime_spec.rb
1043
1082
  - spec/lib/ruby_smb/fscc/ea_info_array_spec.rb
1044
1083
  - spec/lib/ruby_smb/fscc/file_full_ea_info_spec.rb
1084
+ - spec/lib/ruby_smb/fscc/file_information/file_access_information_spec.rb
1085
+ - spec/lib/ruby_smb/fscc/file_information/file_alignment_information_spec.rb
1086
+ - spec/lib/ruby_smb/fscc/file_information/file_all_information_spec.rb
1087
+ - spec/lib/ruby_smb/fscc/file_information/file_basic_information_spec.rb
1045
1088
  - spec/lib/ruby_smb/fscc/file_information/file_both_directory_information_spec.rb
1046
1089
  - spec/lib/ruby_smb/fscc/file_information/file_directory_information_spec.rb
1047
1090
  - spec/lib/ruby_smb/fscc/file_information/file_disposition_information_spec.rb
1091
+ - spec/lib/ruby_smb/fscc/file_information/file_ea_information_spec.rb
1048
1092
  - spec/lib/ruby_smb/fscc/file_information/file_full_directory_information_spec.rb
1049
1093
  - spec/lib/ruby_smb/fscc/file_information/file_id_both_directory_information_spec.rb
1050
1094
  - spec/lib/ruby_smb/fscc/file_information/file_id_full_directory_information_spec.rb
1095
+ - spec/lib/ruby_smb/fscc/file_information/file_internal_information_spec.rb
1096
+ - spec/lib/ruby_smb/fscc/file_information/file_mode_information_spec.rb
1097
+ - spec/lib/ruby_smb/fscc/file_information/file_name_information_spec.rb
1051
1098
  - spec/lib/ruby_smb/fscc/file_information/file_names_information_spec.rb
1099
+ - spec/lib/ruby_smb/fscc/file_information/file_network_open_information_spec.rb
1100
+ - spec/lib/ruby_smb/fscc/file_information/file_normalized_name_information_spec.rb
1101
+ - spec/lib/ruby_smb/fscc/file_information/file_position_information_spec.rb
1052
1102
  - spec/lib/ruby_smb/fscc/file_information/file_rename_information_spec.rb
1103
+ - spec/lib/ruby_smb/fscc/file_information/file_standard_information_spec.rb
1104
+ - spec/lib/ruby_smb/fscc/file_information/file_stream_information_spec.rb
1105
+ - spec/lib/ruby_smb/fscc/file_information_spec.rb
1106
+ - spec/lib/ruby_smb/fscc/file_system_information/file_fs_attribute_information_spec.rb
1107
+ - spec/lib/ruby_smb/fscc/file_system_information/file_fs_volume_information_spec.rb
1108
+ - spec/lib/ruby_smb/fscc/file_system_information_spec.rb
1053
1109
  - spec/lib/ruby_smb/fscc/fscc_file_attributes_spec.rb
1054
1110
  - spec/lib/ruby_smb/generic_packet_spec.rb
1055
1111
  - spec/lib/ruby_smb/gss/provider/ntlm/account_spec.rb
@@ -1060,10 +1116,15 @@ test_files:
1060
1116
  - spec/lib/ruby_smb/nbss/netbios_name_spec.rb
1061
1117
  - spec/lib/ruby_smb/nbss/session_header_spec.rb
1062
1118
  - spec/lib/ruby_smb/nbss/session_request_spec.rb
1119
+ - spec/lib/ruby_smb/ntlm/client/session_spec.rb
1120
+ - spec/lib/ruby_smb/ntlm/client_spec.rb
1063
1121
  - spec/lib/ruby_smb/server/server_client_spec.rb
1064
1122
  - spec/lib/ruby_smb/server/session_spec.rb
1065
1123
  - spec/lib/ruby_smb/server/share/provider/disk_spec.rb
1066
1124
  - spec/lib/ruby_smb/server/share/provider/pipe_spec.rb
1125
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_pathname_spec.rb
1126
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk/virtual_stat_spec.rb
1127
+ - spec/lib/ruby_smb/server/share/provider/virtual_disk_spec.rb
1067
1128
  - spec/lib/ruby_smb/server/share/provider_spec.rb
1068
1129
  - spec/lib/ruby_smb/server_spec.rb
1069
1130
  - spec/lib/ruby_smb/smb1/andx_block_spec.rb
metadata.gz.sig CHANGED
Binary file