aspera-cli 4.4.0 → 4.7.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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2095 -1503
  3. data/bin/ascli +2 -1
  4. data/bin/asession +4 -5
  5. data/docs/test_env.conf +3 -0
  6. data/examples/aoc.rb +4 -3
  7. data/examples/faspex4.rb +25 -25
  8. data/examples/proxy.pac +1 -1
  9. data/examples/transfer.rb +17 -17
  10. data/lib/aspera/aoc.rb +238 -185
  11. data/lib/aspera/ascmd.rb +93 -83
  12. data/lib/aspera/ats_api.rb +11 -10
  13. data/lib/aspera/cli/basic_auth_plugin.rb +13 -14
  14. data/lib/aspera/cli/extended_value.rb +42 -33
  15. data/lib/aspera/cli/formater.rb +142 -108
  16. data/lib/aspera/cli/info.rb +17 -0
  17. data/lib/aspera/cli/listener/line_dump.rb +3 -2
  18. data/lib/aspera/cli/listener/logger.rb +2 -1
  19. data/lib/aspera/cli/listener/progress.rb +16 -18
  20. data/lib/aspera/cli/listener/progress_multi.rb +18 -21
  21. data/lib/aspera/cli/main.rb +173 -149
  22. data/lib/aspera/cli/manager.rb +163 -168
  23. data/lib/aspera/cli/plugin.rb +43 -31
  24. data/lib/aspera/cli/plugins/alee.rb +6 -6
  25. data/lib/aspera/cli/plugins/aoc.rb +405 -370
  26. data/lib/aspera/cli/plugins/ats.rb +86 -79
  27. data/lib/aspera/cli/plugins/bss.rb +14 -16
  28. data/lib/aspera/cli/plugins/config.rb +580 -362
  29. data/lib/aspera/cli/plugins/console.rb +23 -19
  30. data/lib/aspera/cli/plugins/cos.rb +18 -18
  31. data/lib/aspera/cli/plugins/faspex.rb +201 -158
  32. data/lib/aspera/cli/plugins/faspex5.rb +80 -57
  33. data/lib/aspera/cli/plugins/node.rb +183 -166
  34. data/lib/aspera/cli/plugins/orchestrator.rb +71 -67
  35. data/lib/aspera/cli/plugins/preview.rb +92 -96
  36. data/lib/aspera/cli/plugins/server.rb +79 -75
  37. data/lib/aspera/cli/plugins/shares.rb +35 -19
  38. data/lib/aspera/cli/plugins/sync.rb +20 -22
  39. data/lib/aspera/cli/transfer_agent.rb +76 -113
  40. data/lib/aspera/cli/version.rb +2 -1
  41. data/lib/aspera/colors.rb +35 -27
  42. data/lib/aspera/command_line_builder.rb +48 -34
  43. data/lib/aspera/cos_node.rb +29 -21
  44. data/lib/aspera/data_repository.rb +3 -2
  45. data/lib/aspera/environment.rb +50 -45
  46. data/lib/aspera/fasp/{manager.rb → agent_base.rb} +28 -25
  47. data/lib/aspera/fasp/{connect.rb → agent_connect.rb} +52 -43
  48. data/lib/aspera/fasp/{local.rb → agent_direct.rb} +58 -72
  49. data/lib/aspera/fasp/{http_gw.rb → agent_httpgw.rb} +37 -43
  50. data/lib/aspera/fasp/{node.rb → agent_node.rb} +35 -16
  51. data/lib/aspera/fasp/agent_trsdk.rb +104 -0
  52. data/lib/aspera/fasp/error.rb +2 -1
  53. data/lib/aspera/fasp/error_info.rb +68 -52
  54. data/lib/aspera/fasp/installation.rb +152 -124
  55. data/lib/aspera/fasp/listener.rb +1 -0
  56. data/lib/aspera/fasp/parameters.rb +87 -92
  57. data/lib/aspera/fasp/parameters.yaml +305 -249
  58. data/lib/aspera/fasp/resume_policy.rb +11 -14
  59. data/lib/aspera/fasp/transfer_spec.rb +26 -0
  60. data/lib/aspera/fasp/uri.rb +22 -21
  61. data/lib/aspera/faspex_gw.rb +55 -89
  62. data/lib/aspera/hash_ext.rb +4 -3
  63. data/lib/aspera/id_generator.rb +8 -7
  64. data/lib/aspera/keychain/encrypted_hash.rb +121 -0
  65. data/lib/aspera/keychain/macos_security.rb +90 -0
  66. data/lib/aspera/log.rb +55 -37
  67. data/lib/aspera/nagios.rb +13 -12
  68. data/lib/aspera/node.rb +30 -25
  69. data/lib/aspera/oauth.rb +175 -226
  70. data/lib/aspera/open_application.rb +4 -3
  71. data/lib/aspera/persistency_action_once.rb +6 -6
  72. data/lib/aspera/persistency_folder.rb +5 -9
  73. data/lib/aspera/preview/file_types.rb +6 -5
  74. data/lib/aspera/preview/generator.rb +25 -24
  75. data/lib/aspera/preview/options.rb +16 -14
  76. data/lib/aspera/preview/utils.rb +98 -98
  77. data/lib/aspera/{proxy_auto_config.erb.js → proxy_auto_config.js} +23 -31
  78. data/lib/aspera/proxy_auto_config.rb +111 -20
  79. data/lib/aspera/rest.rb +154 -135
  80. data/lib/aspera/rest_call_error.rb +2 -2
  81. data/lib/aspera/rest_error_analyzer.rb +23 -25
  82. data/lib/aspera/rest_errors_aspera.rb +15 -14
  83. data/lib/aspera/ssh.rb +12 -10
  84. data/lib/aspera/sync.rb +42 -41
  85. data/lib/aspera/temp_file_manager.rb +18 -14
  86. data/lib/aspera/timer_limiter.rb +2 -1
  87. data/lib/aspera/uri_reader.rb +7 -5
  88. data/lib/aspera/web_auth.rb +79 -76
  89. metadata +116 -29
  90. data/docs/Makefile +0 -66
  91. data/docs/README.erb.md +0 -3973
  92. data/docs/README.md +0 -13
  93. data/docs/diagrams.txt +0 -49
  94. data/docs/doc_tools.rb +0 -58
  95. data/lib/aspera/api_detector.rb +0 -60
  96. data/lib/aspera/cli/plugins/shares2.rb +0 -114
  97. data/lib/aspera/secrets.rb +0 -20
@@ -1,105 +1,108 @@
1
+ # frozen_string_literal: true
1
2
  require 'webrick'
2
3
  require 'webrick/https'
3
- require 'thread'
4
4
 
5
5
  module Aspera
6
- class WebAuth
7
- # server for auth page
8
- class FxGwServlet < WEBrick::HTTPServlet::AbstractServlet
9
- def initialize(server,info) # additional args get here
10
- @shared=info
11
- end
6
+ # servlet called on callback: it records the callback request
7
+ class WebAuthServlet < WEBrick::HTTPServlet::AbstractServlet
8
+ def initialize(server,application) # additional args get here
9
+ Log.log.debug('WebAuthServlet initialize')
10
+ super(server)
11
+ @app=application
12
+ end
12
13
 
13
- def do_GET (request, response)
14
- if ! request.path.eql?(@shared[:expected_path])
15
- response.status=400
16
- return
17
- end
18
- @shared[:mutex].synchronize do
19
- @shared[:query]=request.query
20
- @shared[:cond].signal
21
- end
22
- response.status=200
23
- response.content_type = 'text/html'
24
- response.body='<html><head><title>Ok</title></head><body><h1>Thank you !</h1><p>You can close this window.</p></body></html>'
14
+ def service(request, response)
15
+ Log.log.debug("received request from browser #{request.request_method} #{request.path}")
16
+ raise WEBrick::HTTPStatus::MethodNotAllowed,"unexpected method: #{request.request_method}" unless request.request_method.eql?('GET')
17
+ raise WEBrick::HTTPStatus::NotFound,"unexpected path: #{request.path}" unless request.path.eql?(@app.expected_path)
18
+ # acquire lock and signal change
19
+ @app.mutex.synchronize do
20
+ @app.query=request.query
21
+ @app.cond.signal
25
22
  end
26
- end # FxGwServlet
27
-
28
- # generates and adds self signed cert to provided webrick options
29
- def fill_self_signed_cert(options)
30
- key = OpenSSL::PKey::RSA.new(4096)
31
- cert = OpenSSL::X509::Certificate.new
32
- cert.subject = cert.issuer = OpenSSL::X509::Name.parse('/C=FR/O=Test/OU=Test/CN=Test')
33
- cert.not_before = Time.now
34
- cert.not_after = Time.now + 365 * 24 * 60 * 60
35
- cert.public_key = key.public_key
36
- cert.serial = 0x0
37
- cert.version = 2
38
- ef = OpenSSL::X509::ExtensionFactory.new
39
- ef.issuer_certificate = cert
40
- ef.subject_certificate = cert
41
- cert.extensions = [
42
- ef.create_extension('basicConstraints','CA:TRUE', true),
43
- ef.create_extension('subjectKeyIdentifier', 'hash'),
44
- # ef.create_extension('keyUsage', 'cRLSign,keyCertSign', true),
45
- ]
46
- cert.add_extension(ef.create_extension('authorityKeyIdentifier','keyid:always,issuer:always'))
47
- cert.sign(key, OpenSSL::Digest::SHA256.new)
48
- options[:SSLPrivateKey] = key
49
- options[:SSLCertificate] = cert
23
+ response.status=200
24
+ response.content_type = 'text/html'
25
+ response.body='<html><head><title>Ok</title></head><body><h1>Thank you !</h1><p>You can close this window.</p></body></html>'
26
+ return nil
50
27
  end
28
+ end # WebAuthServlet
29
+
30
+ # generates and adds self signed cert to provided webrick options
31
+ #def fill_self_signed_cert(cert,key)
32
+ # cert.subject = cert.issuer = OpenSSL::X509::Name.parse('/C=FR/O=Test/OU=Test/CN=Test')
33
+ # cert.not_before = Time.now
34
+ # cert.not_after = Time.now + 365 * 24 * 60 * 60
35
+ # cert.public_key = key.public_key
36
+ # cert.serial = 0x0
37
+ # cert.version = 2
38
+ # ef = OpenSSL::X509::ExtensionFactory.new
39
+ # ef.issuer_certificate = cert
40
+ # ef.subject_certificate = cert
41
+ # cert.extensions = [
42
+ # ef.create_extension('basicConstraints','CA:TRUE', true),
43
+ # ef.create_extension('subjectKeyIdentifier', 'hash'),
44
+ # # ef.create_extension('keyUsage', 'cRLSign,keyCertSign', true),
45
+ # ]
46
+ # cert.add_extension(ef.create_extension('authorityKeyIdentifier','keyid:always,issuer:always'))
47
+ # cert.sign(key, OpenSSL::Digest::SHA256.new)
48
+ #end
51
49
 
50
+ # start a local web server, then start a browser that will callback the local server upon authentication
51
+ class WebAuth
52
+ attr_reader :expected_path,:mutex,:cond
53
+ attr_writer :query
54
+ # @param endpoint_url [String] e.g. 'https://127.0.0.1:12345'
52
55
  def initialize(endpoint_url)
53
56
  uri=URI.parse(endpoint_url)
57
+ # parameters for servlet
58
+ @query=nil
59
+ @mutex=Mutex.new
60
+ @cond=ConditionVariable.new
61
+ @expected_path=uri.path.empty? ? '/' : uri.path
62
+ # see https://www.rubydoc.info/stdlib/webrick/WEBrick/Config
54
63
  webrick_options = {
55
- :app => WebAuth,
56
- :Port => uri.port,
57
- :Logger => Log.log
64
+ BindAddress: uri.host,
65
+ Port: uri.port,
66
+ Logger: Log.log,
67
+ AccessLog: [[self, WEBrick::AccessLog::COMMON_LOG_FORMAT]] # see "<<" below
58
68
  }
59
- uri_path=uri.path.empty? ? '/' : uri.path
60
69
  case uri.scheme
61
70
  when 'http'
62
71
  Log.log.debug('HTTP mode')
63
72
  when 'https'
64
73
  webrick_options[:SSLEnable]=true
65
- webrick_options[:SSLVerifyClient]=OpenSSL::SSL::VERIFY_NONE
66
- case 0
67
- when 0
68
- # generate self signed cert
69
- fill_self_signed_cert(webrick_options)
70
- when 1
71
- # short
72
- webrick_options[:SSLCertName] = [ [ 'CN',WEBrick::Utils::getservername ] ]
73
- Log.log.error(">>>#{webrick_options[:SSLCertName]}")
74
- when 2
75
- # good cert
76
- webrick_options[:SSLPrivateKey] =OpenSSL::PKey::RSA.new(File.read('/Users/laurent/workspace/Tools/certificate/myserver.key'))
77
- webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read('/Users/laurent/workspace/Tools/certificate/myserver.crt'))
78
- end
74
+ webrick_options[:SSLVerifyClient] = OpenSSL::SSL::VERIFY_NONE
75
+ # a- automatic certificate generation
76
+ webrick_options[:SSLCertName] = [['CN',WEBrick::Utils.getservername]]
77
+ # b- generate self signed cert
78
+ #webrick_options[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(4096)
79
+ #webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new
80
+ #self.class.fill_self_signed_cert(webrick_options[:SSLCertificate],webrick_options[:SSLPrivateKey])
81
+ ## c- good cert
82
+ #webrick_options[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(File.read('.../myserver.key'))
83
+ #webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read('.../myserver.crt'))
79
84
  end
80
- # parameters for servlet
81
- @shared_info={
82
- expected_path: uri_path,
83
- mutex: Mutex.new,
84
- cond: ConditionVariable.new
85
- }
86
85
  @server = WEBrick::HTTPServer.new(webrick_options)
87
- @server.mount(uri_path, FxGwServlet, @shared_info) # additional args provided to constructor
86
+ @server.mount(@expected_path, WebAuthServlet, self) # additional args provided to constructor
88
87
  Thread.new { @server.start }
89
88
  end
90
89
 
90
+ # log web server access
91
+ def <<(access_log)
92
+ Log.log.debug{"webrick log #{access_log.chomp}"}
93
+ end
94
+
91
95
  # wait for request on web server
92
96
  # @return Hash the query
93
- def get_request
94
- Log.log.debug('get_request')
95
- # called only once
96
- raise "error, called twice ?" if @server.nil?
97
- @shared_info[:mutex].synchronize do
98
- @shared_info[:cond].wait(@shared_info[:mutex])
99
- end
97
+ def received_request
98
+ # shall be called only once
99
+ raise 'error, received_request called twice ?' if @server.nil?
100
+ # wait for signal from thread
101
+ @mutex.synchronize{@cond.wait(@mutex)}
102
+ # tell server thread to stop
100
103
  @server.shutdown
101
104
  @server=nil
102
- return @shared_info[:query]
105
+ return @query
103
106
  end
104
107
  end
105
108
  end
metadata CHANGED
@@ -1,17 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aspera-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.0
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-13 00:00:00.000000000 Z
11
+ date: 2022-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: xml-simple
14
+ name: execjs
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: grpc
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
@@ -39,19 +53,39 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '2.0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: ruby-progressbar
56
+ name: mimemagic
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '1.0'
61
+ version: '0.3'
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '1.0'
68
+ version: '0.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: net-smtp
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '0.4'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0.1'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.4'
55
89
  - !ruby/object:Gem::Dependency
56
90
  name: net-ssh
57
91
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +101,21 @@ dependencies:
67
101
  - !ruby/object:Gem::Version
68
102
  version: '6.0'
69
103
  - !ruby/object:Gem::Dependency
70
- name: execjs
104
+ name: ruby-progressbar
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rubyzip
71
119
  requirement: !ruby/object:Gem::Requirement
72
120
  requirements:
73
121
  - - "~>"
@@ -80,6 +128,20 @@ dependencies:
80
128
  - - "~>"
81
129
  - !ruby/object:Gem::Version
82
130
  version: '2.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: security
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '0.0'
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.0'
83
145
  - !ruby/object:Gem::Dependency
84
146
  name: terminal-table
85
147
  requirement: !ruby/object:Gem::Requirement
@@ -109,19 +171,19 @@ dependencies:
109
171
  - !ruby/object:Gem::Version
110
172
  version: '0.9'
111
173
  - !ruby/object:Gem::Dependency
112
- name: rubyzip
174
+ name: webrick
113
175
  requirement: !ruby/object:Gem::Requirement
114
176
  requirements:
115
177
  - - "~>"
116
178
  - !ruby/object:Gem::Version
117
- version: '2.0'
179
+ version: '1.7'
118
180
  type: :runtime
119
181
  prerelease: false
120
182
  version_requirements: !ruby/object:Gem::Requirement
121
183
  requirements:
122
184
  - - "~>"
123
185
  - !ruby/object:Gem::Version
124
- version: '2.0'
186
+ version: '1.7'
125
187
  - !ruby/object:Gem::Dependency
126
188
  name: websocket
127
189
  requirement: !ruby/object:Gem::Requirement
@@ -151,19 +213,19 @@ dependencies:
151
213
  - !ruby/object:Gem::Version
152
214
  version: '0.3'
153
215
  - !ruby/object:Gem::Dependency
154
- name: webrick
216
+ name: xml-simple
155
217
  requirement: !ruby/object:Gem::Requirement
156
218
  requirements:
157
219
  - - "~>"
158
220
  - !ruby/object:Gem::Version
159
- version: '1.7'
221
+ version: '1.0'
160
222
  type: :runtime
161
223
  prerelease: false
162
224
  version_requirements: !ruby/object:Gem::Requirement
163
225
  requirements:
164
226
  - - "~>"
165
227
  - !ruby/object:Gem::Version
166
- version: '1.7'
228
+ version: '1.0'
167
229
  - !ruby/object:Gem::Dependency
168
230
  name: bundler
169
231
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +268,34 @@ dependencies:
206
268
  - - "~>"
207
269
  - !ruby/object:Gem::Version
208
270
  version: '3.0'
271
+ - !ruby/object:Gem::Dependency
272
+ name: rubocop
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: '1.12'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '1.12'
285
+ - !ruby/object:Gem::Dependency
286
+ name: rubocop-ast
287
+ requirement: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: '1.4'
292
+ type: :development
293
+ prerelease: false
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - "~>"
297
+ - !ruby/object:Gem::Version
298
+ version: '1.4'
209
299
  description: Command line interface for IBM Aspera products
210
300
  email:
211
301
  - laurent.martin.aspera@fr.ibm.com
@@ -220,23 +310,18 @@ files:
220
310
  - bin/ascli
221
311
  - bin/asession
222
312
  - bin/dascli
223
- - docs/Makefile
224
- - docs/README.erb.md
225
- - docs/README.md
226
- - docs/diagrams.txt
227
- - docs/doc_tools.rb
228
313
  - docs/test_env.conf
229
314
  - examples/aoc.rb
230
315
  - examples/faspex4.rb
231
316
  - examples/proxy.pac
232
317
  - examples/transfer.rb
233
318
  - lib/aspera/aoc.rb
234
- - lib/aspera/api_detector.rb
235
319
  - lib/aspera/ascmd.rb
236
320
  - lib/aspera/ats_api.rb
237
321
  - lib/aspera/cli/basic_auth_plugin.rb
238
322
  - lib/aspera/cli/extended_value.rb
239
323
  - lib/aspera/cli/formater.rb
324
+ - lib/aspera/cli/info.rb
240
325
  - lib/aspera/cli/listener/line_dump.rb
241
326
  - lib/aspera/cli/listener/logger.rb
242
327
  - lib/aspera/cli/listener/progress.rb
@@ -258,7 +343,6 @@ files:
258
343
  - lib/aspera/cli/plugins/preview.rb
259
344
  - lib/aspera/cli/plugins/server.rb
260
345
  - lib/aspera/cli/plugins/shares.rb
261
- - lib/aspera/cli/plugins/shares2.rb
262
346
  - lib/aspera/cli/plugins/sync.rb
263
347
  - lib/aspera/cli/transfer_agent.rb
264
348
  - lib/aspera/cli/version.rb
@@ -274,22 +358,26 @@ files:
274
358
  - lib/aspera/data/7
275
359
  - lib/aspera/data_repository.rb
276
360
  - lib/aspera/environment.rb
277
- - lib/aspera/fasp/connect.rb
361
+ - lib/aspera/fasp/agent_base.rb
362
+ - lib/aspera/fasp/agent_connect.rb
363
+ - lib/aspera/fasp/agent_direct.rb
364
+ - lib/aspera/fasp/agent_httpgw.rb
365
+ - lib/aspera/fasp/agent_node.rb
366
+ - lib/aspera/fasp/agent_trsdk.rb
278
367
  - lib/aspera/fasp/error.rb
279
368
  - lib/aspera/fasp/error_info.rb
280
- - lib/aspera/fasp/http_gw.rb
281
369
  - lib/aspera/fasp/installation.rb
282
370
  - lib/aspera/fasp/listener.rb
283
- - lib/aspera/fasp/local.rb
284
- - lib/aspera/fasp/manager.rb
285
- - lib/aspera/fasp/node.rb
286
371
  - lib/aspera/fasp/parameters.rb
287
372
  - lib/aspera/fasp/parameters.yaml
288
373
  - lib/aspera/fasp/resume_policy.rb
374
+ - lib/aspera/fasp/transfer_spec.rb
289
375
  - lib/aspera/fasp/uri.rb
290
376
  - lib/aspera/faspex_gw.rb
291
377
  - lib/aspera/hash_ext.rb
292
378
  - lib/aspera/id_generator.rb
379
+ - lib/aspera/keychain/encrypted_hash.rb
380
+ - lib/aspera/keychain/macos_security.rb
293
381
  - lib/aspera/log.rb
294
382
  - lib/aspera/nagios.rb
295
383
  - lib/aspera/node.rb
@@ -303,13 +391,12 @@ files:
303
391
  - lib/aspera/preview/options.rb
304
392
  - lib/aspera/preview/utils.rb
305
393
  - lib/aspera/preview/video_error.png
306
- - lib/aspera/proxy_auto_config.erb.js
394
+ - lib/aspera/proxy_auto_config.js
307
395
  - lib/aspera/proxy_auto_config.rb
308
396
  - lib/aspera/rest.rb
309
397
  - lib/aspera/rest_call_error.rb
310
398
  - lib/aspera/rest_error_analyzer.rb
311
399
  - lib/aspera/rest_errors_aspera.rb
312
- - lib/aspera/secrets.rb
313
400
  - lib/aspera/ssh.rb
314
401
  - lib/aspera/sync.rb
315
402
  - lib/aspera/temp_file_manager.rb
@@ -332,7 +419,7 @@ require_paths:
332
419
  - lib
333
420
  required_ruby_version: !ruby/object:Gem::Requirement
334
421
  requirements:
335
- - - ">"
422
+ - - ">="
336
423
  - !ruby/object:Gem::Version
337
424
  version: '2.4'
338
425
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -346,5 +433,5 @@ rubygems_version: 3.0.3.1
346
433
  signing_key:
347
434
  specification_version: 4
348
435
  summary: 'Execute actions using command line on IBM Aspera Server products: Aspera
349
- on Cloud, Faspex, Shares, Node, Console, Orchestrator, Transfer Server'
436
+ on Cloud, Faspex, Shares, Node, Console, Orchestrator, High Speed Transfer Server'
350
437
  test_files: []
data/docs/Makefile DELETED
@@ -1,66 +0,0 @@
1
- ##################################
2
- # Documentation
3
-
4
- DIR_TOP=../
5
- include $(DIR_TOP)common.make
6
- # "make" shall be executed inside the folder containing this makefile
7
- DIR_DOC=
8
-
9
- # files generated to be included in README.md
10
- INCL_USAGE=$(DIR_TMP)$(EXENAME)_usage.txt
11
- INCL_COMMANDS=$(DIR_TMP)$(EXENAME)_commands.txt
12
- INCL_ASESSION=$(DIR_TMP)asession_usage.txt
13
-
14
- # env var used in README.erb.md
15
- export EXENAME GEMSPEC INCL_USAGE INCL_COMMANDS INCL_ASESSION
16
-
17
- TMPL_TEST_CONF=$(DIR_DOC)$(TEST_CONF_FILE_BASE)
18
-
19
- MANUAL_BASE=$(DIR_DOC)Manual_$(EXENAME)_$(GEMVERSION)
20
- MANUAL_PDF=$(MANUAL_BASE).pdf
21
- MANUAL_HTML=$(MANUAL_BASE).html
22
-
23
- # main target to build doc
24
- all:: $(MANUAL_PDF) $(TMPL_TEST_CONF)
25
-
26
- doc: all
27
-
28
- # generate template configuration file for tests, remove own secrets
29
- $(TMPL_TEST_CONF): $(TEST_CONF_FILE_PATH)
30
- ruby -e 'require "yaml";n={};c=YAML.load_file("$(TEST_CONF_FILE_PATH)").each{|k,v| n[k]=["config","default"].include?(k)?v:v.keys.inject({}){|m,i|m[i]="your value here";m}};File.write("$(TMPL_TEST_CONF)",n.to_yaml)'
31
-
32
- $(MANUAL_PDF): $(DIR_TOP)README.md
33
- pandoc --number-sections --resource-path=. --toc -o $(MANUAL_HTML) $(DIR_TOP)README.md
34
- wkhtmltopdf toc $(MANUAL_HTML) $(MANUAL_PDF)
35
-
36
- $(DIR_TOP)README.md: $(DIR_DOC)README.erb.md $(INCL_COMMANDS) $(INCL_USAGE) $(INCL_ASESSION)
37
- INCL_DIR_GEM=$(DIR_TOP)lib erb -T - --encoding UTF-8:UTF-8 $(DIR_DOC)README.erb.md > $(DIR_TOP)README.md
38
-
39
- $(INCL_COMMANDS): $(DIR_TMP).exists $(TEST_MAKEFILE)
40
- sed -nEe 's/.*\$$\(EXE_MAN.?\)/$(EXENAME)/p' $(TEST_MAKEFILE) > $(DIR_TMP)usg1.txt
41
- sed -i.bak -Ee 's/\$$\$$\{([a-z_]+)\}/my_\1/g' $(DIR_TMP)usg1.txt
42
- sed -i.bak -Ee 's/\$$\(([^)]+)\)/\1/g' $(DIR_TMP)usg1.txt
43
- sed -i.bak -Ee 's/\$$(\$$)/\1/g' $(DIR_TMP)usg1.txt
44
- sed -i.bak -Ee 's/\$$@/test/g' $(DIR_TMP)usg1.txt
45
- sed -i.bak -Ee 's/"'"'"'/"/g' $(DIR_TMP)usg1.txt
46
- sed -i.bak -Ee 's/'"'"'"/"/g' $(DIR_TMP)usg1.txt
47
- sed -i.bak -Ee 's/""/"/g' $(DIR_TMP)usg1.txt
48
- sed -i.bak -Ee 's/CF_//g' $(DIR_TMP)usg1.txt
49
- sed -i.bak -Ee 's/DIR_[A-Z]+//g' $(DIR_TMP)usg1.txt
50
- sed -i.bak -Ee 's/LOCAL_SAMPLE_FILE(NAME|PATH)/testfile.bin/g' $(DIR_TMP)usg1.txt
51
- sed -i.bak -Ee 's/HSTS_FOLDER_UPLOAD/folder_1/g' $(DIR_TMP)usg1.txt
52
- sed -i.bak -Ee 's/PKG_TEST_TITLE/Important files delivery/g' $(DIR_TMP)usg1.txt
53
- sed -i.bak -Ee 's/AOC_EXTERNAL_EMAIL/external.user@example.com/g' $(DIR_TMP)usg1.txt
54
- sed -i.bak -Ee 's/EMAIL_ADDR/internal.user@example.com/g' $(DIR_TMP)usg1.txt
55
- sort -u < $(DIR_TMP)usg1.txt > $(INCL_COMMANDS)
56
- # generated help of tools depends on all sources, so regenerate always
57
- .PHONY: $(INCL_USAGE)
58
- $(INCL_USAGE): $(DIR_TMP).exists
59
- -$(EXETESTB) -Cnone -h 2> $(INCL_USAGE)
60
- sed -i -e 's/\/Users\/[^\/]*/\/Users\/FooBar/g' $(INCL_USAGE)
61
- .PHONY: $(INCL_ASESSION)
62
- $(INCL_ASESSION): $(DIR_TMP).exists
63
- $(DIR_BIN)/asession -h 2> $(INCL_ASESSION) || true
64
- clean::
65
- rm -f $(MANUAL_PDF) $(MANUAL_HTML) $(INCL_COMMANDS) $(INCL_USAGE) $(INCL_ASESSION)
66
-