aspera-cli 4.4.0 → 4.5.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1042 -787
  3. data/bin/ascli +1 -1
  4. data/bin/asession +3 -5
  5. data/docs/Makefile +4 -7
  6. data/docs/README.erb.md +988 -740
  7. data/examples/faspex4.rb +4 -6
  8. data/examples/transfer.rb +2 -2
  9. data/lib/aspera/aoc.rb +139 -118
  10. data/lib/aspera/cli/listener/progress_multi.rb +5 -5
  11. data/lib/aspera/cli/main.rb +64 -34
  12. data/lib/aspera/cli/manager.rb +19 -20
  13. data/lib/aspera/cli/plugin.rb +9 -1
  14. data/lib/aspera/cli/plugins/aoc.rb +156 -143
  15. data/lib/aspera/cli/plugins/ats.rb +11 -10
  16. data/lib/aspera/cli/plugins/bss.rb +2 -2
  17. data/lib/aspera/cli/plugins/config.rb +236 -112
  18. data/lib/aspera/cli/plugins/faspex.rb +29 -7
  19. data/lib/aspera/cli/plugins/faspex5.rb +21 -8
  20. data/lib/aspera/cli/plugins/node.rb +21 -9
  21. data/lib/aspera/cli/plugins/orchestrator.rb +5 -3
  22. data/lib/aspera/cli/plugins/preview.rb +2 -2
  23. data/lib/aspera/cli/plugins/server.rb +3 -3
  24. data/lib/aspera/cli/plugins/shares.rb +17 -0
  25. data/lib/aspera/cli/transfer_agent.rb +47 -85
  26. data/lib/aspera/cli/version.rb +1 -1
  27. data/lib/aspera/environment.rb +4 -4
  28. data/lib/aspera/fasp/{manager.rb → agent_base.rb} +7 -6
  29. data/lib/aspera/fasp/{connect.rb → agent_connect.rb} +46 -39
  30. data/lib/aspera/fasp/{local.rb → agent_direct.rb} +14 -17
  31. data/lib/aspera/fasp/{http_gw.rb → agent_httpgw.rb} +4 -4
  32. data/lib/aspera/fasp/{node.rb → agent_node.rb} +25 -8
  33. data/lib/aspera/fasp/agent_trsdk.rb +106 -0
  34. data/lib/aspera/fasp/default.rb +17 -0
  35. data/lib/aspera/fasp/installation.rb +64 -48
  36. data/lib/aspera/fasp/parameters.rb +7 -3
  37. data/lib/aspera/faspex_gw.rb +6 -6
  38. data/lib/aspera/keychain/encrypted_hash.rb +120 -0
  39. data/lib/aspera/keychain/macos_security.rb +94 -0
  40. data/lib/aspera/log.rb +45 -32
  41. data/lib/aspera/node.rb +3 -6
  42. data/lib/aspera/rest.rb +65 -49
  43. metadata +68 -27
  44. data/lib/aspera/api_detector.rb +0 -60
  45. data/lib/aspera/secrets.rb +0 -20
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.5.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: 2021-12-27 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,19 @@ 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'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: net-ssh
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +81,21 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: '6.0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: execjs
84
+ name: ruby-progressbar
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubyzip
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - "~>"
@@ -81,47 +109,47 @@ dependencies:
81
109
  - !ruby/object:Gem::Version
82
110
  version: '2.0'
83
111
  - !ruby/object:Gem::Dependency
84
- name: terminal-table
112
+ name: security
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: '1.8'
117
+ version: '0.0'
90
118
  type: :runtime
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: '1.8'
124
+ version: '0.0'
97
125
  - !ruby/object:Gem::Dependency
98
- name: tty-spinner
126
+ name: terminal-table
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
129
  - - "~>"
102
130
  - !ruby/object:Gem::Version
103
- version: '0.9'
131
+ version: '1.8'
104
132
  type: :runtime
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
- version: '0.9'
138
+ version: '1.8'
111
139
  - !ruby/object:Gem::Dependency
112
- name: rubyzip
140
+ name: tty-spinner
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
143
  - - "~>"
116
144
  - !ruby/object:Gem::Version
117
- version: '2.0'
145
+ version: '0.9'
118
146
  type: :runtime
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
150
  - - "~>"
123
151
  - !ruby/object:Gem::Version
124
- version: '2.0'
152
+ version: '0.9'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: websocket
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +192,20 @@ dependencies:
164
192
  - - "~>"
165
193
  - !ruby/object:Gem::Version
166
194
  version: '1.7'
195
+ - !ruby/object:Gem::Dependency
196
+ name: xml-simple
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '1.0'
167
209
  - !ruby/object:Gem::Dependency
168
210
  name: bundler
169
211
  requirement: !ruby/object:Gem::Requirement
@@ -209,10 +251,7 @@ dependencies:
209
251
  description: Command line interface for IBM Aspera products
210
252
  email:
211
253
  - laurent.martin.aspera@fr.ibm.com
212
- executables:
213
- - ascli
214
- - asession
215
- - dascli
254
+ executables: []
216
255
  extensions: []
217
256
  extra_rdoc_files: []
218
257
  files:
@@ -231,7 +270,6 @@ files:
231
270
  - examples/proxy.pac
232
271
  - examples/transfer.rb
233
272
  - lib/aspera/aoc.rb
234
- - lib/aspera/api_detector.rb
235
273
  - lib/aspera/ascmd.rb
236
274
  - lib/aspera/ats_api.rb
237
275
  - lib/aspera/cli/basic_auth_plugin.rb
@@ -274,15 +312,17 @@ files:
274
312
  - lib/aspera/data/7
275
313
  - lib/aspera/data_repository.rb
276
314
  - lib/aspera/environment.rb
277
- - lib/aspera/fasp/connect.rb
315
+ - lib/aspera/fasp/agent_base.rb
316
+ - lib/aspera/fasp/agent_connect.rb
317
+ - lib/aspera/fasp/agent_direct.rb
318
+ - lib/aspera/fasp/agent_httpgw.rb
319
+ - lib/aspera/fasp/agent_node.rb
320
+ - lib/aspera/fasp/agent_trsdk.rb
321
+ - lib/aspera/fasp/default.rb
278
322
  - lib/aspera/fasp/error.rb
279
323
  - lib/aspera/fasp/error_info.rb
280
- - lib/aspera/fasp/http_gw.rb
281
324
  - lib/aspera/fasp/installation.rb
282
325
  - lib/aspera/fasp/listener.rb
283
- - lib/aspera/fasp/local.rb
284
- - lib/aspera/fasp/manager.rb
285
- - lib/aspera/fasp/node.rb
286
326
  - lib/aspera/fasp/parameters.rb
287
327
  - lib/aspera/fasp/parameters.yaml
288
328
  - lib/aspera/fasp/resume_policy.rb
@@ -290,6 +330,8 @@ files:
290
330
  - lib/aspera/faspex_gw.rb
291
331
  - lib/aspera/hash_ext.rb
292
332
  - lib/aspera/id_generator.rb
333
+ - lib/aspera/keychain/encrypted_hash.rb
334
+ - lib/aspera/keychain/macos_security.rb
293
335
  - lib/aspera/log.rb
294
336
  - lib/aspera/nagios.rb
295
337
  - lib/aspera/node.rb
@@ -309,7 +351,6 @@ files:
309
351
  - lib/aspera/rest_call_error.rb
310
352
  - lib/aspera/rest_error_analyzer.rb
311
353
  - lib/aspera/rest_errors_aspera.rb
312
- - lib/aspera/secrets.rb
313
354
  - lib/aspera/ssh.rb
314
355
  - lib/aspera/sync.rb
315
356
  - lib/aspera/temp_file_manager.rb
@@ -1,60 +0,0 @@
1
- require 'aspera/log'
2
- require 'aspera/rest'
3
-
4
- module Aspera
5
- # detect Aspera product by calling API
6
- class ApiDetector
7
- # @return a hash: {:product=>:node,:version=>'unknown'}
8
- # if not found: {:product=>:unknown,:version=>'unknown'}
9
- def self.discover_product(url)
10
- #uri=URI.parse(url)
11
- api=Rest.new({:base_url=>url})
12
- # Node
13
- begin
14
- result=api.call({:operation=>'GET',:subpath=>'ping'})
15
- if result[:http].body.eql?('')
16
- return {:product=>:node,:version=>'unknown'}
17
- end
18
- rescue SocketError => e
19
- raise e
20
- rescue => e
21
- Log.log.debug("not node (#{e.class}: #{e})")
22
- end
23
- # AoC
24
- begin
25
- result=api.call({:operation=>'GET',:subpath=>'',:headers=>{'Accept'=>'text/html'}})
26
- if result[:http].body.include?('content="AoC"')
27
- return {:product=>:aoc,:version=>'unknown'}
28
- end
29
- rescue SocketError => e
30
- raise e
31
- rescue => e
32
- Log.log.debug("not aoc (#{e.class}: #{e})")
33
- end
34
- # Faspex
35
- begin
36
- result=api.call({:operation=>'POST',:subpath=>'aspera/faspex',:headers=>{'Accept'=>'application/xrds+xml'},:text_body_params=>''})
37
- if result[:http].body.start_with?('<?xml')
38
- res_s=XmlSimple.xml_in(result[:http].body, {"ForceArray" => false})
39
- version=res_s['XRD']['application']['version']
40
- #return JSON.pretty_generate(res_s)
41
- end
42
- return {:product=>:faspex,:version=>version}
43
- rescue
44
- Log.log.debug("not faspex")
45
- end
46
- # Shares
47
- begin
48
- result=api.read('node_api/app')
49
- Log.log.warn("not supposed to work")
50
- rescue RestCallError => e
51
- if e.response.code.to_s.eql?('401') and e.response.body.eql?('{"error":{"user_message":"API user authentication failed"}}')
52
- return {:product=>:shares,:version=>'unknown'}
53
- end
54
- Log.log.warn("not shares: #{e.response.code} #{e.response.body}")
55
- rescue
56
- end
57
- return {:product=>:unknown,:version=>'unknown'}
58
- end
59
- end
60
- end
@@ -1,20 +0,0 @@
1
- module Aspera
2
- # Manage secrets in CLI using secure way (encryption, wallet, etc...)
3
- class Secrets
4
- attr_accessor :default_secret,:all_secrets
5
- def initialize()
6
- @default_secret=nil
7
- @all_secrets={}
8
- end
9
-
10
- def get_secret(id=nil,mandatory=true)
11
- secret=@default_secret || @all_secrets[id]
12
- raise "please provide secret for #{id}" if secret.nil? and mandatory
13
- return secret
14
- end
15
-
16
- def get_secrets
17
- return @all_secrets
18
- end
19
- end
20
- end