ftpd 2.0.1 → 2.0.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.
- checksums.yaml +4 -4
- data/Changelog.md +6 -0
- data/Gemfile +2 -15
- data/Gemfile.lock +12 -51
- data/README.md +12 -0
- data/VERSION +1 -1
- data/bin/ftpdrb +17 -12
- data/examples/write_only.rb +61 -0
- data/ftpd.gemspec +59 -261
- data/lib/ftpd/session.rb +51 -51
- metadata +11 -153
- data/.travis.yml +0 -6
- data/features/example/eplf.feature +0 -14
- data/features/example/example.feature +0 -18
- data/features/example/read_only.feature +0 -63
- data/features/example/step_definitions/example_server.rb +0 -13
- data/features/ftp_server/abort.feature +0 -13
- data/features/ftp_server/allo.feature +0 -33
- data/features/ftp_server/append.feature +0 -94
- data/features/ftp_server/cdup.feature +0 -36
- data/features/ftp_server/command_errors.feature +0 -13
- data/features/ftp_server/concurrent_sessions.feature +0 -14
- data/features/ftp_server/delay_after_failed_login.feature +0 -23
- data/features/ftp_server/delete.feature +0 -60
- data/features/ftp_server/directory_navigation.feature +0 -59
- data/features/ftp_server/disconnect_after_failed_logins.feature +0 -25
- data/features/ftp_server/eprt.feature +0 -56
- data/features/ftp_server/epsv.feature +0 -37
- data/features/ftp_server/features.feature +0 -38
- data/features/ftp_server/file_structure.feature +0 -43
- data/features/ftp_server/get.feature +0 -80
- data/features/ftp_server/get_ipv6.feature +0 -46
- data/features/ftp_server/get_tls.feature +0 -23
- data/features/ftp_server/help.feature +0 -21
- data/features/ftp_server/implicit_tls.feature +0 -23
- data/features/ftp_server/invertability.feature +0 -15
- data/features/ftp_server/list.feature +0 -94
- data/features/ftp_server/list_tls.feature +0 -29
- data/features/ftp_server/logging.feature +0 -11
- data/features/ftp_server/login_auth_level_account.feature +0 -51
- data/features/ftp_server/login_auth_level_password.feature +0 -59
- data/features/ftp_server/login_auth_level_user.feature +0 -31
- data/features/ftp_server/max_connections.feature +0 -39
- data/features/ftp_server/mdtm.feature +0 -53
- data/features/ftp_server/mkdir.feature +0 -70
- data/features/ftp_server/mode.feature +0 -43
- data/features/ftp_server/name_list.feature +0 -77
- data/features/ftp_server/name_list_tls.feature +0 -30
- data/features/ftp_server/noop.feature +0 -17
- data/features/ftp_server/options.feature +0 -17
- data/features/ftp_server/pasv.feature +0 -30
- data/features/ftp_server/port.feature +0 -49
- data/features/ftp_server/put.feature +0 -79
- data/features/ftp_server/put_tls.feature +0 -23
- data/features/ftp_server/put_unique.feature +0 -56
- data/features/ftp_server/quit.feature +0 -23
- data/features/ftp_server/reinitialize.feature +0 -13
- data/features/ftp_server/rename.feature +0 -97
- data/features/ftp_server/rmdir.feature +0 -71
- data/features/ftp_server/site.feature +0 -13
- data/features/ftp_server/size.feature +0 -69
- data/features/ftp_server/status.feature +0 -18
- data/features/ftp_server/step_definitions/logging.rb +0 -10
- data/features/ftp_server/step_definitions/test_server.rb +0 -71
- data/features/ftp_server/structure_mount.feature +0 -13
- data/features/ftp_server/syntax_errors.feature +0 -18
- data/features/ftp_server/syst.feature +0 -18
- data/features/ftp_server/timeout.feature +0 -26
- data/features/ftp_server/type.feature +0 -59
- data/features/step_definitions/append.rb +0 -17
- data/features/step_definitions/client.rb +0 -27
- data/features/step_definitions/client_and_server_files.rb +0 -26
- data/features/step_definitions/client_files.rb +0 -16
- data/features/step_definitions/command.rb +0 -7
- data/features/step_definitions/connect.rb +0 -39
- data/features/step_definitions/delete.rb +0 -17
- data/features/step_definitions/directory_navigation.rb +0 -28
- data/features/step_definitions/error_replies.rb +0 -117
- data/features/step_definitions/features.rb +0 -23
- data/features/step_definitions/file_structure.rb +0 -18
- data/features/step_definitions/generic_send.rb +0 -11
- data/features/step_definitions/get.rb +0 -18
- data/features/step_definitions/help.rb +0 -20
- data/features/step_definitions/invalid_commands.rb +0 -13
- data/features/step_definitions/ipv6.rb +0 -11
- data/features/step_definitions/line_endings.rb +0 -9
- data/features/step_definitions/list.rb +0 -75
- data/features/step_definitions/login.rb +0 -84
- data/features/step_definitions/mkdir.rb +0 -11
- data/features/step_definitions/mode.rb +0 -17
- data/features/step_definitions/mtime.rb +0 -25
- data/features/step_definitions/noop.rb +0 -17
- data/features/step_definitions/options.rb +0 -11
- data/features/step_definitions/passive.rb +0 -10
- data/features/step_definitions/pending.rb +0 -5
- data/features/step_definitions/port.rb +0 -7
- data/features/step_definitions/put.rb +0 -31
- data/features/step_definitions/quit.rb +0 -17
- data/features/step_definitions/rename.rb +0 -13
- data/features/step_definitions/rmdir.rb +0 -11
- data/features/step_definitions/server_files.rb +0 -63
- data/features/step_definitions/server_title.rb +0 -14
- data/features/step_definitions/size.rb +0 -22
- data/features/step_definitions/status.rb +0 -11
- data/features/step_definitions/success_replies.rb +0 -9
- data/features/step_definitions/system.rb +0 -12
- data/features/step_definitions/timing.rb +0 -21
- data/features/step_definitions/type.rb +0 -17
- data/features/support/env.rb +0 -6
- data/features/support/example_server.rb +0 -69
- data/features/support/file_templates/ascii_unix +0 -4
- data/features/support/file_templates/ascii_windows +0 -4
- data/features/support/file_templates/binary +0 -0
- data/features/support/test_client.rb +0 -258
- data/features/support/test_file_templates.rb +0 -35
- data/features/support/test_server.rb +0 -304
- data/features/support/test_server_files.rb +0 -59
- data/rake_tasks/cucumber.rake +0 -9
- data/rake_tasks/default.rake +0 -1
- data/rake_tasks/jeweler.rake +0 -52
- data/rake_tasks/spec.rake +0 -3
- data/rake_tasks/test.rake +0 -2
- data/rake_tasks/yard.rake +0 -3
- data/spec/command_sequence_checker_spec.rb +0 -85
- data/spec/connection_throttle_spec.rb +0 -101
- data/spec/connection_tracker_spec.rb +0 -99
- data/spec/data_server_factory_spec.rb +0 -104
- data/spec/disk_file_system_spec.rb +0 -322
- data/spec/exception_translator_spec.rb +0 -38
- data/spec/file_info_spec.rb +0 -61
- data/spec/ftp_server_error_spec.rb +0 -15
- data/spec/list_format/eplf_spec.rb +0 -63
- data/spec/list_format/ls_spec.rb +0 -272
- data/spec/list_path_spec.rb +0 -23
- data/spec/null_logger_spec.rb +0 -26
- data/spec/protocols_spec.rb +0 -159
- data/spec/server_spec.rb +0 -83
- data/spec/spec_helper.rb +0 -17
- data/spec/telnet_spec.rb +0 -77
- data/spec/translate_exceptions_spec.rb +0 -42
- data/testlib/network.rb +0 -17
data/lib/ftpd/session.rb
CHANGED
|
@@ -49,44 +49,35 @@ module Ftpd
|
|
|
49
49
|
@command_loop.read_and_execute_commands
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
private
|
|
53
|
-
|
|
54
|
-
def register_commands
|
|
55
|
-
handlers = CommandHandlerFactory.standard_command_handlers
|
|
56
|
-
handlers.each do |klass|
|
|
57
|
-
@command_handlers << klass.new(self)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
52
|
def valid_command?(command)
|
|
62
53
|
@command_handlers.has?(command)
|
|
63
54
|
end
|
|
64
|
-
|
|
55
|
+
|
|
65
56
|
def execute_command command, argument
|
|
66
57
|
@command_handlers.execute command, argument
|
|
67
58
|
end
|
|
68
|
-
|
|
59
|
+
|
|
69
60
|
def ensure_logged_in
|
|
70
61
|
return if @logged_in
|
|
71
62
|
error "Not logged in", 530
|
|
72
63
|
end
|
|
73
|
-
|
|
64
|
+
|
|
74
65
|
def ensure_tls_supported
|
|
75
66
|
unless tls_enabled?
|
|
76
67
|
error "TLS not enabled", 534
|
|
77
68
|
end
|
|
78
69
|
end
|
|
79
|
-
|
|
70
|
+
|
|
80
71
|
def ensure_not_epsv_all
|
|
81
72
|
if @epsv_all
|
|
82
73
|
error "Not allowed after EPSV ALL", 501
|
|
83
74
|
end
|
|
84
75
|
end
|
|
85
|
-
|
|
76
|
+
|
|
86
77
|
def tls_enabled?
|
|
87
78
|
@config.tls != :off
|
|
88
79
|
end
|
|
89
|
-
|
|
80
|
+
|
|
90
81
|
def ensure_protocol_supported(protocol_code)
|
|
91
82
|
unless @protocols.supports_protocol?(protocol_code)
|
|
92
83
|
protocol_list = @protocols.protocol_codes.join(',')
|
|
@@ -94,15 +85,15 @@ module Ftpd
|
|
|
94
85
|
"use (#{protocol_list})", 522)
|
|
95
86
|
end
|
|
96
87
|
end
|
|
97
|
-
|
|
88
|
+
|
|
98
89
|
def supported_commands
|
|
99
90
|
@command_handlers.commands.map(&:upcase)
|
|
100
91
|
end
|
|
101
|
-
|
|
92
|
+
|
|
102
93
|
def pwd(status_code)
|
|
103
94
|
reply %Q(#{status_code} "#{@name_prefix}" is current directory)
|
|
104
95
|
end
|
|
105
|
-
|
|
96
|
+
|
|
106
97
|
FORMAT_TYPES = {
|
|
107
98
|
'N'=>['Non-print', true],
|
|
108
99
|
'T'=>['Telnet format effectors', true],
|
|
@@ -120,20 +111,16 @@ module Ftpd
|
|
|
120
111
|
@command_sequence_checker.expect command
|
|
121
112
|
end
|
|
122
113
|
|
|
123
|
-
def set_file_system(file_system)
|
|
124
|
-
@file_system = file_system
|
|
125
|
-
end
|
|
126
|
-
|
|
127
114
|
def command_not_needed
|
|
128
115
|
reply '202 Command not needed at this site'
|
|
129
116
|
end
|
|
130
|
-
|
|
117
|
+
|
|
131
118
|
def close_data_server_socket
|
|
132
119
|
return unless @data_server
|
|
133
120
|
@data_server.close
|
|
134
121
|
@data_server = nil
|
|
135
122
|
end
|
|
136
|
-
|
|
123
|
+
|
|
137
124
|
def reply(s)
|
|
138
125
|
if @config.response_delay.to_i != 0
|
|
139
126
|
@config.log.warn "#{@config.response_delay} second delay before replying"
|
|
@@ -143,6 +130,43 @@ module Ftpd
|
|
|
143
130
|
@socket.write s + "\r\n"
|
|
144
131
|
end
|
|
145
132
|
|
|
133
|
+
def login(*auth_tokens)
|
|
134
|
+
user = auth_tokens.first
|
|
135
|
+
unless authenticate(*auth_tokens)
|
|
136
|
+
failed_auth
|
|
137
|
+
error "Login incorrect", 530
|
|
138
|
+
end
|
|
139
|
+
reply "230 Logged in"
|
|
140
|
+
set_file_system @config.driver.file_system(user)
|
|
141
|
+
@logged_in = true
|
|
142
|
+
reset_failed_auths
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def set_active_mode_address(address, port)
|
|
146
|
+
if port > 0xffff || port < 1024 && !@config.allow_low_data_ports
|
|
147
|
+
error "Command not implemented for that parameter", 504
|
|
148
|
+
end
|
|
149
|
+
@data_hostname = address
|
|
150
|
+
@data_port = port
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def server_name_and_version
|
|
154
|
+
"#{@config.server_name} #{@config.server_version}"
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
private
|
|
158
|
+
|
|
159
|
+
def register_commands
|
|
160
|
+
handlers = CommandHandlerFactory.standard_command_handlers
|
|
161
|
+
handlers.each do |klass|
|
|
162
|
+
@command_handlers << klass.new(self)
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def set_file_system(file_system)
|
|
167
|
+
@file_system = file_system
|
|
168
|
+
end
|
|
169
|
+
|
|
146
170
|
def init_command_sequence_checker
|
|
147
171
|
checker = CommandSequenceChecker.new
|
|
148
172
|
checker.must_expect 'acct'
|
|
@@ -157,19 +181,7 @@ module Ftpd
|
|
|
157
181
|
end
|
|
158
182
|
@config.driver.authenticate(*args)
|
|
159
183
|
end
|
|
160
|
-
|
|
161
|
-
def login(*auth_tokens)
|
|
162
|
-
user = auth_tokens.first
|
|
163
|
-
unless authenticate(*auth_tokens)
|
|
164
|
-
failed_auth
|
|
165
|
-
error "Login incorrect", 530
|
|
166
|
-
end
|
|
167
|
-
reply "230 Logged in"
|
|
168
|
-
set_file_system @config.driver.file_system(user)
|
|
169
|
-
@logged_in = true
|
|
170
|
-
reset_failed_auths
|
|
171
|
-
end
|
|
172
|
-
|
|
184
|
+
|
|
173
185
|
def set_socket_options
|
|
174
186
|
disable_nagle @socket
|
|
175
187
|
receive_oob_data_inline @socket
|
|
@@ -195,15 +207,7 @@ module Ftpd
|
|
|
195
207
|
throw :done
|
|
196
208
|
end
|
|
197
209
|
end
|
|
198
|
-
|
|
199
|
-
def set_active_mode_address(address, port)
|
|
200
|
-
if port > 0xffff || port < 1024 && !@config.allow_low_data_ports
|
|
201
|
-
error "Command not implemented for that parameter", 504
|
|
202
|
-
end
|
|
203
|
-
@data_hostname = address
|
|
204
|
-
@data_port = port
|
|
205
|
-
end
|
|
206
|
-
|
|
210
|
+
|
|
207
211
|
def initialize_session
|
|
208
212
|
@logged_in = false
|
|
209
213
|
@data_type = 'A'
|
|
@@ -218,10 +222,6 @@ module Ftpd
|
|
|
218
222
|
close_data_server_socket
|
|
219
223
|
reset_failed_auths
|
|
220
224
|
end
|
|
221
|
-
|
|
222
|
-
def server_name_and_version
|
|
223
|
-
"#{@config.server_name} #{@config.server_version}"
|
|
224
|
-
end
|
|
225
|
-
|
|
225
|
+
|
|
226
226
|
end
|
|
227
227
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ftpd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Wayne Conrad
|
|
@@ -44,7 +44,7 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.1.
|
|
47
|
+
version: 0.1.4
|
|
48
48
|
- - "~>"
|
|
49
49
|
- !ruby/object:Gem::Version
|
|
50
50
|
version: '0.1'
|
|
@@ -54,24 +54,10 @@ dependencies:
|
|
|
54
54
|
requirements:
|
|
55
55
|
- - ">="
|
|
56
56
|
- !ruby/object:Gem::Version
|
|
57
|
-
version: 0.1.
|
|
57
|
+
version: 0.1.4
|
|
58
58
|
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
60
|
version: '0.1'
|
|
61
|
-
- !ruby/object:Gem::Dependency
|
|
62
|
-
name: jeweler
|
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - "~>"
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: '2.0'
|
|
68
|
-
type: :development
|
|
69
|
-
prerelease: false
|
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - "~>"
|
|
73
|
-
- !ruby/object:Gem::Version
|
|
74
|
-
version: '2.0'
|
|
75
61
|
- !ruby/object:Gem::Dependency
|
|
76
62
|
name: rake
|
|
77
63
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -156,10 +142,10 @@ dependencies:
|
|
|
156
142
|
- - "~>"
|
|
157
143
|
- !ruby/object:Gem::Version
|
|
158
144
|
version: 0.8.7
|
|
159
|
-
description: ftpd is a pure Ruby FTP server library. It supports implicit and explicit
|
|
160
|
-
TLS, IPV6, passive and active mode, and is unconditionally compliant per
|
|
161
|
-
can be used as part of a test fixture or embedded in a program.
|
|
162
|
-
email:
|
|
145
|
+
description: "ftpd is a pure Ruby FTP server library. It supports implicit and explicit
|
|
146
|
+
TLS, IPV6, passive and active mode, and is unconditionally compliant per \x01. It
|
|
147
|
+
can be used as part of a test fixture or embedded in a program."
|
|
148
|
+
email: kf7qga@gmail.com
|
|
163
149
|
executables:
|
|
164
150
|
- ftpdrb
|
|
165
151
|
extensions: []
|
|
@@ -167,7 +153,6 @@ extra_rdoc_files:
|
|
|
167
153
|
- LICENSE.md
|
|
168
154
|
- README.md
|
|
169
155
|
files:
|
|
170
|
-
- ".travis.yml"
|
|
171
156
|
- ".yardopts"
|
|
172
157
|
- Changelog.md
|
|
173
158
|
- Gemfile
|
|
@@ -183,111 +168,7 @@ files:
|
|
|
183
168
|
- examples/example.rb
|
|
184
169
|
- examples/example_spec.rb
|
|
185
170
|
- examples/hello_world.rb
|
|
186
|
-
-
|
|
187
|
-
- features/example/example.feature
|
|
188
|
-
- features/example/read_only.feature
|
|
189
|
-
- features/example/step_definitions/example_server.rb
|
|
190
|
-
- features/ftp_server/abort.feature
|
|
191
|
-
- features/ftp_server/allo.feature
|
|
192
|
-
- features/ftp_server/append.feature
|
|
193
|
-
- features/ftp_server/cdup.feature
|
|
194
|
-
- features/ftp_server/command_errors.feature
|
|
195
|
-
- features/ftp_server/concurrent_sessions.feature
|
|
196
|
-
- features/ftp_server/delay_after_failed_login.feature
|
|
197
|
-
- features/ftp_server/delete.feature
|
|
198
|
-
- features/ftp_server/directory_navigation.feature
|
|
199
|
-
- features/ftp_server/disconnect_after_failed_logins.feature
|
|
200
|
-
- features/ftp_server/eprt.feature
|
|
201
|
-
- features/ftp_server/epsv.feature
|
|
202
|
-
- features/ftp_server/features.feature
|
|
203
|
-
- features/ftp_server/file_structure.feature
|
|
204
|
-
- features/ftp_server/get.feature
|
|
205
|
-
- features/ftp_server/get_ipv6.feature
|
|
206
|
-
- features/ftp_server/get_tls.feature
|
|
207
|
-
- features/ftp_server/help.feature
|
|
208
|
-
- features/ftp_server/implicit_tls.feature
|
|
209
|
-
- features/ftp_server/invertability.feature
|
|
210
|
-
- features/ftp_server/list.feature
|
|
211
|
-
- features/ftp_server/list_tls.feature
|
|
212
|
-
- features/ftp_server/logging.feature
|
|
213
|
-
- features/ftp_server/login_auth_level_account.feature
|
|
214
|
-
- features/ftp_server/login_auth_level_password.feature
|
|
215
|
-
- features/ftp_server/login_auth_level_user.feature
|
|
216
|
-
- features/ftp_server/max_connections.feature
|
|
217
|
-
- features/ftp_server/mdtm.feature
|
|
218
|
-
- features/ftp_server/mkdir.feature
|
|
219
|
-
- features/ftp_server/mode.feature
|
|
220
|
-
- features/ftp_server/name_list.feature
|
|
221
|
-
- features/ftp_server/name_list_tls.feature
|
|
222
|
-
- features/ftp_server/noop.feature
|
|
223
|
-
- features/ftp_server/options.feature
|
|
224
|
-
- features/ftp_server/pasv.feature
|
|
225
|
-
- features/ftp_server/port.feature
|
|
226
|
-
- features/ftp_server/put.feature
|
|
227
|
-
- features/ftp_server/put_tls.feature
|
|
228
|
-
- features/ftp_server/put_unique.feature
|
|
229
|
-
- features/ftp_server/quit.feature
|
|
230
|
-
- features/ftp_server/reinitialize.feature
|
|
231
|
-
- features/ftp_server/rename.feature
|
|
232
|
-
- features/ftp_server/rmdir.feature
|
|
233
|
-
- features/ftp_server/site.feature
|
|
234
|
-
- features/ftp_server/size.feature
|
|
235
|
-
- features/ftp_server/status.feature
|
|
236
|
-
- features/ftp_server/step_definitions/logging.rb
|
|
237
|
-
- features/ftp_server/step_definitions/test_server.rb
|
|
238
|
-
- features/ftp_server/structure_mount.feature
|
|
239
|
-
- features/ftp_server/syntax_errors.feature
|
|
240
|
-
- features/ftp_server/syst.feature
|
|
241
|
-
- features/ftp_server/timeout.feature
|
|
242
|
-
- features/ftp_server/type.feature
|
|
243
|
-
- features/step_definitions/append.rb
|
|
244
|
-
- features/step_definitions/client.rb
|
|
245
|
-
- features/step_definitions/client_and_server_files.rb
|
|
246
|
-
- features/step_definitions/client_files.rb
|
|
247
|
-
- features/step_definitions/command.rb
|
|
248
|
-
- features/step_definitions/connect.rb
|
|
249
|
-
- features/step_definitions/delete.rb
|
|
250
|
-
- features/step_definitions/directory_navigation.rb
|
|
251
|
-
- features/step_definitions/error_replies.rb
|
|
252
|
-
- features/step_definitions/features.rb
|
|
253
|
-
- features/step_definitions/file_structure.rb
|
|
254
|
-
- features/step_definitions/generic_send.rb
|
|
255
|
-
- features/step_definitions/get.rb
|
|
256
|
-
- features/step_definitions/help.rb
|
|
257
|
-
- features/step_definitions/invalid_commands.rb
|
|
258
|
-
- features/step_definitions/ipv6.rb
|
|
259
|
-
- features/step_definitions/line_endings.rb
|
|
260
|
-
- features/step_definitions/list.rb
|
|
261
|
-
- features/step_definitions/login.rb
|
|
262
|
-
- features/step_definitions/mkdir.rb
|
|
263
|
-
- features/step_definitions/mode.rb
|
|
264
|
-
- features/step_definitions/mtime.rb
|
|
265
|
-
- features/step_definitions/noop.rb
|
|
266
|
-
- features/step_definitions/options.rb
|
|
267
|
-
- features/step_definitions/passive.rb
|
|
268
|
-
- features/step_definitions/pending.rb
|
|
269
|
-
- features/step_definitions/port.rb
|
|
270
|
-
- features/step_definitions/put.rb
|
|
271
|
-
- features/step_definitions/quit.rb
|
|
272
|
-
- features/step_definitions/rename.rb
|
|
273
|
-
- features/step_definitions/rmdir.rb
|
|
274
|
-
- features/step_definitions/server_files.rb
|
|
275
|
-
- features/step_definitions/server_title.rb
|
|
276
|
-
- features/step_definitions/size.rb
|
|
277
|
-
- features/step_definitions/status.rb
|
|
278
|
-
- features/step_definitions/success_replies.rb
|
|
279
|
-
- features/step_definitions/system.rb
|
|
280
|
-
- features/step_definitions/timing.rb
|
|
281
|
-
- features/step_definitions/type.rb
|
|
282
|
-
- features/support/env.rb
|
|
283
|
-
- features/support/example_server.rb
|
|
284
|
-
- features/support/file_templates/ascii_unix
|
|
285
|
-
- features/support/file_templates/ascii_windows
|
|
286
|
-
- features/support/file_templates/binary
|
|
287
|
-
- features/support/test_client.rb
|
|
288
|
-
- features/support/test_file_templates.rb
|
|
289
|
-
- features/support/test_server.rb
|
|
290
|
-
- features/support/test_server_files.rb
|
|
171
|
+
- examples/write_only.rb
|
|
291
172
|
- ftpd.gemspec
|
|
292
173
|
- insecure-test-cert.pem
|
|
293
174
|
- lib/ftpd.rb
|
|
@@ -366,30 +247,6 @@ files:
|
|
|
366
247
|
- lib/ftpd/temp_dir.rb
|
|
367
248
|
- lib/ftpd/tls_server.rb
|
|
368
249
|
- lib/ftpd/translate_exceptions.rb
|
|
369
|
-
- rake_tasks/cucumber.rake
|
|
370
|
-
- rake_tasks/default.rake
|
|
371
|
-
- rake_tasks/jeweler.rake
|
|
372
|
-
- rake_tasks/spec.rake
|
|
373
|
-
- rake_tasks/test.rake
|
|
374
|
-
- rake_tasks/yard.rake
|
|
375
|
-
- spec/command_sequence_checker_spec.rb
|
|
376
|
-
- spec/connection_throttle_spec.rb
|
|
377
|
-
- spec/connection_tracker_spec.rb
|
|
378
|
-
- spec/data_server_factory_spec.rb
|
|
379
|
-
- spec/disk_file_system_spec.rb
|
|
380
|
-
- spec/exception_translator_spec.rb
|
|
381
|
-
- spec/file_info_spec.rb
|
|
382
|
-
- spec/ftp_server_error_spec.rb
|
|
383
|
-
- spec/list_format/eplf_spec.rb
|
|
384
|
-
- spec/list_format/ls_spec.rb
|
|
385
|
-
- spec/list_path_spec.rb
|
|
386
|
-
- spec/null_logger_spec.rb
|
|
387
|
-
- spec/protocols_spec.rb
|
|
388
|
-
- spec/server_spec.rb
|
|
389
|
-
- spec/spec_helper.rb
|
|
390
|
-
- spec/telnet_spec.rb
|
|
391
|
-
- spec/translate_exceptions_spec.rb
|
|
392
|
-
- testlib/network.rb
|
|
393
250
|
homepage: http://github.com/wconrad/ftpd
|
|
394
251
|
licenses:
|
|
395
252
|
- MIT
|
|
@@ -402,7 +259,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
402
259
|
requirements:
|
|
403
260
|
- - ">="
|
|
404
261
|
- !ruby/object:Gem::Version
|
|
405
|
-
version:
|
|
262
|
+
version: 1.9.3
|
|
406
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
407
264
|
requirements:
|
|
408
265
|
- - ">="
|
|
@@ -410,8 +267,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
410
267
|
version: '0'
|
|
411
268
|
requirements: []
|
|
412
269
|
rubyforge_project:
|
|
413
|
-
rubygems_version: 2.
|
|
270
|
+
rubygems_version: 2.4.8
|
|
414
271
|
signing_key:
|
|
415
272
|
specification_version: 4
|
|
416
273
|
summary: Pure Ruby FTP server library
|
|
417
274
|
test_files: []
|
|
275
|
+
has_rdoc:
|
data/.travis.yml
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
Feature: Example
|
|
2
|
-
|
|
3
|
-
As a programmer
|
|
4
|
-
I want to enable EPLF list format
|
|
5
|
-
So that I can test this library with an EPLF client
|
|
6
|
-
|
|
7
|
-
Background:
|
|
8
|
-
Given the example has argument "--eplf"
|
|
9
|
-
And the example server is started
|
|
10
|
-
|
|
11
|
-
Scenario: List directory
|
|
12
|
-
Given a successful login
|
|
13
|
-
When the client successfully lists the directory
|
|
14
|
-
Then the list should be in EPLF format
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
Feature: Example
|
|
2
|
-
|
|
3
|
-
As a programmer
|
|
4
|
-
I want to connect to the example
|
|
5
|
-
So that I can try this libary with an arbitrary FTP client
|
|
6
|
-
|
|
7
|
-
Background:
|
|
8
|
-
Given the example server is started
|
|
9
|
-
|
|
10
|
-
Scenario: Normal connection
|
|
11
|
-
Given a successful login
|
|
12
|
-
Then the server returns no error
|
|
13
|
-
And the client should be logged in
|
|
14
|
-
|
|
15
|
-
Scenario: Fetch README
|
|
16
|
-
Given a successful login
|
|
17
|
-
When the client successfully gets text "README"
|
|
18
|
-
Then the local file "README" should match the remote file
|