aspera-cli 4.10.0 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/BUGS.md +19 -0
- data/CHANGELOG.md +528 -0
- data/CONTRIBUTING.md +143 -0
- data/README.md +977 -589
- data/bin/ascli +4 -4
- data/bin/asession +12 -12
- data/docs/test_env.conf +29 -19
- data/examples/aoc.rb +6 -6
- data/examples/dascli +18 -16
- data/examples/faspex4.rb +15 -15
- data/examples/node.rb +12 -12
- data/examples/proxy.pac +2 -2
- data/examples/server.rb +12 -12
- data/lib/aspera/aoc.rb +344 -272
- data/lib/aspera/ascmd.rb +56 -54
- data/lib/aspera/ats_api.rb +4 -4
- data/lib/aspera/cli/basic_auth_plugin.rb +15 -12
- data/lib/aspera/cli/extended_value.rb +9 -9
- data/lib/aspera/cli/{formater.rb → formatter.rb} +69 -69
- data/lib/aspera/cli/listener/line_dump.rb +1 -1
- data/lib/aspera/cli/listener/logger.rb +1 -1
- data/lib/aspera/cli/listener/progress.rb +5 -6
- data/lib/aspera/cli/listener/progress_multi.rb +16 -21
- data/lib/aspera/cli/main.rb +72 -73
- data/lib/aspera/cli/manager.rb +112 -112
- data/lib/aspera/cli/plugin.rb +68 -48
- data/lib/aspera/cli/plugins/alee.rb +4 -4
- data/lib/aspera/cli/plugins/aoc.rb +322 -720
- data/lib/aspera/cli/plugins/ats.rb +50 -52
- data/lib/aspera/cli/plugins/bss.rb +10 -10
- data/lib/aspera/cli/plugins/config.rb +514 -410
- data/lib/aspera/cli/plugins/console.rb +12 -12
- data/lib/aspera/cli/plugins/cos.rb +18 -20
- data/lib/aspera/cli/plugins/faspex.rb +134 -136
- data/lib/aspera/cli/plugins/faspex5.rb +235 -70
- data/lib/aspera/cli/plugins/node.rb +378 -309
- data/lib/aspera/cli/plugins/orchestrator.rb +52 -49
- data/lib/aspera/cli/plugins/preview.rb +129 -120
- data/lib/aspera/cli/plugins/server.rb +137 -83
- data/lib/aspera/cli/plugins/shares.rb +77 -52
- data/lib/aspera/cli/plugins/sync.rb +13 -33
- data/lib/aspera/cli/transfer_agent.rb +61 -61
- data/lib/aspera/cli/version.rb +2 -1
- data/lib/aspera/colors.rb +3 -3
- data/lib/aspera/command_line_builder.rb +78 -74
- data/lib/aspera/cos_node.rb +31 -29
- data/lib/aspera/data_repository.rb +1 -1
- data/lib/aspera/environment.rb +30 -28
- data/lib/aspera/fasp/agent_base.rb +17 -15
- data/lib/aspera/fasp/agent_connect.rb +34 -32
- data/lib/aspera/fasp/agent_direct.rb +70 -73
- data/lib/aspera/fasp/agent_httpgw.rb +79 -74
- data/lib/aspera/fasp/agent_node.rb +26 -26
- data/lib/aspera/fasp/agent_trsdk.rb +20 -20
- data/lib/aspera/fasp/error.rb +3 -2
- data/lib/aspera/fasp/error_info.rb +11 -8
- data/lib/aspera/fasp/installation.rb +80 -80
- data/lib/aspera/fasp/listener.rb +2 -2
- data/lib/aspera/fasp/parameters.rb +103 -92
- data/lib/aspera/fasp/parameters.yaml +313 -214
- data/lib/aspera/fasp/resume_policy.rb +10 -10
- data/lib/aspera/fasp/transfer_spec.rb +22 -2
- data/lib/aspera/fasp/uri.rb +7 -7
- data/lib/aspera/faspex_gw.rb +80 -159
- data/lib/aspera/faspex_postproc.rb +77 -0
- data/lib/aspera/hash_ext.rb +3 -3
- data/lib/aspera/id_generator.rb +5 -5
- data/lib/aspera/keychain/encrypted_hash.rb +23 -28
- data/lib/aspera/keychain/macos_security.rb +21 -20
- data/lib/aspera/log.rb +13 -13
- data/lib/aspera/nagios.rb +24 -23
- data/lib/aspera/node.rb +217 -38
- data/lib/aspera/oauth.rb +78 -74
- data/lib/aspera/open_application.rb +19 -11
- data/lib/aspera/persistency_action_once.rb +4 -4
- data/lib/aspera/persistency_folder.rb +13 -13
- data/lib/aspera/preview/file_types.rb +8 -8
- data/lib/aspera/preview/generator.rb +67 -67
- data/lib/aspera/preview/utils.rb +27 -27
- data/lib/aspera/proxy_auto_config.js +63 -63
- data/lib/aspera/proxy_auto_config.rb +19 -19
- data/lib/aspera/rest.rb +65 -67
- data/lib/aspera/rest_call_error.rb +2 -1
- data/lib/aspera/rest_error_analyzer.rb +22 -21
- data/lib/aspera/rest_errors_aspera.rb +16 -16
- data/lib/aspera/secret_hider.rb +17 -14
- data/lib/aspera/ssh.rb +15 -14
- data/lib/aspera/sync.rb +177 -62
- data/lib/aspera/temp_file_manager.rb +2 -2
- data/lib/aspera/uri_reader.rb +4 -4
- data/lib/aspera/web_auth.rb +13 -64
- data/lib/aspera/web_server_simple.rb +76 -0
- data.tar.gz.sig +0 -0
- metadata +11 -6
- metadata.gz.sig +0 -0
data/bin/ascli
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'securerandom'
|
6
|
-
GEM_ROOT=File.realpath(File.join(File.dirname(File.realpath(__FILE__)),'..'))
|
6
|
+
GEM_ROOT = File.realpath(File.join(File.dirname(File.realpath(__FILE__)), '..'))
|
7
7
|
# coverage for tests
|
8
|
-
if ENV.
|
8
|
+
if ENV.key?('ENABLE_COVERAGE')
|
9
9
|
require 'simplecov'
|
10
10
|
SimpleCov.root(GEM_ROOT)
|
11
11
|
SimpleCov.enable_for_subprocesses if SimpleCov.respond_to?(:enable_for_subprocesses)
|
@@ -14,13 +14,13 @@ if ENV.has_key?('ENABLE_COVERAGE')
|
|
14
14
|
SimpleCov.command_name(SecureRandom.uuid)
|
15
15
|
SimpleCov.at_exit do
|
16
16
|
original_file_descriptor = $stdout
|
17
|
-
$stdout.reopen(File.join(GEM_ROOT,'simplecov.log'))
|
17
|
+
$stdout.reopen(File.join(GEM_ROOT, 'simplecov.log'))
|
18
18
|
SimpleCov.result.format!
|
19
19
|
$stdout.reopen(original_file_descriptor)
|
20
20
|
end
|
21
21
|
SimpleCov.start
|
22
22
|
end
|
23
|
-
$LOAD_PATH.unshift(File.join(GEM_ROOT,'lib'))
|
23
|
+
$LOAD_PATH.unshift(File.join(GEM_ROOT, 'lib'))
|
24
24
|
require 'aspera/cli/main'
|
25
25
|
require 'aspera/environment'
|
26
26
|
Encoding.default_internal = Encoding::UTF_8
|
data/bin/asession
CHANGED
@@ -13,11 +13,11 @@ TS_LOGLEVEL = 'EX_loglevel'
|
|
13
13
|
# by default go to /tmp/username.filelist
|
14
14
|
TS_TMP_FILELIST_FOLDER = 'EX_file_list_folder'
|
15
15
|
|
16
|
-
SAMPLE_DEMO='"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"demoaspera"'
|
17
|
-
SAMPLE_DEMO2='"direction":"receive","destination_root":"./test.dir"'
|
18
|
-
def assert_usage(assertion,
|
16
|
+
SAMPLE_DEMO = '"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"demoaspera"'
|
17
|
+
SAMPLE_DEMO2 = '"direction":"receive","destination_root":"./test.dir"'
|
18
|
+
def assert_usage(assertion, error_message)
|
19
19
|
return if assertion
|
20
|
-
$stderr.puts('ERROR: '.red.blink +
|
20
|
+
$stderr.puts('ERROR: '.red.blink + error_message) if error_message
|
21
21
|
$stderr.puts('USAGE')
|
22
22
|
$stderr.puts(' asession')
|
23
23
|
$stderr.puts(' asession -h|--help')
|
@@ -48,24 +48,24 @@ if ARGV.empty?
|
|
48
48
|
parameter_source_err_msg = ' (JSON on stdin)'
|
49
49
|
end
|
50
50
|
# anyway expect only one argument: session information
|
51
|
-
assert_usage(ARGV.length.eql?(1),'exactly one argument is expected')
|
52
|
-
assert_usage(!['-h','--help'].include?(ARGV.first),nil)
|
51
|
+
assert_usage(ARGV.length.eql?(1), 'exactly one argument is expected')
|
52
|
+
assert_usage(!['-h', '--help'].include?(ARGV.first), nil)
|
53
53
|
# parse transfer spec
|
54
54
|
begin
|
55
55
|
transfer_spec_arg = ARGV.pop
|
56
56
|
transfer_spec = Aspera::Cli::ExtendedValue.instance.evaluate(transfer_spec_arg)
|
57
57
|
rescue
|
58
|
-
assert_usage(false,"Cannot extract transfer spec from: #{transfer_spec_arg}")
|
58
|
+
assert_usage(false, "Cannot extract transfer spec from: #{transfer_spec_arg}")
|
59
59
|
end
|
60
60
|
# ensure right type
|
61
|
-
assert_usage(transfer_spec.is_a?(Hash),"the value must be a hash table#{parameter_source_err_msg}")
|
61
|
+
assert_usage(transfer_spec.is_a?(Hash), "the value must be a hash table#{parameter_source_err_msg}")
|
62
62
|
# additional debug capability
|
63
|
-
if transfer_spec.
|
63
|
+
if transfer_spec.key?(TS_LOGLEVEL)
|
64
64
|
Aspera::Log.instance.level = transfer_spec[TS_LOGLEVEL]
|
65
65
|
transfer_spec.delete(TS_LOGLEVEL)
|
66
66
|
end
|
67
67
|
# possibly override temp folder
|
68
|
-
if transfer_spec.
|
68
|
+
if transfer_spec.key?(TS_TMP_FILELIST_FOLDER)
|
69
69
|
Aspera::Fasp::Parameters.file_list_folder = transfer_spec[TS_TMP_FILELIST_FOLDER]
|
70
70
|
transfer_spec.delete(TS_TMP_FILELIST_FOLDER)
|
71
71
|
end
|
@@ -77,10 +77,10 @@ client.add_listener(Aspera::Cli::Listener::LineDump.new)
|
|
77
77
|
job_id = client.start_transfer(transfer_spec)
|
78
78
|
# async commands
|
79
79
|
Thread.new do
|
80
|
-
begin
|
80
|
+
begin # rubocop:disable Style/RedundantBegin
|
81
81
|
loop do
|
82
82
|
data = JSON.parse($stdin.gets)
|
83
|
-
client.send_command(job_id,0,data)
|
83
|
+
client.send_command(job_id, 0, data)
|
84
84
|
end
|
85
85
|
rescue
|
86
86
|
Process.exit(1)
|
data/docs/test_env.conf
CHANGED
@@ -3,11 +3,11 @@ config:
|
|
3
3
|
version: 4.0.0
|
4
4
|
default:
|
5
5
|
config: cli_default
|
6
|
-
aoc:
|
6
|
+
aoc: tst_aoc_jwt
|
7
7
|
faspex: tst_faspex
|
8
|
-
faspex5:
|
8
|
+
faspex5: tst_faspex5_jwt
|
9
9
|
shares: tst_shares
|
10
|
-
node:
|
10
|
+
node: tst_node_simple
|
11
11
|
server: tst_server
|
12
12
|
orchestrator: tst_orch
|
13
13
|
console: tst_console
|
@@ -18,7 +18,6 @@ default:
|
|
18
18
|
cli_default:
|
19
19
|
interactive: your value here
|
20
20
|
smtp: your value here
|
21
|
-
secrets: your value here
|
22
21
|
local_user:
|
23
22
|
ssh_keys: your value here
|
24
23
|
smtp_config:
|
@@ -30,11 +29,17 @@ smtp_config:
|
|
30
29
|
from_name: your value here
|
31
30
|
username: your value here
|
32
31
|
password: your value here
|
33
|
-
|
32
|
+
tst_aoc_jwt:
|
34
33
|
url: your value here
|
35
34
|
username: your value here
|
36
35
|
auth: your value here
|
37
36
|
private_key: your value here
|
37
|
+
tst_aoc_web:
|
38
|
+
url: your value here
|
39
|
+
auth: your value here
|
40
|
+
redirect_uri: your value here
|
41
|
+
client_id: your value here
|
42
|
+
client_secret: your value here
|
38
43
|
tst_faspex:
|
39
44
|
url: your value here
|
40
45
|
username: your value here
|
@@ -43,10 +48,6 @@ tst_faspex:
|
|
43
48
|
tst_hstsfaspex_ssh:
|
44
49
|
url: your value here
|
45
50
|
username: your value here
|
46
|
-
tst_node_faspex:
|
47
|
-
url: your value here
|
48
|
-
username: your value here
|
49
|
-
password: your value here
|
50
51
|
tst_faspex5_boot:
|
51
52
|
url: your value here
|
52
53
|
auth: your value here
|
@@ -57,8 +58,7 @@ tst_faspex5_web:
|
|
57
58
|
auth: your value here
|
58
59
|
redirect_uri: your value here
|
59
60
|
client_id: your value here
|
60
|
-
|
61
|
-
tst_faspex5:
|
61
|
+
tst_faspex5_jwt:
|
62
62
|
url: your value here
|
63
63
|
auth: your value here
|
64
64
|
client_id: your value here
|
@@ -73,11 +73,23 @@ tst_shares_1:
|
|
73
73
|
url: your value here
|
74
74
|
username: your value here
|
75
75
|
password: your value here
|
76
|
-
|
76
|
+
tst_node_simple:
|
77
77
|
url: your value here
|
78
78
|
username: your value here
|
79
79
|
password: your value here
|
80
|
-
|
80
|
+
tst_node_ak:
|
81
|
+
url: your value here
|
82
|
+
username: your value here
|
83
|
+
password: your value here
|
84
|
+
tst_node_faspex:
|
85
|
+
url: your value here
|
86
|
+
username: your value here
|
87
|
+
password: your value here
|
88
|
+
tst_node_admak:
|
89
|
+
url: your value here
|
90
|
+
username: your value here
|
91
|
+
password: your value here
|
92
|
+
tst_node_preview:
|
81
93
|
url: your value here
|
82
94
|
username: your value here
|
83
95
|
password: your value here
|
@@ -108,10 +120,6 @@ tst_ak_preview:
|
|
108
120
|
username: your value here
|
109
121
|
password: your value here
|
110
122
|
mimemagic: your value here
|
111
|
-
tst_node_preview:
|
112
|
-
url: your value here
|
113
|
-
username: your value here
|
114
|
-
password: your value here
|
115
123
|
tst_cos:
|
116
124
|
apikey: your value here
|
117
125
|
crn: your value here
|
@@ -120,6 +128,8 @@ tst_cos:
|
|
120
128
|
sync:
|
121
129
|
local_path: your value here
|
122
130
|
remote_path: your value here
|
131
|
+
nowss:
|
132
|
+
ts: your value here
|
123
133
|
misc:
|
124
134
|
upload_folder: your value here
|
125
135
|
syncuser: your value here
|
@@ -129,6 +139,7 @@ misc:
|
|
129
139
|
faspex_dbx: your value here
|
130
140
|
faspex_wkg: your value here
|
131
141
|
faspex_src: your value here
|
142
|
+
faspex5_shinbox: your value here
|
132
143
|
faspex5_meta: your value here
|
133
144
|
shares_upload: your value here
|
134
145
|
console_smart_id: your value here
|
@@ -152,6 +163,7 @@ misc:
|
|
152
163
|
aoc_shbx_meta: your value here
|
153
164
|
aoc_ak_name: your value here
|
154
165
|
aoc_ak_secret: your value here
|
166
|
+
aoc_test_folder: your value here
|
155
167
|
icos_bucket_key: your value here
|
156
168
|
icos_bucket_secret: your value here
|
157
169
|
icos_bucket_name: your value here
|
@@ -165,5 +177,3 @@ misc:
|
|
165
177
|
aoc_user_email: your value here
|
166
178
|
aoc_workspace2: your value here
|
167
179
|
http_gw_fqdn_port: your value here
|
168
|
-
tst_secrets:
|
169
|
-
eudemo-sedemo: your value here
|
data/examples/aoc.rb
CHANGED
@@ -7,9 +7,9 @@ require 'aspera/log'
|
|
7
7
|
Aspera::Log.instance.level = :debug
|
8
8
|
|
9
9
|
if !ARGV.length.eql?(3)
|
10
|
-
Aspera::Log.log.error
|
11
|
-
Aspera::Log.log.error
|
12
|
-
Aspera::Log.log.error
|
10
|
+
Aspera::Log.log.error{"wrong number of args: #{ARGV.length}"}
|
11
|
+
Aspera::Log.log.error{"Usage: #{$PROGRAM_NAME} <aoc URL> <aoc username> <aoc private key content>"}
|
12
|
+
Aspera::Log.log.error{"Example: #{$PROGRAM_NAME} https://myorg.ibmaspera.com john@example.com $(cat /home/john/my_key.pem)"}
|
13
13
|
Process.exit(1)
|
14
14
|
end
|
15
15
|
|
@@ -17,7 +17,7 @@ aoc_url = ARGV[0]
|
|
17
17
|
aoc_user = ARGV[1]
|
18
18
|
aoc_key_value = ARGV[2]
|
19
19
|
|
20
|
-
|
20
|
+
aoc_api = Aspera::AoC.new(
|
21
21
|
url: aoc_url,
|
22
22
|
auth: :jwt,
|
23
23
|
private_key: aoc_key_value,
|
@@ -25,6 +25,6 @@ aocapi = Aspera::AoC.new(
|
|
25
25
|
scope: 'user:all',
|
26
26
|
subpath: 'api/v1')
|
27
27
|
|
28
|
-
self_user_data =
|
28
|
+
self_user_data = aoc_api.read('self')
|
29
29
|
|
30
|
-
Aspera::Log.dump('self',self_user_data)
|
30
|
+
Aspera::Log.dump('self', self_user_data)
|
data/examples/dascli
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
2
|
# set env var image to specify another docker image
|
3
|
-
|
4
|
-
# set env var
|
5
|
-
: ${
|
6
|
-
#
|
7
|
-
: ${version
|
8
|
-
|
9
|
-
: ${
|
10
|
-
# transform var into array
|
11
|
-
add_dock_args
|
12
|
-
#
|
3
|
+
: "${image:=martinlaurent/ascli}"
|
4
|
+
# set env var version to specify another image version (default: latest version)
|
5
|
+
: "${version:=latest}"
|
6
|
+
# set env var imgtag to specify a specific image/version
|
7
|
+
: "${imgtag=$image:$version}"
|
8
|
+
# set env var `docker` to podman, to use podman
|
9
|
+
: "${docker:=docker}"
|
10
|
+
# set env var docker_args to add options to docker run (transform var into array) # spellcheck disable=SC2086
|
11
|
+
read -a add_dock_args <<< $docker_args
|
12
|
+
# set env var ASCLI_HOME to set the config folder on host
|
13
|
+
: "${ASCLI_HOME:=$HOME/.aspera/ascli}"
|
14
|
+
# main config folder for ascli in container (same value as in `Dockerfile`)
|
13
15
|
ascli_home_container=/home/cliuser/.aspera/ascli
|
14
|
-
|
15
|
-
: $
|
16
|
-
if test ! -d $ASCLI_HOME;then
|
17
|
-
echo "creating foder: $ASCLI_HOME"
|
16
|
+
if test ! -d "$ASCLI_HOME";then
|
17
|
+
echo "creating folder: $ASCLI_HOME"
|
18
18
|
# create it if necessary to allow mounting the volume in container
|
19
19
|
mkdir -p "$ASCLI_HOME"
|
20
20
|
fi
|
@@ -22,7 +22,9 @@ exec $docker run \
|
|
22
22
|
--rm \
|
23
23
|
--tty \
|
24
24
|
--interactive \
|
25
|
+
--user root \
|
26
|
+
--env ASCLI_HOME="$ascli_home_container" \
|
25
27
|
--volume "$ASCLI_HOME:$ascli_home_container" \
|
26
28
|
"${add_dock_args[@]}" \
|
27
|
-
$imgtag \
|
28
|
-
|
29
|
+
"$imgtag" \
|
30
|
+
"$@"
|
data/examples/faspex4.rb
CHANGED
@@ -20,9 +20,9 @@ Aspera::Log.instance.level = :debug
|
|
20
20
|
Aspera::Fasp::Installation.instance.folder = tmpdir
|
21
21
|
|
22
22
|
if !ARGV.length.eql?(3)
|
23
|
-
Aspera::Log.log.error
|
24
|
-
Aspera::Log.log.error
|
25
|
-
Aspera::Log.log.error
|
23
|
+
Aspera::Log.log.error{"Wrong number of args: #{ARGV.length}"}
|
24
|
+
Aspera::Log.log.error{"Usage: #{$PROGRAM_NAME} <faspex URL> <faspex username> <faspex password>"}
|
25
|
+
Aspera::Log.log.error{"Example: #{$PROGRAM_NAME} https://faspex.com/aspera/faspex john p@sSw0rd"}
|
26
26
|
Process.exit(1)
|
27
27
|
end
|
28
28
|
|
@@ -52,7 +52,7 @@ api_v3.read('me')
|
|
52
52
|
#---------------
|
53
53
|
|
54
54
|
# create a sample file to send
|
55
|
-
file_to_send = File.join(tmpdir,'myfile.bin')
|
55
|
+
file_to_send = File.join(tmpdir, 'myfile.bin')
|
56
56
|
File.write(file_to_send, 'sample data')
|
57
57
|
# package creation parameters
|
58
58
|
package_create_params = {'delivery' => {
|
@@ -60,7 +60,7 @@ package_create_params = {'delivery' => {
|
|
60
60
|
'recipients' => ['aspera.user1@gmail.com'],
|
61
61
|
'sources' => [{'paths' => [file_to_send]}]
|
62
62
|
}}
|
63
|
-
pkg_created = api_v3.create('send',package_create_params)[:data]
|
63
|
+
pkg_created = api_v3.create('send', package_create_params)[:data]
|
64
64
|
# get transfer specification (normally: only one)
|
65
65
|
transfer_spec = pkg_created['xfer_sessions'].first
|
66
66
|
# set paths of files to send
|
@@ -69,12 +69,12 @@ transfer_spec['paths'] = [{'source' => file_to_send}]
|
|
69
69
|
transfer_client = Aspera::Fasp::AgentDirect.new({quiet: true})
|
70
70
|
# start transfer (asynchronous)
|
71
71
|
job_id = transfer_client.start_transfer(transfer_spec)
|
72
|
-
Aspera::Log.dump('job_id',job_id)
|
72
|
+
Aspera::Log.dump('job_id', job_id)
|
73
73
|
# wait for all transfer completion (for the example)
|
74
74
|
result = transfer_client.wait_for_transfers_completion
|
75
75
|
# notify of any transfer error
|
76
76
|
result.reject{|i|i.eql?(:success)}.each do |e|
|
77
|
-
Aspera::Log.log.error
|
77
|
+
Aspera::Log.log.error{"A transfer error occurred: #{e.message}"}
|
78
78
|
end
|
79
79
|
|
80
80
|
# 3: Faspex 4 API v4
|
@@ -82,13 +82,13 @@ end
|
|
82
82
|
api_v4 = Aspera::Rest.new({
|
83
83
|
base_url: faspex_url + '/api',
|
84
84
|
auth: {
|
85
|
-
type:
|
86
|
-
base_url:
|
87
|
-
auth:
|
88
|
-
|
89
|
-
generic:
|
90
|
-
scope:
|
85
|
+
type: :oauth2,
|
86
|
+
base_url: faspex_url + '/auth/oauth2',
|
87
|
+
auth: {type: :basic, username: faspex_user, password: faspex_pass},
|
88
|
+
grant_method: :generic,
|
89
|
+
generic: {grant_type: 'password'},
|
90
|
+
scope: 'admin'
|
91
91
|
}})
|
92
92
|
|
93
|
-
# Use it. Note that Faspex 4 API v4 is totally different from Faspex 4 v3 APIs, see ref
|
94
|
-
Aspera::Log.dump('users',api_v4.read('users')[:data])
|
93
|
+
# Use it. Note that Faspex 4 API v4 is totally different from Faspex 4 v3 APIs, see ref in header
|
94
|
+
Aspera::Log.dump('users', api_v4.read('users')[:data])
|
data/examples/node.rb
CHANGED
@@ -15,7 +15,7 @@ require 'tmpdir'
|
|
15
15
|
|
16
16
|
tmpdir = ENV['tmp'] || Dir.tmpdir || '.'
|
17
17
|
|
18
|
-
raise 'Usage: PASSWORD=<password> $0 https://<address>:<port> <node user>' unless ARGV.length.eql?(2) && ENV.
|
18
|
+
raise 'Usage: PASSWORD=<password> $0 https://<address>:<port> <node user>' unless ARGV.length.eql?(2) && ENV.key?('PASSWORD')
|
19
19
|
|
20
20
|
# example : https://node_asperaweb@eudemo.asperademo.com:9092
|
21
21
|
node_uri = URI.parse(ARGV.shift)
|
@@ -23,7 +23,7 @@ node_user = ARGV.shift
|
|
23
23
|
node_pass = ENV['PASSWORD']
|
24
24
|
|
25
25
|
##############################################################
|
26
|
-
# generic
|
26
|
+
# generic initialization : configuration of FaspManager
|
27
27
|
|
28
28
|
# set trace level for sample, set to :debug to see complete list of debug information
|
29
29
|
Aspera::Log.instance.level = :debug
|
@@ -34,10 +34,10 @@ Aspera::RestErrorsAspera.register_handlers
|
|
34
34
|
# some required files are generated here (keys, certs)
|
35
35
|
Aspera::Fasp::Installation.instance.folder = tmpdir
|
36
36
|
# set path to your copy of ascp binary (else, let the system find)
|
37
|
-
Aspera::Fasp::Installation.instance.ascp_path = ENV['ascp'] if ENV.
|
37
|
+
Aspera::Fasp::Installation.instance.ascp_path = ENV['ascp'] if ENV.key?('ascp')
|
38
38
|
# another way is to detect installed products and use one of them
|
39
|
-
#Aspera::Fasp::Installation.instance.installed_products.each{|p|puts("found: #{p[:name]}")}
|
40
|
-
#Aspera::Fasp::Installation.instance.use_ascp_from_product('Aspera Connect')
|
39
|
+
# Aspera::Fasp::Installation.instance.installed_products.each{|p|puts("found: #{p[:name]}")}
|
40
|
+
# Aspera::Fasp::Installation.instance.use_ascp_from_product('Aspera Connect')
|
41
41
|
# or install:
|
42
42
|
#
|
43
43
|
|
@@ -45,10 +45,10 @@ Aspera::Fasp::Installation.instance.ascp_path = ENV['ascp'] if ENV.has_key?('asc
|
|
45
45
|
transfer_agent = Aspera::Fasp::AgentDirect.new
|
46
46
|
|
47
47
|
# Note that it would also be possible to start transfers using other agents
|
48
|
-
#require 'aspera/fasp/connect'
|
49
|
-
#transfer_agent=Aspera::Fasp::Connect.new
|
50
|
-
#require 'aspera/fasp/node'
|
51
|
-
#transfer_agent=Aspera::Fasp::Node.new(Aspera::Rest.new(...))
|
48
|
+
# require 'aspera/fasp/connect'
|
49
|
+
# transfer_agent=Aspera::Fasp::Connect.new
|
50
|
+
# require 'aspera/fasp/node'
|
51
|
+
# transfer_agent=Aspera::Fasp::Node.new(Aspera::Rest.new(...))
|
52
52
|
|
53
53
|
##############################################################
|
54
54
|
# Optional : register an event listener
|
@@ -57,7 +57,7 @@ transfer_agent = Aspera::Fasp::AgentDirect.new
|
|
57
57
|
class MyListener < Aspera::Fasp::Listener
|
58
58
|
# this is the callback called during transfers, here we only display the received information
|
59
59
|
# but it could be used to get detailed error information, check "type" field is "ERROR"
|
60
|
-
def event_enhanced(data)
|
60
|
+
def event_enhanced(data); $stdout.puts(JSON.generate(data)); $stdout.flush; end # rubocop:disable Style/Semicolon
|
61
61
|
end
|
62
62
|
|
63
63
|
# register the sample listener to display events
|
@@ -78,9 +78,9 @@ node_api = Aspera::Rest.new({
|
|
78
78
|
sources = ["#{tmpdir}/sample_file.txt"]
|
79
79
|
destination = '/Upload'
|
80
80
|
# create sample file(s)
|
81
|
-
sources.each{|p|File.write(p,'Hello World!')}
|
81
|
+
sources.each{|p|File.write(p, 'Hello World!')}
|
82
82
|
# request transfer authorization to node for a single transfer (This is a node api v3 call)
|
83
|
-
send_result = node_api.create('files/upload_setup',{ transfer_requests: [{ transfer_request: { paths: [{ destination: destination }] } }] })[:data]
|
83
|
+
send_result = node_api.create('files/upload_setup', { transfer_requests: [{ transfer_request: { paths: [{ destination: destination }] } }] })[:data]
|
84
84
|
# we normally have only one transfer spec in list, so just get the first transfer_spec
|
85
85
|
transfer_spec = send_result['transfer_specs'].first['transfer_spec']
|
86
86
|
# add list of files to upload
|
data/examples/proxy.pac
CHANGED
@@ -4,7 +4,7 @@ function FindProxyForURL(url, host) {
|
|
4
4
|
url = url.toLowerCase();
|
5
5
|
host = host.toLowerCase();
|
6
6
|
|
7
|
-
/* Don't proxy local
|
7
|
+
/* Don't proxy local host names */
|
8
8
|
if (isPlainHostName(host)) {
|
9
9
|
return 'DIRECT';
|
10
10
|
}
|
@@ -31,7 +31,7 @@ function FindProxyForURL(url, host) {
|
|
31
31
|
if (isResolvable(host)) {
|
32
32
|
var hostIP = dnsResolve(host);
|
33
33
|
|
34
|
-
/* Don't proxy
|
34
|
+
/* Don't proxy private addresses (RFC 3330) */
|
35
35
|
if (isInNet(hostIP, '0.0.0.0', '255.0.0.0')
|
36
36
|
|| isInNet(hostIP, '10.0.0.0', '255.0.0.0')
|
37
37
|
|| isInNet(hostIP, '127.0.0.0', '255.0.0.0')
|
data/examples/server.rb
CHANGED
@@ -15,7 +15,7 @@ require 'tmpdir'
|
|
15
15
|
|
16
16
|
tmpdir = ENV['tmp'] || Dir.tmpdir || '.'
|
17
17
|
|
18
|
-
raise 'Usage: PASSWORD=<password> $0 ssh://<address>:<port> <transfer user>' unless ARGV.length.eql?(2) && ENV.
|
18
|
+
raise 'Usage: PASSWORD=<password> $0 ssh://<address>:<port> <transfer user>' unless ARGV.length.eql?(2) && ENV.key?('PASSWORD')
|
19
19
|
|
20
20
|
# example : ssh://asperaweb@eudemo.asperademo.com:33001
|
21
21
|
server_uri = URI.parse(ARGV.shift)
|
@@ -23,7 +23,7 @@ server_user = ARGV.shift
|
|
23
23
|
server_pass = ENV['PASSWORD']
|
24
24
|
|
25
25
|
##############################################################
|
26
|
-
# generic
|
26
|
+
# generic initialization : configuration of FaspManager
|
27
27
|
|
28
28
|
# set trace level for sample, set to :debug to see complete list of debug information
|
29
29
|
Aspera::Log.instance.level = :debug
|
@@ -34,10 +34,10 @@ Aspera::RestErrorsAspera.register_handlers
|
|
34
34
|
# some required files are generated here (keys, certs)
|
35
35
|
Aspera::Fasp::Installation.instance.folder = tmpdir
|
36
36
|
# set path to your copy of ascp binary (else, let the system find)
|
37
|
-
Aspera::Fasp::Installation.instance.ascp_path = ENV['ascp'] if ENV.
|
37
|
+
Aspera::Fasp::Installation.instance.ascp_path = ENV['ascp'] if ENV.key?('ascp')
|
38
38
|
# another way is to detect installed products and use one of them
|
39
|
-
#Aspera::Fasp::Installation.instance.installed_products.each{|p|puts("found: #{p[:name]}")}
|
40
|
-
#Aspera::Fasp::Installation.instance.use_ascp_from_product('Aspera Connect')
|
39
|
+
# Aspera::Fasp::Installation.instance.installed_products.each{|p|puts("found: #{p[:name]}")}
|
40
|
+
# Aspera::Fasp::Installation.instance.use_ascp_from_product('Aspera Connect')
|
41
41
|
# or install:
|
42
42
|
#
|
43
43
|
|
@@ -45,10 +45,10 @@ Aspera::Fasp::Installation.instance.ascp_path = ENV['ascp'] if ENV.has_key?('asc
|
|
45
45
|
transfer_agent = Aspera::Fasp::AgentDirect.new
|
46
46
|
|
47
47
|
# Note that it would also be possible to start transfers using other agents
|
48
|
-
#require 'aspera/fasp/connect'
|
49
|
-
#transfer_agent=Aspera::Fasp::Connect.new
|
50
|
-
#require 'aspera/fasp/node'
|
51
|
-
#transfer_agent=Aspera::Fasp::Node.new(Aspera::Rest.new(...))
|
48
|
+
# require 'aspera/fasp/connect'
|
49
|
+
# transfer_agent=Aspera::Fasp::Connect.new
|
50
|
+
# require 'aspera/fasp/node'
|
51
|
+
# transfer_agent=Aspera::Fasp::Node.new(Aspera::Rest.new(...))
|
52
52
|
|
53
53
|
##############################################################
|
54
54
|
# Optional : register an event listener
|
@@ -57,7 +57,7 @@ transfer_agent = Aspera::Fasp::AgentDirect.new
|
|
57
57
|
class MyListener < Aspera::Fasp::Listener
|
58
58
|
# this is the callback called during transfers, here we only display the received information
|
59
59
|
# but it could be used to get detailed error information, check "type" field is "ERROR"
|
60
|
-
def event_enhanced(data)
|
60
|
+
def event_enhanced(data); $stdout.puts(JSON.generate(data)); $stdout.flush; end # rubocop:disable Style/Semicolon
|
61
61
|
end
|
62
62
|
|
63
63
|
# register the sample listener to display events
|
@@ -66,7 +66,7 @@ transfer_agent.add_listener(MyListener.new)
|
|
66
66
|
##############################################################
|
67
67
|
# first example: download by SSH credentials
|
68
68
|
|
69
|
-
# manually build
|
69
|
+
# manually build transfer spec
|
70
70
|
transfer_spec = {
|
71
71
|
'remote_host' => server_uri.host,
|
72
72
|
'ssh_port' => server_uri.port,
|
@@ -82,7 +82,7 @@ transfer_spec = {
|
|
82
82
|
transfer_agent.start_transfer(transfer_spec)
|
83
83
|
|
84
84
|
# optional: helper method: wait for completion of transfers
|
85
|
-
# here we started a single transfer session (no
|
85
|
+
# here we started a single transfer session (no multi session parameter)
|
86
86
|
# get array of status, one for each session (so, a single value array)
|
87
87
|
# each status is either :success or "error message"
|
88
88
|
transfer_result = transfer_agent.wait_for_transfers_completion
|