aspera-cli 4.21.2 → 4.23.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 (105) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/BUGS.md +1 -1
  4. data/CHANGELOG.md +402 -374
  5. data/CONTRIBUTING.md +6 -10
  6. data/README.md +1018 -687
  7. data/lib/aspera/agent/base.rb +9 -5
  8. data/lib/aspera/agent/connect.rb +30 -28
  9. data/lib/aspera/agent/desktop.rb +29 -25
  10. data/lib/aspera/agent/direct.rb +137 -125
  11. data/lib/aspera/agent/httpgw.rb +22 -26
  12. data/lib/aspera/agent/node.rb +14 -11
  13. data/lib/aspera/agent/transferd.rb +6 -2
  14. data/lib/aspera/api/aoc.rb +15 -18
  15. data/lib/aspera/api/cos_node.rb +1 -1
  16. data/lib/aspera/api/httpgw.rb +15 -7
  17. data/lib/aspera/api/node.rb +6 -4
  18. data/lib/aspera/ascmd.rb +17 -9
  19. data/lib/aspera/ascp/installation.rb +21 -19
  20. data/lib/aspera/ascp/management.rb +1 -1
  21. data/lib/aspera/assert.rb +14 -5
  22. data/lib/aspera/cli/error.rb +2 -2
  23. data/lib/aspera/cli/extended_value.rb +38 -19
  24. data/lib/aspera/cli/formatter.rb +48 -48
  25. data/lib/aspera/cli/hints.rb +10 -2
  26. data/lib/aspera/cli/main.rb +190 -168
  27. data/lib/aspera/cli/manager.rb +16 -16
  28. data/lib/aspera/cli/plugin.rb +24 -21
  29. data/lib/aspera/cli/plugin_factory.rb +1 -1
  30. data/lib/aspera/cli/plugins/alee.rb +1 -1
  31. data/lib/aspera/cli/plugins/aoc.rb +173 -126
  32. data/lib/aspera/cli/plugins/ats.rb +19 -17
  33. data/lib/aspera/cli/plugins/config.rb +87 -98
  34. data/lib/aspera/cli/plugins/console.rb +5 -3
  35. data/lib/aspera/cli/plugins/faspex.rb +39 -35
  36. data/lib/aspera/cli/plugins/faspex5.rb +104 -80
  37. data/lib/aspera/cli/plugins/faspio.rb +13 -1
  38. data/lib/aspera/cli/plugins/httpgw.rb +13 -1
  39. data/lib/aspera/cli/plugins/node.rb +336 -205
  40. data/lib/aspera/cli/plugins/orchestrator.rb +34 -40
  41. data/lib/aspera/cli/plugins/preview.rb +3 -3
  42. data/lib/aspera/cli/plugins/server.rb +7 -6
  43. data/lib/aspera/cli/plugins/shares.rb +5 -5
  44. data/lib/aspera/cli/sync_actions.rb +19 -18
  45. data/lib/aspera/cli/transfer_agent.rb +11 -15
  46. data/lib/aspera/cli/transfer_progress.rb +2 -2
  47. data/lib/aspera/cli/version.rb +1 -1
  48. data/lib/aspera/command_line_builder.rb +116 -95
  49. data/lib/aspera/coverage.rb +4 -3
  50. data/lib/aspera/data_repository.rb +1 -0
  51. data/lib/aspera/environment.rb +7 -6
  52. data/lib/aspera/faspex_gw.rb +14 -14
  53. data/lib/aspera/faspex_postproc.rb +7 -6
  54. data/lib/aspera/hash_ext.rb +2 -2
  55. data/lib/aspera/json_rpc.rb +1 -1
  56. data/lib/aspera/keychain/encrypted_hash.rb +47 -34
  57. data/lib/aspera/keychain/factory.rb +41 -0
  58. data/lib/aspera/keychain/hashicorp_vault.rb +71 -0
  59. data/lib/aspera/keychain/macos_security.rb +19 -11
  60. data/lib/aspera/log.rb +29 -34
  61. data/lib/aspera/nagios.rb +6 -6
  62. data/lib/aspera/node_simulator.rb +8 -8
  63. data/lib/aspera/oauth/base.rb +10 -6
  64. data/lib/aspera/oauth/factory.rb +6 -6
  65. data/lib/aspera/oauth/url_json.rb +6 -6
  66. data/lib/aspera/persistency_action_once.rb +6 -4
  67. data/lib/aspera/persistency_folder.rb +2 -2
  68. data/lib/aspera/preview/file_types.rb +40 -33
  69. data/lib/aspera/preview/generator.rb +1 -1
  70. data/lib/aspera/preview/options.rb +16 -16
  71. data/lib/aspera/preview/terminal.rb +3 -3
  72. data/lib/aspera/preview/utils.rb +11 -13
  73. data/lib/aspera/products/connect.rb +2 -1
  74. data/lib/aspera/products/desktop.rb +1 -1
  75. data/lib/aspera/products/transferd.rb +1 -1
  76. data/lib/aspera/proxy_auto_config.rb +2 -2
  77. data/lib/aspera/rest.rb +70 -50
  78. data/lib/aspera/rest_error_analyzer.rb +1 -0
  79. data/lib/aspera/rest_errors_aspera.rb +1 -1
  80. data/lib/aspera/secret_hider.rb +5 -5
  81. data/lib/aspera/ssh.rb +5 -5
  82. data/lib/aspera/temp_file_manager.rb +1 -0
  83. data/lib/aspera/timer_limiter.rb +7 -5
  84. data/lib/aspera/transfer/async_conf.schema.yaml +716 -0
  85. data/lib/aspera/transfer/convert.rb +29 -0
  86. data/lib/aspera/transfer/error_info.rb +66 -66
  87. data/lib/aspera/transfer/parameters.rb +13 -68
  88. data/lib/aspera/transfer/spec.rb +5 -6
  89. data/lib/aspera/transfer/spec.schema.yaml +753 -0
  90. data/lib/aspera/transfer/spec_doc.rb +62 -0
  91. data/lib/aspera/transfer/sync.rb +37 -76
  92. data/lib/aspera/transfer/sync_instance.schema.yaml +20 -0
  93. data/lib/aspera/transfer/sync_session.schema.yaml +86 -0
  94. data/lib/aspera/transfer/uri.rb +6 -6
  95. data/lib/aspera/uri_reader.rb +1 -1
  96. data/lib/aspera/web_auth.rb +1 -1
  97. data/lib/aspera/web_server_simple.rb +53 -44
  98. data.tar.gz.sig +0 -0
  99. metadata +38 -7
  100. metadata.gz.sig +0 -0
  101. data/examples/build_package.sh +0 -28
  102. data/examples/dascli +0 -30
  103. data/examples/get_proto_file.rb +0 -8
  104. data/examples/proxy.pac +0 -60
  105. data/lib/aspera/transfer/spec.yaml +0 -718
@@ -15,8 +15,8 @@ module Aspera
15
15
  # keys in hash that contain secrets
16
16
  KEY_SECRETS = %w[password secret passphrase _key apikey crn token].freeze
17
17
  HTTP_SECRETS = %w[Authorization].freeze
18
- ALL_SECRETS = [ASCP_ENV_SECRETS, KEY_SECRETS, HTTP_SECRETS].flatten.freeze
19
- ALL_SECRETS2 = [KEY_SECRETS, HTTP_SECRETS].flatten.freeze
18
+ ALL_SECRETS = (ASCP_ENV_SECRETS + KEY_SECRETS + HTTP_SECRETS).freeze
19
+ ALL_SECRETS2 = (KEY_SECRETS + HTTP_SECRETS).freeze
20
20
  KEY_FALSE_POSITIVES = [/^access_key$/, /^fallback_private_key$/].freeze
21
21
  # regex that define named captures :begin and :end
22
22
  REGEX_LOG_REPLACES = [
@@ -62,17 +62,17 @@ module Aspera
62
62
  # only Strings can be secrets, not booleans, or hash, arrays
63
63
  return false unless keyword.is_a?(String) && value.is_a?(String)
64
64
  # those are not secrets
65
- return false if KEY_FALSE_POSITIVES.any?{|f|f.match?(keyword)}
65
+ return false if KEY_FALSE_POSITIVES.any?{ |f| f.match?(keyword)}
66
66
  return true if ADDITIONAL_KEYS_TO_HIDE.include?(keyword)
67
67
  # check if keyword (name) contains an element that designate it as a secret
68
- ALL_SECRETS.any?{|kw|keyword.include?(kw)}
68
+ ALL_SECRETS.any?{ |kw| keyword.include?(kw)}
69
69
  end
70
70
 
71
71
  # Hides recursively secrets in Hash or Array of Hash
72
72
  def deep_remove_secret(obj)
73
73
  case obj
74
74
  when Array
75
- obj.each{|i|deep_remove_secret(i)}
75
+ obj.each{ |i| deep_remove_secret(i)}
76
76
  when Hash
77
77
  obj.each do |k, v|
78
78
  if secret?(k, v)
data/lib/aspera/ssh.rb CHANGED
@@ -24,8 +24,8 @@ module Aspera
24
24
 
25
25
  def disable_ecd_sha2_algorithms
26
26
  Log.log.debug('Disabling SSH ecdsa')
27
- Net::SSH::Transport::Algorithms::ALGORITHMS.each_value { |a| a.reject! { |a| a =~ /^ecd(sa|h)-sha2/ } }
28
- Net::SSH::KnownHosts::SUPPORTED_TYPE.reject! { |t| t =~ /^ecd(sa|h)-sha2/ }
27
+ Net::SSH::Transport::Algorithms::ALGORITHMS.each_value{ |a| a.reject!{ |a| a =~ /^ecd(sa|h)-sha2/}}
28
+ Net::SSH::KnownHosts::SUPPORTED_TYPE.reject!{ |t| t =~ /^ecd(sa|h)-sha2/}
29
29
  end
30
30
  end
31
31
  # ssh_options: same as Net::SSH.start
@@ -49,16 +49,16 @@ module Aspera
49
49
  Net::SSH.start(@host, @username, @ssh_options) do |session|
50
50
  ssh_channel = session.open_channel do |channel|
51
51
  # prepare stdout processing
52
- channel.on_data{|_chan, data|response.push(data)}
52
+ channel.on_data{ |_chan, data| response.push(data)}
53
53
  # prepare stderr processing, stderr if type = 1
54
54
  channel.on_extended_data do |_chan, _type, data|
55
55
  error_message = "#{cmd}: [#{data.chomp}]"
56
56
  # Happens when windows user hasn't logged in and created home account.
57
57
  error_message += "\nHint: home not created in Windows?" if data.include?('Could not chdir to home directory')
58
- raise error_message
58
+ Log.log.debug(error_message)
59
59
  end
60
60
  # send command to SSH channel (execute) cspell: disable-next-line
61
- channel.send('cexe'.reverse, cmd){|_ch, _success|channel.send_data(input) unless input.nil?}
61
+ channel.send('cexe'.reverse, cmd){ |_ch, _success| channel.send_data(input) unless input.nil?}
62
62
  end
63
63
  # wait for channel to finish (command exit)
64
64
  ssh_channel.wait
@@ -14,6 +14,7 @@ module Aspera
14
14
  FILE_LIST_AGE_MAX_SEC = SEC_IN_DAY * 5
15
15
  private_constant :SEC_IN_DAY, :FILE_LIST_AGE_MAX_SEC
16
16
  include Singleton
17
+
17
18
  attr_accessor :cleanup_on_exit
18
19
 
19
20
  def initialize
@@ -1,20 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aspera
4
- # used to throttle logs
4
+ # trigger returns true only if the delay has passed since the last trigger
5
5
  class TimerLimiter
6
6
  # @param delay in seconds (float)
7
7
  def initialize(delay)
8
8
  @delay = delay
9
- @last_time = nil
9
+ @last_trigger_time = nil
10
10
  @count = 0
11
11
  end
12
12
 
13
+ # Check if the trigger condition is met
14
+ # @return [Boolean] true if the trigger condition is met, false otherwise
13
15
  def trigger?
14
- old_time = @last_time
15
- @last_time = Time.now.to_f
16
+ current_time = Time.now.to_f
16
17
  @count += 1
17
- if old_time.nil? || ((@last_time - old_time) > @delay)
18
+ if @last_trigger_time.nil? || ((current_time - @last_trigger_time) > @delay)
19
+ @last_trigger_time = current_time
18
20
  @count = 0
19
21
  return true
20
22
  end