carrierwave-ftp 0.3.1 → 0.4.0
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/Dockerfile +8 -0
- data/README.md +1 -0
- data/{carrerwave-ftp.gemspec → carrierwave-ftp.gemspec} +1 -0
- data/docker-compose.yml +11 -0
- data/lib/carrierwave/storage/ftp.rb +14 -1
- data/lib/carrierwave/storage/ftp/all.rb +1 -1
- data/lib/carrierwave/storage/ftp/ex_ftptls.rb +25 -0
- data/lib/carrierwave/storage/ftp/version.rb +1 -1
- data/spec/ftp_spec.rb +33 -1
- data/spec/ftp_tls_spec.rb +63 -0
- metadata +23 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df0afee16e1ea7ec251387b0d40e51b34125f393
|
4
|
+
data.tar.gz: 60e317278e41bce9435f0ae5a2f91b34ce354575
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b8ba3eb90cf8cace416957dfa485cd14c0b62bd3c8e1946df51d68b39d8d60fd43ffb69323eb4ecc3a68843603626b3733a8e66dac2fd7767ff632a236bf0e2
|
7
|
+
data.tar.gz: c966647c7f64e7d23f61cb911b0617bfaedef048c62178ff4aa807ef5148cc31918bdbd1f4a12479eaf9ce4277fea00adb8af47f33da44d8f7e2525a0afe6bec
|
data/Dockerfile
ADDED
data/README.md
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
s.add_dependency "carrierwave", [">= 0.6.2"]
|
24
24
|
s.add_dependency "net-sftp", ["~> 2.1.2"]
|
25
|
+
s.add_dependency "double-bag-ftps", ["0.1.3"]
|
25
26
|
s.add_development_dependency "rspec", ["~> 2.14"]
|
26
27
|
s.add_development_dependency "rake", ["~> 10.3"]
|
27
28
|
end
|
data/docker-compose.yml
ADDED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'carrierwave'
|
2
2
|
require 'carrierwave/storage/ftp/ex_ftp'
|
3
|
+
require 'carrierwave/storage/ftp/ex_ftptls'
|
3
4
|
|
4
5
|
module CarrierWave
|
5
6
|
module Storage
|
@@ -26,6 +27,9 @@ module CarrierWave
|
|
26
27
|
ftp.mkdir_p(::File.dirname "#{@uploader.ftp_folder}/#{path}")
|
27
28
|
ftp.chdir(::File.dirname "#{@uploader.ftp_folder}/#{path}")
|
28
29
|
ftp.put(file.path, filename)
|
30
|
+
if @uploader.ftp_chmod
|
31
|
+
ftp.sendcmd("SITE CHMOD #{@uploader.permissions.to_s(8)} #{@uploader.ftp_folder}/#{path}")
|
32
|
+
end
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
@@ -91,7 +95,12 @@ module CarrierWave
|
|
91
95
|
private
|
92
96
|
|
93
97
|
def connection
|
94
|
-
|
98
|
+
if @uploader.ftp_tls
|
99
|
+
ftp = ExFTPTLS.new
|
100
|
+
ftp.ssl_context = DoubleBagFTPS.create_ssl_context(:verify_mode => OpenSSL::SSL::VERIFY_NONE)
|
101
|
+
else
|
102
|
+
ftp = ExFTP.new
|
103
|
+
end
|
95
104
|
ftp.connect(@uploader.ftp_host, @uploader.ftp_port)
|
96
105
|
|
97
106
|
begin
|
@@ -118,6 +127,8 @@ class CarrierWave::Uploader::Base
|
|
118
127
|
add_config :ftp_folder
|
119
128
|
add_config :ftp_url
|
120
129
|
add_config :ftp_passive
|
130
|
+
add_config :ftp_tls
|
131
|
+
add_config :ftp_chmod
|
121
132
|
|
122
133
|
configure do |config|
|
123
134
|
config.storage_engines[:ftp] = "CarrierWave::Storage::FTP"
|
@@ -128,5 +139,7 @@ class CarrierWave::Uploader::Base
|
|
128
139
|
config.ftp_folder = "/"
|
129
140
|
config.ftp_url = "http://localhost"
|
130
141
|
config.ftp_passive = false
|
142
|
+
config.ftp_tls = false
|
143
|
+
config.ftp_chmod = true
|
131
144
|
end
|
132
145
|
end
|
@@ -1,2 +1,2 @@
|
|
1
1
|
require 'carrierwave/storage/ftp'
|
2
|
-
require 'carrierwave/storage/sftp'
|
2
|
+
require 'carrierwave/storage/sftp'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'double_bag_ftps'
|
2
|
+
|
3
|
+
class ExFTPTLS < DoubleBagFTPS
|
4
|
+
def mkdir_p(dir)
|
5
|
+
parts = dir.split("/")
|
6
|
+
if parts.first == "~"
|
7
|
+
growing_path = ""
|
8
|
+
else
|
9
|
+
growing_path = "/"
|
10
|
+
end
|
11
|
+
for part in parts
|
12
|
+
next if part == ""
|
13
|
+
if growing_path == ""
|
14
|
+
growing_path = part
|
15
|
+
else
|
16
|
+
growing_path = File.join(growing_path, part)
|
17
|
+
end
|
18
|
+
begin
|
19
|
+
mkdir(growing_path)
|
20
|
+
chdir(growing_path)
|
21
|
+
rescue Net::FTPPermError, Net::FTPTempError => e
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/ftp_spec.rb
CHANGED
@@ -7,7 +7,7 @@ end
|
|
7
7
|
|
8
8
|
describe CarrierWave::Storage::FTP do
|
9
9
|
before do
|
10
|
-
|
10
|
+
FtpUploader.configure do |config|
|
11
11
|
config.reset_config
|
12
12
|
config.ftp_host = 'ftp.testcarrierwave.dev'
|
13
13
|
config.ftp_user = 'test_user'
|
@@ -15,6 +15,7 @@ describe CarrierWave::Storage::FTP do
|
|
15
15
|
config.ftp_folder = '~/public_html'
|
16
16
|
config.ftp_url = 'http://testcarrierwave.dev'
|
17
17
|
config.ftp_passive = true
|
18
|
+
config.ftp_chmod = true
|
18
19
|
end
|
19
20
|
|
20
21
|
@file = CarrierWave::SanitizedFile.new(file_path('test.jpg'))
|
@@ -38,10 +39,39 @@ describe CarrierWave::Storage::FTP do
|
|
38
39
|
ftp.should_receive(:mkdir_p).with('~/public_html/uploads')
|
39
40
|
ftp.should_receive(:chdir).with('~/public_html/uploads')
|
40
41
|
ftp.should_receive(:put).with(@file.path, 'test.jpg')
|
42
|
+
ftp.should_receive(:sendcmd).with("SITE CHMOD 644 ~/public_html/uploads/test.jpg")
|
41
43
|
ftp.should_receive(:quit)
|
42
44
|
@stored = @storage.store!(@file)
|
43
45
|
end
|
44
46
|
|
47
|
+
describe 'when CHMOD is disabled' do
|
48
|
+
before do
|
49
|
+
FtpUploader.configure do |config|
|
50
|
+
config.ftp_chmod = false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it "opens/closes an ftp connection to the given host" do
|
55
|
+
ftp = double(:ftp_connection)
|
56
|
+
ftp_params = [
|
57
|
+
'ftp.testcarrierwave.dev',
|
58
|
+
'test_user',
|
59
|
+
'test_passwd',
|
60
|
+
21
|
61
|
+
]
|
62
|
+
|
63
|
+
Net::FTP.should_receive(:new).and_return(ftp)
|
64
|
+
ftp.should_receive(:connect).with('ftp.testcarrierwave.dev', 21)
|
65
|
+
ftp.should_receive(:login).with('test_user', 'test_passwd')
|
66
|
+
ftp.should_receive(:passive=).with(true)
|
67
|
+
ftp.should_receive(:mkdir_p).with('~/public_html/uploads')
|
68
|
+
ftp.should_receive(:chdir).with('~/public_html/uploads')
|
69
|
+
ftp.should_receive(:put).with(@file.path, 'test.jpg')
|
70
|
+
ftp.should_receive(:quit)
|
71
|
+
@stored = @storage.store!(@file)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
45
75
|
describe 'after upload' do
|
46
76
|
before do
|
47
77
|
ftp = double(:ftp_connection)
|
@@ -52,6 +82,7 @@ describe CarrierWave::Storage::FTP do
|
|
52
82
|
ftp.stub(:mkdir_p)
|
53
83
|
ftp.stub(:chdir)
|
54
84
|
ftp.stub(:put)
|
85
|
+
ftp.stub(:sendcmd)
|
55
86
|
ftp.stub(:quit)
|
56
87
|
@stored = @storage.store!(@file)
|
57
88
|
end
|
@@ -75,6 +106,7 @@ describe CarrierWave::Storage::FTP do
|
|
75
106
|
@ftp.stub(:mkdir_p)
|
76
107
|
@ftp.stub(:chdir)
|
77
108
|
@ftp.stub(:put)
|
109
|
+
@ftp.stub(:sendcmd)
|
78
110
|
@ftp.stub(:quit)
|
79
111
|
@stored = @storage.store!(@file)
|
80
112
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'carrierwave/storage/ftp'
|
3
|
+
|
4
|
+
class FtpTlsUploader < CarrierWave::Uploader::Base
|
5
|
+
storage :ftp
|
6
|
+
end
|
7
|
+
|
8
|
+
describe CarrierWave::Storage::FTP do
|
9
|
+
before do
|
10
|
+
FtpTlsUploader.configure do |config|
|
11
|
+
config.reset_config
|
12
|
+
config.ftp_host = 'ftp.testcarrierwave.dev'
|
13
|
+
config.ftp_user = 'test_user'
|
14
|
+
config.ftp_passwd = 'test_passwd'
|
15
|
+
config.ftp_folder = '~/public_html'
|
16
|
+
config.ftp_url = 'http://testcarrierwave.dev'
|
17
|
+
config.ftp_passive = true
|
18
|
+
config.ftp_tls = true
|
19
|
+
config.ftp_chmod = true
|
20
|
+
end
|
21
|
+
|
22
|
+
@file = CarrierWave::SanitizedFile.new(file_path('test.jpg'))
|
23
|
+
FtpTlsUploader.stub(:store_path).and_return('uploads/test.jpg')
|
24
|
+
@storage = CarrierWave::Storage::FTP.new(FtpTlsUploader)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "opens/closes a secure ftp connection to the given host" do
|
28
|
+
ftp = double(:ftp_connection)
|
29
|
+
Net::FTP.should_receive(:new).and_return(ftp)
|
30
|
+
ftp.should_receive(:sendcmd)
|
31
|
+
ftp.should_receive(:ssl_context=)
|
32
|
+
ftp.should_receive(:connect).with('ftp.testcarrierwave.dev', 21)
|
33
|
+
ftp.should_receive(:login).with('test_user', 'test_passwd')
|
34
|
+
ftp.should_receive(:passive=).with(true)
|
35
|
+
ftp.should_receive(:mkdir_p).with('~/public_html/uploads')
|
36
|
+
ftp.should_receive(:chdir).with('~/public_html/uploads')
|
37
|
+
ftp.should_receive(:put).with(@file.path, 'test.jpg')
|
38
|
+
ftp.should_receive(:quit)
|
39
|
+
@stored = @storage.store!(@file)
|
40
|
+
end
|
41
|
+
|
42
|
+
describe 'when CHMOD is disabled' do
|
43
|
+
before do
|
44
|
+
FtpTlsUploader.configure do |config|
|
45
|
+
config.ftp_chmod = false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
it "opens/closes a secure ftp connection to the given host" do
|
50
|
+
ftp = double(:ftp_connection)
|
51
|
+
Net::FTP.should_receive(:new).and_return(ftp)
|
52
|
+
ftp.should_receive(:ssl_context=)
|
53
|
+
ftp.should_receive(:connect).with('ftp.testcarrierwave.dev', 21)
|
54
|
+
ftp.should_receive(:login).with('test_user', 'test_passwd')
|
55
|
+
ftp.should_receive(:passive=).with(true)
|
56
|
+
ftp.should_receive(:mkdir_p).with('~/public_html/uploads')
|
57
|
+
ftp.should_receive(:chdir).with('~/public_html/uploads')
|
58
|
+
ftp.should_receive(:put).with(@file.path, 'test.jpg')
|
59
|
+
ftp.should_receive(:quit)
|
60
|
+
@stored = @storage.store!(@file)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave-ftp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luan Santos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carrierwave
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.1.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: double-bag-ftps
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.1.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.1.3
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rspec
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,18 +90,22 @@ files:
|
|
76
90
|
- ".gitignore"
|
77
91
|
- ".rspec"
|
78
92
|
- ".travis.yml"
|
93
|
+
- Dockerfile
|
79
94
|
- Gemfile
|
80
95
|
- LICENSE
|
81
96
|
- README.md
|
82
97
|
- Rakefile
|
83
|
-
-
|
98
|
+
- carrierwave-ftp.gemspec
|
99
|
+
- docker-compose.yml
|
84
100
|
- lib/carrierwave/storage/ftp.rb
|
85
101
|
- lib/carrierwave/storage/ftp/all.rb
|
86
102
|
- lib/carrierwave/storage/ftp/ex_ftp.rb
|
103
|
+
- lib/carrierwave/storage/ftp/ex_ftptls.rb
|
87
104
|
- lib/carrierwave/storage/ftp/ex_sftp.rb
|
88
105
|
- lib/carrierwave/storage/ftp/version.rb
|
89
106
|
- lib/carrierwave/storage/sftp.rb
|
90
107
|
- spec/ftp_spec.rb
|
108
|
+
- spec/ftp_tls_spec.rb
|
91
109
|
- spec/sftp_spec.rb
|
92
110
|
- spec/spec_helper.rb
|
93
111
|
homepage: https://github.com/luan/carrierwave-ftp
|
@@ -110,11 +128,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
128
|
version: '0'
|
111
129
|
requirements: []
|
112
130
|
rubyforge_project: carrierwave-ftp
|
113
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.6.13
|
114
132
|
signing_key:
|
115
133
|
specification_version: 4
|
116
134
|
summary: FTP support for CarrierWave
|
117
135
|
test_files:
|
118
136
|
- spec/ftp_spec.rb
|
137
|
+
- spec/ftp_tls_spec.rb
|
119
138
|
- spec/sftp_spec.rb
|
120
139
|
- spec/spec_helper.rb
|