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.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +6 -0
  3. data/Gemfile +2 -15
  4. data/Gemfile.lock +12 -51
  5. data/README.md +12 -0
  6. data/VERSION +1 -1
  7. data/bin/ftpdrb +17 -12
  8. data/examples/write_only.rb +61 -0
  9. data/ftpd.gemspec +59 -261
  10. data/lib/ftpd/session.rb +51 -51
  11. metadata +11 -153
  12. data/.travis.yml +0 -6
  13. data/features/example/eplf.feature +0 -14
  14. data/features/example/example.feature +0 -18
  15. data/features/example/read_only.feature +0 -63
  16. data/features/example/step_definitions/example_server.rb +0 -13
  17. data/features/ftp_server/abort.feature +0 -13
  18. data/features/ftp_server/allo.feature +0 -33
  19. data/features/ftp_server/append.feature +0 -94
  20. data/features/ftp_server/cdup.feature +0 -36
  21. data/features/ftp_server/command_errors.feature +0 -13
  22. data/features/ftp_server/concurrent_sessions.feature +0 -14
  23. data/features/ftp_server/delay_after_failed_login.feature +0 -23
  24. data/features/ftp_server/delete.feature +0 -60
  25. data/features/ftp_server/directory_navigation.feature +0 -59
  26. data/features/ftp_server/disconnect_after_failed_logins.feature +0 -25
  27. data/features/ftp_server/eprt.feature +0 -56
  28. data/features/ftp_server/epsv.feature +0 -37
  29. data/features/ftp_server/features.feature +0 -38
  30. data/features/ftp_server/file_structure.feature +0 -43
  31. data/features/ftp_server/get.feature +0 -80
  32. data/features/ftp_server/get_ipv6.feature +0 -46
  33. data/features/ftp_server/get_tls.feature +0 -23
  34. data/features/ftp_server/help.feature +0 -21
  35. data/features/ftp_server/implicit_tls.feature +0 -23
  36. data/features/ftp_server/invertability.feature +0 -15
  37. data/features/ftp_server/list.feature +0 -94
  38. data/features/ftp_server/list_tls.feature +0 -29
  39. data/features/ftp_server/logging.feature +0 -11
  40. data/features/ftp_server/login_auth_level_account.feature +0 -51
  41. data/features/ftp_server/login_auth_level_password.feature +0 -59
  42. data/features/ftp_server/login_auth_level_user.feature +0 -31
  43. data/features/ftp_server/max_connections.feature +0 -39
  44. data/features/ftp_server/mdtm.feature +0 -53
  45. data/features/ftp_server/mkdir.feature +0 -70
  46. data/features/ftp_server/mode.feature +0 -43
  47. data/features/ftp_server/name_list.feature +0 -77
  48. data/features/ftp_server/name_list_tls.feature +0 -30
  49. data/features/ftp_server/noop.feature +0 -17
  50. data/features/ftp_server/options.feature +0 -17
  51. data/features/ftp_server/pasv.feature +0 -30
  52. data/features/ftp_server/port.feature +0 -49
  53. data/features/ftp_server/put.feature +0 -79
  54. data/features/ftp_server/put_tls.feature +0 -23
  55. data/features/ftp_server/put_unique.feature +0 -56
  56. data/features/ftp_server/quit.feature +0 -23
  57. data/features/ftp_server/reinitialize.feature +0 -13
  58. data/features/ftp_server/rename.feature +0 -97
  59. data/features/ftp_server/rmdir.feature +0 -71
  60. data/features/ftp_server/site.feature +0 -13
  61. data/features/ftp_server/size.feature +0 -69
  62. data/features/ftp_server/status.feature +0 -18
  63. data/features/ftp_server/step_definitions/logging.rb +0 -10
  64. data/features/ftp_server/step_definitions/test_server.rb +0 -71
  65. data/features/ftp_server/structure_mount.feature +0 -13
  66. data/features/ftp_server/syntax_errors.feature +0 -18
  67. data/features/ftp_server/syst.feature +0 -18
  68. data/features/ftp_server/timeout.feature +0 -26
  69. data/features/ftp_server/type.feature +0 -59
  70. data/features/step_definitions/append.rb +0 -17
  71. data/features/step_definitions/client.rb +0 -27
  72. data/features/step_definitions/client_and_server_files.rb +0 -26
  73. data/features/step_definitions/client_files.rb +0 -16
  74. data/features/step_definitions/command.rb +0 -7
  75. data/features/step_definitions/connect.rb +0 -39
  76. data/features/step_definitions/delete.rb +0 -17
  77. data/features/step_definitions/directory_navigation.rb +0 -28
  78. data/features/step_definitions/error_replies.rb +0 -117
  79. data/features/step_definitions/features.rb +0 -23
  80. data/features/step_definitions/file_structure.rb +0 -18
  81. data/features/step_definitions/generic_send.rb +0 -11
  82. data/features/step_definitions/get.rb +0 -18
  83. data/features/step_definitions/help.rb +0 -20
  84. data/features/step_definitions/invalid_commands.rb +0 -13
  85. data/features/step_definitions/ipv6.rb +0 -11
  86. data/features/step_definitions/line_endings.rb +0 -9
  87. data/features/step_definitions/list.rb +0 -75
  88. data/features/step_definitions/login.rb +0 -84
  89. data/features/step_definitions/mkdir.rb +0 -11
  90. data/features/step_definitions/mode.rb +0 -17
  91. data/features/step_definitions/mtime.rb +0 -25
  92. data/features/step_definitions/noop.rb +0 -17
  93. data/features/step_definitions/options.rb +0 -11
  94. data/features/step_definitions/passive.rb +0 -10
  95. data/features/step_definitions/pending.rb +0 -5
  96. data/features/step_definitions/port.rb +0 -7
  97. data/features/step_definitions/put.rb +0 -31
  98. data/features/step_definitions/quit.rb +0 -17
  99. data/features/step_definitions/rename.rb +0 -13
  100. data/features/step_definitions/rmdir.rb +0 -11
  101. data/features/step_definitions/server_files.rb +0 -63
  102. data/features/step_definitions/server_title.rb +0 -14
  103. data/features/step_definitions/size.rb +0 -22
  104. data/features/step_definitions/status.rb +0 -11
  105. data/features/step_definitions/success_replies.rb +0 -9
  106. data/features/step_definitions/system.rb +0 -12
  107. data/features/step_definitions/timing.rb +0 -21
  108. data/features/step_definitions/type.rb +0 -17
  109. data/features/support/env.rb +0 -6
  110. data/features/support/example_server.rb +0 -69
  111. data/features/support/file_templates/ascii_unix +0 -4
  112. data/features/support/file_templates/ascii_windows +0 -4
  113. data/features/support/file_templates/binary +0 -0
  114. data/features/support/test_client.rb +0 -258
  115. data/features/support/test_file_templates.rb +0 -35
  116. data/features/support/test_server.rb +0 -304
  117. data/features/support/test_server_files.rb +0 -59
  118. data/rake_tasks/cucumber.rake +0 -9
  119. data/rake_tasks/default.rake +0 -1
  120. data/rake_tasks/jeweler.rake +0 -52
  121. data/rake_tasks/spec.rake +0 -3
  122. data/rake_tasks/test.rake +0 -2
  123. data/rake_tasks/yard.rake +0 -3
  124. data/spec/command_sequence_checker_spec.rb +0 -85
  125. data/spec/connection_throttle_spec.rb +0 -101
  126. data/spec/connection_tracker_spec.rb +0 -99
  127. data/spec/data_server_factory_spec.rb +0 -104
  128. data/spec/disk_file_system_spec.rb +0 -322
  129. data/spec/exception_translator_spec.rb +0 -38
  130. data/spec/file_info_spec.rb +0 -61
  131. data/spec/ftp_server_error_spec.rb +0 -15
  132. data/spec/list_format/eplf_spec.rb +0 -63
  133. data/spec/list_format/ls_spec.rb +0 -272
  134. data/spec/list_path_spec.rb +0 -23
  135. data/spec/null_logger_spec.rb +0 -26
  136. data/spec/protocols_spec.rb +0 -159
  137. data/spec/server_spec.rb +0 -83
  138. data/spec/spec_helper.rb +0 -17
  139. data/spec/telnet_spec.rb +0 -77
  140. data/spec/translate_exceptions_spec.rb +0 -42
  141. data/testlib/network.rb +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 637e5bfc2505f89b270ab1a8f89df0dfdb02e84c
4
- data.tar.gz: c5209641735180ea65417e1c7ed9afeea370c946
3
+ metadata.gz: f82f381f779637c418fa3679b24e3866760f0a0d
4
+ data.tar.gz: 1613147a6f9de82757fc35544a5a4ecca2730ce9
5
5
  SHA512:
6
- metadata.gz: 16be5eac5cfe71218a0bd02bb32585ca86f4d241cb6c5ba80b531d8b388a04375f069d1a2f8af323b6a7e452678ddc9239091037b52dae7284f696f04f288e65
7
- data.tar.gz: 5dfcee331e594fd2d5a8f7b956d81b71a9b2693ecbf5ffb9603cbd0f83aa1e4df945216eb7f403b37067b2851f7efdedc81bf81b17a495493f84f4213f49e487
6
+ metadata.gz: 48dbea3f686112a1a368318433341d887b82c67f2575f6c4cc3190c83d9697ff07a8cd2549acf8cdb83bab5b70c2ff9a29a6414fc2e11bea53025fcc7ef6c280
7
+ data.tar.gz: 48b848cb8c93c9c2bd0625fdee1fbb6299a3deca01858782870fc914c3e291de30d5d3cf2d7c1adc56f5c02c9cca8c1da9f1f32d22f8ac731ebf5c2b67b7b9ba
@@ -2,6 +2,12 @@ This is the change log for the main branch of ftpd, which supports
2
2
  Ruby 1.9 and greater. For ruby 1.8.7, please use the latest version
3
3
  before 0.8.0.
4
4
 
5
+ ### 2.0.2 2017-07-17
6
+
7
+ * Fix high CPU use by bin/ftpdrb (#47)
8
+ * ftpdrb now runs from installed gem
9
+ * Fix tests hanging in ruby 2.1.7 through 2.1.10
10
+
5
11
  ### 2.0.1 2016-11-02
6
12
 
7
13
  * Redact password in log (thanks ukolovda)
data/Gemfile CHANGED
@@ -1,15 +1,2 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'memoizer', '~> 1.0'
4
-
5
- group :development do
6
- gem 'cucumber', '~> 2.0'
7
- gem 'double-bag-ftps', '~> 0.1', '>= 0.1.3'
8
- gem 'jeweler', '~> 2.0'
9
- gem 'rake', '~> 11.1'
10
- gem 'redcarpet', '~> 3.1'
11
- gem 'rspec', '~> 3.1'
12
- gem 'rspec-its', '~> 1.0'
13
- gem 'timecop', '~> 0.7'
14
- gem 'yard', '~> 0.8.7'
15
- end
1
+ source "https://rubygems.org"
2
+ gemspec
@@ -1,7 +1,12 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ftpd (2.0.2)
5
+ memoizer (~> 1.0)
6
+
1
7
  GEM
2
- remote: http://rubygems.org/
8
+ remote: https://rubygems.org/
3
9
  specs:
4
- addressable (2.4.0)
5
10
  builder (3.2.2)
6
11
  cucumber (2.4.0)
7
12
  builder (>= 2.1.2)
@@ -14,54 +19,13 @@ GEM
14
19
  cucumber-core (1.5.0)
15
20
  gherkin (~> 4.0)
16
21
  cucumber-wire (0.0.1)
17
- descendants_tracker (0.0.4)
18
- thread_safe (~> 0.3, >= 0.3.1)
19
22
  diff-lcs (1.2.5)
20
- double-bag-ftps (0.1.3)
21
- faraday (0.9.2)
22
- multipart-post (>= 1.2, < 3)
23
+ double-bag-ftps (0.1.4)
23
24
  gherkin (4.0.0)
24
- git (1.3.0)
25
- github_api (0.11.3)
26
- addressable (~> 2.3)
27
- descendants_tracker (~> 0.0.1)
28
- faraday (~> 0.8, < 0.10)
29
- hashie (>= 1.2)
30
- multi_json (>= 1.7.5, < 2.0)
31
- nokogiri (~> 1.6.0)
32
- oauth2
33
- hashie (3.4.6)
34
- highline (1.7.8)
35
- jeweler (2.1.2)
36
- builder
37
- bundler (>= 1.0)
38
- git (>= 1.2.5)
39
- github_api (~> 0.11.0)
40
- highline (>= 1.6.15)
41
- nokogiri (>= 1.5.10)
42
- rake
43
- rdoc
44
- semver
45
- json (1.8.3)
46
- jwt (1.5.6)
47
- memoizer (1.0.1)
48
- mini_portile2 (2.1.0)
25
+ memoizer (1.0.3)
49
26
  multi_json (1.12.1)
50
27
  multi_test (0.1.2)
51
- multi_xml (0.5.5)
52
- multipart-post (2.0.0)
53
- nokogiri (1.6.8.1)
54
- mini_portile2 (~> 2.1.0)
55
- oauth2 (1.2.0)
56
- faraday (>= 0.8, < 0.10)
57
- jwt (~> 1.0)
58
- multi_json (~> 1.3)
59
- multi_xml (~> 0.5)
60
- rack (>= 1.2, < 3)
61
- rack (2.0.1)
62
28
  rake (11.3.0)
63
- rdoc (4.2.2)
64
- json (~> 1.4)
65
29
  redcarpet (3.3.4)
66
30
  rspec (3.4.0)
67
31
  rspec-core (~> 3.4.0)
@@ -79,8 +43,6 @@ GEM
79
43
  diff-lcs (>= 1.2.0, < 2.0)
80
44
  rspec-support (~> 3.4.0)
81
45
  rspec-support (3.4.1)
82
- semver (1.0.1)
83
- thread_safe (0.3.5)
84
46
  timecop (0.8.1)
85
47
  yard (0.8.7.6)
86
48
 
@@ -89,9 +51,8 @@ PLATFORMS
89
51
 
90
52
  DEPENDENCIES
91
53
  cucumber (~> 2.0)
92
- double-bag-ftps (~> 0.1, >= 0.1.3)
93
- jeweler (~> 2.0)
94
- memoizer (~> 1.0)
54
+ double-bag-ftps (~> 0.1, >= 0.1.4)
55
+ ftpd!
95
56
  rake (~> 11.1)
96
57
  redcarpet (~> 3.1)
97
58
  rspec (~> 3.1)
@@ -100,4 +61,4 @@ DEPENDENCIES
100
61
  yard (~> 0.8.7)
101
62
 
102
63
  BUNDLED WITH
103
- 1.13.1
64
+ 1.15.2
data/README.md CHANGED
@@ -293,6 +293,18 @@ major version.
293
293
 
294
294
  ## Development
295
295
 
296
+ ### Bundler tricks for older Rubies
297
+
298
+ The development gems only work in Ruby 2.3 or later. When developing
299
+ ftpd for older Rubies, exclude the development gems:
300
+
301
+ bundle install --without development
302
+
303
+ With the current version of bundler (1.13.1), this has the unfortunate
304
+ effect of remembering--forever--that you do not want development gems.
305
+ So before you install gems for Ruby 2.3 or later, remove
306
+ .bundle/config from the project's directory.
307
+
296
308
  ### Tests
297
309
 
298
310
  To run the cucumber (functional) tests:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.1
1
+ 2.0.2
data/bin/ftpdrb CHANGED
@@ -2,8 +2,12 @@
2
2
  #
3
3
  # Ftpd is a pure Ruby FTP server library. CLI version
4
4
  #
5
- unless $:.include?(File.dirname(__FILE__) + '/../lib')
6
- $:.unshift(File.dirname(__FILE__) + '/../lib')
5
+
6
+ dev_lib_path = File.dirname(__FILE__) + '/../lib'
7
+ if File.directory?(dev_lib_path)
8
+ unless $:.include?(dev_lib_path)
9
+ $:.unshift(dev_lib_path)
10
+ end
7
11
  end
8
12
 
9
13
  require 'ftpd'
@@ -199,23 +203,25 @@ module FTPDrb
199
203
  @data_dir, @args.read_only)
200
204
  @server = Ftpd::FtpServer.new(@driver)
201
205
  configure_server
202
- @server.start
203
206
  end
204
207
 
205
208
  def run
206
- puts "FTP server started. (Press CRL+C to stop it)"
207
- connection_info.each do |key, value|
208
- puts "#{key}: #{value}"
209
- end
209
+ @server.start
210
+ wait_until_stopped
211
+ end
212
+
213
+ def wait_until_stopped
214
+ puts "FTP server started. Press ENTER or c-C to stop it"
210
215
  $stdout.flush
211
216
  begin
212
- loop{}
217
+ gets
213
218
  rescue Interrupt
214
- puts "\nClosing FTP server..."
219
+ puts "Interrupt"
215
220
  end
216
221
  end
217
-
222
+
218
223
  private
224
+
219
225
  def configure_server
220
226
  @server.server_name = @args.servername
221
227
  @server.interface = @args.interface
@@ -285,5 +291,4 @@ module FTPDrb
285
291
  end
286
292
  end
287
293
 
288
- FTPDrb::Server.new(ARGV).run if $0 == __FILE__
289
-
294
+ FTPDrb::Server.new(ARGV).run
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This example shows how to create a "write-only" file system for FTPD.
4
+
5
+ unless $:.include?(File.dirname(__FILE__) + "/../lib")
6
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
7
+ end
8
+
9
+ require "ftpd"
10
+ require "tmpdir"
11
+
12
+ class FileSystem
13
+
14
+ def initialize(user)
15
+ @user = user
16
+ end
17
+
18
+ def accessible?(ftp_path)
19
+ true
20
+ end
21
+
22
+ def exists?(ftp_path)
23
+ true
24
+ end
25
+
26
+ def directory?(ftp_path)
27
+ false
28
+ end
29
+
30
+ def write(ftp_path, stream)
31
+ puts "Received upload"
32
+ puts "User: #{@user}"
33
+ puts "ftp_path: #{@ftp_path}"
34
+ puts "byte count: #{stream.read.size}"
35
+ end
36
+
37
+ end
38
+
39
+ class Driver
40
+
41
+ def initialize(temp_dir)
42
+ @temp_dir = temp_dir
43
+ end
44
+
45
+ def authenticate(user, password)
46
+ true
47
+ end
48
+
49
+ def file_system(user)
50
+ FileSystem.new(user)
51
+ end
52
+
53
+ end
54
+
55
+ Dir.mktmpdir do |temp_dir|
56
+ driver = Driver.new(temp_dir)
57
+ server = Ftpd::FtpServer.new(driver)
58
+ server.start
59
+ puts "Server listening on port #{server.bound_port}"
60
+ gets
61
+ end
@@ -1,26 +1,62 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
5
- # stub: ftpd 2.0.1 ruby lib
2
+
3
+ class Readme
4
+
5
+ def description
6
+ readme = File.open(README_PATH, "r", &:read)
7
+ description = readme[/^# FTPD.*\n+((?:.*\n)+?)\n*##/i, 1]
8
+ unless description
9
+ raise "Unable to extract description from readme"
10
+ end
11
+ description = remove_badges(description)
12
+ description = remove_markdown_link(description)
13
+ description = join_lines(description)
14
+ description
15
+ end
16
+
17
+ private
18
+
19
+ README_PATH = File.expand_path("README.md", File.dirname(__FILE__))
20
+ private_constant :README_PATH
21
+
22
+ def remove_markdown_link(description)
23
+ regex = %r{
24
+ \[
25
+ ([^\]]+)
26
+ \]
27
+ (
28
+ \[\d+\] |
29
+ \([^)]+\)
30
+ )
31
+ }x
32
+ description = description.gsub(regex, "\1")
33
+ end
34
+
35
+ def remove_badges(description)
36
+ description.gsub(/^\[!.*\n/, "")
37
+ end
38
+
39
+ def join_lines(description)
40
+ description.gsub(/\n/, " ").strip
41
+ end
42
+
43
+ end
6
44
 
7
45
  Gem::Specification.new do |s|
8
46
  s.name = "ftpd"
9
- s.version = "2.0.1"
10
-
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
47
+ s.version = "2.0.2"
48
+ s.required_rubygems_version = Gem::Requirement.new(">= 0")
12
49
  s.require_paths = ["lib"]
13
50
  s.authors = ["Wayne Conrad"]
14
51
  s.date = "2016-11-02"
15
- s.description = "ftpd is a pure Ruby FTP server library. It supports implicit and explicit TLS, IPV6, passive and active mode, and is unconditionally compliant per RFC-1123. It can be used as part of a test fixture or embedded in a program."
16
- s.email = "wconrad@yagni.com"
52
+ s.description = Readme.new.description
53
+ s.email = "kf7qga@gmail.com"
17
54
  s.executables = ["ftpdrb"]
18
55
  s.extra_rdoc_files = [
19
56
  "LICENSE.md",
20
57
  "README.md"
21
58
  ]
22
59
  s.files = [
23
- ".travis.yml",
24
60
  ".yardopts",
25
61
  "Changelog.md",
26
62
  "Gemfile",
@@ -30,262 +66,24 @@ Gem::Specification.new do |s|
30
66
  "Rakefile",
31
67
  "VERSION",
32
68
  "bin/ftpdrb",
33
- "doc/benchmarks.md",
34
- "doc/references.md",
35
- "doc/rfc-compliance.md",
36
- "examples/example.rb",
37
- "examples/example_spec.rb",
38
- "examples/hello_world.rb",
39
- "features/example/eplf.feature",
40
- "features/example/example.feature",
41
- "features/example/read_only.feature",
42
- "features/example/step_definitions/example_server.rb",
43
- "features/ftp_server/abort.feature",
44
- "features/ftp_server/allo.feature",
45
- "features/ftp_server/append.feature",
46
- "features/ftp_server/cdup.feature",
47
- "features/ftp_server/command_errors.feature",
48
- "features/ftp_server/concurrent_sessions.feature",
49
- "features/ftp_server/delay_after_failed_login.feature",
50
- "features/ftp_server/delete.feature",
51
- "features/ftp_server/directory_navigation.feature",
52
- "features/ftp_server/disconnect_after_failed_logins.feature",
53
- "features/ftp_server/eprt.feature",
54
- "features/ftp_server/epsv.feature",
55
- "features/ftp_server/features.feature",
56
- "features/ftp_server/file_structure.feature",
57
- "features/ftp_server/get.feature",
58
- "features/ftp_server/get_ipv6.feature",
59
- "features/ftp_server/get_tls.feature",
60
- "features/ftp_server/help.feature",
61
- "features/ftp_server/implicit_tls.feature",
62
- "features/ftp_server/invertability.feature",
63
- "features/ftp_server/list.feature",
64
- "features/ftp_server/list_tls.feature",
65
- "features/ftp_server/logging.feature",
66
- "features/ftp_server/login_auth_level_account.feature",
67
- "features/ftp_server/login_auth_level_password.feature",
68
- "features/ftp_server/login_auth_level_user.feature",
69
- "features/ftp_server/max_connections.feature",
70
- "features/ftp_server/mdtm.feature",
71
- "features/ftp_server/mkdir.feature",
72
- "features/ftp_server/mode.feature",
73
- "features/ftp_server/name_list.feature",
74
- "features/ftp_server/name_list_tls.feature",
75
- "features/ftp_server/noop.feature",
76
- "features/ftp_server/options.feature",
77
- "features/ftp_server/pasv.feature",
78
- "features/ftp_server/port.feature",
79
- "features/ftp_server/put.feature",
80
- "features/ftp_server/put_tls.feature",
81
- "features/ftp_server/put_unique.feature",
82
- "features/ftp_server/quit.feature",
83
- "features/ftp_server/reinitialize.feature",
84
- "features/ftp_server/rename.feature",
85
- "features/ftp_server/rmdir.feature",
86
- "features/ftp_server/site.feature",
87
- "features/ftp_server/size.feature",
88
- "features/ftp_server/status.feature",
89
- "features/ftp_server/step_definitions/logging.rb",
90
- "features/ftp_server/step_definitions/test_server.rb",
91
- "features/ftp_server/structure_mount.feature",
92
- "features/ftp_server/syntax_errors.feature",
93
- "features/ftp_server/syst.feature",
94
- "features/ftp_server/timeout.feature",
95
- "features/ftp_server/type.feature",
96
- "features/step_definitions/append.rb",
97
- "features/step_definitions/client.rb",
98
- "features/step_definitions/client_and_server_files.rb",
99
- "features/step_definitions/client_files.rb",
100
- "features/step_definitions/command.rb",
101
- "features/step_definitions/connect.rb",
102
- "features/step_definitions/delete.rb",
103
- "features/step_definitions/directory_navigation.rb",
104
- "features/step_definitions/error_replies.rb",
105
- "features/step_definitions/features.rb",
106
- "features/step_definitions/file_structure.rb",
107
- "features/step_definitions/generic_send.rb",
108
- "features/step_definitions/get.rb",
109
- "features/step_definitions/help.rb",
110
- "features/step_definitions/invalid_commands.rb",
111
- "features/step_definitions/ipv6.rb",
112
- "features/step_definitions/line_endings.rb",
113
- "features/step_definitions/list.rb",
114
- "features/step_definitions/login.rb",
115
- "features/step_definitions/mkdir.rb",
116
- "features/step_definitions/mode.rb",
117
- "features/step_definitions/mtime.rb",
118
- "features/step_definitions/noop.rb",
119
- "features/step_definitions/options.rb",
120
- "features/step_definitions/passive.rb",
121
- "features/step_definitions/pending.rb",
122
- "features/step_definitions/port.rb",
123
- "features/step_definitions/put.rb",
124
- "features/step_definitions/quit.rb",
125
- "features/step_definitions/rename.rb",
126
- "features/step_definitions/rmdir.rb",
127
- "features/step_definitions/server_files.rb",
128
- "features/step_definitions/server_title.rb",
129
- "features/step_definitions/size.rb",
130
- "features/step_definitions/status.rb",
131
- "features/step_definitions/success_replies.rb",
132
- "features/step_definitions/system.rb",
133
- "features/step_definitions/timing.rb",
134
- "features/step_definitions/type.rb",
135
- "features/support/env.rb",
136
- "features/support/example_server.rb",
137
- "features/support/file_templates/ascii_unix",
138
- "features/support/file_templates/ascii_windows",
139
- "features/support/file_templates/binary",
140
- "features/support/test_client.rb",
141
- "features/support/test_file_templates.rb",
142
- "features/support/test_server.rb",
143
- "features/support/test_server_files.rb",
144
69
  "ftpd.gemspec",
145
70
  "insecure-test-cert.pem",
146
- "lib/ftpd.rb",
147
- "lib/ftpd/auth_levels.rb",
148
- "lib/ftpd/cmd_abor.rb",
149
- "lib/ftpd/cmd_allo.rb",
150
- "lib/ftpd/cmd_appe.rb",
151
- "lib/ftpd/cmd_auth.rb",
152
- "lib/ftpd/cmd_cdup.rb",
153
- "lib/ftpd/cmd_cwd.rb",
154
- "lib/ftpd/cmd_dele.rb",
155
- "lib/ftpd/cmd_eprt.rb",
156
- "lib/ftpd/cmd_epsv.rb",
157
- "lib/ftpd/cmd_feat.rb",
158
- "lib/ftpd/cmd_help.rb",
159
- "lib/ftpd/cmd_list.rb",
160
- "lib/ftpd/cmd_login.rb",
161
- "lib/ftpd/cmd_mdtm.rb",
162
- "lib/ftpd/cmd_mkd.rb",
163
- "lib/ftpd/cmd_mode.rb",
164
- "lib/ftpd/cmd_nlst.rb",
165
- "lib/ftpd/cmd_noop.rb",
166
- "lib/ftpd/cmd_opts.rb",
167
- "lib/ftpd/cmd_pasv.rb",
168
- "lib/ftpd/cmd_pbsz.rb",
169
- "lib/ftpd/cmd_port.rb",
170
- "lib/ftpd/cmd_prot.rb",
171
- "lib/ftpd/cmd_pwd.rb",
172
- "lib/ftpd/cmd_quit.rb",
173
- "lib/ftpd/cmd_rein.rb",
174
- "lib/ftpd/cmd_rename.rb",
175
- "lib/ftpd/cmd_rest.rb",
176
- "lib/ftpd/cmd_retr.rb",
177
- "lib/ftpd/cmd_rmd.rb",
178
- "lib/ftpd/cmd_site.rb",
179
- "lib/ftpd/cmd_size.rb",
180
- "lib/ftpd/cmd_smnt.rb",
181
- "lib/ftpd/cmd_stat.rb",
182
- "lib/ftpd/cmd_stor.rb",
183
- "lib/ftpd/cmd_stou.rb",
184
- "lib/ftpd/cmd_stru.rb",
185
- "lib/ftpd/cmd_syst.rb",
186
- "lib/ftpd/cmd_type.rb",
187
- "lib/ftpd/command_handler.rb",
188
- "lib/ftpd/command_handler_factory.rb",
189
- "lib/ftpd/command_handlers.rb",
190
- "lib/ftpd/command_loop.rb",
191
- "lib/ftpd/command_sequence_checker.rb",
192
- "lib/ftpd/config.rb",
193
- "lib/ftpd/connection_throttle.rb",
194
- "lib/ftpd/connection_tracker.rb",
195
- "lib/ftpd/data_connection_helper.rb",
196
- "lib/ftpd/data_server_factory.rb",
197
- "lib/ftpd/data_server_factory/random_ephemeral_port.rb",
198
- "lib/ftpd/data_server_factory/specific_port_range.rb",
199
- "lib/ftpd/disk_file_system.rb",
200
- "lib/ftpd/error.rb",
201
- "lib/ftpd/exception_translator.rb",
202
- "lib/ftpd/exceptions.rb",
203
- "lib/ftpd/file_info.rb",
204
- "lib/ftpd/file_system_helper.rb",
205
- "lib/ftpd/ftp_server.rb",
206
- "lib/ftpd/gets_peer_address.rb",
207
- "lib/ftpd/insecure_certificate.rb",
208
- "lib/ftpd/list_format/eplf.rb",
209
- "lib/ftpd/list_format/ls.rb",
210
- "lib/ftpd/list_path.rb",
211
- "lib/ftpd/null_logger.rb",
212
- "lib/ftpd/protocols.rb",
213
- "lib/ftpd/read_only_disk_file_system.rb",
214
- "lib/ftpd/server.rb",
215
- "lib/ftpd/session.rb",
216
- "lib/ftpd/session_config.rb",
217
- "lib/ftpd/stream.rb",
218
- "lib/ftpd/telnet.rb",
219
- "lib/ftpd/temp_dir.rb",
220
- "lib/ftpd/tls_server.rb",
221
- "lib/ftpd/translate_exceptions.rb",
222
- "rake_tasks/cucumber.rake",
223
- "rake_tasks/default.rake",
224
- "rake_tasks/jeweler.rake",
225
- "rake_tasks/spec.rake",
226
- "rake_tasks/test.rake",
227
- "rake_tasks/yard.rake",
228
- "spec/command_sequence_checker_spec.rb",
229
- "spec/connection_throttle_spec.rb",
230
- "spec/connection_tracker_spec.rb",
231
- "spec/data_server_factory_spec.rb",
232
- "spec/disk_file_system_spec.rb",
233
- "spec/exception_translator_spec.rb",
234
- "spec/file_info_spec.rb",
235
- "spec/ftp_server_error_spec.rb",
236
- "spec/list_format/eplf_spec.rb",
237
- "spec/list_format/ls_spec.rb",
238
- "spec/list_path_spec.rb",
239
- "spec/null_logger_spec.rb",
240
- "spec/protocols_spec.rb",
241
- "spec/server_spec.rb",
242
- "spec/spec_helper.rb",
243
- "spec/telnet_spec.rb",
244
- "spec/translate_exceptions_spec.rb",
245
- "testlib/network.rb"
246
71
  ]
72
+ s.files += Dir["doc/**/*.md"]
73
+ s.files += Dir["examples/**/*.rb"]
74
+ s.files += Dir["lib/**/*.rb"]
247
75
  s.homepage = "http://github.com/wconrad/ftpd"
248
76
  s.licenses = ["MIT"]
77
+ s.required_ruby_version = ">= 1.9.3"
249
78
  s.rubygems_version = "2.5.1"
250
79
  s.summary = "Pure Ruby FTP server library"
251
-
252
- if s.respond_to? :specification_version then
253
- s.specification_version = 4
254
-
255
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
256
- s.add_runtime_dependency(%q<memoizer>, ["~> 1.0"])
257
- s.add_development_dependency(%q<cucumber>, ["~> 2.0"])
258
- s.add_development_dependency(%q<double-bag-ftps>, [">= 0.1.3", "~> 0.1"])
259
- s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
260
- s.add_development_dependency(%q<rake>, ["~> 11.1"])
261
- s.add_development_dependency(%q<redcarpet>, ["~> 3.1"])
262
- s.add_development_dependency(%q<rspec>, ["~> 3.1"])
263
- s.add_development_dependency(%q<rspec-its>, ["~> 1.0"])
264
- s.add_development_dependency(%q<timecop>, ["~> 0.7"])
265
- s.add_development_dependency(%q<yard>, ["~> 0.8.7"])
266
- else
267
- s.add_dependency(%q<memoizer>, ["~> 1.0"])
268
- s.add_dependency(%q<cucumber>, ["~> 2.0"])
269
- s.add_dependency(%q<double-bag-ftps>, [">= 0.1.3", "~> 0.1"])
270
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
271
- s.add_dependency(%q<rake>, ["~> 11.1"])
272
- s.add_dependency(%q<redcarpet>, ["~> 3.1"])
273
- s.add_dependency(%q<rspec>, ["~> 3.1"])
274
- s.add_dependency(%q<rspec-its>, ["~> 1.0"])
275
- s.add_dependency(%q<timecop>, ["~> 0.7"])
276
- s.add_dependency(%q<yard>, ["~> 0.8.7"])
277
- end
278
- else
279
- s.add_dependency(%q<memoizer>, ["~> 1.0"])
280
- s.add_dependency(%q<cucumber>, ["~> 2.0"])
281
- s.add_dependency(%q<double-bag-ftps>, [">= 0.1.3", "~> 0.1"])
282
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
283
- s.add_dependency(%q<rake>, ["~> 11.1"])
284
- s.add_dependency(%q<redcarpet>, ["~> 3.1"])
285
- s.add_dependency(%q<rspec>, ["~> 3.1"])
286
- s.add_dependency(%q<rspec-its>, ["~> 1.0"])
287
- s.add_dependency(%q<timecop>, ["~> 0.7"])
288
- s.add_dependency(%q<yard>, ["~> 0.8.7"])
289
- end
80
+ s.add_runtime_dependency("memoizer", "~> 1.0")
81
+ s.add_development_dependency("cucumber", "~> 2.0")
82
+ s.add_development_dependency("double-bag-ftps", ">= 0.1.4", "~> 0.1")
83
+ s.add_development_dependency("rake", "~> 11.1")
84
+ s.add_development_dependency("redcarpet", "~> 3.1")
85
+ s.add_development_dependency("rspec", "~> 3.1")
86
+ s.add_development_dependency("rspec-its", "~> 1.0")
87
+ s.add_development_dependency("timecop", "~> 0.7")
88
+ s.add_development_dependency("yard", "~> 0.8.7")
290
89
  end
291
-