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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +1064 -745
- data/CONTRIBUTING.md +43 -100
- data/README.md +1281 -720
- data/bin/ascli +20 -1
- data/bin/asession +23 -27
- data/lib/aspera/agent/base.rb +10 -21
- data/lib/aspera/agent/connect.rb +2 -3
- data/lib/aspera/agent/desktop.rb +2 -2
- data/lib/aspera/agent/direct.rb +49 -32
- data/lib/aspera/agent/factory.rb +31 -0
- data/lib/aspera/api/aoc.rb +134 -76
- data/lib/aspera/api/cos_node.rb +3 -2
- data/lib/aspera/api/faspex.rb +213 -0
- data/lib/aspera/api/node.rb +107 -94
- data/lib/aspera/ascmd.rb +1 -2
- data/lib/aspera/ascp/installation.rb +73 -58
- data/lib/aspera/ascp/management.rb +119 -23
- data/lib/aspera/assert.rb +39 -11
- data/lib/aspera/cli/error.rb +4 -2
- data/lib/aspera/cli/extended_value.rb +91 -67
- data/lib/aspera/cli/formatter.rb +62 -27
- data/lib/aspera/cli/hints.rb +8 -0
- data/lib/aspera/cli/info.rb +4 -4
- data/lib/aspera/cli/main.rb +76 -84
- data/lib/aspera/cli/manager.rb +352 -248
- data/lib/aspera/cli/plugins/alee.rb +5 -4
- data/lib/aspera/cli/plugins/aoc.rb +175 -195
- data/lib/aspera/cli/plugins/ats.rb +4 -4
- data/lib/aspera/cli/plugins/base.rb +343 -0
- data/lib/aspera/cli/plugins/basic_auth.rb +45 -0
- data/lib/aspera/cli/plugins/config.rb +283 -269
- data/lib/aspera/cli/plugins/console.rb +27 -22
- data/lib/aspera/cli/plugins/cos.rb +3 -3
- data/lib/aspera/cli/plugins/factory.rb +78 -0
- data/lib/aspera/cli/plugins/faspex.rb +49 -46
- data/lib/aspera/cli/plugins/faspex5.rb +113 -225
- data/lib/aspera/cli/plugins/faspio.rb +19 -18
- data/lib/aspera/cli/plugins/httpgw.rb +14 -13
- data/lib/aspera/cli/plugins/node.rb +162 -149
- data/lib/aspera/cli/plugins/oauth.rb +48 -0
- data/lib/aspera/cli/plugins/orchestrator.rb +129 -45
- data/lib/aspera/cli/plugins/preview.rb +30 -50
- data/lib/aspera/cli/plugins/server.rb +21 -21
- data/lib/aspera/cli/plugins/shares.rb +45 -47
- data/lib/aspera/cli/sync_actions.rb +50 -39
- data/lib/aspera/cli/transfer_agent.rb +35 -49
- data/lib/aspera/cli/transfer_progress.rb +6 -6
- data/lib/aspera/cli/version.rb +3 -3
- data/lib/aspera/cli/wizard.rb +70 -55
- data/lib/aspera/colors.rb +6 -0
- data/lib/aspera/command_line_builder.rb +59 -61
- data/lib/aspera/command_line_converter.rb +2 -1
- data/lib/aspera/coverage.rb +2 -2
- data/lib/aspera/data_repository.rb +1 -1
- data/lib/aspera/environment.rb +51 -41
- data/lib/aspera/faspex_gw.rb +7 -5
- data/lib/aspera/faspex_postproc.rb +1 -1
- data/lib/aspera/keychain/factory.rb +1 -2
- data/lib/aspera/keychain/macos_security.rb +1 -1
- data/lib/aspera/log.rb +37 -9
- data/lib/aspera/markdown.rb +31 -0
- data/lib/aspera/nagios.rb +7 -6
- data/lib/aspera/oauth/base.rb +25 -28
- data/lib/aspera/oauth/factory.rb +9 -9
- data/lib/aspera/oauth/url_json.rb +2 -1
- data/lib/aspera/oauth/web.rb +2 -2
- data/lib/aspera/preview/file_types.rb +23 -37
- data/lib/aspera/products/connect.rb +7 -6
- data/lib/aspera/products/desktop.rb +1 -4
- data/lib/aspera/products/other.rb +9 -1
- data/lib/aspera/products/transferd.rb +0 -1
- data/lib/aspera/rest.rb +168 -113
- data/lib/aspera/rest_error_analyzer.rb +4 -4
- data/lib/aspera/ssh.rb +7 -4
- data/lib/aspera/ssl.rb +41 -0
- data/lib/aspera/sync/args.schema.yaml +46 -3
- data/lib/aspera/sync/conf.schema.yaml +307 -123
- data/lib/aspera/sync/database.rb +2 -1
- data/lib/aspera/sync/operations.rb +135 -79
- data/lib/aspera/temp_file_manager.rb +17 -5
- data/lib/aspera/transfer/error.rb +16 -7
- data/lib/aspera/transfer/parameters.rb +35 -22
- data/lib/aspera/transfer/resumer.rb +74 -0
- data/lib/aspera/transfer/spec.rb +5 -5
- data/lib/aspera/transfer/spec.schema.yaml +170 -59
- data/lib/aspera/transfer/spec_doc.rb +49 -43
- data/lib/aspera/uri_reader.rb +2 -2
- data/lib/aspera/web_auth.rb +6 -6
- data/lib/transferd_pb.rb +2 -2
- data.tar.gz.sig +0 -0
- metadata +26 -11
- metadata.gz.sig +0 -0
- data/lib/aspera/cli/basic_auth_plugin.rb +0 -43
- data/lib/aspera/cli/plugin.rb +0 -333
- data/lib/aspera/cli/plugin_factory.rb +0 -81
- data/lib/aspera/resumer.rb +0 -77
- 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/
|
|
3
|
+
require 'aspera/agent/factory'
|
|
4
|
+
require 'aspera/markdown'
|
|
4
5
|
|
|
5
6
|
module Aspera
|
|
6
7
|
module Transfer
|
|
7
|
-
#
|
|
8
|
+
# Generate documentation from Schema, for Transfer Spec, or async Conf spec
|
|
8
9
|
class SpecDoc
|
|
9
10
|
class << self
|
|
10
|
-
#
|
|
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:
|
|
16
|
-
# @param include_option [Boolean]
|
|
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 =
|
|
21
|
-
|
|
22
|
-
|
|
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:
|
|
32
|
+
type: info['type'],
|
|
26
33
|
description: []
|
|
27
34
|
}
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
# split lines
|
|
35
|
+
# Render Markdown formatting and split lines
|
|
31
36
|
columns[:description] =
|
|
32
|
-
|
|
33
|
-
.gsub(
|
|
34
|
-
.
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
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.
|
|
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
|
-
#
|
|
54
|
+
# Only keep lines that are usable in supported agents
|
|
51
55
|
next false if agents.empty?
|
|
52
|
-
columns[:description].push("Allowed values: #{
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
''
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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::
|
|
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
|
data/lib/aspera/uri_reader.rb
CHANGED
|
@@ -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).
|
|
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
|
-
#
|
|
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
|
data/lib/aspera/web_auth.rb
CHANGED
|
@@ -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
|
-
|
|
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>#{
|
|
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
|
|
174
|
-
def initialize(endpoint_url,
|
|
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
|
-
@
|
|
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 @
|
|
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.
|
|
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:
|
|
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.
|
|
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
|