rest-ftp-daemon 0.300.3 → 0.302.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/Gemfile.lock +12 -12
- data/README.md +12 -3
- data/bin/rest-ftp-daemon +14 -15
- data/config.ru +2 -8
- data/defaults.yml +83 -59
- data/lib/rest-ftp-daemon.rb +4 -8
- data/lib/rest-ftp-daemon/api/config.rb +3 -1
- data/lib/rest-ftp-daemon/api/dashboard.rb +1 -0
- data/lib/rest-ftp-daemon/api/debug.rb +2 -0
- data/lib/rest-ftp-daemon/api/job_presenter.rb +2 -0
- data/lib/rest-ftp-daemon/api/jobs.rb +2 -0
- data/lib/rest-ftp-daemon/api/root.rb +2 -0
- data/lib/rest-ftp-daemon/api/status.rb +1 -0
- data/lib/rest-ftp-daemon/constants.rb +5 -5
- data/lib/rest-ftp-daemon/job.rb +37 -37
- data/lib/rest-ftp-daemon/logger_pool.rb +39 -16
- data/lib/rest-ftp-daemon/notification.rb +26 -19
- data/lib/rest-ftp-daemon/remote.rb +16 -15
- data/lib/rest-ftp-daemon/remote_ftp.rb +2 -7
- data/lib/rest-ftp-daemon/remote_sftp.rb +1 -4
- data/lib/rest-ftp-daemon/worker_pool.rb +5 -15
- data/lib/rest-ftp-daemon/{worker_conchita.rb → workers/conchita.rb} +20 -22
- data/lib/rest-ftp-daemon/{worker_reporter.rb → workers/reporter.rb} +23 -30
- data/lib/rest-ftp-daemon/{worker_job.rb → workers/transfer.rb} +25 -35
- data/lib/shared/conf.rb +47 -41
- data/lib/{rest-ftp-daemon/worker.rb → shared/worker_base.rb} +42 -28
- data/rest-ftp-daemon.gemspec +5 -3
- data/spec/rest-ftp-daemon/features/dashboard_spec.rb +5 -5
- data/spec/spec_helper.rb +2 -2
- metadata +36 -24
- data/rest-ftp-daemon.sample.yml +0 -71
- data/spec/support/config.yml +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a1b9e5ed6fac0ec90833a3fbb68442a4a780acf
|
4
|
+
data.tar.gz: c87259dbeb55f4ec01bdd252d7e0141938b58941
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 309ccbf778b739bf66c2b2008c659865fe80e6a56400b6713c77f846aa6c121c6ad760fa54c7af2db67ad745708be02337cd10a92ef593ca95580b8ad5f5282b
|
7
|
+
data.tar.gz: 12140ba5f1314819d8a0638af66b91ca4c0aac8752885a40b9a0b387574f3d986ce62e51767a03c4ed9336c1f31f5406626654b3ca4dff24389643f60564232c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rest-ftp-daemon (0.
|
4
|
+
rest-ftp-daemon (0.302.0)
|
5
|
+
api-auth
|
5
6
|
chamber
|
6
7
|
double-bag-ftps
|
7
8
|
facter
|
@@ -12,6 +13,7 @@ PATH
|
|
12
13
|
json
|
13
14
|
net-sftp
|
14
15
|
newrelic_rpm
|
16
|
+
rest-client (~> 1.8)
|
15
17
|
settingslogic
|
16
18
|
sys-cpu
|
17
19
|
thin (~> 1)
|
@@ -26,7 +28,7 @@ GEM
|
|
26
28
|
minitest (~> 5.1)
|
27
29
|
thread_safe (~> 0.3, >= 0.3.4)
|
28
30
|
tzinfo (~> 1.1)
|
29
|
-
|
31
|
+
api-auth (2.0.0)
|
30
32
|
ast (2.3.0)
|
31
33
|
astrolabe (1.3.1)
|
32
34
|
parser (~> 2.2)
|
@@ -71,19 +73,13 @@ GEM
|
|
71
73
|
haml (4.0.7)
|
72
74
|
tilt
|
73
75
|
hashie (3.4.4)
|
74
|
-
http (2.0.1)
|
75
|
-
addressable (~> 2.3)
|
76
|
-
http-cookie (~> 1.0)
|
77
|
-
http-form_data (~> 1.0.1)
|
78
|
-
http_parser.rb (~> 0.6.0)
|
79
76
|
http-cookie (1.0.2)
|
80
77
|
domain_name (~> 0.5)
|
81
|
-
http-form_data (1.0.1)
|
82
|
-
http_parser.rb (0.6.0)
|
83
78
|
i18n (0.7.0)
|
84
79
|
ice_nine (0.11.2)
|
85
80
|
json (1.8.3)
|
86
81
|
method_source (0.8.2)
|
82
|
+
mime-types (2.99.2)
|
87
83
|
minitest (5.9.0)
|
88
84
|
multi_json (1.12.1)
|
89
85
|
multi_xml (0.5.5)
|
@@ -92,7 +88,8 @@ GEM
|
|
92
88
|
net-sftp (2.1.2)
|
93
89
|
net-ssh (>= 2.6.5)
|
94
90
|
net-ssh (3.2.0)
|
95
|
-
|
91
|
+
netrc (0.11.0)
|
92
|
+
newrelic_rpm (3.16.0.318)
|
96
93
|
parser (2.3.1.2)
|
97
94
|
ast (~> 2.2)
|
98
95
|
powerpack (0.1.1)
|
@@ -100,11 +97,15 @@ GEM
|
|
100
97
|
coderay (~> 1.1.0)
|
101
98
|
method_source (~> 0.8.1)
|
102
99
|
slop (~> 3.4)
|
103
|
-
rack (
|
100
|
+
rack (2.0.1)
|
104
101
|
rack-accept (0.4.5)
|
105
102
|
rack (>= 0.4)
|
106
103
|
rainbow (2.1.0)
|
107
104
|
rake (11.2.2)
|
105
|
+
rest-client (1.8.0)
|
106
|
+
http-cookie (>= 1.0.2, < 2.0)
|
107
|
+
mime-types (>= 1.16, < 3.0)
|
108
|
+
netrc (~> 0.7)
|
108
109
|
rspec (3.4.0)
|
109
110
|
rspec-core (~> 3.4.0)
|
110
111
|
rspec-expectations (~> 3.4.0)
|
@@ -152,7 +153,6 @@ PLATFORMS
|
|
152
153
|
|
153
154
|
DEPENDENCIES
|
154
155
|
bundler (~> 1.6)
|
155
|
-
http
|
156
156
|
pry
|
157
157
|
rake
|
158
158
|
rest-ftp-daemon!
|
data/README.md
CHANGED
@@ -234,17 +234,21 @@ This project is available as a rubygem, requires Ruby 2.2 and RubyGems installed
|
|
234
234
|
#### Using rbenv and ruby-build
|
235
235
|
|
236
236
|
You may use `rbenv` and `ruby-build` to get the right Ruby version. If this is your case, ensure that ruby-build definitions are up-to-date and include the right Ruby version.
|
237
|
+
You may have to install some extra packages for the compilations to complete.
|
237
238
|
|
238
239
|
```
|
240
|
+
# apt-get install libffi-dev zlib1g-dev bison libreadline-dev
|
239
241
|
# git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
240
242
|
# git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
|
241
243
|
# echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
|
242
244
|
# echo 'eval "$(rbenv init -)"' >> ~/.bashrc
|
243
|
-
#
|
245
|
+
# rbenv install --list | grep '2.2'
|
244
246
|
```
|
245
247
|
|
246
|
-
|
247
|
-
|
248
|
+
# curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | rbenv install --patch 2.2.3
|
249
|
+
|
250
|
+
Otherwise, you way have to update ruby-build to include Ruby 2.2 definitions.
|
251
|
+
On Debian, 2.2 is not included in Wheezy and appears in Jessie's version of the package.
|
248
252
|
|
249
253
|
#### Dedicated user
|
250
254
|
|
@@ -289,6 +293,11 @@ gem install eventmachine -v '1.0.8' -- --with-cppflags=-I/usr/local/opt/openssl/
|
|
289
293
|
bundle install
|
290
294
|
```
|
291
295
|
|
296
|
+
* If you get ```uncommon.mk:189: recipe for target 'build-ext' failed``` on Debian, you can try with:
|
297
|
+
```
|
298
|
+
curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | rbenv install --patch 2.2.3
|
299
|
+
```
|
300
|
+
|
292
301
|
|
293
302
|
Contributing
|
294
303
|
------------------------------------------------------------------------------------
|
data/bin/rest-ftp-daemon
CHANGED
@@ -29,7 +29,6 @@ begin
|
|
29
29
|
Conf.init File.dirname(__FILE__) + "/../"
|
30
30
|
|
31
31
|
# Parse options and check compliance
|
32
|
-
thinopts = {}
|
33
32
|
parser = OptionParser.new do |opts|
|
34
33
|
opts.banner = "Usage: #{File.basename $PROGRAM_NAME} [options] start|stop"
|
35
34
|
opts.on("-c", "--config CONFIGFILE") { |value| cmd_config = File.expand_path(value)}
|
@@ -45,12 +44,13 @@ begin
|
|
45
44
|
opts.separator ""
|
46
45
|
opts.on_tail("-h", "--help", "Show this message") do
|
47
46
|
puts opts
|
48
|
-
puts Conf.
|
47
|
+
puts Conf.generate(:config_message) unless File.exist?(Conf.generate(:config_etc))
|
49
48
|
exit
|
50
49
|
end
|
51
50
|
opts.on_tail("-v", "--version", "Show version (#{Conf.app_ver})") { puts(Conf.app_ver) && exit }
|
52
51
|
|
53
|
-
end
|
52
|
+
end
|
53
|
+
parser.order!(ARGV)
|
54
54
|
|
55
55
|
# Load Chamber-based configuration
|
56
56
|
Conf.prepare config: cmd_config, logfile: nil
|
@@ -69,6 +69,15 @@ else
|
|
69
69
|
end
|
70
70
|
|
71
71
|
|
72
|
+
# Thin: override with cmdline then defaults
|
73
|
+
Conf[:daemonize] = cmd_daemonize unless cmd_daemonize.nil?
|
74
|
+
Conf[:port] = cmd_port unless cmd_port.nil?
|
75
|
+
Conf[:user] = cmd_user unless cmd_user.nil?
|
76
|
+
Conf[:group] = cmd_group unless cmd_group.nil?
|
77
|
+
Conf[:pidfile] = cmd_pidfile unless cmd_pidfile.nil?
|
78
|
+
Conf[:pidfile] ||= Conf.generate(:pidfile)
|
79
|
+
|
80
|
+
|
72
81
|
# Validate network configuration
|
73
82
|
if command == "start"
|
74
83
|
if !Conf[:port]
|
@@ -79,23 +88,13 @@ if command == "start"
|
|
79
88
|
end
|
80
89
|
|
81
90
|
|
82
|
-
# Thin: override with cmdline then defaults
|
83
|
-
Conf[:daemonize] = cmd_daemonize unless cmd_daemonize.nil?
|
84
|
-
Conf[:port] = cmd_port unless cmd_port.nil?
|
85
|
-
Conf[:user] = cmd_user unless cmd_user.nil?
|
86
|
-
Conf[:group] = cmd_group unless cmd_group.nil?
|
87
|
-
Conf[:pidfile] = cmd_pidfile unless cmd_pidfile.nil?
|
88
|
-
|
89
|
-
Conf[:pidfile] ||= Conf.gen_pidfile
|
90
|
-
|
91
|
-
|
92
91
|
# Thin: basic options
|
93
92
|
thin_logfile = Conf.at(:logs, :thin)
|
94
93
|
argv = []
|
95
94
|
argv << ["-e", Conf.app_env]
|
96
95
|
argv << ["-p", Conf[:port].to_s]
|
97
96
|
argv << ["--pid", Conf[:pidfile].to_s]
|
98
|
-
argv << ["--tag",
|
97
|
+
argv << ["--tag", Conf.generate(:process_name)]
|
99
98
|
argv << ["--daemonize"] if ([1, true].include? Conf[:daemonize])
|
100
99
|
argv << ["--log", thin_logfile] if thin_logfile
|
101
100
|
|
@@ -120,7 +119,7 @@ puts
|
|
120
119
|
puts "Daemonize \t #{Conf[:daemonize]}"
|
121
120
|
puts "Network port \t #{Conf[:port]}"
|
122
121
|
puts "User:group \t #{Conf[:user]}:#{Conf[:group]}" if Conf[:user] && Conf[:group]
|
123
|
-
puts "Newrelic \t #{Conf.newrelic_enabled? ? Conf.at(:newrelic, :licence) :
|
122
|
+
puts "Newrelic \t #{Conf.newrelic_enabled? ? Conf.at(:newrelic, :licence) : 'no'}"
|
124
123
|
puts "PID file \t #{Conf[:pidfile]}"
|
125
124
|
puts
|
126
125
|
puts Conf.dump
|
data/config.ru
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Load gem files
|
2
|
-
load_path_libs = File.expand_path(File.join(File.dirname(__FILE__), "lib"))
|
2
|
+
# load_path_libs = File.expand_path(File.join(File.dirname(__FILE__), "lib"))
|
3
|
+
load_path_libs = File.expand_path "lib", File.dirname(__FILE__)
|
3
4
|
$LOAD_PATH.unshift(load_path_libs) unless $LOAD_PATH.include?(load_path_libs)
|
4
5
|
require "rest-ftp-daemon"
|
5
6
|
|
@@ -19,9 +20,6 @@ unless Conf[:adminpwd].nil?
|
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
22
|
-
# NewRelic profiling
|
23
|
-
# GC::Profiler.enable if Conf.newrelic_enabled?
|
24
|
-
|
25
23
|
# Serve static assets
|
26
24
|
use Rack::Static, urls: ["/css", "/js", "/images"], root: "#{Conf.app_libs}/static/"
|
27
25
|
|
@@ -31,9 +29,5 @@ unless Conf.app_env == "production"
|
|
31
29
|
# use Rack::MiniProfiler
|
32
30
|
end
|
33
31
|
|
34
|
-
# Set up encodings
|
35
|
-
Encoding.default_internal = "utf-8"
|
36
|
-
Encoding.default_external = "utf-8"
|
37
|
-
|
38
32
|
# Launch the main daemon
|
39
33
|
run RestFtpDaemon::API::Root
|
data/defaults.yml
CHANGED
@@ -1,61 +1,85 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
user: rftpd
|
5
|
-
# group: rftpd
|
6
|
-
# host: "myhost"
|
7
|
-
|
8
|
-
pools:
|
9
|
-
default: 2
|
10
|
-
|
11
|
-
transfer:
|
12
|
-
# notify_after_sec: 5 # wait at least X seconds between HTTP notifications
|
13
|
-
# mkdir: true # build directory tree if missing
|
14
|
-
# tempfile: true # transfer to temporary file, rename after sucessful transfer
|
15
|
-
# overwrite: false # overwrite any target file with the same name
|
16
|
-
timeout: 1800 # jobs running for longer than X seconds will be killed
|
17
|
-
|
18
|
-
retry:
|
19
|
-
# on_errors:
|
20
|
-
# - ftp_perm_error
|
21
|
-
# - net_temp_error
|
22
|
-
# - conn_reset_by_peer
|
23
|
-
# - conn_timed_out
|
24
|
-
# - conn_refused
|
25
|
-
# - sftp_auth_failed
|
26
|
-
# - conn_host_is_down
|
27
|
-
# - conn_unreachable
|
28
|
-
# - conn_failed
|
29
|
-
# - conn_openssl_error
|
30
|
-
# max_runs: 5
|
31
|
-
# max_age: 1800
|
32
|
-
# delay: 10
|
33
|
-
|
34
|
-
conchita:
|
35
|
-
# timer: 60
|
36
|
-
# garbage_collector: true
|
37
|
-
# clean_failed: 3600
|
38
|
-
# clean_finished: 3600
|
39
|
-
# clean_queued: 86400
|
40
|
-
|
41
|
-
newrelic:
|
42
|
-
# licence: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
43
|
-
prefix: "rftpd" # app prefix
|
44
|
-
# platform: "bigbusiness" # app platform name
|
45
|
-
# app_name: "rftpd-bigbusiness-dev" # nickname used for naming app
|
46
|
-
|
47
|
-
debug:
|
48
|
-
ftp: false
|
49
|
-
sftp: false
|
50
|
-
conchita: false
|
51
|
-
reporter: fakse
|
1
|
+
defaults: &defaults
|
2
|
+
daemonize: true
|
3
|
+
port: 3000
|
4
|
+
user: rftpd
|
5
|
+
# group: rftpd
|
6
|
+
# host: "myhost"
|
52
7
|
allow_reload: false
|
53
8
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
9
|
+
pools:
|
10
|
+
default: 2
|
11
|
+
urgent: 1
|
12
|
+
|
13
|
+
reporter:
|
14
|
+
debug: false
|
15
|
+
timer: 10
|
16
|
+
debug: false
|
17
|
+
|
18
|
+
conchita:
|
19
|
+
debug: false
|
20
|
+
timer: 60
|
21
|
+
garbage_collector: true
|
22
|
+
clean_failed: 3600
|
23
|
+
clean_finished: 3600
|
24
|
+
clean_queued: 86400
|
25
|
+
|
26
|
+
transfer:
|
27
|
+
debug: false
|
28
|
+
mkdir: true # build directory tree if missing
|
29
|
+
tempfile: true # transfer to temporary file, rename after sucessful transfer
|
30
|
+
overwrite: false # overwrite any target file with the same name
|
31
|
+
timeout: 1800 # jobs running for longer than X seconds will be killed
|
32
|
+
notify_after: 5 # wait at least X seconds between HTTP notifications
|
33
|
+
|
34
|
+
debug_ftp: false
|
35
|
+
debug_sftp: false
|
36
|
+
|
37
|
+
retry_on:
|
38
|
+
- ftp_perm_error
|
39
|
+
- net_temp_error
|
40
|
+
- conn_reset_by_peer
|
41
|
+
- conn_timed_out
|
42
|
+
- conn_refused
|
43
|
+
- sftp_auth_failed
|
44
|
+
- conn_host_is_down
|
45
|
+
- conn_unreachable
|
46
|
+
- conn_failed
|
47
|
+
- conn_openssl_error
|
48
|
+
retry_max: 5
|
49
|
+
retry_for: 1800
|
50
|
+
retry_after: 10
|
51
|
+
|
52
|
+
newrelic:
|
53
|
+
# licence: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
54
|
+
prefix: "rftpd" # app prefix
|
55
|
+
# platform: "bigbusiness" # app platform name
|
56
|
+
# app_name: "rftpd-bigbusiness-dev" # nickname used for naming app
|
57
|
+
|
58
|
+
logs:
|
59
|
+
path: "/var/log/"
|
60
|
+
|
61
|
+
thin: "rftpd-environment-thin.log"
|
62
|
+
newrelic: "rftpd-environment-newrelic.log"
|
63
|
+
queue: "rftpd-environment-core.log"
|
64
|
+
api: "rftpd-environment-core.log"
|
65
|
+
workers: "rftpd-environment-core.log"
|
66
|
+
|
67
|
+
transfer: "rftpd-environment-workers.log"
|
68
|
+
conchita: "rftpd-environment-workers.log"
|
69
|
+
reporter: "rftpd-environment-workers.log"
|
70
|
+
notify: "rftpd-environment-workers.log"
|
71
|
+
|
72
|
+
test:
|
73
|
+
<<: *defaults
|
74
|
+
|
75
|
+
development:
|
76
|
+
<<: *defaults
|
77
|
+
port: 3100
|
78
|
+
|
79
|
+
pre-production:
|
80
|
+
<<: *defaults
|
81
|
+
port: 3200
|
82
|
+
|
83
|
+
production:
|
84
|
+
<<: *defaults
|
85
|
+
port: 3300
|
data/lib/rest-ftp-daemon.rb
CHANGED
@@ -6,11 +6,7 @@ require "haml"
|
|
6
6
|
require "uri"
|
7
7
|
require "timeout"
|
8
8
|
require "syslog"
|
9
|
-
require "net/http"
|
10
9
|
require "thread"
|
11
|
-
require "singleton"
|
12
|
-
require "grape"
|
13
|
-
require "grape-entity"
|
14
10
|
require "newrelic_rpm"
|
15
11
|
|
16
12
|
|
@@ -18,6 +14,7 @@ require "newrelic_rpm"
|
|
18
14
|
require_relative "shared/logger_formatter"
|
19
15
|
require_relative "shared/logger_helper"
|
20
16
|
require_relative "shared/conf"
|
17
|
+
require_relative "shared/worker_base"
|
21
18
|
|
22
19
|
|
23
20
|
# Project's libs
|
@@ -31,11 +28,10 @@ require_relative "rest-ftp-daemon/paginate"
|
|
31
28
|
require_relative "rest-ftp-daemon/uri"
|
32
29
|
require_relative "rest-ftp-daemon/job_queue"
|
33
30
|
require_relative "rest-ftp-daemon/counters"
|
34
|
-
require_relative "rest-ftp-daemon/worker"
|
35
|
-
require_relative "rest-ftp-daemon/worker_conchita"
|
36
|
-
require_relative "rest-ftp-daemon/worker_reporter"
|
37
|
-
require_relative "rest-ftp-daemon/worker_job"
|
38
31
|
require_relative "rest-ftp-daemon/worker_pool"
|
32
|
+
require_relative "rest-ftp-daemon/workers/conchita"
|
33
|
+
require_relative "rest-ftp-daemon/workers/reporter"
|
34
|
+
require_relative "rest-ftp-daemon/workers/transfer"
|
39
35
|
require_relative "rest-ftp-daemon/job"
|
40
36
|
require_relative "rest-ftp-daemon/notification"
|
41
37
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "grape"
|
2
|
+
|
1
3
|
module RestFtpDaemon
|
2
4
|
module API
|
3
5
|
class Config < Grape::API
|
@@ -11,7 +13,7 @@ module RestFtpDaemon
|
|
11
13
|
|
12
14
|
desc "Reload daemon config"
|
13
15
|
post "/reload" do
|
14
|
-
if Conf
|
16
|
+
if Conf[:allow_reload]==true
|
15
17
|
Conf.reload!
|
16
18
|
status 200
|
17
19
|
return Helpers.get_censored_config
|