aspera-cli 4.11.0 → 4.12.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
- checksums.yaml.gz.sig +0 -0
- data/BUGS.md +0 -1
- data/CHANGELOG.md +71 -52
- data/CONTRIBUTING.md +31 -6
- data/README.md +404 -259
- data/bin/asession +2 -2
- data/docs/test_env.conf +1 -0
- data/examples/aoc.rb +2 -2
- data/examples/dascli +11 -11
- data/examples/faspex4.rb +7 -7
- data/examples/node.rb +1 -1
- data/examples/proxy.pac +2 -2
- data/examples/server.rb +3 -3
- data/lib/aspera/aoc.rb +105 -40
- data/lib/aspera/cli/extended_value.rb +4 -4
- data/lib/aspera/cli/{formater.rb → formatter.rb} +7 -7
- data/lib/aspera/cli/listener/progress.rb +1 -1
- data/lib/aspera/cli/listener/progress_multi.rb +2 -2
- data/lib/aspera/cli/main.rb +18 -18
- data/lib/aspera/cli/manager.rb +5 -5
- data/lib/aspera/cli/plugin.rb +23 -20
- data/lib/aspera/cli/plugins/aoc.rb +75 -112
- data/lib/aspera/cli/plugins/ats.rb +6 -6
- data/lib/aspera/cli/plugins/config.rb +84 -83
- data/lib/aspera/cli/plugins/cos.rb +1 -1
- data/lib/aspera/cli/plugins/faspex.rb +38 -38
- data/lib/aspera/cli/plugins/faspex5.rb +187 -43
- data/lib/aspera/cli/plugins/node.rb +30 -37
- data/lib/aspera/cli/plugins/orchestrator.rb +7 -4
- data/lib/aspera/cli/plugins/preview.rb +10 -9
- data/lib/aspera/cli/plugins/server.rb +1 -1
- data/lib/aspera/cli/plugins/shares.rb +67 -43
- data/lib/aspera/cli/transfer_agent.rb +16 -16
- data/lib/aspera/cli/version.rb +2 -1
- data/lib/aspera/command_line_builder.rb +70 -66
- data/lib/aspera/cos_node.rb +9 -9
- data/lib/aspera/fasp/agent_base.rb +3 -1
- data/lib/aspera/fasp/agent_connect.rb +23 -23
- data/lib/aspera/fasp/agent_direct.rb +13 -14
- data/lib/aspera/fasp/agent_httpgw.rb +20 -19
- data/lib/aspera/fasp/agent_node.rb +13 -15
- data/lib/aspera/fasp/agent_trsdk.rb +1 -1
- data/lib/aspera/fasp/installation.rb +5 -5
- data/lib/aspera/fasp/listener.rb +1 -1
- data/lib/aspera/fasp/parameters.rb +49 -41
- data/lib/aspera/fasp/parameters.yaml +311 -212
- data/lib/aspera/fasp/resume_policy.rb +2 -2
- data/lib/aspera/fasp/transfer_spec.rb +0 -13
- data/lib/aspera/faspex_gw.rb +80 -161
- data/lib/aspera/faspex_postproc.rb +77 -0
- data/lib/aspera/log.rb +7 -7
- data/lib/aspera/nagios.rb +6 -6
- data/lib/aspera/node.rb +24 -19
- data/lib/aspera/oauth.rb +50 -47
- data/lib/aspera/proxy_auto_config.js +22 -22
- data/lib/aspera/proxy_auto_config.rb +3 -3
- data/lib/aspera/rest.rb +12 -10
- data/lib/aspera/rest_error_analyzer.rb +5 -5
- data/lib/aspera/secret_hider.rb +4 -3
- data/lib/aspera/ssh.rb +4 -4
- data/lib/aspera/sync.rb +37 -36
- data/lib/aspera/web_auth.rb +7 -59
- data/lib/aspera/web_server_simple.rb +76 -0
- data.tar.gz.sig +0 -0
- metadata +6 -4
- metadata.gz.sig +0 -0
data/lib/aspera/web_auth.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'webrick/https'
|
3
|
+
require 'aspera/web_server_simple'
|
5
4
|
require 'stringio'
|
6
5
|
|
7
6
|
module Aspera
|
@@ -29,82 +28,31 @@ module Aspera
|
|
29
28
|
end
|
30
29
|
end # WebAuthServlet
|
31
30
|
|
32
|
-
# generates and adds self signed cert to provided webrick options
|
33
|
-
# def fill_self_signed_cert(cert,key)
|
34
|
-
# cert.subject = cert.issuer = OpenSSL::X509::Name.parse('/C=FR/O=Test/OU=Test/CN=Test')
|
35
|
-
# cert.not_before = Time.now
|
36
|
-
# cert.not_after = Time.now + 365 * 24 * 60 * 60
|
37
|
-
# cert.public_key = key.public_key
|
38
|
-
# cert.serial = 0x0
|
39
|
-
# cert.version = 2
|
40
|
-
# ef = OpenSSL::X509::ExtensionFactory.new
|
41
|
-
# ef.issuer_certificate = cert
|
42
|
-
# ef.subject_certificate = cert
|
43
|
-
# cert.extensions = [
|
44
|
-
# ef.create_extension('basicConstraints','CA:TRUE', true),
|
45
|
-
# ef.create_extension('subjectKeyIdentifier', 'hash'),
|
46
|
-
# # ef.create_extension('keyUsage', 'cRLSign,keyCertSign', true),
|
47
|
-
# ]
|
48
|
-
# cert.add_extension(ef.create_extension('authorityKeyIdentifier','keyid:always,issuer:always'))
|
49
|
-
# cert.sign(key, OpenSSL::Digest::SHA256.new)
|
50
|
-
# end
|
51
|
-
|
52
31
|
# start a local web server, then start a browser that will callback the local server upon authentication
|
53
|
-
class WebAuth
|
32
|
+
class WebAuth < WebServerSimple
|
54
33
|
attr_reader :expected_path, :mutex, :cond
|
55
34
|
attr_writer :query
|
56
35
|
|
57
36
|
# @param endpoint_url [String] e.g. 'https://127.0.0.1:12345'
|
58
37
|
def initialize(endpoint_url)
|
59
38
|
uri = URI.parse(endpoint_url)
|
39
|
+
super(uri)
|
60
40
|
# parameters for servlet
|
61
|
-
@query = nil
|
62
41
|
@mutex = Mutex.new
|
63
42
|
@cond = ConditionVariable.new
|
64
43
|
@expected_path = uri.path.empty? ? '/' : uri.path
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
Port: uri.port,
|
69
|
-
Logger: Log.log,
|
70
|
-
AccessLog: [[self, WEBrick::AccessLog::COMMON_LOG_FORMAT]] # replace default access log to call local method "<<" below
|
71
|
-
}
|
72
|
-
case uri.scheme
|
73
|
-
when 'http'
|
74
|
-
Log.log.debug('HTTP mode')
|
75
|
-
when 'https'
|
76
|
-
webrick_options[:SSLEnable] = true
|
77
|
-
# a- automatic certificate generation
|
78
|
-
webrick_options[:SSLCertName] = [['CN', WEBrick::Utils.getservername]]
|
79
|
-
# b- generate self signed cert
|
80
|
-
# webrick_options[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(4096)
|
81
|
-
# webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new
|
82
|
-
# self.class.fill_self_signed_cert(webrick_options[:SSLCertificate],webrick_options[:SSLPrivateKey])
|
83
|
-
## c- good cert
|
84
|
-
# webrick_options[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(File.read('.../myserver.key'))
|
85
|
-
# webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read('.../myserver.crt'))
|
86
|
-
end
|
87
|
-
# self signed certificate generates characters on STDERR, see create_self_signed_cert in webrick/ssl.rb
|
88
|
-
Log.capture_stderr { @server = WEBrick::HTTPServer.new(webrick_options) }
|
89
|
-
@server.mount(@expected_path, WebAuthServlet, self) # additional args provided to constructor
|
90
|
-
Thread.new { @server.start }
|
91
|
-
end
|
92
|
-
|
93
|
-
# log web server access ( option AccessLog )
|
94
|
-
def <<(access_log)
|
95
|
-
Log.log.debug{"webrick log #{access_log.chomp}"}
|
44
|
+
@query = nil
|
45
|
+
mount(@expected_path, WebAuthServlet, self) # additional args provided to constructor
|
46
|
+
Thread.new { start }
|
96
47
|
end
|
97
48
|
|
98
49
|
# wait for request on web server
|
99
50
|
# @return Hash the query
|
100
51
|
def received_request
|
101
|
-
# shall be called only once
|
102
|
-
raise 'error, received_request called twice ?' if @server.nil?
|
103
52
|
# wait for signal from thread
|
104
53
|
@mutex.synchronize{@cond.wait(@mutex)}
|
105
54
|
# tell server thread to stop
|
106
|
-
|
107
|
-
@server = nil
|
55
|
+
shutdown
|
108
56
|
return @query
|
109
57
|
end
|
110
58
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'webrick'
|
4
|
+
require 'webrick/https'
|
5
|
+
require 'aspera/log'
|
6
|
+
require 'openssl'
|
7
|
+
|
8
|
+
module Aspera
|
9
|
+
class WebServerSimple < WEBrick::HTTPServer
|
10
|
+
CERT_PARAMETERS = %i[key cert chain].freeze
|
11
|
+
# generates and adds self signed cert to provided webrick options
|
12
|
+
def self.fill_self_signed_cert(cert, key)
|
13
|
+
cert.subject = cert.issuer = OpenSSL::X509::Name.parse('/C=FR/O=Test/OU=Test/CN=Test')
|
14
|
+
cert.not_before = Time.now
|
15
|
+
cert.not_after = Time.now + 365 * 24 * 60 * 60
|
16
|
+
cert.public_key = key.public_key
|
17
|
+
cert.serial = 0x0
|
18
|
+
cert.version = 2
|
19
|
+
ef = OpenSSL::X509::ExtensionFactory.new
|
20
|
+
ef.issuer_certificate = cert
|
21
|
+
ef.subject_certificate = cert
|
22
|
+
cert.extensions = [
|
23
|
+
ef.create_extension('basicConstraints', 'CA:TRUE', true),
|
24
|
+
ef.create_extension('subjectKeyIdentifier', 'hash')
|
25
|
+
# ef.create_extension('keyUsage', 'cRLSign,keyCertSign', true),
|
26
|
+
]
|
27
|
+
cert.add_extension(ef.create_extension('authorityKeyIdentifier', 'keyid:always,issuer:always'))
|
28
|
+
cert.sign(key, OpenSSL::Digest.new('SHA256'))
|
29
|
+
end
|
30
|
+
|
31
|
+
# @param uri [URI]
|
32
|
+
def initialize(uri, certificate: nil)
|
33
|
+
# see https://www.rubydoc.info/stdlib/webrick/WEBrick/Config
|
34
|
+
webrick_options = {
|
35
|
+
BindAddress: uri.host,
|
36
|
+
Port: uri.port,
|
37
|
+
Logger: Log.log,
|
38
|
+
AccessLog: [[self, WEBrick::AccessLog::COMMON_LOG_FORMAT]] # replace default access log to call local method "<<" below
|
39
|
+
}
|
40
|
+
case uri.scheme
|
41
|
+
when 'http'
|
42
|
+
Log.log.debug('HTTP mode')
|
43
|
+
when 'https'
|
44
|
+
webrick_options[:SSLEnable] = true
|
45
|
+
if certificate.nil?
|
46
|
+
webrick_options[:SSLCertName] = [['CN', WEBrick::Utils.getservername]]
|
47
|
+
else
|
48
|
+
raise 'certificate must be Hash' unless certificate.is_a?(Hash)
|
49
|
+
certificate = certificate.symbolize_keys
|
50
|
+
raise "unexpected key in certificate config: only: #{CERT_PARAMETERS.join(', ')}" if certificate.keys.any?{|k|!CERT_PARAMETERS.include?(k)}
|
51
|
+
webrick_options[:SSLPrivateKey] = if certificate.key?(:key)
|
52
|
+
OpenSSL::PKey::RSA.new(File.read(certificate[:key]))
|
53
|
+
else
|
54
|
+
OpenSSL::PKey::RSA.new(4096)
|
55
|
+
end
|
56
|
+
if certificate.key?(:cert)
|
57
|
+
webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read(certificate[:cert]))
|
58
|
+
else
|
59
|
+
webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new
|
60
|
+
self.class.fill_self_signed_cert(webrick_options[:SSLCertificate], webrick_options[:SSLPrivateKey])
|
61
|
+
end
|
62
|
+
if certificate.key?(:chain)
|
63
|
+
webrick_options[:SSLExtraChainCert] = [OpenSSL::X509::Certificate.new(File.read(certificate[:chain]))]
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
# self signed certificate generates characters on STDERR, see create_self_signed_cert in webrick/ssl.rb
|
68
|
+
Log.capture_stderr { super(webrick_options) }
|
69
|
+
end
|
70
|
+
|
71
|
+
# log web server access ( option AccessLog )
|
72
|
+
def <<(access_log)
|
73
|
+
Log.log.debug{"webrick log #{access_log.chomp}"}
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aspera-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent Martin
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
ZjkOWbUc1aLIsfaQFHWyNfisY9X2RgkFHjX0p5493wnoA7aWh52MUhc145npFh8z
|
36
36
|
v4P9xwkT02Shkert4B4iwNvVjoAUGk+J4090svZCroAyXBjon5LV7MJ4fyw=
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2023-
|
38
|
+
date: 2023-03-20 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: execjs
|
@@ -378,7 +378,7 @@ files:
|
|
378
378
|
- lib/aspera/ats_api.rb
|
379
379
|
- lib/aspera/cli/basic_auth_plugin.rb
|
380
380
|
- lib/aspera/cli/extended_value.rb
|
381
|
-
- lib/aspera/cli/
|
381
|
+
- lib/aspera/cli/formatter.rb
|
382
382
|
- lib/aspera/cli/info.rb
|
383
383
|
- lib/aspera/cli/listener/line_dump.rb
|
384
384
|
- lib/aspera/cli/listener/logger.rb
|
@@ -432,6 +432,7 @@ files:
|
|
432
432
|
- lib/aspera/fasp/transfer_spec.rb
|
433
433
|
- lib/aspera/fasp/uri.rb
|
434
434
|
- lib/aspera/faspex_gw.rb
|
435
|
+
- lib/aspera/faspex_postproc.rb
|
435
436
|
- lib/aspera/hash_ext.rb
|
436
437
|
- lib/aspera/id_generator.rb
|
437
438
|
- lib/aspera/keychain/encrypted_hash.rb
|
@@ -462,6 +463,7 @@ files:
|
|
462
463
|
- lib/aspera/timer_limiter.rb
|
463
464
|
- lib/aspera/uri_reader.rb
|
464
465
|
- lib/aspera/web_auth.rb
|
466
|
+
- lib/aspera/web_server_simple.rb
|
465
467
|
homepage: https://github.com/IBM/aspera-cli
|
466
468
|
licenses:
|
467
469
|
- Apache-2.0
|
@@ -488,7 +490,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
488
490
|
version: '0'
|
489
491
|
requirements:
|
490
492
|
- Read the manual for any requirement
|
491
|
-
rubygems_version: 3.4.
|
493
|
+
rubygems_version: 3.4.6
|
492
494
|
signing_key:
|
493
495
|
specification_version: 4
|
494
496
|
summary: 'Execute actions using command line on IBM Aspera Server products: Aspera
|
metadata.gz.sig
CHANGED
Binary file
|