aspera-cli 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +455 -229
- data/docs/Makefile +4 -4
- data/docs/README.erb.md +457 -126
- data/docs/test_env.conf +19 -2
- data/examples/aoc.rb +14 -3
- data/examples/faspex4.rb +89 -0
- data/lib/aspera/aoc.rb +38 -40
- data/lib/aspera/cli/main.rb +65 -33
- data/lib/aspera/cli/plugins/aoc.rb +54 -65
- data/lib/aspera/cli/plugins/ats.rb +2 -2
- data/lib/aspera/cli/plugins/config.rb +158 -137
- data/lib/aspera/cli/plugins/faspex.rb +111 -64
- data/lib/aspera/cli/plugins/faspex5.rb +35 -48
- data/lib/aspera/cli/plugins/node.rb +3 -2
- data/lib/aspera/cli/plugins/preview.rb +88 -55
- data/lib/aspera/cli/transfer_agent.rb +98 -62
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/command_line_builder.rb +48 -31
- data/lib/aspera/cos_node.rb +34 -28
- data/lib/aspera/environment.rb +2 -2
- data/lib/aspera/fasp/aoc.rb +1 -1
- data/lib/aspera/fasp/installation.rb +68 -45
- data/lib/aspera/fasp/local.rb +89 -45
- data/lib/aspera/fasp/manager.rb +3 -0
- data/lib/aspera/fasp/node.rb +23 -1
- data/lib/aspera/fasp/parameters.rb +57 -86
- data/lib/aspera/fasp/parameters.yaml +531 -0
- data/lib/aspera/fasp/resume_policy.rb +13 -12
- data/lib/aspera/fasp/uri.rb +1 -1
- data/lib/aspera/id_generator.rb +22 -0
- data/lib/aspera/node.rb +14 -3
- data/lib/aspera/oauth.rb +135 -129
- data/lib/aspera/persistency_action_once.rb +11 -7
- data/lib/aspera/persistency_folder.rb +6 -26
- data/lib/aspera/rest.rb +3 -12
- data/lib/aspera/secrets.rb +20 -0
- data/lib/aspera/sync.rb +40 -35
- data/lib/aspera/timer_limiter.rb +22 -0
- data/lib/aspera/web_auth.rb +105 -0
- metadata +22 -3
- data/docs/transfer_spec.html +0 -99
data/lib/aspera/sync.rb
CHANGED
|
@@ -1,48 +1,53 @@
|
|
|
1
|
+
require 'aspera/command_line_builder'
|
|
2
|
+
|
|
1
3
|
module Aspera
|
|
2
4
|
# builds command line arg for async
|
|
3
5
|
class Sync
|
|
4
|
-
private
|
|
5
6
|
INSTANCE_PARAMS=
|
|
6
7
|
{
|
|
7
|
-
'alt_logdir' => { :
|
|
8
|
-
'watchd' => { :
|
|
9
|
-
'apply_local_docroot' => { :
|
|
10
|
-
'quiet' => { :
|
|
8
|
+
'alt_logdir' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
9
|
+
'watchd' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
10
|
+
'apply_local_docroot' => { :cltype => :opt_without_arg},
|
|
11
|
+
'quiet' => { :cltype => :opt_without_arg},
|
|
11
12
|
}
|
|
12
13
|
SESSION_PARAMS=
|
|
13
14
|
{
|
|
14
|
-
'name' => { :
|
|
15
|
-
'local_dir' => { :
|
|
16
|
-
'remote_dir' => { :
|
|
17
|
-
'local_db_dir' => { :
|
|
18
|
-
'remote_db_dir' => { :
|
|
19
|
-
'host' => { :
|
|
20
|
-
'user' => { :
|
|
21
|
-
'private_key_path' => { :
|
|
22
|
-
'direction' => { :
|
|
23
|
-
'checksum' => { :
|
|
24
|
-
'tcp_port' => { :
|
|
25
|
-
'rate_policy' => { :
|
|
26
|
-
'target_rate' => { :
|
|
27
|
-
'cooloff' => { :
|
|
28
|
-
'pending_max' => { :
|
|
29
|
-
'scan_intensity' => { :
|
|
30
|
-
'cipher' => { :
|
|
31
|
-
'transfer_threads' => { :
|
|
32
|
-
'preserve_time' => { :
|
|
33
|
-
'preserve_access_time' => { :
|
|
34
|
-
'preserve_modification_time' => { :
|
|
35
|
-
'preserve_uid' => { :
|
|
36
|
-
'preserve_gid' => { :
|
|
37
|
-
'create_dir' => { :
|
|
38
|
-
'reset' => { :
|
|
15
|
+
'name' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
16
|
+
'local_dir' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
17
|
+
'remote_dir' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
18
|
+
'local_db_dir' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
19
|
+
'remote_db_dir' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
20
|
+
'host' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
21
|
+
'user' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
22
|
+
'private_key_path' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
23
|
+
'direction' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
24
|
+
'checksum' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
25
|
+
'tcp_port' => { :cltype => :opt_with_arg, :accepted_types=>:int},
|
|
26
|
+
'rate_policy' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
27
|
+
'target_rate' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
28
|
+
'cooloff' => { :cltype => :opt_with_arg, :accepted_types=>:int},
|
|
29
|
+
'pending_max' => { :cltype => :opt_with_arg, :accepted_types=>:int},
|
|
30
|
+
'scan_intensity' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
31
|
+
'cipher' => { :cltype => :opt_with_arg, :accepted_types=>:string},
|
|
32
|
+
'transfer_threads' => { :cltype => :opt_with_arg, :accepted_types=>:int},
|
|
33
|
+
'preserve_time' => { :cltype => :opt_without_arg},
|
|
34
|
+
'preserve_access_time' => { :cltype => :opt_without_arg},
|
|
35
|
+
'preserve_modification_time' => { :cltype => :opt_without_arg},
|
|
36
|
+
'preserve_uid' => { :cltype => :opt_without_arg},
|
|
37
|
+
'preserve_gid' => { :cltype => :opt_without_arg},
|
|
38
|
+
'create_dir' => { :cltype => :opt_without_arg},
|
|
39
|
+
'reset' => { :cltype => :opt_without_arg},
|
|
39
40
|
# note: only one env var, but multiple sessions... may be a problem
|
|
40
|
-
'remote_password' => { :
|
|
41
|
-
'cookie' => { :
|
|
42
|
-
'token' => { :
|
|
43
|
-
'license' => { :
|
|
41
|
+
'remote_password' => { :cltype => :envvar, :clvarname=>'ASPERA_SCP_PASS'},
|
|
42
|
+
'cookie' => { :cltype => :envvar, :clvarname=>'ASPERA_SCP_COOKIE'},
|
|
43
|
+
'token' => { :cltype => :envvar, :clvarname=>'ASPERA_SCP_TOKEN'},
|
|
44
|
+
'license' => { :cltype => :envvar, :clvarname=>'ASPERA_SCP_LICENSE'},
|
|
44
45
|
}
|
|
45
|
-
|
|
46
|
+
|
|
47
|
+
Aspera::CommandLineBuilder.normalize_description(INSTANCE_PARAMS)
|
|
48
|
+
Aspera::CommandLineBuilder.normalize_description(SESSION_PARAMS)
|
|
49
|
+
|
|
50
|
+
private_constant :INSTANCE_PARAMS,:SESSION_PARAMS
|
|
46
51
|
|
|
47
52
|
def initialize(sync_params)
|
|
48
53
|
@sync_params=sync_params
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Aspera
|
|
2
|
+
# used to throttle logs
|
|
3
|
+
class TimerLimiter
|
|
4
|
+
# @param delay in seconds (float)
|
|
5
|
+
def initialize(delay)
|
|
6
|
+
@delay=delay
|
|
7
|
+
@last_time=nil
|
|
8
|
+
@count=0
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def trigger?
|
|
12
|
+
old_time=@last_time
|
|
13
|
+
@last_time=Time.now.to_f
|
|
14
|
+
@count+=1
|
|
15
|
+
if old_time.nil? or (@last_time-old_time)>@delay
|
|
16
|
+
@count=0
|
|
17
|
+
return true
|
|
18
|
+
end
|
|
19
|
+
return false
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
require 'webrick'
|
|
2
|
+
require 'webrick/https'
|
|
3
|
+
require 'thread'
|
|
4
|
+
|
|
5
|
+
module Aspera
|
|
6
|
+
class WebAuth
|
|
7
|
+
# server for auth page
|
|
8
|
+
class FxGwServlet < WEBrick::HTTPServlet::AbstractServlet
|
|
9
|
+
def initialize(server,info) # additional args get here
|
|
10
|
+
@shared=info
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def do_GET (request, response)
|
|
14
|
+
if ! request.path.eql?(@shared[:expected_path])
|
|
15
|
+
response.status=400
|
|
16
|
+
return
|
|
17
|
+
end
|
|
18
|
+
@shared[:mutex].synchronize do
|
|
19
|
+
@shared[:query]=request.query
|
|
20
|
+
@shared[:cond].signal
|
|
21
|
+
end
|
|
22
|
+
response.status=200
|
|
23
|
+
response.content_type = 'text/html'
|
|
24
|
+
response.body='<html><head><title>Ok</title></head><body><h1>Thank you !</h1><p>You can close this window.</p></body></html>'
|
|
25
|
+
end
|
|
26
|
+
end # FxGwServlet
|
|
27
|
+
|
|
28
|
+
# generates and adds self signed cert to provided webrick options
|
|
29
|
+
def fill_self_signed_cert(options)
|
|
30
|
+
key = OpenSSL::PKey::RSA.new(4096)
|
|
31
|
+
cert = OpenSSL::X509::Certificate.new
|
|
32
|
+
cert.subject = cert.issuer = OpenSSL::X509::Name.parse('/C=FR/O=Test/OU=Test/CN=Test')
|
|
33
|
+
cert.not_before = Time.now
|
|
34
|
+
cert.not_after = Time.now + 365 * 24 * 60 * 60
|
|
35
|
+
cert.public_key = key.public_key
|
|
36
|
+
cert.serial = 0x0
|
|
37
|
+
cert.version = 2
|
|
38
|
+
ef = OpenSSL::X509::ExtensionFactory.new
|
|
39
|
+
ef.issuer_certificate = cert
|
|
40
|
+
ef.subject_certificate = cert
|
|
41
|
+
cert.extensions = [
|
|
42
|
+
ef.create_extension('basicConstraints','CA:TRUE', true),
|
|
43
|
+
ef.create_extension('subjectKeyIdentifier', 'hash'),
|
|
44
|
+
# ef.create_extension('keyUsage', 'cRLSign,keyCertSign', true),
|
|
45
|
+
]
|
|
46
|
+
cert.add_extension(ef.create_extension('authorityKeyIdentifier','keyid:always,issuer:always'))
|
|
47
|
+
cert.sign(key, OpenSSL::Digest::SHA256.new)
|
|
48
|
+
options[:SSLPrivateKey] = key
|
|
49
|
+
options[:SSLCertificate] = cert
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def initialize(endpoint_url)
|
|
53
|
+
uri=URI.parse(endpoint_url)
|
|
54
|
+
webrick_options = {
|
|
55
|
+
:app => WebAuth,
|
|
56
|
+
:Port => uri.port,
|
|
57
|
+
:Logger => Log.log
|
|
58
|
+
}
|
|
59
|
+
uri_path=uri.path.empty? ? '/' : uri.path
|
|
60
|
+
case uri.scheme
|
|
61
|
+
when 'http'
|
|
62
|
+
Log.log.debug('HTTP mode')
|
|
63
|
+
when 'https'
|
|
64
|
+
webrick_options[:SSLEnable]=true
|
|
65
|
+
webrick_options[:SSLVerifyClient]=OpenSSL::SSL::VERIFY_NONE
|
|
66
|
+
case 0
|
|
67
|
+
when 0
|
|
68
|
+
# generate self signed cert
|
|
69
|
+
fill_self_signed_cert(webrick_options)
|
|
70
|
+
when 1
|
|
71
|
+
# short
|
|
72
|
+
webrick_options[:SSLCertName] = [ [ 'CN',WEBrick::Utils::getservername ] ]
|
|
73
|
+
Log.log.error(">>>#{webrick_options[:SSLCertName]}")
|
|
74
|
+
when 2
|
|
75
|
+
# good cert
|
|
76
|
+
webrick_options[:SSLPrivateKey] =OpenSSL::PKey::RSA.new(File.read('/Users/laurent/workspace/Tools/certificate/myserver.key'))
|
|
77
|
+
webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read('/Users/laurent/workspace/Tools/certificate/myserver.crt'))
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
# parameters for servlet
|
|
81
|
+
@shared_info={
|
|
82
|
+
expected_path: uri_path,
|
|
83
|
+
mutex: Mutex.new,
|
|
84
|
+
cond: ConditionVariable.new
|
|
85
|
+
}
|
|
86
|
+
@server = WEBrick::HTTPServer.new(webrick_options)
|
|
87
|
+
@server.mount(uri_path, FxGwServlet, @shared_info) # additional args provided to constructor
|
|
88
|
+
Thread.new { @server.start }
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# wait for request on web server
|
|
92
|
+
# @return Hash the query
|
|
93
|
+
def get_request
|
|
94
|
+
Log.log.debug('get_request')
|
|
95
|
+
# called only once
|
|
96
|
+
raise "error, called twice ?" if @server.nil?
|
|
97
|
+
@shared_info[:mutex].synchronize do
|
|
98
|
+
@shared_info[:cond].wait(@shared_info[:mutex])
|
|
99
|
+
end
|
|
100
|
+
@server.shutdown
|
|
101
|
+
@server=nil
|
|
102
|
+
return @shared_info[:query]
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aspera-cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Laurent Martin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-10-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: xml-simple
|
|
@@ -150,6 +150,20 @@ dependencies:
|
|
|
150
150
|
- - "~>"
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
152
|
version: '0.3'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: webrick
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - "~>"
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '1.7'
|
|
160
|
+
type: :runtime
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - "~>"
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '1.7'
|
|
153
167
|
- !ruby/object:Gem::Dependency
|
|
154
168
|
name: bundler
|
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -211,8 +225,8 @@ files:
|
|
|
211
225
|
- docs/README.md
|
|
212
226
|
- docs/diagrams.txt
|
|
213
227
|
- docs/test_env.conf
|
|
214
|
-
- docs/transfer_spec.html
|
|
215
228
|
- examples/aoc.rb
|
|
229
|
+
- examples/faspex4.rb
|
|
216
230
|
- examples/proxy.pac
|
|
217
231
|
- examples/transfer.rb
|
|
218
232
|
- lib/aspera/aoc.rb
|
|
@@ -270,10 +284,12 @@ files:
|
|
|
270
284
|
- lib/aspera/fasp/manager.rb
|
|
271
285
|
- lib/aspera/fasp/node.rb
|
|
272
286
|
- lib/aspera/fasp/parameters.rb
|
|
287
|
+
- lib/aspera/fasp/parameters.yaml
|
|
273
288
|
- lib/aspera/fasp/resume_policy.rb
|
|
274
289
|
- lib/aspera/fasp/uri.rb
|
|
275
290
|
- lib/aspera/faspex_gw.rb
|
|
276
291
|
- lib/aspera/hash_ext.rb
|
|
292
|
+
- lib/aspera/id_generator.rb
|
|
277
293
|
- lib/aspera/log.rb
|
|
278
294
|
- lib/aspera/nagios.rb
|
|
279
295
|
- lib/aspera/node.rb
|
|
@@ -293,10 +309,13 @@ files:
|
|
|
293
309
|
- lib/aspera/rest_call_error.rb
|
|
294
310
|
- lib/aspera/rest_error_analyzer.rb
|
|
295
311
|
- lib/aspera/rest_errors_aspera.rb
|
|
312
|
+
- lib/aspera/secrets.rb
|
|
296
313
|
- lib/aspera/ssh.rb
|
|
297
314
|
- lib/aspera/sync.rb
|
|
298
315
|
- lib/aspera/temp_file_manager.rb
|
|
316
|
+
- lib/aspera/timer_limiter.rb
|
|
299
317
|
- lib/aspera/uri_reader.rb
|
|
318
|
+
- lib/aspera/web_auth.rb
|
|
300
319
|
homepage: https://github.com/IBM/aspera-cli
|
|
301
320
|
licenses:
|
|
302
321
|
- Apache-2.0
|
data/docs/transfer_spec.html
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
<title>Transfer Specification</title>
|
|
4
|
-
<style type="text/css">
|
|
5
|
-
table {border-collapse: collapse;}
|
|
6
|
-
table, th, td {border: 1px solid black;}
|
|
7
|
-
.yes {color:white;background-color:green;font-weight:bold;}
|
|
8
|
-
.no {color:white;background-color:red;font-weight:bold;}
|
|
9
|
-
</style>
|
|
10
|
-
</head>
|
|
11
|
-
<body>
|
|
12
|
-
<p>
|
|
13
|
-
Columns:
|
|
14
|
-
<ul>
|
|
15
|
-
<li>F=Fasp Manager(local FASP execution)</li>
|
|
16
|
-
<li>N=remote node(node API)</li>
|
|
17
|
-
<li>C=Connect Client(web plugin)</li>
|
|
18
|
-
</ul>
|
|
19
|
-
</p>
|
|
20
|
-
<p>
|
|
21
|
-
Req/Def : Required or default value (- means emty)
|
|
22
|
-
</p>
|
|
23
|
-
<p>
|
|
24
|
-
Fields with EX_ prefix are specific extensions to local mode.
|
|
25
|
-
</p>
|
|
26
|
-
<p>
|
|
27
|
-
arg: related ascp argument or env var suffix (PASS for ASPERA_SCP_PASS)
|
|
28
|
-
</p>
|
|
29
|
-
<p>
|
|
30
|
-
UNDER CONSTRUCTION<br/>
|
|
31
|
-
<a href="https://developer.ibm.com/apis/catalog/?search=aspera">Aspera API Documentation</a>→Node API→/opt/transfers<br/>
|
|
32
|
-
</p>
|
|
33
|
-
|
|
34
|
-
<table>
|
|
35
|
-
<tr><th>Field</th><th>Req/Def</th><th>Type</th><th>F</th><th>N</th><th>C</th><th>arg</th><th>Description</th></tr>
|
|
36
|
-
<tr><td>direction</td><td>Required</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--mode</td><td>Direction: "send" or "receive"</td></tr>
|
|
37
|
-
<tr><td>remote_host</td><td>Required</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--host</td><td>IP or fully qualified domain name of the remote server</td></tr>
|
|
38
|
-
<tr><td>remote_user</td><td>Required</td><td>string</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--user</td><td>Remote user. Default value is "xfer" on node or connect.</td></tr>
|
|
39
|
-
<tr><td>destination_root</td><td>Required</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>last arg</td><td>Destination root directory.</td></tr>
|
|
40
|
-
<tr><td>title</td><td>-</td><td>string</td><td class="no">N</td><td class="yes">Y</td><td class="yes">Y</td><td>-</td><td>Title of the transfer</td></tr>
|
|
41
|
-
<tr><td>tags</td><td>-</td><td>hash</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--tags<br>--tags64</td><td>Metadata for transfer</td></tr>
|
|
42
|
-
<tr><td>token</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>TOKEN<br/>-W</td><td>Authorization token: Bearer, Basic or ATM</td></tr>
|
|
43
|
-
<tr><td>cookie</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>COOKIE</td><td>Metadata for transfer (older,string)</td></tr>
|
|
44
|
-
<tr><td>remote_access_key</td><td>TODO</td><td>string</td><td></td><td></td><td></td><td>?</td><td>Node only?</td></tr>
|
|
45
|
-
<tr><td>source_root</td><td>-</td><td>string</td><td></td><td></td><td></td><td>--source-prefix<br/>--source-prefix64</td><td>Source root directory.(TODO: verify option)</td></tr>
|
|
46
|
-
<tr><td>fasp_port</td><td>33001</td><td>integer</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-O</td><td>Specifies fasp (UDP) port.</td></tr>
|
|
47
|
-
<tr><td>ssh_port</td><td>22 or 33001</td><td>integer</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-P</td><td>Specifies ssh (TCP) port.</td></tr>
|
|
48
|
-
<tr><td>rate_policy</td><td>server config</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--policy</td><td>Valid literals include "low","fair","high" and "fixed".</td></tr>
|
|
49
|
-
<tr><td>symlink_policy</td><td>follow</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--symbolic-links</td><td>copy, follow, copy+force, skip. Default is follow. Handle source side symbolic links by following the link (follow), copying the link itself (copy), skipping (skip), or forcibly copying the link itself (copy+force).</td></tr>
|
|
50
|
-
<tr><td>target_rate_kbps</td><td>-</td><td>integer</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-l</td><td>Specifies desired speed for the transfer.</td></tr>
|
|
51
|
-
<tr><td>min_rate_kbps</td><td>0</td><td>integer</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-m</td><td>Set the minimum transfer rate in kilobits per second.</td></tr>
|
|
52
|
-
<tr><td>cipher</td><td>none</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-c</td><td>in transit encryption type.<br/>none, aes-128, aes-256</td></tr>
|
|
53
|
-
<tr><td>content_protection</td><td>encrypt<br/>decrypt</td><td>string</td><td></td><td></td><td></td><td>--file-crypt=</td><td>encryption at rest</td></tr>
|
|
54
|
-
<tr><td>content_protection_password</td><td>-</td><td>string</td><td></td><td></td><td></td><td>PASS</td><td>Specifies a string password.</td></tr>
|
|
55
|
-
<tr><td>overwrite</td><td>diff</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--overwrite</td><td>Overwrite destination files with the source files of the same name.<br/>never, always, diff, older, or diff+older</td></tr>
|
|
56
|
-
<tr><td>retry_duration</td><td></td><td>string</td><td></td><td></td><td></td><td>TODO</td><td>Specifies how long to wait before retrying transfer. (e.g. "5min")</td></tr>
|
|
57
|
-
<tr><td>http_fallback</td><td></td><td>bool (node), integer</td><td></td><td></td><td></td><td>-y<br/>TODO</td><td>When true(1), attempts to perform an HTTP transfer if a fasp transfer cannot be performed.</td></tr>
|
|
58
|
-
<tr><td>create_dir</td><td></td><td>boolean</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-d</td><td>Specifies whether to create new directories.</td></tr>
|
|
59
|
-
<tr><td>precalculate_job_size</td><td>srv. def.</td><td>boolean</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--precalculate-job-size</td><td>Specifies whether to precalculate the job size.</td></tr>
|
|
60
|
-
<tr><td>delete_source</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>?</td></tr>
|
|
61
|
-
<tr><td>remove_after_transfer</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>Specifies whether to remove file after transfer.</td></tr>
|
|
62
|
-
<tr><td>remove_empty_directories</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>Specifies whether to remove empty directories.</td></tr>
|
|
63
|
-
<tr><td>multi_session</td><td>1</td><td>integer</td><td class="no">N</td><td class="yes">Y</td><td class="no">N</td><td>-C</td><td>Specifies how many parts the transfer is in.</td></tr>
|
|
64
|
-
<tr><td>multi_session_threshold</td><td>null</td><td>integer</td><td class="no">N</td><td class="yes">Y</td><td class="no">N</td><td>-</td><td>in bytes</td></tr>
|
|
65
|
-
<tr><td>exclude_newer_than</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>--exclude-newer-than</td><td>-</td></tr>
|
|
66
|
-
<tr><td>exclude_older_than</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>--exclude-older-than</td><td>-</td></tr>
|
|
67
|
-
<tr><td>preserve_acls</td><td></td><td>string</td><td class="yes">Y</td><td></td><td></td><td>--preserve-acls</td><td>-</td></tr>
|
|
68
|
-
<tr><td>dgram_size</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>-Z</td><td>in bytes</td></tr>
|
|
69
|
-
<tr><td>compression</td><td></td><td>integer</td><td></td><td></td><td></td><td></td><td>ascp4 only, 0 / 1?</td></tr>
|
|
70
|
-
<tr><td>read_threads</td><td></td><td>integer</td><td></td><td></td><td></td><td>-</td><td>ascp4 only</td></tr>
|
|
71
|
-
<tr><td>write_threads</td><td></td><td>integer</td><td></td><td></td><td></td><td>-</td><td>ascp4 only</td></tr>
|
|
72
|
-
<tr><td>use_ascp4</td><td>false</td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>-</td><td>specify version of protocol</td></tr>
|
|
73
|
-
<tr><td>paths</td><td>source files (dest)</td><td>array</td><td></td><td></td><td></td><td>positional<br/>--file-list<br/>--file-pair-list</td><td>Contains a path to the source (required) and a path to the destination.</td></tr>
|
|
74
|
-
<tr><td>http_fallback_port</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>-t</td><td>Specifies http port.</td></tr>
|
|
75
|
-
<tr><td>https_fallback_port</td><td></td><td>integer</td><td></td><td></td><td></td><td>todo</td><td>Specifies https port.</td></tr>
|
|
76
|
-
<tr><td>cipher_allowed</td><td></td><td>string</td><td></td><td></td><td></td><td>-</td><td>returned by node API. Valid literals include "aes-128" and "none".</td></tr>
|
|
77
|
-
<tr><td>target_rate_cap_kbps</td><td></td><td></td><td class="no">N</td><td class="no">?</td><td class="yes">?</td><td>-</td><td>Returned by upload/download_setup node api.</td></tr>
|
|
78
|
-
<tr><td>rate_policy_allowed</td><td></td><td></td><td></td><td></td><td></td><td>-</td><td>returned by node API. Specifies most aggressive rate policy that is allowed. Valid literals include "low", "fair","high" and "fixed".</td></tr>
|
|
79
|
-
<tr><td>ssh_private_key</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>KEY</td><td>Private key used for SSH authentication, Shall look like: `-----BEGIN RSA PRIVATE KEY-----\nMII`<br/>Note the JSON encoding `\` + `n` for newlines.</td></tr>
|
|
80
|
-
<tr><td>remote_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>PASS</td><td>SSH session password</td></tr>
|
|
81
|
-
<tr><td>resume_policy</td><td>faspmgr:<br/>none<br/>other:<br/>sparse_csum</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-k</td><td>none,attrs,sparse_csum,full_csum</td></tr>
|
|
82
|
-
<tr><td>authentication</td><td>-</td><td class="no">N</td><td class="no">N</td><td class="yes">Y</td><td>-</td><td>token: Aspera web keys are provided to allow transparent web based session initiation. on connect: password is not asked. Else, password is asked, and keys are not provided.</td></tr>
|
|
83
|
-
<tr><td>EX_ssh_key_paths</td><td>-</td><td>array</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-i</td><td>Use public key authentication and specify the private key file</td></tr>
|
|
84
|
-
<tr><td>EX_at_rest_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>FILEPASS</td><td>Passphrase used for at rest encryption or decryption</td></tr>
|
|
85
|
-
<tr><td>EX_proxy_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>PROXY_PASS</td><td>TODO</td></tr>
|
|
86
|
-
<tr><td>EX_fasp_proxy_url</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--proxy</td><td>Specify the address of the Aspera high-speed proxy server</td></tr>
|
|
87
|
-
<tr><td>EX_http_proxy_url</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-x</td><td>Specify the proxy server address used by HTTP Fallback</td></tr>
|
|
88
|
-
<tr><td>EX_ascp_args</td><td>-</td><td>array</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>same</td><td>Add command line arguments to ascp</td></tr>
|
|
89
|
-
<tr><td>EX_http_transfer_jpeg</td><td>0</td><td>integer</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-j</td><td>HTTP transfers as JPEG file</td></tr>
|
|
90
|
-
<tr><td>EX_license_text</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>LICENSE</td><td>license file text</td></tr>
|
|
91
|
-
<tr><td>EX_file_list</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--file-list</td><td>source file list</td></tr>
|
|
92
|
-
<tr><td>EX_file_pair_list</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--file-pair-list</td><td>source file pair list</td></tr>
|
|
93
|
-
<tr><td>EX_multi_session_part</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-C</td><td>part for multisession</td></tr>
|
|
94
|
-
<tr><td>EX_no_read</td><td>-</td><td>-</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--no-read</td><td>no read source</td></tr>
|
|
95
|
-
<tr><td>EX_no_write</td><td>-</td><td>-</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--no-write</td><td>no write estination</td></tr>
|
|
96
|
-
</table>
|
|
97
|
-
</body>
|
|
98
|
-
</html>
|
|
99
|
-
|