aspera-cli 4.24.1 → 4.25.0.pre

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 (99) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +1064 -745
  4. data/CONTRIBUTING.md +43 -100
  5. data/README.md +1281 -720
  6. data/bin/ascli +20 -1
  7. data/bin/asession +23 -27
  8. data/lib/aspera/agent/base.rb +10 -21
  9. data/lib/aspera/agent/connect.rb +2 -3
  10. data/lib/aspera/agent/desktop.rb +2 -2
  11. data/lib/aspera/agent/direct.rb +49 -32
  12. data/lib/aspera/agent/factory.rb +31 -0
  13. data/lib/aspera/api/aoc.rb +134 -76
  14. data/lib/aspera/api/cos_node.rb +3 -2
  15. data/lib/aspera/api/faspex.rb +213 -0
  16. data/lib/aspera/api/node.rb +107 -94
  17. data/lib/aspera/ascmd.rb +1 -2
  18. data/lib/aspera/ascp/installation.rb +73 -58
  19. data/lib/aspera/ascp/management.rb +119 -23
  20. data/lib/aspera/assert.rb +39 -11
  21. data/lib/aspera/cli/error.rb +4 -2
  22. data/lib/aspera/cli/extended_value.rb +91 -67
  23. data/lib/aspera/cli/formatter.rb +62 -27
  24. data/lib/aspera/cli/hints.rb +8 -0
  25. data/lib/aspera/cli/info.rb +4 -4
  26. data/lib/aspera/cli/main.rb +76 -84
  27. data/lib/aspera/cli/manager.rb +352 -248
  28. data/lib/aspera/cli/plugins/alee.rb +5 -4
  29. data/lib/aspera/cli/plugins/aoc.rb +175 -195
  30. data/lib/aspera/cli/plugins/ats.rb +4 -4
  31. data/lib/aspera/cli/plugins/base.rb +343 -0
  32. data/lib/aspera/cli/plugins/basic_auth.rb +45 -0
  33. data/lib/aspera/cli/plugins/config.rb +283 -269
  34. data/lib/aspera/cli/plugins/console.rb +27 -22
  35. data/lib/aspera/cli/plugins/cos.rb +3 -3
  36. data/lib/aspera/cli/plugins/factory.rb +78 -0
  37. data/lib/aspera/cli/plugins/faspex.rb +49 -46
  38. data/lib/aspera/cli/plugins/faspex5.rb +113 -225
  39. data/lib/aspera/cli/plugins/faspio.rb +19 -18
  40. data/lib/aspera/cli/plugins/httpgw.rb +14 -13
  41. data/lib/aspera/cli/plugins/node.rb +162 -149
  42. data/lib/aspera/cli/plugins/oauth.rb +48 -0
  43. data/lib/aspera/cli/plugins/orchestrator.rb +129 -45
  44. data/lib/aspera/cli/plugins/preview.rb +30 -50
  45. data/lib/aspera/cli/plugins/server.rb +21 -21
  46. data/lib/aspera/cli/plugins/shares.rb +45 -47
  47. data/lib/aspera/cli/sync_actions.rb +50 -39
  48. data/lib/aspera/cli/transfer_agent.rb +35 -49
  49. data/lib/aspera/cli/transfer_progress.rb +6 -6
  50. data/lib/aspera/cli/version.rb +3 -3
  51. data/lib/aspera/cli/wizard.rb +70 -55
  52. data/lib/aspera/colors.rb +6 -0
  53. data/lib/aspera/command_line_builder.rb +59 -61
  54. data/lib/aspera/command_line_converter.rb +2 -1
  55. data/lib/aspera/coverage.rb +2 -2
  56. data/lib/aspera/data_repository.rb +1 -1
  57. data/lib/aspera/environment.rb +51 -41
  58. data/lib/aspera/faspex_gw.rb +7 -5
  59. data/lib/aspera/faspex_postproc.rb +1 -1
  60. data/lib/aspera/keychain/factory.rb +1 -2
  61. data/lib/aspera/keychain/macos_security.rb +1 -1
  62. data/lib/aspera/log.rb +37 -9
  63. data/lib/aspera/markdown.rb +31 -0
  64. data/lib/aspera/nagios.rb +7 -6
  65. data/lib/aspera/oauth/base.rb +25 -28
  66. data/lib/aspera/oauth/factory.rb +9 -9
  67. data/lib/aspera/oauth/url_json.rb +2 -1
  68. data/lib/aspera/oauth/web.rb +2 -2
  69. data/lib/aspera/preview/file_types.rb +23 -37
  70. data/lib/aspera/products/connect.rb +7 -6
  71. data/lib/aspera/products/desktop.rb +1 -4
  72. data/lib/aspera/products/other.rb +9 -1
  73. data/lib/aspera/products/transferd.rb +0 -1
  74. data/lib/aspera/rest.rb +168 -113
  75. data/lib/aspera/rest_error_analyzer.rb +4 -4
  76. data/lib/aspera/ssh.rb +7 -4
  77. data/lib/aspera/ssl.rb +41 -0
  78. data/lib/aspera/sync/args.schema.yaml +46 -3
  79. data/lib/aspera/sync/conf.schema.yaml +307 -123
  80. data/lib/aspera/sync/database.rb +2 -1
  81. data/lib/aspera/sync/operations.rb +135 -79
  82. data/lib/aspera/temp_file_manager.rb +17 -5
  83. data/lib/aspera/transfer/error.rb +16 -7
  84. data/lib/aspera/transfer/parameters.rb +35 -22
  85. data/lib/aspera/transfer/resumer.rb +74 -0
  86. data/lib/aspera/transfer/spec.rb +5 -5
  87. data/lib/aspera/transfer/spec.schema.yaml +170 -59
  88. data/lib/aspera/transfer/spec_doc.rb +49 -43
  89. data/lib/aspera/uri_reader.rb +2 -2
  90. data/lib/aspera/web_auth.rb +6 -6
  91. data/lib/transferd_pb.rb +2 -2
  92. data.tar.gz.sig +0 -0
  93. metadata +26 -11
  94. metadata.gz.sig +0 -0
  95. data/lib/aspera/cli/basic_auth_plugin.rb +0 -43
  96. data/lib/aspera/cli/plugin.rb +0 -333
  97. data/lib/aspera/cli/plugin_factory.rb +0 -81
  98. data/lib/aspera/resumer.rb +0 -77
  99. data/lib/aspera/transfer/error_info.rb +0 -91
@@ -1,45 +1,49 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'aspera/agent/base'
3
+ require 'aspera/agent/factory'
4
+ require 'aspera/markdown'
4
5
 
5
6
  module Aspera
6
7
  module Transfer
7
- # translate transfer specification to ascp parameter list
8
+ # Generate documentation from Schema, for Transfer Spec, or async Conf spec
8
9
  class SpecDoc
9
10
  class << self
10
- # first letter of agent name symbol
11
+ # First letter of agent name symbol
11
12
  def agent_to_short(agent_sym)
12
13
  agent_sym.to_sym.eql?(:direct) ? :a : agent_sym.to_s[0].to_sym
13
14
  end
14
15
 
15
- # @param formatter [Cli::Formatter] Formatter to use, methods: special_format, check_row
16
- # @param include_option [Boolean] true : include CLI options
16
+ # @param formatter [Cli::Formatter] Formatter to use, methods: markdown, tick, check_row
17
+ # @param include_option [Boolean] `true` : include CLI options
18
+ # @param agent_columns [Boolean] `true` : include agents columns
19
+ # @param schema [Hash] The JSON spec
17
20
  # @return [Array] a table suitable to display in manual
18
- def man_table(formatter, include_option: false, agent_columns: true)
21
+ def man_table(formatter, include_option: false, agent_columns: true, schema: Spec::SCHEMA)
19
22
  col_local = agent_to_short(:direct)
20
- cols = agent_columns ? %i[name type] + AGENT_LIST.map(&:last) + %i[description] : %i[name type description]
21
- rows = Spec::SCHEMA['properties'].filter_map do |name, properties|
22
- # manual table
23
+ cols = %i[name type description]
24
+ cols.insert(-2, *AGENT_LIST.map(&:last)) if agent_columns
25
+ rows = []
26
+ schema['properties'].each do |name, info|
27
+ rows.concat(man_table(formatter, include_option: include_option, agent_columns: agent_columns, schema: info).last.map{ |h| h.merge(name: "#{name}.#{h[:name]}")}) if info['type'].eql?('object') && info['properties']
28
+ rows.concat(man_table(formatter, include_option: include_option, agent_columns: agent_columns, schema: info['items']).last.map{ |h| h.merge(name: "#{name}[].#{h[:name]}")}) if info['type'].eql?('array') && info['items'] && info['items']['properties']
29
+ # Manual table
23
30
  columns = {
24
31
  name: name,
25
- type: properties['type'],
32
+ type: info['type'],
26
33
  description: []
27
34
  }
28
- # replace "back solidus" HTML entity with its text value
29
- #
30
- # split lines
35
+ # Render Markdown formatting and split lines
31
36
  columns[:description] =
32
- properties['description']
33
- .gsub('&bsol;', '\\')
34
- .gsub(/`([a-z0-9_.+-]+)`/){formatter.keyword_highlight(Regexp.last_match(1))}
35
- .split("\n") if properties.key?('description')
36
- columns[:description].unshift("DEPRECATED: #{properties['x-deprecation']}") if properties.key?('x-deprecation')
37
- # add flags for supported agents in doc
37
+ info['description']
38
+ .gsub(Markdown::FORMATS){formatter.markdown(Regexp.last_match)}
39
+ .split("\n") if info.key?('description')
40
+ columns[:description].unshift("DEPRECATED: #{info['x-deprecation']}") if info.key?('x-deprecation')
41
+ # Add flags for supported agents in doc
38
42
  agents = []
39
43
  AGENT_LIST.each do |agent_info|
40
- agents.push(agent_info.last) if properties['x-agents'].nil? || properties['x-agents'].include?(agent_info.first.to_s)
44
+ agents.push(agent_info.last) if info['x-agents'].nil? || info['x-agents'].include?(agent_info.first.to_s)
41
45
  end
42
- agents.push(col_local) if properties['x-cli-option'] && !agents.include?(col_local)
46
+ Aspera.assert(agents.include?(col_local)){"#{name}: x-cli-option requires agent direct (or nil)"} if info['x-cli-option']
43
47
  if agent_columns
44
48
  AGENT_LIST.each do |agent_info|
45
49
  columns[agent_info.last] = formatter.tick(agents.include?(agent_info.last))
@@ -47,32 +51,34 @@ module Aspera
47
51
  else
48
52
  columns[:description].push("(#{agents.map(&:upcase).join(', ')})") unless agents.length.eql?(AGENT_LIST.length)
49
53
  end
50
- # only keep lines that are usable in supported agents
54
+ # Only keep lines that are usable in supported agents
51
55
  next false if agents.empty?
52
- columns[:description].push("Allowed values: #{properties['enum'].map{ |v| formatter.keyword_highlight(v)}.join(', ')}") if properties.key?('enum')
53
- envvar = ''
54
- cli_option =
55
- if properties.key?('x-cli-envvar')
56
- envvar = 'env:'
57
- properties['x-cli-envvar']
58
- elsif properties['x-cli-switch']
59
- properties['x-cli-option']
60
- elsif properties['x-cli-special']
61
- ''
62
- elsif properties['x-cli-option']
63
- arg_type = properties.key?('enum') ? '{enum}' : "{#{[properties['type']].flatten.join('|')}}"
64
- conversion_tag = properties.key?('x-cli-convert') ? '(conversion)' : ''
65
- sep = properties['x-cli-option'].start_with?('--') ? '=' : ' '
66
- "#{properties['x-cli-option']}#{sep}#{conversion_tag}#{arg_type}"
67
- end
68
- columns[:description].push("(#{envvar}#{formatter.keyword_highlight(cli_option)})") if include_option && !cli_option.to_s.empty?
69
- formatter.check_row(columns)
70
- end.sort_by{ |i| i[:name]}
71
- [cols, rows]
56
+ columns[:description].push("Allowed values: #{info['enum'].map{ |v| formatter.markdown("`#{v}`")}.join(', ')}") if info.key?('enum')
57
+ if include_option
58
+ envvar_prefix = ''
59
+ cli_option =
60
+ if info.key?('x-cli-envvar')
61
+ envvar_prefix = 'env:'
62
+ info['x-cli-envvar']
63
+ elsif info['x-cli-switch']
64
+ info['x-cli-option']
65
+ elsif info['x-cli-option']
66
+ arg_type = info.key?('enum') ? '{enum}' : "{#{[info['type']].flatten.join('|')}}"
67
+ # conversion_tag = info['x-cli-convert']
68
+ conversion_tag = info.key?('x-cli-convert') ? 'conversion' : nil
69
+ sep = info['x-cli-option'].start_with?('--') ? '=' : ' '
70
+ "#{info['x-cli-option']}#{sep}#{"(#{conversion_tag})" if conversion_tag}#{arg_type}"
71
+ end
72
+ short = info.key?('x-cli-short') ? "(#{info['x-cli-short']})" : nil
73
+ columns[:description].push("(#{'special:' if info['x-cli-special']}#{envvar_prefix}#{formatter.markdown("`#{cli_option}`")})#{short}") if cli_option
74
+ end
75
+ rows.push(formatter.check_row(columns))
76
+ end
77
+ [cols, rows.sort_by{ |i| i[:name]}]
72
78
  end
73
79
  end
74
80
  # Agents shown in manual for parameters (sub list)
75
- AGENT_LIST = Agent::Base.agent_list.map do |agent_sym|
81
+ AGENT_LIST = Agent::Factory.instance.list.map do |agent_sym|
76
82
  [agent_sym, agent_sym.to_s.capitalize, agent_to_short(agent_sym)]
77
83
  end.sort_by(&:last).freeze
78
84
  end
@@ -18,7 +18,7 @@ module Aspera
18
18
  uri = URI.parse(uri_to_read)
19
19
  case uri.scheme
20
20
  when 'http', 'https'
21
- return Rest.new(base_url: uri_to_read, redirect_max: 5).call(operation: 'GET', headers: {'Accept' => '*/*'})[:data]
21
+ return Rest.new(base_url: uri_to_read, redirect_max: 5).read(nil, headers: {'Accept' => '*/*'})
22
22
  when SCHEME_FILE, NilClass
23
23
  local_file_path = uri.path
24
24
  raise Error, 'URL shall have a path, check syntax' if local_file_path.nil?
@@ -37,7 +37,7 @@ module Aspera
37
37
  return File.expand_path(url[SCHEME_FILE_PFX2.length..-1])
38
38
  else
39
39
  # download to temp file
40
- # autodelete on exit
40
+ # auto-delete on exit
41
41
  sdk_archive_path = TempFileManager.instance.new_file_path_global(suffix: File.basename(url))
42
42
  Aspera::Rest.new(base_url: url, redirect_max: 3).call(operation: 'GET', save_to_file: sdk_archive_path)
43
43
  return sdk_archive_path
@@ -17,7 +17,7 @@ module Aspera
17
17
  def service(request, response)
18
18
  Log.log.debug{"received request from browser #{request.request_method} #{request.path}"}
19
19
  Aspera.assert_values(request.request_method, ['GET'], type: WEBrick::HTTPStatus::MethodNotAllowed){'HTTP verb'}
20
- additionnal_info = @web_auth.signal_request(request)
20
+ additional_info = @web_auth.signal_request(request)
21
21
  response.status = 200
22
22
  response.content_type = 'text/html'
23
23
  response.body = <<~HTML
@@ -91,7 +91,7 @@ module Aspera
91
91
  <body>
92
92
  <h1>Thank You!</h1>
93
93
  <p>You can close this window.</p>
94
- <p>#{additionnal_info}</p>
94
+ <p>#{additional_info}</p>
95
95
 
96
96
  <!-- JavaScript to generate IBM logos -->
97
97
  <script>
@@ -170,15 +170,15 @@ module Aspera
170
170
  # store the final query
171
171
  class WebAuth < WebServerSimple
172
172
  # @param endpoint_url [String] e.g. 'https://127.0.0.1:12345'
173
- # @param additionnal_info [String] Information in web page
174
- def initialize(endpoint_url, additionnal_info = nil)
173
+ # @param additional_info [String] Information in web page
174
+ def initialize(endpoint_url, additional_info = nil)
175
175
  uri = URI.parse(endpoint_url)
176
176
  super(uri)
177
177
  @mutex = Mutex.new
178
178
  @cond = ConditionVariable.new
179
179
  @expected_path = uri.path.empty? ? '/' : uri.path
180
180
  @query = nil
181
- @additionnal_info = additionnal_info
181
+ @additional_info = additional_info
182
182
  # last argument (self) is provided to constructor of servlet
183
183
  mount(@expected_path, WebAuthServlet, self)
184
184
  # server runs in thread
@@ -194,7 +194,7 @@ module Aspera
194
194
  @query = request.query
195
195
  @cond.signal
196
196
  end
197
- return @additionnal_info
197
+ return @additional_info
198
198
  end
199
199
 
200
200
  # wait for request on web server (main thread)
data/lib/transferd_pb.rb CHANGED
@@ -5,9 +5,9 @@
5
5
  require 'google/protobuf'
6
6
 
7
7
 
8
- descriptor_data = "\n\x0ftransferd.proto\x12\rtransferd.api\"*\n\x05\x45rror\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"\x13\n\x11\x41PIVersionRequest\"/\n\x12\x41PIVersionResponse\x12\x19\n\x11supportedVersions\x18\x01 \x03(\t\"\x93\x01\n\rRetryStrategy\x12\x32\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32!.transferd.api.BasicRetryStrategyH\x00\x12\x41\n\x07\x62\x61\x63koff\x18\x02 \x01(\x0b\x32..transferd.api.ExponentialBackoffRetryStrategyH\x00\x42\x0b\n\tretryType\"=\n\x12\x42\x61sicRetryStrategy\x12\x10\n\x08maxCount\x18\x01 \x01(\x03\x12\x15\n\rretryInterval\x18\x02 \x01(\x03\"r\n\x1f\x45xponentialBackoffRetryStrategy\x12\x13\n\x0bmaxAttempts\x18\x01 \x01(\x03\x12\x12\n\nmultiplier\x18\x02 \x01(\x03\x12\x14\n\x0cinitialDelay\x18\x03 \x01(\x03\x12\x10\n\x08maxDelay\x18\x04 \x01(\x03\"\x99\x01\n\x0eTransferConfig\x12+\n\x05retry\x18\x01 \x01(\x0b\x32\x1c.transferd.api.RetryStrategy\x12\x0f\n\x07license\x18\x02 \x01(\t\x12\x10\n\x08localLog\x18\x03 \x01(\t\x12\x11\n\tremoteLog\x18\x04 \x01(\t\x12\x10\n\x08logLevel\x18\x05 \x01(\x0f\x12\x12\n\nasperaConf\x18\x06 \x01(\t\"/\n\rTransferRange\x12\x0e\n\x06offset\x18\x01 \x01(\x03\x12\x0e\n\x06length\x18\x02 \x01(\x03\"\x89\x01\n\x0fTransferRequest\x12\x31\n\x0ctransferType\x18\x01 \x01(\x0e\x32\x1b.transferd.api.TransferType\x12-\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1d.transferd.api.TransferConfig\x12\x14\n\x0ctransferSpec\x18\x03 \x01(\t\"\xd5\x01\n\x15StartTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\x31\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x1b.transferd.api.TransferType\x12-\n\x06status\x18\x05 \x01(\x0e\x32\x1d.transferd.api.TransferStatus\x12#\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.transferd.api.Error\")\n\x13TransferInfoRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"\xc3\x03\n\x10TransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\x31\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x1b.transferd.api.TransferType\x12-\n\x06status\x18\x05 \x01(\x0e\x32\x1d.transferd.api.TransferStatus\x12#\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.transferd.api.Error\x12\x33\n\rtransferEvent\x18\x07 \x01(\x0e\x32\x1c.transferd.api.TransferEvent\x12\x31\n\x0ctransferInfo\x18\x08 \x01(\x0b\x32\x1b.transferd.api.TransferInfo\x12\x0f\n\x07message\x18\t \x01(\t\x12>\n\x0bsessionInfo\x18\n \x01(\x0b\x32).transferd.api.SessionTransferInformation\x12\x38\n\x08\x66ileInfo\x18\x0b \x01(\x0b\x32&.transferd.api.FileTransferInformation\"\x99\x02\n\x15QueryTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\x31\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x1b.transferd.api.TransferType\x12-\n\x06status\x18\x05 \x01(\x0e\x32\x1d.transferd.api.TransferStatus\x12#\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.transferd.api.Error\x12\x31\n\x0ctransferInfo\x18\x07 \x01(\x0b\x32\x1b.transferd.api.TransferInfo\x12\x0f\n\x07message\x18\x08 \x01(\t\"\x8f\x04\n\x0cTransferInfo\x12\x17\n\x0f\x61verageRateKbps\x18\x01 \x01(\x03\x12\x11\n\tbytesLost\x18\x02 \x01(\x03\x12\x18\n\x10\x62ytesTransferred\x18\x03 \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x04 \x01(\x03\x12\x1c\n\x14\x64irectoriesCompleted\x18\x05 \x01(\x03\x12\x15\n\rstartTimeUsec\x18\x06 \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x07 \x01(\x03\x12\x13\n\x0b\x65ndTimeUsec\x18\x08 \x01(\x03\x12\x11\n\terrorCode\x18\t \x01(\t\x12\x18\n\x10\x65rrorDescription\x18\n \x01(\t\x12\x16\n\x0e\x66ilesCompleted\x18\x0b \x01(\x03\x12\x16\n\x0etargetRateKbps\x18\x0c \x01(\x03\x12\x13\n\x0bminRateKbps\x18\r \x01(\x03\x12\x1d\n\x15\x61rgTransfersAttempted\x18\x0e \x01(\x03\x12\x1a\n\x12\x61rgTransfersPassed\x18\x0f \x01(\x03\x12\x1b\n\x13\x61rgTransfersSkipped\x18\x10 \x01(\x03\x12\x1a\n\x12\x61rgTransfersFailed\x18\x11 \x01(\x03\x12\x18\n\x10\x66ileChecksumType\x18\x12 \x01(\t\x12\x0e\n\x06\x63ookie\x18\x13 \x01(\t\x12\x11\n\tdirection\x18\x14 \x01(\t\x12\x11\n\toperation\x18\x15 \x01(\t\x12\x0e\n\x06tags64\x18\x16 \x01(\t\"\xfe\x11\n\x1aSessionTransferInformation\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0c\n\x04user\x18\x03 \x01(\t\x12\x12\n\nclientUser\x18\x04 \x01(\t\x12\x14\n\x0c\x63lientNodeId\x18\x05 \x01(\t\x12\x17\n\x0f\x63lientClusterId\x18\x06 \x01(\t\x12\x14\n\x0cserverNodeId\x18\x07 \x01(\t\x12\x17\n\x0fserverClusterId\x18\x08 \x01(\t\x12\x17\n\x0f\x63lientIPAddress\x18\t \x01(\t\x12\x17\n\x0fserverIPAddress\x18\n \x01(\t\x12\x0c\n\x04port\x18\x0b \x01(\x03\x12\x0f\n\x07tcpPort\x18\x0c \x01(\x03\x12\x0e\n\x06status\x18\r \x01(\t\x12\x15\n\rstartTimeUsec\x18\x0e \x01(\x03\x12\x13\n\x0b\x65ndTimeUsec\x18\x0f \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x10 \x01(\x03\x12\x18\n\x10\x62ytesTransferred\x18\x11 \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x12 \x01(\x03\x12\x11\n\tbytesLost\x18\x13 \x01(\x03\x12\x16\n\x0e\x66ilesCompleted\x18\x14 \x01(\x03\x12\x13\n\x0b\x66ilesFailed\x18\x15 \x01(\x03\x12\x14\n\x0c\x66ilesSkipped\x18\x16 \x01(\x03\x12\x1c\n\x14\x64irectoriesCompleted\x18\x17 \x01(\x03\x12\x16\n\x0etargetRateKbps\x18\x18 \x01(\x03\x12\x13\n\x0bminRateKbps\x18\x19 \x01(\x03\x12\x14\n\x0c\x63\x61lcRateKbps\x18\x1a \x01(\x03\x12\x18\n\x10networkDelayUsec\x18\x1b \x01(\x03\x12\x11\n\terrorCode\x18\x1c \x01(\x03\x12\x11\n\terrorDesc\x18\x1d \x01(\t\x12\x18\n\x10manifestFilePath\x18\x1e \x01(\t\x12\x1f\n\x17sourcePathsScanExcluded\x18\x1f \x01(\x03\x12 \n\x18sourcePathsScanIrregular\x18 \x01(\x03\x12\x1d\n\x15sourcePathsScanFailed\x18! \x01(\x03\x12 \n\x18sourcePathsScanAttempted\x18\" \x01(\x03\x12\x18\n\x10transfersSkipped\x18# \x01(\x03\x12\x17\n\x0ftransfersPassed\x18$ \x01(\x03\x12\x17\n\x0ftransfersFailed\x18% \x01(\x03\x12\x1a\n\x12transfersAttempted\x18& \x01(\x03\x12\x0e\n\x06\x63ookie\x18\' \x01(\t\x12\x11\n\tdirection\x18( \x01(\t\x12\x18\n\x10\x66ileChecksumType\x18) \x01(\t\x12\x11\n\toperation\x18* \x01(\t\x12\x0c\n\x04tags\x18+ \x01(\t\x12\x1d\n\x15\x61rgTransfersAttempted\x18, \x01(\x03\x12\x1a\n\x12\x61rgTransfersPassed\x18- \x01(\x03\x12\x1b\n\x13\x61rgTransfersSkipped\x18. \x01(\x03\x12\x1a\n\x12\x61rgTransfersFailed\x18/ \x01(\x03\x12\x12\n\nencryption\x18\x30 \x01(\t\x12\x10\n\x08\x61\x64\x61ptive\x18\x31 \x01(\t\x12\x0e\n\x06remote\x18\x32 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x33 \x01(\t\x12\x10\n\x08priority\x18\x34 \x01(\x03\x12\x12\n\ntransferId\x18\x35 \x01(\t\x12\x0f\n\x07rateCap\x18\x36 \x01(\x03\x12\x12\n\nminRateCap\x18\x37 \x01(\x03\x12\x11\n\tpolicyCap\x18\x38 \x01(\t\x12\x10\n\x08rateLock\x18\x39 \x01(\t\x12\x13\n\x0bminRateLock\x18: \x01(\t\x12\x12\n\npolicyLock\x18; \x01(\t\x12\x16\n\x0eserverHostname\x18< \x01(\t\x12\x15\n\rremoteAddress\x18= \x01(\t\x12\x0e\n\x06\x63ipher\x18> \x01(\t\x12\x14\n\x0cresumePolicy\x18? \x01(\t\x12\x14\n\x0c\x63reatePolicy\x18@ \x01(\x03\x12\x16\n\x0emanifestPolicy\x18\x41 \x01(\t\x12\x0f\n\x07precalc\x18\x42 \x01(\t\x12\x17\n\x0foverwritePolicy\x18\x43 \x01(\t\x12\x16\n\x0erttAutocorrect\x18\x44 \x01(\t\x12\x12\n\ntimePolicy\x18\x45 \x01(\x03\x12\x1a\n\x12manifestInprogress\x18\x46 \x01(\t\x12\x14\n\x0c\x66ilesEncrypt\x18G \x01(\t\x12\x14\n\x0c\x66ilesDecrypt\x18H \x01(\t\x12\x14\n\x0c\x64\x61tagramSize\x18I \x01(\x03\x12\x14\n\x0cvLinkVersion\x18J \x01(\x03\x12\x18\n\x10peerVLinkVersion\x18K \x01(\x03\x12\x19\n\x11vLinkLocalEnabled\x18L \x01(\t\x12\x1a\n\x12vLinkRemoteEnabled\x18M \x01(\t\x12\x15\n\rreadBlockSize\x18N \x01(\x03\x12\x16\n\x0ewriteBlockSize\x18O \x01(\x03\x12\x17\n\x0f\x63lusterNumNodes\x18P \x01(\x03\x12\x15\n\rclusterNodeId\x18Q \x01(\x03\x12\x11\n\tmoveRange\x18R \x01(\t\x12\x11\n\tkeepalive\x18S \x01(\t\x12\x11\n\ttestLogin\x18T \x01(\t\x12\x10\n\x08useProxy\x18U \x01(\t\x12\x1c\n\x14rateControlAlgorithm\x18V \x01(\t\x12\x0c\n\x04pmtu\x18W \x01(\x03\x12\x18\n\x10preTransferFiles\x18X \x01(\x03\x12\x18\n\x10preTransferBytes\x18Y \x01(\x03\x12\x17\n\x0fpreTransferDirs\x18Z \x01(\x03\x12\x1a\n\x12preTransferSpecial\x18[ \x01(\x03\x12 \n\x18sourcePathsScanCompleted\x18\\ \x01(\x03\x12\x19\n\x11\x61rgScansAttempted\x18] \x01(\x03\x12\x19\n\x11\x61rgScansCompleted\x18^ \x01(\x03\x12\x1b\n\x13\x61rgFaspFileArgIndex\x18_ \x01(\x03\x12\x1b\n\x13\x64irCreatesAttempted\x18` \x01(\x03\x12\x18\n\x10\x64irCreatesFailed\x18\x61 \x01(\x03\x12\x18\n\x10\x64irCreatesPassed\x18\x62 \x01(\x03\x12\x19\n\x11\x64irScansCompleted\x18\x63 \x01(\x03\"\xdb\x02\n\x17\x46ileTransferInformation\x12\x0e\n\x06\x66ileId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x15\n\rstartTimeUsec\x18\x03 \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x04 \x01(\x03\x12\x0e\n\x06status\x18\x05 \x01(\t\x12\x11\n\terrorCode\x18\x06 \x01(\x03\x12\x18\n\x10\x65rrorDescription\x18\x07 \x01(\t\x12\x0c\n\x04size\x18\t \x01(\x03\x12\x10\n\x08\x66ileType\x18\n \x01(\t\x12\x18\n\x10\x66ileChecksumType\x18\x0b \x01(\t\x12\x10\n\x08\x63hecksum\x18\x0c \x01(\t\x12\x11\n\tstartByte\x18\r \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x0e \x01(\x03\x12\x17\n\x0f\x62ytesContiguous\x18\x0f \x01(\x03\x12\x11\n\tsessionId\x18\x10 \x01(\t\x12\x18\n\x10\x66\x61spFileArgIndex\x18\x11 \x01(\x03\"G\n\x1bTransferModificationRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x14\n\x0ctransferSpec\x18\x02 \x01(\t\"\x9a\x01\n\x1cTransferModificationResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12-\n\x06status\x18\x03 \x01(\x0e\x32\x1d.transferd.api.TransferStatus\x12#\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.transferd.api.Error\"\\\n\x13TransferPathRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x31\n\x0ctransferPath\x18\x02 \x03(\x0b\x32\x1b.transferd.api.TransferPath\"`\n\x0cTransferPath\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\t\x12+\n\x05range\x18\x03 \x01(\x0b\x32\x1c.transferd.api.TransferRange\"c\n\x14TransferPathResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"3\n\x1dLockPersistentTransferRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"m\n\x1eLockPersistentTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"]\n\x13RegistrationRequest\x12\x12\n\ntransferId\x18\x01 \x03(\t\x12\x32\n\x07\x66ilters\x18\x02 \x03(\x0b\x32!.transferd.api.RegistrationFilter\"\xc8\x02\n\x12RegistrationFilter\x12;\n\x08operator\x18\x01 \x01(\x0e\x32).transferd.api.RegistrationFilterOperator\x12/\n\teventType\x18\x02 \x03(\x0e\x32\x1c.transferd.api.TransferEvent\x12\x12\n\ntransferId\x18\x03 \x03(\t\x12\x0e\n\x06\x63ookie\x18\x04 \x03(\t\x12\x0e\n\x06tags64\x18\x05 \x03(\t\x12\x11\n\tdirection\x18\x06 \x01(\t\x12\x13\n\x0b\x63ookieRegex\x18\x07 \x01(\t\x12\x31\n\x0ctransferType\x18\x08 \x03(\x0e\x32\x1b.transferd.api.TransferType\x12\x35\n\x0etransferStatus\x18\t \x03(\x0e\x32\x1d.transferd.api.TransferStatus\"8\n\x13StopTransferRequest\x12\x12\n\ntransferId\x18\x01 \x03(\t\x12\r\n\x05\x64\x65lay\x18\x02 \x01(\x03\"W\n\x14StopTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12+\n\nstopResult\x18\x02 \x03(\x0b\x32\x17.transferd.api.StopInfo\"T\n\x08StopInfo\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0f\n\x07stopped\x18\x02 \x01(\x08\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"\x15\n\x13InstanceInfoRequest\"z\n\x14InstanceInfoResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12)\n\x04info\x18\x02 \x01(\x0b\x32\x1b.transferd.api.InstanceInfo\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"\x9f\x01\n\x0cInstanceInfo\x12\x16\n\x0emanagementPort\x18\x01 \x01(\x03\x12-\n\nasperaInfo\x18\x02 \x03(\x0b\x32\x19.transferd.api.AsperaInfo\x12/\n\x0blicenseInfo\x18\x03 \x01(\x0b\x32\x1a.transferd.api.LicenseInfo\x12\x17\n\x0fpromiscuousMode\x18\x04 \x01(\x08\"]\n\x0bLicenseInfo\x12\x0f\n\x07maxRate\x18\x01 \x01(\t\x12\x15\n\raccountNumber\x18\x02 \x01(\t\x12\x15\n\rlicenseNumber\x18\x03 \x01(\t\x12\x0f\n\x07license\x18\x04 \x01(\t\"w\n\nAsperaInfo\x12\x14\n\x0c\x61speraBinary\x18\x01 \x01(\t\x12\x15\n\rasperaVersion\x18\x02 \x01(\t\x12\x17\n\x0foperatingSystem\x18\x03 \x01(\t\x12#\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.transferd.api.Error\"(\n\x10PeerCheckRequest\x12\x14\n\x0ctransferSpec\x18\x01 \x01(\t\"_\n\x11PeerCheckResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x11\n\treachable\x18\x02 \x01(\x08\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"\x8d\x01\n\x17WriteStreamChunkRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12+\n\x05range\x18\x03 \x01(\x0b\x32\x1c.transferd.api.TransferRange\x12#\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x14.transferd.api.Chunk\"g\n\x18WriteStreamChunkResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"i\n\x12WriteStreamRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12#\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x14.transferd.api.Chunk\"b\n\x13WriteStreamResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"\'\n\x11ReadStreamRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"\x92\x01\n\x12ReadStreamResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x10\n\x08pathSize\x18\x03 \x01(\x03\x12#\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x14.transferd.api.Chunk\x12#\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x14.transferd.api.Error\"\x19\n\x05\x43hunk\x12\x10\n\x08\x63ontents\x18\x01 \x01(\x0c\"\\\n\x11ValidationRequest\x12\x14\n\x0ctransferSpec\x18\x01 \x01(\t\x12\x31\n\x0ctransferType\x18\x02 \x01(\x0e\x32\x1b.transferd.api.TransferType\"\x8c\x01\n\x12ValidationResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\r\n\x05valid\x18\x02 \x01(\x08\x12\x18\n\x10validatorVersion\x18\x03 \x01(\t\x12\x14\n\x0cunknownField\x18\x04 \x03(\t\x12#\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x14.transferd.api.Error\"\xe9\x0e\n\x0eTransferSpecV1\x12\x0e\n\x06\x63ipher\x18\x01 \x01(\t\x12\x1a\n\x12\x63ontent_protection\x18\x02 \x01(\t\x12#\n\x1b\x63ontent_protection_password\x18\x03 \x01(\t\x12\x0e\n\x06\x63ookie\x18\x04 \x01(\t\x12\x12\n\ncreate_dir\x18\x05 \x01(\x08\x12\x1e\n\x16\x64\x65lete_before_transfer\x18\x06 \x01(\x08\x12\x15\n\rdelete_source\x18\x07 \x01(\x08\x12\x1b\n\x13\x64\x65stination_root_id\x18\x08 \x01(\t\x12\x11\n\tdirection\x18\t \x01(\t\x12\x1a\n\x12\x65xclude_newer_than\x18\n \x01(\t\x12\x1a\n\x12\x65xclude_older_than\x18\x0b \x01(\t\x12\x11\n\tfasp_port\x18\x0c \x01(\x03\x12\x15\n\rhttp_fallback\x18\r \x01(\x08\x12\x1a\n\x12http_fallback_port\x18\x0e \x01(\x03\x12\x1b\n\x13https_fallback_port\x18\x0f \x01(\x03\x12\x1b\n\x13move_after_transfer\x18\x10 \x01(\t\x12\x15\n\rmulti_session\x18\x11 \x01(\x03\x12\x1f\n\x17multi_session_threshold\x18\x12 \x01(\x03\x12\x11\n\toverwrite\x18\x13 \x01(\t\x12\"\n\x05paths\x18\x14 \x03(\x0b\x32\x13.transferd.api.Path\x12\x1d\n\x15precalculate_job_size\x18\x15 \x01(\x08\x12\x1c\n\x14preserve_access_time\x18\x16 \x01(\x08\x12\x1e\n\x16preserve_creation_time\x18\x17 \x01(\x08\x12\"\n\x1apreserve_modification_time\x18\x18 \x01(\x08\x12\x16\n\x0epreserve_times\x18\x19 \x01(\x08\x12\x13\n\x0brate_policy\x18\x1a \x01(\t\x12\x19\n\x11remote_access_key\x18\x1b \x01(\t\x12\x13\n\x0bremote_host\x18\x1c \x01(\t\x12\x17\n\x0fremote_password\x18\x1d \x01(\t\x12\x13\n\x0bremote_user\x18\x1e \x01(\t\x12\x1d\n\x15remove_after_transfer\x18\x1f \x01(\x08\x12 \n\x18remove_empty_directories\x18 \x01(\x08\x12\x15\n\rresume_policy\x18! \x01(\t\x12\x16\n\x0eretry_duration\x18\" \x01(\x03\x12\x16\n\x0esource_root_id\x18# \x01(\t\x12\x10\n\x08ssh_port\x18$ \x01(\x03\x12\x17\n\x0fssh_private_key\x18% \x01(\t\x12\"\n\x1assh_private_key_passphrase\x18& \x01(\t\x12\x16\n\x0esymlink_policy\x18\' \x01(\t\x12\x0c\n\x04tags\x18( \x01(\t\x12\x0e\n\x06tags64\x18) \x01(\t\x12\x1c\n\x14target_rate_cap_kbps\x18* \x01(\x03\x12\x18\n\x10target_rate_kbps\x18+ \x01(\x03\x12\r\n\x05title\x18, \x01(\t\x12\r\n\x05token\x18- \x01(\t\x12\x15\n\tuse_ascp4\x18. \x01(\x08\x42\x02\x18\x01\x12,\n\nfasp_proxy\x18/ \x01(\x0b\x32\x18.transferd.api.FASPProxy\x12\x18\n\x10\x64\x65stination_root\x18\x30 \x01(\t\x12\x13\n\x0bsource_root\x18\x31 \x01(\t\x12\x19\n\x11min_rate_cap_kbps\x18\x32 \x01(\x03\x12\x18\n\x10lock_rate_policy\x18\x33 \x01(\x08\x12\x1d\n\x15lock_target_rate_kbps\x18\x34 \x01(\x08\x12\x1a\n\x12lock_min_rate_kbps\x18\x35 \x01(\x08\x12\x12\n\nsrc_base64\x18\x36 \x01(\t\x12%\n\x04icos\x18\x37 \x01(\x0b\x32\x17.transferd.api.ICOSSpec\x12,\n\x08node_api\x18\x38 \x01(\x0b\x32\x1a.transferd.api.NodeAPISpec\x12\x1b\n\x13\x61pply_local_docroot\x18\x39 \x01(\x08\x12\x15\n\rpreserve_acls\x18: \x01(\t\x12\x1c\n\x14preserve_remote_acls\x18; \x01(\t\x12\x1f\n\x17preserve_file_owner_uid\x18< \x01(\x08\x12\x1f\n\x17preserve_file_owner_gid\x18= \x01(\x08\x12\x1f\n\x17preserve_extended_attrs\x18> \x01(\t\x12&\n\x1epreserve_remote_extended_attrs\x18? \x01(\t\x12#\n\x1bpreserve_source_access_time\x18@ \x01(\x08\x12\x1f\n\x17remove_empty_source_dir\x18\x41 \x01(\x08\x12\x1d\n\x15save_before_overwrite\x18\x42 \x01(\x08\x12\x1c\n\x14skip_duplicate_check\x18\x43 \x01(\x08\x12\x1a\n\x12skip_special_files\x18\x44 \x01(\x08\x12\x1c\n\x14ssh_private_key_path\x18\x45 \x01(\t\"+\n\x04Path\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\t\"<\n\tFASPProxy\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"\xd8\x02\n\x0eTransferSpecV2\x12\x35\n\x12session_initiation\x18\x01 \x01(\x0b\x32\x19.transferd.api.Initiation\x12)\n\x08security\x18\x02 \x01(\x0b\x32\x17.transferd.api.Security\x12)\n\x08tracking\x18\x03 \x01(\x0b\x32\x17.transferd.api.Tracking\x12.\n\x0b\x66ile_system\x18\x04 \x01(\x0b\x32\x19.transferd.api.Filesystem\x12+\n\ttransport\x18\x05 \x01(\x0b\x32\x18.transferd.api.Transport\x12%\n\x06\x61ssets\x18\x06 \x01(\x0b\x32\x15.transferd.api.Assets\x12\x11\n\tdirection\x18\x07 \x01(\t\x12\x13\n\x0bremote_host\x18\x08 \x01(\t\x12\r\n\x05title\x18\t \x01(\t\"\x86\x01\n\nInitiation\x12#\n\x03ssh\x18\x01 \x01(\x0b\x32\x16.transferd.api.SSHSpec\x12%\n\x04icos\x18\x02 \x01(\x0b\x32\x17.transferd.api.ICOSSpec\x12,\n\x08node_api\x18\x03 \x01(\x0b\x32\x1a.transferd.api.NodeAPISpec\"\xbd\x01\n\x07SSHSpec\x12\x10\n\x08ssh_port\x18\x01 \x01(\x03\x12\x17\n\x0fremote_password\x18\x02 \x01(\t\x12\x13\n\x0bremote_user\x18\x03 \x01(\t\x12\x17\n\x0fssh_private_key\x18\x04 \x01(\t\x12\"\n\x1assh_private_key_passphrase\x18\x05 \x01(\t\x12\x17\n\x0fssh_fingerprint\x18\x06 \x01(\t\x12\x1c\n\x14ssh_private_key_path\x18\x07 \x01(\t\"j\n\x08ICOSSpec\x12\x0f\n\x07\x61pi_key\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12\x1f\n\x17ibm_service_instance_id\x18\x03 \x01(\t\x12\x1c\n\x14ibm_service_endpoint\x18\x04 \x01(\t\"/\n\x11NodeAPIHeaderSpec\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\x0bNodeAPISpec\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x31\n\x07headers\x18\x02 \x03(\x0b\x32 .transferd.api.NodeAPIHeaderSpec\"i\n\x08Security\x12#\n\x1b\x63ontent_protection_password\x18\x01 \x01(\t\x12\x19\n\x11remote_access_key\x18\x02 \x01(\t\x12\r\n\x05token\x18\x03 \x01(\t\x12\x0e\n\x06\x63ipher\x18\x04 \x01(\t\"8\n\x08Tracking\x12\x0e\n\x06\x63ookie\x18\x01 \x01(\t\x12\x0c\n\x04tags\x18\x02 \x01(\t\x12\x0e\n\x06tags64\x18\x03 \x01(\t\"\xc8\x07\n\nFilesystem\x12\x12\n\ncreate_dir\x18\x01 \x01(\x08\x12\x1e\n\x16\x64\x65lete_before_transfer\x18\x02 \x01(\x08\x12\x1a\n\x12\x65xclude_newer_than\x18\x03 \x01(\t\x12\x1a\n\x12\x65xclude_older_than\x18\x04 \x01(\t\x12\x1b\n\x13move_after_transfer\x18\x05 \x01(\t\x12\x11\n\toverwrite\x18\x06 \x01(\t\x12\x1d\n\x15precalculate_job_size\x18\x07 \x01(\x08\x12\x1c\n\x14preserve_access_time\x18\x08 \x01(\x08\x12\x1e\n\x16preserve_creation_time\x18\t \x01(\x08\x12\"\n\x1apreserve_modification_time\x18\n \x01(\x08\x12\x16\n\x0epreserve_times\x18\x0b \x01(\x08\x12\x1d\n\x15remove_after_transfer\x18\x0c \x01(\x08\x12 \n\x18remove_empty_directories\x18\r \x01(\x08\x12\x15\n\rresume_policy\x18\x0e \x01(\t\x12\x16\n\x0esymlink_policy\x18\x0f \x01(\t\x12\x15\n\rchecksum_type\x18\x10 \x01(\t\x12\x12\n\nsrc_base64\x18\x11 \x01(\t\x12\x36\n\x12inclusion_patterns\x18\x12 \x03(\x0b\x32\x1a.transferd.api.PathPattern\x12\x36\n\x12\x65xclusion_patterns\x18\x13 \x03(\x0b\x32\x1a.transferd.api.PathPattern\x12\x1b\n\x13\x61pply_local_docroot\x18\x14 \x01(\x08\x12\x15\n\rpreserve_acls\x18\x15 \x01(\t\x12\x1c\n\x14preserve_remote_acls\x18\x16 \x01(\t\x12\x1f\n\x17preserve_file_owner_uid\x18\x17 \x01(\x08\x12\x1f\n\x17preserve_file_owner_gid\x18\x18 \x01(\x08\x12\x1f\n\x17preserve_extended_attrs\x18\x19 \x01(\t\x12&\n\x1epreserve_remote_extended_attrs\x18\x1a \x01(\t\x12#\n\x1bpreserve_source_access_time\x18\x1b \x01(\x08\x12\x1f\n\x17remove_empty_source_dir\x18\x1c \x01(\x08\x12\x1d\n\x15save_before_overwrite\x18\x1d \x01(\x08\x12\x1c\n\x14skip_duplicate_check\x18\x1e \x01(\x08\x12\x1a\n\x12skip_special_files\x18\x1f \x01(\x08\"\xed\x03\n\tTransport\x12\x11\n\tfasp_port\x18\x01 \x01(\x03\x12\x32\n\rhttp_fallback\x18\x02 \x01(\x0b\x32\x1b.transferd.api.HTTPFallback\x12,\n\nfasp_proxy\x18\x03 \x01(\x0b\x32\x18.transferd.api.FASPProxy\x12+\n\tstreaming\x18\x04 \x01(\x0b\x32\x18.transferd.api.Streaming\x12\x32\n\rmulti_session\x18\x05 \x01(\x0b\x32\x1b.transferd.api.MultiSession\x12\x1f\n\x17multi_session_threshold\x18\x06 \x01(\x03\x12\x13\n\x0brate_policy\x18\x07 \x01(\t\x12\x18\n\x10lock_rate_policy\x18\x08 \x01(\x08\x12\x1c\n\x14target_rate_cap_kbps\x18\t \x01(\x03\x12\x18\n\x10target_rate_kbps\x18\n \x01(\x03\x12\x19\n\x11min_rate_cap_kbps\x18\x0b \x01(\x03\x12\x15\n\rmin_rate_kbps\x18\x0c \x01(\x03\x12\x1d\n\x15lock_target_rate_kbps\x18\r \x01(\x08\x12\x1a\n\x12lock_min_rate_kbps\x18\x0e \x01(\x08\x12\x15\n\tuse_ascp4\x18\x0f \x01(\x08\x42\x02\x18\x01\"\x90\x01\n\x06\x41ssets\x12\x1b\n\x13\x64\x65stination_root_id\x18\x01 \x01(\t\x12\x16\n\x0esource_root_id\x18\x02 \x01(\t\x12\x18\n\x10\x64\x65stination_root\x18\x03 \x01(\t\x12\x13\n\x0bsource_root\x18\x04 \x01(\t\x12\"\n\x05paths\x18\x05 \x03(\x0b\x32\x13.transferd.api.Path\"\x1e\n\x0bPathPattern\x12\x0f\n\x07pattern\x18\x01 \x01(\t\"+\n\x0cHTTPFallback\x12\x0c\n\x04port\x18\x01 \x01(\x03\x12\r\n\x05proxy\x18\x02 \x01(\t\"\x92\x01\n\tStreaming\x12\x12\n\nchunk_size\x18\x01 \x01(\x03\x12\x14\n\x0clocal_memory\x18\x02 \x01(\x03\x12\x15\n\rremote_memory\x18\x03 \x01(\x03\x12\x13\n\x0bsparse_file\x18\x04 \x01(\x08\x12/\n\x0b\x63ompression\x18\x05 \x01(\x0b\x32\x1a.transferd.api.Compression\"+\n\x0b\x43ompression\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0c\n\x04hint\x18\x02 \x01(\x05\"\xe6\x01\n\x0cMultiSession\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\x12\x1a\n\x12number_of_sessions\x18\x02 \x01(\x05\x12/\n\x05hosts\x18\x03 \x01(\x0b\x32 .transferd.api.MultiSessionHosts\x12@\n\x0e\x66ile_splitting\x18\x04 \x01(\x0b\x32(.transferd.api.MultiSessionFileSplitting\x12\x37\n\tbandwidth\x18\x05 \x01(\x0b\x32$.transferd.api.MultiSessionBandwidth\"2\n\x11MultiSessionHosts\x12\x0e\n\x06usedns\x18\x01 \x01(\x08\x12\r\n\x05hosts\x18\x02 \x03(\t\"6\n\x19MultiSessionFileSplitting\x12\x19\n\x11size_kb_threshold\x18\x01 \x01(\x05\"9\n\x15MultiSessionBandwidth\x12 \n\x18\x62\x61ndwidth_kpbs_threshold\x18\x01 \x01(\x05*\xdb\x01\n\x0cTransferType\x12\x19\n\x15UNKNOWN_TRANSFER_TYPE\x10\x00\x12\x10\n\x0c\x46ILE_REGULAR\x10\x01\x12\x13\n\x0f\x46ILE_PERSISTENT\x10\x02\x12\x1c\n\x14URL_STREAM_TO_STREAM\x10\x03\x1a\x02\x08\x01\x12\x1b\n\x17\x46ILE_TO_STREAM_DOWNLOAD\x10\x04\x12\x19\n\x15STREAM_TO_FILE_UPLOAD\x10\x05\x12 \n\x18PERSISTENT_STREAM_UPLOAD\x10\x06\x1a\x02\x08\x01\x12\x11\n\rASYNC_SESSION\x10\x07*\x80\x01\n\x0eTransferStatus\x12\x12\n\x0eUNKNOWN_STATUS\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\r\n\tCOMPLETED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\x0c\n\x08\x43\x41NCELED\x10\x05\x12\n\n\x06PAUSED\x10\x06\x12\x0c\n\x08ORPHANED\x10\x07*\x8c\x02\n\rTransferEvent\x12\x11\n\rUNKNOWN_EVENT\x10\x00\x12\x11\n\rSESSION_START\x10\x01\x12\x10\n\x0cSESSION_STOP\x10\x02\x12\x11\n\rSESSION_ERROR\x10\x03\x12\x0e\n\nFILE_START\x10\x04\x12\r\n\tFILE_STOP\x10\x05\x12\x0e\n\nFILE_ERROR\x10\x06\x12\x0c\n\x08\x41RG_STOP\x10\x07\x12\x0c\n\x08PROGRESS\x10\x08\x12\x0e\n\nCONNECTING\x10\t\x12\x15\n\x11RATE_MODIFICATION\x10\n\x12\r\n\tFILE_SKIP\x10\x0b\x12\x19\n\x15\x42\x41NDWIDTH_MEASUREMENT\x10\x0c\x12\x14\n\x10SESSION_CANCELED\x10\r*-\n\x1aRegistrationFilterOperator\x12\x06\n\x02OR\x10\x00\x12\x07\n\x03\x41ND\x10\x01\x32\x98\x0b\n\x0fTransferService\x12Q\n\x08Validate\x12 .transferd.api.ValidationRequest\x1a!.transferd.api.ValidationResponse\"\x00\x12W\n\rStartTransfer\x12\x1e.transferd.api.TransferRequest\x1a$.transferd.api.StartTransferResponse\"\x00\x12_\n\x18StartTransferWithMonitor\x12\x1e.transferd.api.TransferRequest\x1a\x1f.transferd.api.TransferResponse\"\x00\x30\x01\x12[\n\rQueryTransfer\x12\".transferd.api.TransferInfoRequest\x1a$.transferd.api.QueryTransferResponse\"\x00\x12k\n\x0eModifyTransfer\x12*.transferd.api.TransferModificationRequest\x1a+.transferd.api.TransferModificationResponse\"\x00\x12]\n\x10\x41\x64\x64TransferPaths\x12\".transferd.api.TransferPathRequest\x1a#.transferd.api.TransferPathResponse\"\x00\x12w\n\x16LockPersistentTransfer\x12,.transferd.api.LockPersistentTransferRequest\x1a-.transferd.api.LockPersistentTransferResponse\"\x00\x12Y\n\x0cStopTransfer\x12\".transferd.api.StopTransferRequest\x1a#.transferd.api.StopTransferResponse\"\x00\x12[\n\x10MonitorTransfers\x12\".transferd.api.RegistrationRequest\x1a\x1f.transferd.api.TransferResponse\"\x00\x30\x01\x12V\n\rGetAPIVersion\x12 .transferd.api.APIVersionRequest\x1a!.transferd.api.APIVersionResponse\"\x00\x12T\n\x07GetInfo\x12\".transferd.api.InstanceInfoRequest\x1a#.transferd.api.InstanceInfoResponse\"\x00\x12V\n\x0fIsPeerReachable\x12\x1f.transferd.api.PeerCheckRequest\x1a .transferd.api.PeerCheckResponse\"\x00\x12g\n\x10WriteStreamChunk\x12&.transferd.api.WriteStreamChunkRequest\x1a\'.transferd.api.WriteStreamChunkResponse\"\x00(\x01\x12X\n\x0bWriteStream\x12!.transferd.api.WriteStreamRequest\x1a\".transferd.api.WriteStreamResponse\"\x00(\x01\x12U\n\nReadStream\x12 .transferd.api.ReadStreamRequest\x1a!.transferd.api.ReadStreamResponse\"\x00\x30\x01\x42\x45\n%com.ibm.software.aspera.transferd.apiZ\x1cibm.com/aspera/transferd/apib\x06proto3"
8
+ descriptor_data = "\n\x0ftransferd.proto\x12\rtransferd.api\"*\n\x05\x45rror\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"\x13\n\x11\x41PIVersionRequest\"/\n\x12\x41PIVersionResponse\x12\x19\n\x11supportedVersions\x18\x01 \x03(\t\"\x93\x01\n\rRetryStrategy\x12\x32\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32!.transferd.api.BasicRetryStrategyH\x00\x12\x41\n\x07\x62\x61\x63koff\x18\x02 \x01(\x0b\x32..transferd.api.ExponentialBackoffRetryStrategyH\x00\x42\x0b\n\tretryType\"=\n\x12\x42\x61sicRetryStrategy\x12\x10\n\x08maxCount\x18\x01 \x01(\x03\x12\x15\n\rretryInterval\x18\x02 \x01(\x03\"r\n\x1f\x45xponentialBackoffRetryStrategy\x12\x13\n\x0bmaxAttempts\x18\x01 \x01(\x03\x12\x12\n\nmultiplier\x18\x02 \x01(\x03\x12\x14\n\x0cinitialDelay\x18\x03 \x01(\x03\x12\x10\n\x08maxDelay\x18\x04 \x01(\x03\"\x99\x01\n\x0eTransferConfig\x12+\n\x05retry\x18\x01 \x01(\x0b\x32\x1c.transferd.api.RetryStrategy\x12\x0f\n\x07license\x18\x02 \x01(\t\x12\x10\n\x08localLog\x18\x03 \x01(\t\x12\x11\n\tremoteLog\x18\x04 \x01(\t\x12\x10\n\x08logLevel\x18\x05 \x01(\x0f\x12\x12\n\nasperaConf\x18\x06 \x01(\t\"/\n\rTransferRange\x12\x0e\n\x06offset\x18\x01 \x01(\x03\x12\x0e\n\x06length\x18\x02 \x01(\x03\"\x89\x01\n\x0fTransferRequest\x12\x31\n\x0ctransferType\x18\x01 \x01(\x0e\x32\x1b.transferd.api.TransferType\x12-\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x1d.transferd.api.TransferConfig\x12\x14\n\x0ctransferSpec\x18\x03 \x01(\t\"\xd5\x01\n\x15StartTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\x31\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x1b.transferd.api.TransferType\x12-\n\x06status\x18\x05 \x01(\x0e\x32\x1d.transferd.api.TransferStatus\x12#\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.transferd.api.Error\")\n\x13TransferInfoRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"\xc3\x03\n\x10TransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\x31\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x1b.transferd.api.TransferType\x12-\n\x06status\x18\x05 \x01(\x0e\x32\x1d.transferd.api.TransferStatus\x12#\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.transferd.api.Error\x12\x33\n\rtransferEvent\x18\x07 \x01(\x0e\x32\x1c.transferd.api.TransferEvent\x12\x31\n\x0ctransferInfo\x18\x08 \x01(\x0b\x32\x1b.transferd.api.TransferInfo\x12\x0f\n\x07message\x18\t \x01(\t\x12>\n\x0bsessionInfo\x18\n \x01(\x0b\x32).transferd.api.SessionTransferInformation\x12\x38\n\x08\x66ileInfo\x18\x0b \x01(\x0b\x32&.transferd.api.FileTransferInformation\"\x99\x02\n\x15QueryTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\x31\n\x0ctransferType\x18\x04 \x01(\x0e\x32\x1b.transferd.api.TransferType\x12-\n\x06status\x18\x05 \x01(\x0e\x32\x1d.transferd.api.TransferStatus\x12#\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.transferd.api.Error\x12\x31\n\x0ctransferInfo\x18\x07 \x01(\x0b\x32\x1b.transferd.api.TransferInfo\x12\x0f\n\x07message\x18\x08 \x01(\t\"\x8f\x04\n\x0cTransferInfo\x12\x17\n\x0f\x61verageRateKbps\x18\x01 \x01(\x03\x12\x11\n\tbytesLost\x18\x02 \x01(\x03\x12\x18\n\x10\x62ytesTransferred\x18\x03 \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x04 \x01(\x03\x12\x1c\n\x14\x64irectoriesCompleted\x18\x05 \x01(\x03\x12\x15\n\rstartTimeUsec\x18\x06 \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x07 \x01(\x03\x12\x13\n\x0b\x65ndTimeUsec\x18\x08 \x01(\x03\x12\x11\n\terrorCode\x18\t \x01(\t\x12\x18\n\x10\x65rrorDescription\x18\n \x01(\t\x12\x16\n\x0e\x66ilesCompleted\x18\x0b \x01(\x03\x12\x16\n\x0etargetRateKbps\x18\x0c \x01(\x03\x12\x13\n\x0bminRateKbps\x18\r \x01(\x03\x12\x1d\n\x15\x61rgTransfersAttempted\x18\x0e \x01(\x03\x12\x1a\n\x12\x61rgTransfersPassed\x18\x0f \x01(\x03\x12\x1b\n\x13\x61rgTransfersSkipped\x18\x10 \x01(\x03\x12\x1a\n\x12\x61rgTransfersFailed\x18\x11 \x01(\x03\x12\x18\n\x10\x66ileChecksumType\x18\x12 \x01(\t\x12\x0e\n\x06\x63ookie\x18\x13 \x01(\t\x12\x11\n\tdirection\x18\x14 \x01(\t\x12\x11\n\toperation\x18\x15 \x01(\t\x12\x0e\n\x06tags64\x18\x16 \x01(\t\"\xfe\x11\n\x1aSessionTransferInformation\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0c\n\x04user\x18\x03 \x01(\t\x12\x12\n\nclientUser\x18\x04 \x01(\t\x12\x14\n\x0c\x63lientNodeId\x18\x05 \x01(\t\x12\x17\n\x0f\x63lientClusterId\x18\x06 \x01(\t\x12\x14\n\x0cserverNodeId\x18\x07 \x01(\t\x12\x17\n\x0fserverClusterId\x18\x08 \x01(\t\x12\x17\n\x0f\x63lientIPAddress\x18\t \x01(\t\x12\x17\n\x0fserverIPAddress\x18\n \x01(\t\x12\x0c\n\x04port\x18\x0b \x01(\x03\x12\x0f\n\x07tcpPort\x18\x0c \x01(\x03\x12\x0e\n\x06status\x18\r \x01(\t\x12\x15\n\rstartTimeUsec\x18\x0e \x01(\x03\x12\x13\n\x0b\x65ndTimeUsec\x18\x0f \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x10 \x01(\x03\x12\x18\n\x10\x62ytesTransferred\x18\x11 \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x12 \x01(\x03\x12\x11\n\tbytesLost\x18\x13 \x01(\x03\x12\x16\n\x0e\x66ilesCompleted\x18\x14 \x01(\x03\x12\x13\n\x0b\x66ilesFailed\x18\x15 \x01(\x03\x12\x14\n\x0c\x66ilesSkipped\x18\x16 \x01(\x03\x12\x1c\n\x14\x64irectoriesCompleted\x18\x17 \x01(\x03\x12\x16\n\x0etargetRateKbps\x18\x18 \x01(\x03\x12\x13\n\x0bminRateKbps\x18\x19 \x01(\x03\x12\x14\n\x0c\x63\x61lcRateKbps\x18\x1a \x01(\x03\x12\x18\n\x10networkDelayUsec\x18\x1b \x01(\x03\x12\x11\n\terrorCode\x18\x1c \x01(\x03\x12\x11\n\terrorDesc\x18\x1d \x01(\t\x12\x18\n\x10manifestFilePath\x18\x1e \x01(\t\x12\x1f\n\x17sourcePathsScanExcluded\x18\x1f \x01(\x03\x12 \n\x18sourcePathsScanIrregular\x18 \x01(\x03\x12\x1d\n\x15sourcePathsScanFailed\x18! \x01(\x03\x12 \n\x18sourcePathsScanAttempted\x18\" \x01(\x03\x12\x18\n\x10transfersSkipped\x18# \x01(\x03\x12\x17\n\x0ftransfersPassed\x18$ \x01(\x03\x12\x17\n\x0ftransfersFailed\x18% \x01(\x03\x12\x1a\n\x12transfersAttempted\x18& \x01(\x03\x12\x0e\n\x06\x63ookie\x18\' \x01(\t\x12\x11\n\tdirection\x18( \x01(\t\x12\x18\n\x10\x66ileChecksumType\x18) \x01(\t\x12\x11\n\toperation\x18* \x01(\t\x12\x0c\n\x04tags\x18+ \x01(\t\x12\x1d\n\x15\x61rgTransfersAttempted\x18, \x01(\x03\x12\x1a\n\x12\x61rgTransfersPassed\x18- \x01(\x03\x12\x1b\n\x13\x61rgTransfersSkipped\x18. \x01(\x03\x12\x1a\n\x12\x61rgTransfersFailed\x18/ \x01(\x03\x12\x12\n\nencryption\x18\x30 \x01(\t\x12\x10\n\x08\x61\x64\x61ptive\x18\x31 \x01(\t\x12\x0e\n\x06remote\x18\x32 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x33 \x01(\t\x12\x10\n\x08priority\x18\x34 \x01(\x03\x12\x12\n\ntransferId\x18\x35 \x01(\t\x12\x0f\n\x07rateCap\x18\x36 \x01(\x03\x12\x12\n\nminRateCap\x18\x37 \x01(\x03\x12\x11\n\tpolicyCap\x18\x38 \x01(\t\x12\x10\n\x08rateLock\x18\x39 \x01(\t\x12\x13\n\x0bminRateLock\x18: \x01(\t\x12\x12\n\npolicyLock\x18; \x01(\t\x12\x16\n\x0eserverHostname\x18< \x01(\t\x12\x15\n\rremoteAddress\x18= \x01(\t\x12\x0e\n\x06\x63ipher\x18> \x01(\t\x12\x14\n\x0cresumePolicy\x18? \x01(\t\x12\x14\n\x0c\x63reatePolicy\x18@ \x01(\x03\x12\x16\n\x0emanifestPolicy\x18\x41 \x01(\t\x12\x0f\n\x07precalc\x18\x42 \x01(\t\x12\x17\n\x0foverwritePolicy\x18\x43 \x01(\t\x12\x16\n\x0erttAutocorrect\x18\x44 \x01(\t\x12\x12\n\ntimePolicy\x18\x45 \x01(\x03\x12\x1a\n\x12manifestInprogress\x18\x46 \x01(\t\x12\x14\n\x0c\x66ilesEncrypt\x18G \x01(\t\x12\x14\n\x0c\x66ilesDecrypt\x18H \x01(\t\x12\x14\n\x0c\x64\x61tagramSize\x18I \x01(\x03\x12\x14\n\x0cvLinkVersion\x18J \x01(\x03\x12\x18\n\x10peerVLinkVersion\x18K \x01(\x03\x12\x19\n\x11vLinkLocalEnabled\x18L \x01(\t\x12\x1a\n\x12vLinkRemoteEnabled\x18M \x01(\t\x12\x15\n\rreadBlockSize\x18N \x01(\x03\x12\x16\n\x0ewriteBlockSize\x18O \x01(\x03\x12\x17\n\x0f\x63lusterNumNodes\x18P \x01(\x03\x12\x15\n\rclusterNodeId\x18Q \x01(\x03\x12\x11\n\tmoveRange\x18R \x01(\t\x12\x11\n\tkeepalive\x18S \x01(\t\x12\x11\n\ttestLogin\x18T \x01(\t\x12\x10\n\x08useProxy\x18U \x01(\t\x12\x1c\n\x14rateControlAlgorithm\x18V \x01(\t\x12\x0c\n\x04pmtu\x18W \x01(\x03\x12\x18\n\x10preTransferFiles\x18X \x01(\x03\x12\x18\n\x10preTransferBytes\x18Y \x01(\x03\x12\x17\n\x0fpreTransferDirs\x18Z \x01(\x03\x12\x1a\n\x12preTransferSpecial\x18[ \x01(\x03\x12 \n\x18sourcePathsScanCompleted\x18\\ \x01(\x03\x12\x19\n\x11\x61rgScansAttempted\x18] \x01(\x03\x12\x19\n\x11\x61rgScansCompleted\x18^ \x01(\x03\x12\x1b\n\x13\x61rgFaspFileArgIndex\x18_ \x01(\x03\x12\x1b\n\x13\x64irCreatesAttempted\x18` \x01(\x03\x12\x18\n\x10\x64irCreatesFailed\x18\x61 \x01(\x03\x12\x18\n\x10\x64irCreatesPassed\x18\x62 \x01(\x03\x12\x19\n\x11\x64irScansCompleted\x18\x63 \x01(\x03\"\xdb\x02\n\x17\x46ileTransferInformation\x12\x0e\n\x06\x66ileId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x15\n\rstartTimeUsec\x18\x03 \x01(\x03\x12\x13\n\x0b\x65lapsedUsec\x18\x04 \x01(\x03\x12\x0e\n\x06status\x18\x05 \x01(\t\x12\x11\n\terrorCode\x18\x06 \x01(\x03\x12\x18\n\x10\x65rrorDescription\x18\x07 \x01(\t\x12\x0c\n\x04size\x18\t \x01(\x03\x12\x10\n\x08\x66ileType\x18\n \x01(\t\x12\x18\n\x10\x66ileChecksumType\x18\x0b \x01(\t\x12\x10\n\x08\x63hecksum\x18\x0c \x01(\t\x12\x11\n\tstartByte\x18\r \x01(\x03\x12\x14\n\x0c\x62ytesWritten\x18\x0e \x01(\x03\x12\x17\n\x0f\x62ytesContiguous\x18\x0f \x01(\x03\x12\x11\n\tsessionId\x18\x10 \x01(\t\x12\x18\n\x10\x66\x61spFileArgIndex\x18\x11 \x01(\x03\"G\n\x1bTransferModificationRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x14\n\x0ctransferSpec\x18\x02 \x01(\t\"\x9a\x01\n\x1cTransferModificationResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12-\n\x06status\x18\x03 \x01(\x0e\x32\x1d.transferd.api.TransferStatus\x12#\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.transferd.api.Error\"\\\n\x13TransferPathRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x31\n\x0ctransferPath\x18\x02 \x03(\x0b\x32\x1b.transferd.api.TransferPath\"`\n\x0cTransferPath\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\t\x12+\n\x05range\x18\x03 \x01(\x0b\x32\x1c.transferd.api.TransferRange\"c\n\x14TransferPathResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"3\n\x1dLockPersistentTransferRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"m\n\x1eLockPersistentTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"]\n\x13RegistrationRequest\x12\x12\n\ntransferId\x18\x01 \x03(\t\x12\x32\n\x07\x66ilters\x18\x02 \x03(\x0b\x32!.transferd.api.RegistrationFilter\"\xc8\x02\n\x12RegistrationFilter\x12;\n\x08operator\x18\x01 \x01(\x0e\x32).transferd.api.RegistrationFilterOperator\x12/\n\teventType\x18\x02 \x03(\x0e\x32\x1c.transferd.api.TransferEvent\x12\x12\n\ntransferId\x18\x03 \x03(\t\x12\x0e\n\x06\x63ookie\x18\x04 \x03(\t\x12\x0e\n\x06tags64\x18\x05 \x03(\t\x12\x11\n\tdirection\x18\x06 \x01(\t\x12\x13\n\x0b\x63ookieRegex\x18\x07 \x01(\t\x12\x31\n\x0ctransferType\x18\x08 \x03(\x0e\x32\x1b.transferd.api.TransferType\x12\x35\n\x0etransferStatus\x18\t \x03(\x0e\x32\x1d.transferd.api.TransferStatus\"8\n\x13StopTransferRequest\x12\x12\n\ntransferId\x18\x01 \x03(\t\x12\r\n\x05\x64\x65lay\x18\x02 \x01(\x03\"W\n\x14StopTransferResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12+\n\nstopResult\x18\x02 \x03(\x0b\x32\x17.transferd.api.StopInfo\"T\n\x08StopInfo\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0f\n\x07stopped\x18\x02 \x01(\x08\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"\x15\n\x13InstanceInfoRequest\"z\n\x14InstanceInfoResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12)\n\x04info\x18\x02 \x01(\x0b\x32\x1b.transferd.api.InstanceInfo\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"\x9f\x01\n\x0cInstanceInfo\x12\x16\n\x0emanagementPort\x18\x01 \x01(\x03\x12-\n\nasperaInfo\x18\x02 \x03(\x0b\x32\x19.transferd.api.AsperaInfo\x12/\n\x0blicenseInfo\x18\x03 \x01(\x0b\x32\x1a.transferd.api.LicenseInfo\x12\x17\n\x0fpromiscuousMode\x18\x04 \x01(\x08\"]\n\x0bLicenseInfo\x12\x0f\n\x07maxRate\x18\x01 \x01(\t\x12\x15\n\raccountNumber\x18\x02 \x01(\t\x12\x15\n\rlicenseNumber\x18\x03 \x01(\t\x12\x0f\n\x07license\x18\x04 \x01(\t\"w\n\nAsperaInfo\x12\x14\n\x0c\x61speraBinary\x18\x01 \x01(\t\x12\x15\n\rasperaVersion\x18\x02 \x01(\t\x12\x17\n\x0foperatingSystem\x18\x03 \x01(\t\x12#\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x14.transferd.api.Error\"(\n\x10PeerCheckRequest\x12\x14\n\x0ctransferSpec\x18\x01 \x01(\t\"_\n\x11PeerCheckResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x11\n\treachable\x18\x02 \x01(\x08\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"\x8d\x01\n\x17WriteStreamChunkRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12+\n\x05range\x18\x03 \x01(\x0b\x32\x1c.transferd.api.TransferRange\x12#\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x14.transferd.api.Chunk\"g\n\x18WriteStreamChunkResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"i\n\x12WriteStreamRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12#\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x14.transferd.api.Chunk\"b\n\x13WriteStreamResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x12\n\ntransferId\x18\x02 \x01(\t\x12#\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x14.transferd.api.Error\"\'\n\x11ReadStreamRequest\x12\x12\n\ntransferId\x18\x01 \x01(\t\"\x92\x01\n\x12ReadStreamResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x10\n\x08pathSize\x18\x03 \x01(\x03\x12#\n\x05\x63hunk\x18\x04 \x01(\x0b\x32\x14.transferd.api.Chunk\x12#\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x14.transferd.api.Error\"\x19\n\x05\x43hunk\x12\x10\n\x08\x63ontents\x18\x01 \x01(\x0c\"\\\n\x11ValidationRequest\x12\x14\n\x0ctransferSpec\x18\x01 \x01(\t\x12\x31\n\x0ctransferType\x18\x02 \x01(\x0e\x32\x1b.transferd.api.TransferType\"\x8c\x01\n\x12ValidationResponse\x12\x12\n\napiVersion\x18\x01 \x01(\t\x12\r\n\x05valid\x18\x02 \x01(\x08\x12\x18\n\x10validatorVersion\x18\x03 \x01(\t\x12\x14\n\x0cunknownField\x18\x04 \x03(\t\x12#\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x14.transferd.api.Error\"\x84\x0f\n\x0eTransferSpecV1\x12\x0e\n\x06\x63ipher\x18\x01 \x01(\t\x12\x1a\n\x12\x63ontent_protection\x18\x02 \x01(\t\x12#\n\x1b\x63ontent_protection_password\x18\x03 \x01(\t\x12\x0e\n\x06\x63ookie\x18\x04 \x01(\t\x12\x12\n\ncreate_dir\x18\x05 \x01(\x08\x12\x1e\n\x16\x64\x65lete_before_transfer\x18\x06 \x01(\x08\x12\x15\n\rdelete_source\x18\x07 \x01(\x08\x12\x1b\n\x13\x64\x65stination_root_id\x18\x08 \x01(\t\x12\x11\n\tdirection\x18\t \x01(\t\x12\x1a\n\x12\x65xclude_newer_than\x18\n \x01(\t\x12\x1a\n\x12\x65xclude_older_than\x18\x0b \x01(\t\x12\x11\n\tfasp_port\x18\x0c \x01(\x03\x12\x15\n\rhttp_fallback\x18\r \x01(\x08\x12\x1a\n\x12http_fallback_port\x18\x0e \x01(\x03\x12\x1b\n\x13https_fallback_port\x18\x0f \x01(\x03\x12\x1b\n\x13move_after_transfer\x18\x10 \x01(\t\x12\x15\n\rmulti_session\x18\x11 \x01(\x03\x12\x1f\n\x17multi_session_threshold\x18\x12 \x01(\x03\x12\x11\n\toverwrite\x18\x13 \x01(\t\x12\"\n\x05paths\x18\x14 \x03(\x0b\x32\x13.transferd.api.Path\x12\x1d\n\x15precalculate_job_size\x18\x15 \x01(\x08\x12\x1c\n\x14preserve_access_time\x18\x16 \x01(\x08\x12\x1e\n\x16preserve_creation_time\x18\x17 \x01(\x08\x12\"\n\x1apreserve_modification_time\x18\x18 \x01(\x08\x12\x16\n\x0epreserve_times\x18\x19 \x01(\x08\x12\x13\n\x0brate_policy\x18\x1a \x01(\t\x12\x19\n\x11remote_access_key\x18\x1b \x01(\t\x12\x13\n\x0bremote_host\x18\x1c \x01(\t\x12\x17\n\x0fremote_password\x18\x1d \x01(\t\x12\x13\n\x0bremote_user\x18\x1e \x01(\t\x12\x1d\n\x15remove_after_transfer\x18\x1f \x01(\x08\x12 \n\x18remove_empty_directories\x18 \x01(\x08\x12\x15\n\rresume_policy\x18! \x01(\t\x12\x16\n\x0eretry_duration\x18\" \x01(\x03\x12\x16\n\x0esource_root_id\x18# \x01(\t\x12\x10\n\x08ssh_port\x18$ \x01(\x03\x12\x17\n\x0fssh_private_key\x18% \x01(\t\x12\"\n\x1assh_private_key_passphrase\x18& \x01(\t\x12\x16\n\x0esymlink_policy\x18\' \x01(\t\x12\x0c\n\x04tags\x18( \x01(\t\x12\x0e\n\x06tags64\x18) \x01(\t\x12\x1c\n\x14target_rate_cap_kbps\x18* \x01(\x03\x12\x18\n\x10target_rate_kbps\x18+ \x01(\x03\x12\r\n\x05title\x18, \x01(\t\x12\r\n\x05token\x18- \x01(\t\x12\x15\n\tuse_ascp4\x18. \x01(\x08\x42\x02\x18\x01\x12,\n\nfasp_proxy\x18/ \x01(\x0b\x32\x18.transferd.api.FASPProxy\x12\x18\n\x10\x64\x65stination_root\x18\x30 \x01(\t\x12\x13\n\x0bsource_root\x18\x31 \x01(\t\x12\x19\n\x11min_rate_cap_kbps\x18\x32 \x01(\x03\x12\x18\n\x10lock_rate_policy\x18\x33 \x01(\x08\x12\x1d\n\x15lock_target_rate_kbps\x18\x34 \x01(\x08\x12\x1a\n\x12lock_min_rate_kbps\x18\x35 \x01(\x08\x12\x12\n\nsrc_base64\x18\x36 \x01(\t\x12%\n\x04icos\x18\x37 \x01(\x0b\x32\x17.transferd.api.ICOSSpec\x12,\n\x08node_api\x18\x38 \x01(\x0b\x32\x1a.transferd.api.NodeAPISpec\x12\x1b\n\x13\x61pply_local_docroot\x18\x39 \x01(\x08\x12\x15\n\rpreserve_acls\x18: \x01(\t\x12\x1c\n\x14preserve_remote_acls\x18; \x01(\t\x12\x1f\n\x17preserve_file_owner_uid\x18< \x01(\x08\x12\x1f\n\x17preserve_file_owner_gid\x18= \x01(\x08\x12\x1f\n\x17preserve_extended_attrs\x18> \x01(\t\x12&\n\x1epreserve_remote_extended_attrs\x18? \x01(\t\x12#\n\x1bpreserve_source_access_time\x18@ \x01(\x08\x12\x1f\n\x17remove_empty_source_dir\x18\x41 \x01(\x08\x12\x1d\n\x15save_before_overwrite\x18\x42 \x01(\x08\x12\x1c\n\x14skip_duplicate_check\x18\x43 \x01(\x08\x12\x1a\n\x12skip_special_files\x18\x44 \x01(\x08\x12\x1c\n\x14ssh_private_key_path\x18\x45 \x01(\t\x12\x19\n\x11\x66\x61il_bad_filepass\x18\x46 \x01(\x08\"+\n\x04Path\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x02 \x01(\t\"<\n\tFASPProxy\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"\xd8\x02\n\x0eTransferSpecV2\x12\x35\n\x12session_initiation\x18\x01 \x01(\x0b\x32\x19.transferd.api.Initiation\x12)\n\x08security\x18\x02 \x01(\x0b\x32\x17.transferd.api.Security\x12)\n\x08tracking\x18\x03 \x01(\x0b\x32\x17.transferd.api.Tracking\x12.\n\x0b\x66ile_system\x18\x04 \x01(\x0b\x32\x19.transferd.api.Filesystem\x12+\n\ttransport\x18\x05 \x01(\x0b\x32\x18.transferd.api.Transport\x12%\n\x06\x61ssets\x18\x06 \x01(\x0b\x32\x15.transferd.api.Assets\x12\x11\n\tdirection\x18\x07 \x01(\t\x12\x13\n\x0bremote_host\x18\x08 \x01(\t\x12\r\n\x05title\x18\t \x01(\t\"\x86\x01\n\nInitiation\x12#\n\x03ssh\x18\x01 \x01(\x0b\x32\x16.transferd.api.SSHSpec\x12%\n\x04icos\x18\x02 \x01(\x0b\x32\x17.transferd.api.ICOSSpec\x12,\n\x08node_api\x18\x03 \x01(\x0b\x32\x1a.transferd.api.NodeAPISpec\"\xbd\x01\n\x07SSHSpec\x12\x10\n\x08ssh_port\x18\x01 \x01(\x03\x12\x17\n\x0fremote_password\x18\x02 \x01(\t\x12\x13\n\x0bremote_user\x18\x03 \x01(\t\x12\x17\n\x0fssh_private_key\x18\x04 \x01(\t\x12\"\n\x1assh_private_key_passphrase\x18\x05 \x01(\t\x12\x17\n\x0fssh_fingerprint\x18\x06 \x01(\t\x12\x1c\n\x14ssh_private_key_path\x18\x07 \x01(\t\"j\n\x08ICOSSpec\x12\x0f\n\x07\x61pi_key\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12\x1f\n\x17ibm_service_instance_id\x18\x03 \x01(\t\x12\x1c\n\x14ibm_service_endpoint\x18\x04 \x01(\t\"/\n\x11NodeAPIHeaderSpec\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\x0bNodeAPISpec\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x31\n\x07headers\x18\x02 \x03(\x0b\x32 .transferd.api.NodeAPIHeaderSpec\"\x84\x01\n\x08Security\x12#\n\x1b\x63ontent_protection_password\x18\x01 \x01(\t\x12\x19\n\x11remote_access_key\x18\x02 \x01(\t\x12\r\n\x05token\x18\x03 \x01(\t\x12\x0e\n\x06\x63ipher\x18\x04 \x01(\t\x12\x19\n\x11\x66\x61il_bad_filepass\x18\x05 \x01(\x08\"8\n\x08Tracking\x12\x0e\n\x06\x63ookie\x18\x01 \x01(\t\x12\x0c\n\x04tags\x18\x02 \x01(\t\x12\x0e\n\x06tags64\x18\x03 \x01(\t\"\xc8\x07\n\nFilesystem\x12\x12\n\ncreate_dir\x18\x01 \x01(\x08\x12\x1e\n\x16\x64\x65lete_before_transfer\x18\x02 \x01(\x08\x12\x1a\n\x12\x65xclude_newer_than\x18\x03 \x01(\t\x12\x1a\n\x12\x65xclude_older_than\x18\x04 \x01(\t\x12\x1b\n\x13move_after_transfer\x18\x05 \x01(\t\x12\x11\n\toverwrite\x18\x06 \x01(\t\x12\x1d\n\x15precalculate_job_size\x18\x07 \x01(\x08\x12\x1c\n\x14preserve_access_time\x18\x08 \x01(\x08\x12\x1e\n\x16preserve_creation_time\x18\t \x01(\x08\x12\"\n\x1apreserve_modification_time\x18\n \x01(\x08\x12\x16\n\x0epreserve_times\x18\x0b \x01(\x08\x12\x1d\n\x15remove_after_transfer\x18\x0c \x01(\x08\x12 \n\x18remove_empty_directories\x18\r \x01(\x08\x12\x15\n\rresume_policy\x18\x0e \x01(\t\x12\x16\n\x0esymlink_policy\x18\x0f \x01(\t\x12\x15\n\rchecksum_type\x18\x10 \x01(\t\x12\x12\n\nsrc_base64\x18\x11 \x01(\t\x12\x36\n\x12inclusion_patterns\x18\x12 \x03(\x0b\x32\x1a.transferd.api.PathPattern\x12\x36\n\x12\x65xclusion_patterns\x18\x13 \x03(\x0b\x32\x1a.transferd.api.PathPattern\x12\x1b\n\x13\x61pply_local_docroot\x18\x14 \x01(\x08\x12\x15\n\rpreserve_acls\x18\x15 \x01(\t\x12\x1c\n\x14preserve_remote_acls\x18\x16 \x01(\t\x12\x1f\n\x17preserve_file_owner_uid\x18\x17 \x01(\x08\x12\x1f\n\x17preserve_file_owner_gid\x18\x18 \x01(\x08\x12\x1f\n\x17preserve_extended_attrs\x18\x19 \x01(\t\x12&\n\x1epreserve_remote_extended_attrs\x18\x1a \x01(\t\x12#\n\x1bpreserve_source_access_time\x18\x1b \x01(\x08\x12\x1f\n\x17remove_empty_source_dir\x18\x1c \x01(\x08\x12\x1d\n\x15save_before_overwrite\x18\x1d \x01(\x08\x12\x1c\n\x14skip_duplicate_check\x18\x1e \x01(\x08\x12\x1a\n\x12skip_special_files\x18\x1f \x01(\x08\"\xed\x03\n\tTransport\x12\x11\n\tfasp_port\x18\x01 \x01(\x03\x12\x32\n\rhttp_fallback\x18\x02 \x01(\x0b\x32\x1b.transferd.api.HTTPFallback\x12,\n\nfasp_proxy\x18\x03 \x01(\x0b\x32\x18.transferd.api.FASPProxy\x12+\n\tstreaming\x18\x04 \x01(\x0b\x32\x18.transferd.api.Streaming\x12\x32\n\rmulti_session\x18\x05 \x01(\x0b\x32\x1b.transferd.api.MultiSession\x12\x1f\n\x17multi_session_threshold\x18\x06 \x01(\x03\x12\x13\n\x0brate_policy\x18\x07 \x01(\t\x12\x18\n\x10lock_rate_policy\x18\x08 \x01(\x08\x12\x1c\n\x14target_rate_cap_kbps\x18\t \x01(\x03\x12\x18\n\x10target_rate_kbps\x18\n \x01(\x03\x12\x19\n\x11min_rate_cap_kbps\x18\x0b \x01(\x03\x12\x15\n\rmin_rate_kbps\x18\x0c \x01(\x03\x12\x1d\n\x15lock_target_rate_kbps\x18\r \x01(\x08\x12\x1a\n\x12lock_min_rate_kbps\x18\x0e \x01(\x08\x12\x15\n\tuse_ascp4\x18\x0f \x01(\x08\x42\x02\x18\x01\"\x90\x01\n\x06\x41ssets\x12\x1b\n\x13\x64\x65stination_root_id\x18\x01 \x01(\t\x12\x16\n\x0esource_root_id\x18\x02 \x01(\t\x12\x18\n\x10\x64\x65stination_root\x18\x03 \x01(\t\x12\x13\n\x0bsource_root\x18\x04 \x01(\t\x12\"\n\x05paths\x18\x05 \x03(\x0b\x32\x13.transferd.api.Path\"\x1e\n\x0bPathPattern\x12\x0f\n\x07pattern\x18\x01 \x01(\t\"+\n\x0cHTTPFallback\x12\x0c\n\x04port\x18\x01 \x01(\x03\x12\r\n\x05proxy\x18\x02 \x01(\t\"\x92\x01\n\tStreaming\x12\x12\n\nchunk_size\x18\x01 \x01(\x03\x12\x14\n\x0clocal_memory\x18\x02 \x01(\x03\x12\x15\n\rremote_memory\x18\x03 \x01(\x03\x12\x13\n\x0bsparse_file\x18\x04 \x01(\x08\x12/\n\x0b\x63ompression\x18\x05 \x01(\x0b\x32\x1a.transferd.api.Compression\"+\n\x0b\x43ompression\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0c\n\x04hint\x18\x02 \x01(\x05\"\xe6\x01\n\x0cMultiSession\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\x12\x1a\n\x12number_of_sessions\x18\x02 \x01(\x05\x12/\n\x05hosts\x18\x03 \x01(\x0b\x32 .transferd.api.MultiSessionHosts\x12@\n\x0e\x66ile_splitting\x18\x04 \x01(\x0b\x32(.transferd.api.MultiSessionFileSplitting\x12\x37\n\tbandwidth\x18\x05 \x01(\x0b\x32$.transferd.api.MultiSessionBandwidth\"2\n\x11MultiSessionHosts\x12\x0e\n\x06usedns\x18\x01 \x01(\x08\x12\r\n\x05hosts\x18\x02 \x03(\t\"6\n\x19MultiSessionFileSplitting\x12\x19\n\x11size_kb_threshold\x18\x01 \x01(\x05\"9\n\x15MultiSessionBandwidth\x12 \n\x18\x62\x61ndwidth_kpbs_threshold\x18\x01 \x01(\x05*\xdb\x01\n\x0cTransferType\x12\x19\n\x15UNKNOWN_TRANSFER_TYPE\x10\x00\x12\x10\n\x0c\x46ILE_REGULAR\x10\x01\x12\x13\n\x0f\x46ILE_PERSISTENT\x10\x02\x12\x1c\n\x14URL_STREAM_TO_STREAM\x10\x03\x1a\x02\x08\x01\x12\x1b\n\x17\x46ILE_TO_STREAM_DOWNLOAD\x10\x04\x12\x19\n\x15STREAM_TO_FILE_UPLOAD\x10\x05\x12 \n\x18PERSISTENT_STREAM_UPLOAD\x10\x06\x1a\x02\x08\x01\x12\x11\n\rASYNC_SESSION\x10\x07*\x80\x01\n\x0eTransferStatus\x12\x12\n\x0eUNKNOWN_STATUS\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\r\n\tCOMPLETED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\x0c\n\x08\x43\x41NCELED\x10\x05\x12\n\n\x06PAUSED\x10\x06\x12\x0c\n\x08ORPHANED\x10\x07*\x8c\x02\n\rTransferEvent\x12\x11\n\rUNKNOWN_EVENT\x10\x00\x12\x11\n\rSESSION_START\x10\x01\x12\x10\n\x0cSESSION_STOP\x10\x02\x12\x11\n\rSESSION_ERROR\x10\x03\x12\x0e\n\nFILE_START\x10\x04\x12\r\n\tFILE_STOP\x10\x05\x12\x0e\n\nFILE_ERROR\x10\x06\x12\x0c\n\x08\x41RG_STOP\x10\x07\x12\x0c\n\x08PROGRESS\x10\x08\x12\x0e\n\nCONNECTING\x10\t\x12\x15\n\x11RATE_MODIFICATION\x10\n\x12\r\n\tFILE_SKIP\x10\x0b\x12\x19\n\x15\x42\x41NDWIDTH_MEASUREMENT\x10\x0c\x12\x14\n\x10SESSION_CANCELED\x10\r*-\n\x1aRegistrationFilterOperator\x12\x06\n\x02OR\x10\x00\x12\x07\n\x03\x41ND\x10\x01\x32\x98\x0b\n\x0fTransferService\x12Q\n\x08Validate\x12 .transferd.api.ValidationRequest\x1a!.transferd.api.ValidationResponse\"\x00\x12W\n\rStartTransfer\x12\x1e.transferd.api.TransferRequest\x1a$.transferd.api.StartTransferResponse\"\x00\x12_\n\x18StartTransferWithMonitor\x12\x1e.transferd.api.TransferRequest\x1a\x1f.transferd.api.TransferResponse\"\x00\x30\x01\x12[\n\rQueryTransfer\x12\".transferd.api.TransferInfoRequest\x1a$.transferd.api.QueryTransferResponse\"\x00\x12k\n\x0eModifyTransfer\x12*.transferd.api.TransferModificationRequest\x1a+.transferd.api.TransferModificationResponse\"\x00\x12]\n\x10\x41\x64\x64TransferPaths\x12\".transferd.api.TransferPathRequest\x1a#.transferd.api.TransferPathResponse\"\x00\x12w\n\x16LockPersistentTransfer\x12,.transferd.api.LockPersistentTransferRequest\x1a-.transferd.api.LockPersistentTransferResponse\"\x00\x12Y\n\x0cStopTransfer\x12\".transferd.api.StopTransferRequest\x1a#.transferd.api.StopTransferResponse\"\x00\x12[\n\x10MonitorTransfers\x12\".transferd.api.RegistrationRequest\x1a\x1f.transferd.api.TransferResponse\"\x00\x30\x01\x12V\n\rGetAPIVersion\x12 .transferd.api.APIVersionRequest\x1a!.transferd.api.APIVersionResponse\"\x00\x12T\n\x07GetInfo\x12\".transferd.api.InstanceInfoRequest\x1a#.transferd.api.InstanceInfoResponse\"\x00\x12V\n\x0fIsPeerReachable\x12\x1f.transferd.api.PeerCheckRequest\x1a .transferd.api.PeerCheckResponse\"\x00\x12g\n\x10WriteStreamChunk\x12&.transferd.api.WriteStreamChunkRequest\x1a\'.transferd.api.WriteStreamChunkResponse\"\x00(\x01\x12X\n\x0bWriteStream\x12!.transferd.api.WriteStreamRequest\x1a\".transferd.api.WriteStreamResponse\"\x00(\x01\x12U\n\nReadStream\x12 .transferd.api.ReadStreamRequest\x1a!.transferd.api.ReadStreamResponse\"\x00\x30\x01\x42\x45\n%com.ibm.software.aspera.transferd.apiZ\x1cibm.com/aspera/transferd/apib\x06proto3"
9
9
 
10
- pool = Google::Protobuf::DescriptorPool.generated_pool
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
12
12
 
13
13
  module Transferd
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,11 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aspera-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.24.1
4
+ version: 4.25.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Martin
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain:
11
10
  - |
@@ -37,7 +36,7 @@ cert_chain:
37
36
  eTf9kxhVM40wGQOECVNA8UsEEZHD48eF+csUYZtAJOF5oxTI8UyV9T/o6CgO0c9/
38
37
  Gzz+Qm5ULOUcPiJLjSpaiTrkiIVYiDGnqNSr6R1Hb1c=
39
38
  -----END CERTIFICATE-----
40
- date: 2025-10-02 00:00:00.000000000 Z
39
+ date: 1980-01-02 00:00:00.000000000 Z
41
40
  dependencies:
42
41
  - !ruby/object:Gem::Dependency
43
42
  name: blankslate
@@ -109,6 +108,20 @@ dependencies:
109
108
  - - "~>"
110
109
  - !ruby/object:Gem::Version
111
110
  version: '3.5'
111
+ - !ruby/object:Gem::Dependency
112
+ name: net-smtp
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.5'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.5'
112
125
  - !ruby/object:Gem::Dependency
113
126
  name: net-ssh
114
127
  requirement: !ruby/object:Gem::Requirement
@@ -282,6 +295,7 @@ files:
282
295
  - lib/aspera/agent/connect.rb
283
296
  - lib/aspera/agent/desktop.rb
284
297
  - lib/aspera/agent/direct.rb
298
+ - lib/aspera/agent/factory.rb
285
299
  - lib/aspera/agent/httpgw.rb
286
300
  - lib/aspera/agent/node.rb
287
301
  - lib/aspera/agent/transferd.rb
@@ -289,13 +303,13 @@ files:
289
303
  - lib/aspera/api/aoc.rb
290
304
  - lib/aspera/api/ats.rb
291
305
  - lib/aspera/api/cos_node.rb
306
+ - lib/aspera/api/faspex.rb
292
307
  - lib/aspera/api/httpgw.rb
293
308
  - lib/aspera/api/node.rb
294
309
  - lib/aspera/ascmd.rb
295
310
  - lib/aspera/ascp/installation.rb
296
311
  - lib/aspera/ascp/management.rb
297
312
  - lib/aspera/assert.rb
298
- - lib/aspera/cli/basic_auth_plugin.rb
299
313
  - lib/aspera/cli/error.rb
300
314
  - lib/aspera/cli/extended_value.rb
301
315
  - lib/aspera/cli/formatter.rb
@@ -303,19 +317,21 @@ files:
303
317
  - lib/aspera/cli/info.rb
304
318
  - lib/aspera/cli/main.rb
305
319
  - lib/aspera/cli/manager.rb
306
- - lib/aspera/cli/plugin.rb
307
- - lib/aspera/cli/plugin_factory.rb
308
320
  - lib/aspera/cli/plugins/alee.rb
309
321
  - lib/aspera/cli/plugins/aoc.rb
310
322
  - lib/aspera/cli/plugins/ats.rb
323
+ - lib/aspera/cli/plugins/base.rb
324
+ - lib/aspera/cli/plugins/basic_auth.rb
311
325
  - lib/aspera/cli/plugins/config.rb
312
326
  - lib/aspera/cli/plugins/console.rb
313
327
  - lib/aspera/cli/plugins/cos.rb
328
+ - lib/aspera/cli/plugins/factory.rb
314
329
  - lib/aspera/cli/plugins/faspex.rb
315
330
  - lib/aspera/cli/plugins/faspex5.rb
316
331
  - lib/aspera/cli/plugins/faspio.rb
317
332
  - lib/aspera/cli/plugins/httpgw.rb
318
333
  - lib/aspera/cli/plugins/node.rb
334
+ - lib/aspera/cli/plugins/oauth.rb
319
335
  - lib/aspera/cli/plugins/orchestrator.rb
320
336
  - lib/aspera/cli/plugins/preview.rb
321
337
  - lib/aspera/cli/plugins/server.rb
@@ -350,6 +366,7 @@ files:
350
366
  - lib/aspera/keychain/macos_security.rb
351
367
  - lib/aspera/line_logger.rb
352
368
  - lib/aspera/log.rb
369
+ - lib/aspera/markdown.rb
353
370
  - lib/aspera/nagios.rb
354
371
  - lib/aspera/node_simulator.rb
355
372
  - lib/aspera/oauth.rb
@@ -378,9 +395,9 @@ files:
378
395
  - lib/aspera/rest_call_error.rb
379
396
  - lib/aspera/rest_error_analyzer.rb
380
397
  - lib/aspera/rest_errors_aspera.rb
381
- - lib/aspera/resumer.rb
382
398
  - lib/aspera/secret_hider.rb
383
399
  - lib/aspera/ssh.rb
400
+ - lib/aspera/ssl.rb
384
401
  - lib/aspera/sync/args.schema.yaml
385
402
  - lib/aspera/sync/conf.schema.yaml
386
403
  - lib/aspera/sync/database.rb
@@ -388,9 +405,9 @@ files:
388
405
  - lib/aspera/temp_file_manager.rb
389
406
  - lib/aspera/timer_limiter.rb
390
407
  - lib/aspera/transfer/error.rb
391
- - lib/aspera/transfer/error_info.rb
392
408
  - lib/aspera/transfer/faux_file.rb
393
409
  - lib/aspera/transfer/parameters.rb
410
+ - lib/aspera/transfer/resumer.rb
394
411
  - lib/aspera/transfer/spec.rb
395
412
  - lib/aspera/transfer/spec.schema.yaml
396
413
  - lib/aspera/transfer/spec_doc.rb
@@ -410,7 +427,6 @@ metadata:
410
427
  changelog_uri: https://github.com/IBM/aspera-cli/CHANGELOG.md
411
428
  rubygems_uri: https://rubygems.org/gems/aspera-cli
412
429
  documentation_uri: https://www.rubydoc.info/gems/aspera-cli
413
- post_install_message:
414
430
  rdoc_options: []
415
431
  require_paths:
416
432
  - lib
@@ -426,8 +442,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
426
442
  version: '0'
427
443
  requirements:
428
444
  - Read the manual for any requirement
429
- rubygems_version: 3.4.19
430
- signing_key:
445
+ rubygems_version: 3.6.9
431
446
  specification_version: 4
432
447
  summary: 'Execute actions using command line on IBM Aspera Server products: Aspera
433
448
  on Cloud, Faspex, Shares, Node, Console, Orchestrator, High Speed Transfer Server'
metadata.gz.sig CHANGED
Binary file
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aspera/rest'
4
- require 'aspera/cli/plugin'
5
-
6
- module Aspera
7
- module Cli
8
- # base class for applications supporting basic authentication
9
- class BasicAuthPlugin < Cli::Plugin
10
- class << self
11
- def declare_options(options)
12
- options.declare(:url, 'URL of application, e.g. https://app.example.com/aspera/app')
13
- options.declare(:username, "User's identifier")
14
- options.declare(:password, "User's password")
15
- options.parse_options!
16
- end
17
- end
18
-
19
- def initialize(context:, basic_options: true)
20
- super(context: context)
21
- BasicAuthPlugin.declare_options(options) if basic_options
22
- end
23
-
24
- # returns a Rest object with basic auth
25
- def basic_auth_params(subpath = nil)
26
- api_url = options.get_option(:url, mandatory: true)
27
- api_url = "#{api_url}/#{subpath}" unless subpath.nil?
28
- return {
29
- base_url: api_url,
30
- auth: {
31
- type: :basic,
32
- username: options.get_option(:username, mandatory: true),
33
- password: options.get_option(:password, mandatory: true)
34
- }
35
- }
36
- end
37
-
38
- def basic_auth_api(subpath = nil)
39
- return Rest.new(**basic_auth_params(subpath))
40
- end
41
- end
42
- end
43
- end