aspera-cli 4.20.0 → 4.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +41 -3
  4. data/CONTRIBUTING.md +69 -142
  5. data/README.md +687 -461
  6. data/bin/ascli +5 -14
  7. data/bin/asession +3 -5
  8. data/examples/get_proto_file.rb +4 -3
  9. data/examples/proxy.pac +20 -20
  10. data/lib/aspera/agent/base.rb +2 -0
  11. data/lib/aspera/agent/connect.rb +20 -2
  12. data/lib/aspera/agent/{alpha.rb → desktop.rb} +12 -18
  13. data/lib/aspera/agent/direct.rb +30 -31
  14. data/lib/aspera/agent/node.rb +1 -11
  15. data/lib/aspera/agent/{trsdk.rb → transferd.rb} +37 -51
  16. data/lib/aspera/api/alee.rb +1 -1
  17. data/lib/aspera/api/aoc.rb +13 -8
  18. data/lib/aspera/api/cos_node.rb +1 -1
  19. data/lib/aspera/api/node.rb +49 -32
  20. data/lib/aspera/ascp/installation.rb +98 -77
  21. data/lib/aspera/ascp/management.rb +27 -6
  22. data/lib/aspera/cli/extended_value.rb +9 -3
  23. data/lib/aspera/cli/formatter.rb +155 -154
  24. data/lib/aspera/cli/info.rb +2 -1
  25. data/lib/aspera/cli/main.rb +12 -0
  26. data/lib/aspera/cli/manager.rb +4 -4
  27. data/lib/aspera/cli/plugin.rb +2 -2
  28. data/lib/aspera/cli/plugins/aoc.rb +134 -73
  29. data/lib/aspera/cli/plugins/config.rb +114 -83
  30. data/lib/aspera/cli/plugins/cos.rb +1 -0
  31. data/lib/aspera/cli/plugins/faspex.rb +4 -2
  32. data/lib/aspera/cli/plugins/faspex5.rb +29 -14
  33. data/lib/aspera/cli/plugins/node.rb +51 -41
  34. data/lib/aspera/cli/transfer_progress.rb +2 -0
  35. data/lib/aspera/cli/version.rb +1 -1
  36. data/lib/aspera/command_line_builder.rb +1 -1
  37. data/lib/aspera/coverage.rb +5 -3
  38. data/lib/aspera/environment.rb +59 -16
  39. data/lib/aspera/faspex_postproc.rb +3 -5
  40. data/lib/aspera/hash_ext.rb +2 -12
  41. data/lib/aspera/node_simulator.rb +230 -112
  42. data/lib/aspera/oauth/base.rb +40 -48
  43. data/lib/aspera/oauth/factory.rb +41 -2
  44. data/lib/aspera/oauth/jwt.rb +4 -1
  45. data/lib/aspera/persistency_action_once.rb +1 -1
  46. data/lib/aspera/persistency_folder.rb +20 -2
  47. data/lib/aspera/preview/generator.rb +13 -10
  48. data/lib/aspera/preview/options.rb +2 -2
  49. data/lib/aspera/preview/terminal.rb +1 -1
  50. data/lib/aspera/preview/utils.rb +11 -6
  51. data/lib/aspera/products/connect.rb +82 -0
  52. data/lib/aspera/products/desktop.rb +30 -0
  53. data/lib/aspera/products/other.rb +82 -0
  54. data/lib/aspera/products/transferd.rb +61 -0
  55. data/lib/aspera/rest.rb +22 -17
  56. data/lib/aspera/secret_hider.rb +9 -2
  57. data/lib/aspera/ssh.rb +31 -24
  58. data/lib/aspera/temp_file_manager.rb +5 -4
  59. data/lib/aspera/transfer/parameters.rb +2 -1
  60. data/lib/aspera/transfer/spec.yaml +22 -20
  61. data/lib/aspera/transfer/sync.rb +1 -5
  62. data/lib/aspera/transfer/uri.rb +2 -2
  63. data/lib/aspera/uri_reader.rb +18 -1
  64. data/lib/transferd_pb.rb +86 -0
  65. data/lib/transferd_services_pb.rb +84 -0
  66. data.tar.gz.sig +0 -0
  67. metadata +13 -166
  68. metadata.gz.sig +0 -0
  69. data/examples/build_exec +0 -74
  70. data/examples/build_exec_rubyc +0 -40
  71. data/lib/aspera/ascp/products.rb +0 -168
  72. data/lib/transfer_pb.rb +0 -84
  73. data/lib/transfer_services_pb.rb +0 -82
data/README.md CHANGED
@@ -5,7 +5,7 @@ Do not edit this README.md, edit docs/README.erb.md, for details, read docs/READ
5
5
  markdownlint-disable MD033 MD003 MD053
6
6
  cspell:ignore Serban Antipolis
7
7
  PANDOC_META_BEGIN
8
- subtitle: "ascli 4.20.0"
8
+ subtitle: "ascli 4.22.0.pre"
9
9
  PANDOC_META_END
10
10
  -->
11
11
 
@@ -15,7 +15,7 @@ PANDOC_META_END
15
15
 
16
16
  ## Introduction
17
17
 
18
- Version : 4.20.0
18
+ Version : 4.22.0.pre
19
19
 
20
20
  Laurent/2016-2025
21
21
 
@@ -27,9 +27,9 @@ Ruby Gem: [https://rubygems.org/gems/aspera-cli](https://rubygems.org/gems/asper
27
27
 
28
28
  Ruby Doc: [https://www.rubydoc.info/gems/aspera-cli](https://www.rubydoc.info/gems/aspera-cli)
29
29
 
30
- Minimum required Ruby version: >= 2.6.
30
+ Minimum required Ruby version: >= 3.1.
31
31
 
32
- > **Deprecation notice**: the minimum Ruby version will be 3.0 in a future version.
32
+ > **Deprecation notice**: the minimum Ruby version will be 3.2 in a future version.
33
33
 
34
34
  [Aspera APIs on IBM developer](https://developer.ibm.com/?size=30&q=aspera&DWContentType[0]=APIs&sort=title_asc)
35
35
  [Link 2](https://developer.ibm.com/apis/catalog/?search=aspera)
@@ -112,7 +112,7 @@ Once the gem is installed, `ascli` shall be accessible:
112
112
 
113
113
  ```console
114
114
  $ ascli --version
115
- 4.20.0
115
+ 4.22.0.pre
116
116
  ```
117
117
 
118
118
  ### First use
@@ -132,14 +132,14 @@ ascli server browse /
132
132
  ```
133
133
 
134
134
  ```output
135
- +------------+--------+-----------+-------+---------------------------+-----------------------+
136
- | zmode | zuid | zgid | size | mtime | name |
137
- +------------+--------+-----------+-------+---------------------------+-----------------------+
138
- | drwxr-xr-x | aspera | asperaweb | 90112 | 2023-04-05 15:31:21 +0200 | Upload |
139
- | dr-xr-xr-x | aspera | asperaweb | 4096 | 2022-10-27 16:08:16 +0200 | aspera-test-dir-large |
140
- | dr-xr-xr-x | aspera | asperaweb | 4096 | 2022-10-27 16:08:17 +0200 | aspera-test-dir-small |
141
- | dr-xr-xr-x | aspera | asperaweb | 4096 | 2022-10-27 16:08:17 +0200 | aspera-test-dir-tiny |
142
- +------------+--------+-----------+-------+---------------------------+-----------------------+
135
+ ╭────────────┬──────┬───────────┬───────┬───────────────────────────┬───────────────────────╮
136
+ zmode zuid zgid size mtime name
137
+ ╞════════════╪══════╪═══════════╪═══════╪═══════════════════════════╪═══════════════════════╡
138
+ dr-xr-xr-x xfer demousers 4096 │ 2014-11-05 16:01:56 +0100 aspera-test-dir-large │
139
+ drwxrwxr-x xfer demousers 94208 │ 2025-03-31 11:27:33 +0200 Upload │
140
+ dr-xr-xr-x xfer demousers 4096 2014-11-05 16:01:56 +0100 aspera-test-dir-small
141
+ dr-xr-xr-x xfer demousers 4096 2014-11-05 16:01:56 +0100 aspera-test-dir-tiny
142
+ ╰────────────┴──────┴───────────┴───────┴───────────────────────────┴───────────────────────╯
143
143
  ```
144
144
 
145
145
  If you want to use `ascli` with another server, and in order to make further calls more convenient, it is advised to define a [Option Preset](#option-preset) for the server's authentication options.
@@ -173,17 +173,16 @@ ascli server browse /aspera-test-dir-large
173
173
  ```
174
174
 
175
175
  ```output
176
- +------------+-----------+-----------+--------------+---------------------------+-------+
177
- | zmode | zuid | zgid | size | mtime | name |
178
- +------------+-----------+-----------+--------------+---------------------------+-------+
179
- | -r-xr-x--- | asperaweb | asperaweb | 104857600 | 2022-10-27 16:06:38 +0200 | 100MB |
180
- | -r-xr-x--- | asperaweb | asperaweb | 10737418240 | 2022-10-27 16:08:12 +0200 | 10GB |
181
- | -r-xr-x--- | asperaweb | asperaweb | 500000000000 | 2022-10-27 16:06:26 +0200 | 500GB |
182
- | -r-xr-x--- | asperaweb | asperaweb | 524288000 | 2022-10-27 14:53:00 +0200 | 500MB |
183
- | -r-xr-x--- | asperaweb | asperaweb | 1048576000 | 2022-10-27 16:06:37 +0200 | 1GB |
184
- | -r-xr-x--- | asperaweb | asperaweb | 5368709120 | 2022-10-27 14:53:47 +0200 | 5GB |
185
- | -r-xr-x--- | asperaweb | asperaweb | 209715200 | 2022-10-27 14:52:56 +0200 | 200MB |
186
- +------------+-----------+-----------+--------------+---------------------------+-------+
176
+ ╭────────────┬──────┬───────────┬─────────────┬───────────────────────────┬───────╮
177
+ zmode zuid zgid size mtime name
178
+ ╞════════════╪══════╪═══════════╪═════════════╪═══════════════════════════╪═══════╡
179
+ -rw-r--r-- xfer demousers 5368709120 │ 2014-11-05 16:01:56 +0100 5GB │
180
+ -rw-r--r-- xfer demousers 524288000 │ 2014-11-05 16:01:56 +0100 500MB │
181
+ -rw-r--r-- xfer demousers 209715200 │ 2014-11-05 16:01:56 +0100 200MB
182
+ -rw-r--r-- xfer demousers 1048576000 │ 2014-11-05 16:01:56 +0100 1GB │
183
+ -rw-r--r-- xfer demousers 104857600 2014-11-05 16:01:56 +0100 100MB │
184
+ -rw-r--r-- xfer demousers 10737418240 │ 2014-11-05 16:01:56 +0100 10GB │
185
+ ╰────────────┴──────┴───────────┴─────────────┴───────────────────────────┴───────╯
187
186
  ```
188
187
 
189
188
  ```bash
@@ -211,94 +210,61 @@ The direct installation is recommended and consists in installing:
211
210
  - [aspera-cli](#ruby-gem-aspera-cli) <!-- markdownlint-disable-line -->
212
211
  - [Aspera SDK (`ascp`)](#fasp-protocol-ascp)
213
212
 
214
- Ruby version: >= 2.6.
213
+ Ruby version: >= 3.1.
215
214
 
216
- > **Deprecation notice**: the minimum Ruby version will be 3.0 in a future version.
215
+ > **Deprecation notice**: the minimum Ruby version will be 3.2 in a future version.
217
216
 
218
217
  The following sections provide information on the various installation methods.
219
218
 
220
219
  An internet connection is required for the installation.
221
220
  If you don't have internet for the installation, refer to section [Installation without internet access](#installation-in-air-gapped-environment).
222
221
 
223
- A package with pre-installed Ruby, gem and ascp may also be provided.
222
+ A package with pre-installed Ruby, gem and `ascp` may also be provided.
224
223
 
225
- ### Ruby
226
-
227
- Use this method to install on the native host (e.g. your Windows, macOS or Linux system).
228
-
229
- A Ruby interpreter is required to run `ascli`.
230
-
231
- Required Ruby version: >= 2.6.
232
-
233
- > **Deprecation notice**: the minimum Ruby version will be 3.0 in a future version.
234
-
235
- **Ruby can be installed using any method** : rpm, yum, dnf, rvm, brew, Windows installer, ... .
224
+ ### `ascli` executable
236
225
 
237
- **In priority**, refer to the official Ruby documentation:
238
-
239
- - [Download Ruby](https://www.ruby-lang.org/en/downloads/)
240
- - [Installation Guide](https://www.ruby-lang.org/en/documentation/installation/)
226
+ It is planned to provide `ascli` as a single platform-dependent executable.
227
+ [Releases can be found here](https://ibm.biz/aspera-cli-exe).
241
228
 
242
- For convenience, you may refer to the following sections for a proposed method for specific operating systems.
229
+ **Note:** This is an Alpha feature. On Linux, the executable requires a minimum GLIBC version.
243
230
 
244
- #### Unix-like: RVM: Single user installation (not root)
231
+ On Linux, check your GLIBC version with `ldd`:
245
232
 
246
- Install `rvm`.
247
- Follow [https://rvm.io/](https://rvm.io/).
248
-
249
- Execute the shell/curl command.
250
- As regular user, it installs in the user's home: `~/.rvm` .
251
-
252
- ```bash
253
- \curl -sSL https://get.rvm.io | bash -s stable
233
+ ```console
234
+ $ ldd --version | head -n1
235
+ ldd (GNU libc) 2.34
254
236
  ```
255
237
 
256
- Follow on-screen instructions to install keys, and then re-execute the command.
238
+ Check an executable's min required version:
257
239
 
258
- Upon RVM installation, open a new terminal or initialize with:
259
-
260
- ```bash
261
- source ~/.rvm/scripts/rvm
240
+ ```console
241
+ $ objdump -p /bin/bash | sed -n 's/^.*GLIBC_//p' | sort -V | tail -n1
242
+ 2.34
262
243
  ```
263
244
 
264
- It is advised to get one of the pre-compiled Ruby version, you can list with:
265
-
266
- ```bash
267
- rvm list --remote
268
- ```
245
+ > **Note:** if `objdump` is not available use `strings` or `grep -z 'GLIBC_'|tr \\0 \\n`
269
246
 
270
- Install the chosen pre-compiled Ruby version:
247
+ The `ascli` executable still requires installation of `ascp`: Refer to [Install `ascp`](#installation-of-ascp-through-transferd).
271
248
 
272
- ```bash
273
- rvm install 3.2.2
274
- ```
249
+ ### Ruby
275
250
 
276
- Ruby is now installed for the user, go to [Gem installation](#ruby-gem-aspera-cli). <!-- markdownlint-disable-line -->
251
+ A Ruby interpreter is required to run `ascli`.
277
252
 
278
- Alternatively RVM can be installed system-wide, for this execute as `root`.
279
- It then installs by default in `/usr/local/rvm` for all users and creates `/etc/profile.d/rvm.sh`.
280
- One can install in another location with:
253
+ Required Ruby version: >= 3.1.
281
254
 
282
- ```bash
283
- curl -sSL https://get.rvm.io | bash -s -- --path /usr/local
284
- ```
255
+ > **Deprecation notice**: the minimum Ruby version will be 3.2 in a future version.
285
256
 
286
- As root, make sure this will not collide with other application using Ruby (e.g. Faspex).
287
- If so, one can rename the environment script so that it is not loaded by default:
257
+ **Ruby can be installed using any method** : rpm, yum, dnf, rvm, brew, Windows installer, ... .
288
258
 
289
- ```bash
290
- mv /etc/profile.d/rvm.sh /etc/profile.d/rvm.sh.ok
291
- ```
259
+ **In priority**, refer to the official Ruby documentation:
292
260
 
293
- To activate Ruby (and ascli) later, source it:
261
+ - [Download Ruby](https://www.ruby-lang.org/en/downloads/)
262
+ - [Installation Guide](https://www.ruby-lang.org/en/documentation/installation/)
294
263
 
295
- ```bash
296
- source /etc/profile.d/rvm.sh.ok
297
- ```
264
+ For convenience, you may refer to the following sections for a proposed method for specific operating systems.
298
265
 
299
- ```bash
300
- rvm version
301
- ```
266
+ Latest version of `ascli` requires a ruby version [at least under maintenance support](https://www.ruby-lang.org/en/downloads/branches/).
267
+ If an older Ruby version is needed, then use an older version of `ascli` that supports it.
302
268
 
303
269
  #### Windows: Installer
304
270
 
@@ -322,20 +288,29 @@ rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\asper
322
288
 
323
289
  #### macOS: `brew`
324
290
 
325
- **macOS** come with Ruby.
326
- Nevertheless, [Apple has deprecated it](https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes), and it will be removed in the future, so better not to rely on it.
291
+ **macOS** comes with Ruby 2.6.
292
+ It is an old unsupported version and [Apple has deprecated it](https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes), and it will be removed in the future.
293
+ Do not use it.
327
294
 
328
- The recommended way is to either user `RVM` or use [Homebrew](https://brew.sh/).
295
+ The recommended way is to either use [Homebrew](https://brew.sh/) or [RVM](https://rvm.io/).
329
296
 
330
297
  ```bash
331
298
  brew install ruby
332
299
  ```
333
300
 
301
+ This installs a recent ruby suitable for `ascli`.
302
+
303
+ If using `rvm`, one way to force use of openssl 3.0 is:
304
+
305
+ ```bash
306
+ RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3.0)" rvm install 3.4.0
307
+ ```
308
+
334
309
  #### Linux: Package
335
310
 
336
311
  If your Linux distribution provides a standard Ruby package, you can use it provided that the version supported.
337
312
 
338
- **Example:** RHEL 8+, Rocky Linux 8+, Centos 8 Stream: with extensions to compile native gems
313
+ **Example:** RHEL 8+, Rocky Linux 8+: with extensions to compile native gems
339
314
 
340
315
  - Check available Ruby versions:
341
316
 
@@ -384,7 +359,66 @@ One can remove all installed gems, for example to start fresh:
384
359
  gem uninstall -axI $(ls $(gem env gemdir)/gems/|sed -e 's/-[^-]*$//'|sort -u)
385
360
  ```
386
361
 
387
- #### Linux as simple user
362
+ #### Unix-like: RVM: Single user installation (not root)
363
+
364
+ Install `rvm`.
365
+ Follow [https://rvm.io/](https://rvm.io/).
366
+
367
+ Execute the shell/curl command.
368
+ As regular user, it installs in the user's home: `~/.rvm` .
369
+
370
+ ```bash
371
+ \curl -sSL https://get.rvm.io | bash -s stable
372
+ ```
373
+
374
+ Follow on-screen instructions to install keys, and then re-execute the command.
375
+
376
+ Upon RVM installation, open a new terminal or initialize with:
377
+
378
+ ```bash
379
+ source ~/.rvm/scripts/rvm
380
+ ```
381
+
382
+ It is advised to get one of the pre-compiled Ruby version, you can list with:
383
+
384
+ ```bash
385
+ rvm list --remote
386
+ ```
387
+
388
+ Install the chosen pre-compiled Ruby version:
389
+
390
+ ```bash
391
+ rvm install 3.2.2
392
+ ```
393
+
394
+ Ruby is now installed for the user, go to [Gem installation](#ruby-gem-aspera-cli). <!-- markdownlint-disable-line -->
395
+
396
+ Alternatively RVM can be installed system-wide, for this execute as `root`.
397
+ It then installs by default in `/usr/local/rvm` for all users and creates `/etc/profile.d/rvm.sh`.
398
+ One can install in another location with:
399
+
400
+ ```bash
401
+ curl -sSL https://get.rvm.io | bash -s -- --path /usr/local
402
+ ```
403
+
404
+ As root, make sure this will not collide with other application using Ruby (e.g. Faspex).
405
+ If so, one can rename the environment script so that it is not loaded by default:
406
+
407
+ ```bash
408
+ mv /etc/profile.d/rvm.sh /etc/profile.d/rvm.sh.ok
409
+ ```
410
+
411
+ To activate Ruby (and ascli) later, source it:
412
+
413
+ ```bash
414
+ source /etc/profile.d/rvm.sh.ok
415
+ ```
416
+
417
+ ```bash
418
+ rvm version
419
+ ```
420
+
421
+ #### Linux as non-root
388
422
 
389
423
  If you don't have root access, you can install Ruby in your home directory using `rbenv` see [rbenv-installer](https://github.com/rbenv/rbenv-installer#rbenv-installer):
390
424
 
@@ -392,7 +426,7 @@ If you don't have root access, you can install Ruby in your home directory using
392
426
  curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
393
427
  ```
394
428
 
395
- Then open a new terminal, or "source" the shell initialization script:
429
+ Then open a new terminal, or `source` the shell initialization script:
396
430
 
397
431
  ```bash
398
432
  source ~/.bashrc
@@ -411,8 +445,7 @@ For example for AIX, one can look at:
411
445
 
412
446
  <https://www.ibm.com/support/pages/aix-toolbox-open-source-software-downloads-alpha#R>
413
447
 
414
- If your Unix does not provide a pre-built Ruby, you can get it using one of those
415
- [methods](https://www.ruby-lang.org/en/documentation/installation/).
448
+ If your Unix does not provide a pre-built Ruby, you can get it using one of those [methods](https://www.ruby-lang.org/en/documentation/installation/).
416
449
 
417
450
  For instance to build from source and install in `/opt/ruby` :
418
451
 
@@ -465,16 +498,24 @@ JRUBY_OPTS=--dev ascli -v
465
498
 
466
499
  #### Optional gems
467
500
 
468
- Some additional gems can be installed to provide additional features:
501
+ Some additional gems are required for some specific features, see [Gemfile](Gemfile):
469
502
 
470
- - `rmagick` : to generate thumbnails of images
471
- - `grpc` : to use the transfer SDK (gRPC)
472
- - `mimemagic` : to detect MIME type of files for `preview` command
503
+ | name | version | comment |
504
+ | ---- | ------- | ------- |
505
+ | grpc | ~> 1.65 | for transferSDK |
506
+ | mimemagic | ~> 0.4 | for preview |
507
+ | rmagick | ~> 5.5 | for terminal view |
508
+ | symmetric-encryption | ~> 4.6 | for file vault |
509
+ | bigdecimal | ~> 3.1.9 | if RUBY_VERSION >= '3.4' for symmetric-encryption ? |
473
510
 
474
511
  Install like this:
475
512
 
476
513
  ```bash
477
- gem install rmagick grpc mimemagic
514
+ gem install grpc -v '~> 1.65'
515
+ gem install mimemagic -v '~> 0.4'
516
+ gem install rmagick -v '~> 5.5'
517
+ gem install symmetric-encryption -v '~> 4.6'
518
+ gem install bigdecimal -v '~> 3.1.9'
478
519
  ```
479
520
 
480
521
  > **Note:** Those are not installed as part of dependencies because they involve compilation of native code.
@@ -484,7 +525,7 @@ gem install rmagick grpc mimemagic
484
525
  Once you have Ruby and rights to install gems, install the `aspera-cli` gem and its dependencies:
485
526
 
486
527
  ```bash
487
- gem install aspera-cli
528
+ gem install aspera-cli --pre
488
529
  ```
489
530
 
490
531
  To upgrade to the latest version:
@@ -494,7 +535,7 @@ gem update aspera-cli
494
535
  ```
495
536
 
496
537
  During its execution, `ascli` checks every week if a new version is available and notifies the user in a WARN log.
497
- To de-activate this feature, globally set the option `version_check_days` to `0`, or specify a different period in days.
538
+ To unactivate this feature, globally set the option `version_check_days` to `0`, or specify a different period in days.
498
539
 
499
540
  To check if a new version is available (independently of `version_check_days`):
500
541
 
@@ -504,18 +545,18 @@ ascli config check_update
504
545
 
505
546
  #### Gem installation with signature verification
506
547
 
507
- The gem is signed with a private key, and the public certificate is available in the github repository (`certs/aspera-cli-public-cert.pem`).
548
+ The gem is signed with a private key, and the public certificate is available in the gitHub repository (`certs/aspera-cli-public-cert.pem`).
508
549
  When installing the gem, the signature can be optionally verified.
509
550
 
510
551
  For [secure installation](https://guides.rubygems.org/security/#using-gems), one can install the gem with the public key:
511
552
 
512
- - import the verification certificate:
553
+ Import the verification certificate:
513
554
 
514
555
  ```bash
515
556
  gem cert --add <(curl -Ls https://raw.githubusercontent.com/IBM/aspera-cli/main/certs/aspera-cli-public-cert.pem)
516
557
  ```
517
558
 
518
- - Then, install the gem:
559
+ The user installs the gem with `HighSecurity` or `MediumSecurity`: this will succeed only of the gem is trusted:
519
560
 
520
561
  ```bash
521
562
  gem install -P MediumSecurity aspera-cli
@@ -529,36 +570,65 @@ Only two additional files are required to perform an Aspera Transfer, which are
529
570
  - `ascp`
530
571
  - `aspera-license` (in same folder, or ../etc)
531
572
 
532
- This can be installed either be installing an Aspera transfer software, or using an embedded command:
573
+ This can be installed either be installing an Aspera transfer software or using an `ascli` command.
574
+
575
+ #### Installation of `ascp` through `transferd`
576
+
577
+ The easiest option to install `ascp` is through the use of the IBM Aspera Transfer Daemon.
578
+
579
+ Supported platforms are listed in the [Release Notes](https://developer.ibm.com/apis/catalog/aspera--aspera-transfer-sdk/Release+notes) and archives can be downloaded from [Downloads](https://developer.ibm.com/apis/catalog/aspera--aspera-transfer-sdk/downloads/downloads.json).
580
+
581
+ Install using `ascli` for the current platform with:
533
582
 
534
583
  ```bash
535
584
  ascli config ascp install
536
585
  ```
537
586
 
538
- This command will retrieve the list of current archives for all platforms from: <https://ibm.biz/sdk_location> and then select the latest version for the current platform.
539
- In this case, the default value for option `sdk_url` is `DEF`.
587
+ or
540
588
 
541
- If a local SDK installation is preferred instead of fetching from internet: one can specify the location of the SDK file:
589
+ ```bash
590
+ ascli config transferd install
591
+ ```
542
592
 
543
- 1. Locate the appropriate SDK archive for your platform, by visiting either:
593
+ The installation of the transfer binary follows those steps:
544
594
 
545
- - [IBM API Hub](https://developer.ibm.com/apis/catalog?search=%22aspera%20transfer%20SDK%22)
546
- - or looking at this file: <https://ibm.biz/sdk_location>
595
+ - Check the value of option `sdk_url`: if the value is the default value `DEF`, then the procedure follows, else it specified a URL where to take the archive from.
596
+ - The location of archives is retrieved from the url specified by option `locations_url` whose default value is <https://ibm.biz/sdk_location>
597
+ - The archive for the current system architecture (CPU and OS) is selected and downloaded.
547
598
 
548
- 2. Download the SDK archive using a browser, or `curl` or `wget`, etc...
599
+ The option `locations_url` can be set to override the URL where the list of versions is located, in case of air-gap environment or for testing.
600
+ Option `sdk_url` can be set to specify a direct location for the transfer binaries.
549
601
 
550
- ```bash
551
- curl -Lso sdk.zip https://...
552
- ```
602
+ Available Transfer Daemon versions available from `locations_url` can be listed with: `ascli config transferd list`
553
603
 
554
- 3. Install using the local archive
604
+ To install a specific version, e.g. 1.1.3:
555
605
 
556
- ```bash
557
- ascli config ascp install --sdk-url=file:///sdk.zip
558
- ```
606
+ ```bash
607
+ ascli config ascp install 1.1.3
608
+ ```
609
+
610
+ To get the download URL for a specific platform and version:
611
+
612
+ ```bash
613
+ ascli config transferd list --select=@json:'{"platform":"osx-arm64","version":"1.1.3"}' --fields=url
614
+ ```
615
+
616
+ To download it, pipe to `config download`:
617
+
618
+ ```bash
619
+ ascli config transferd list --select=@json:'{"platform":"osx-arm64","version":"1.1.3"}' --fields=url | ascli config download @stdin:
620
+ ```
621
+
622
+ If installation from a local file preferred instead of fetching from internet: one can specify the location of the SDK file with option `sdk_url`:
623
+
624
+ ```bash
625
+ ascli config ascp install --sdk-url=file:///macos-arm64-1.1.3-c6c7a2a.zip
626
+ ```
559
627
 
560
628
  The format is: `file:///<path>`, where `<path>` can be either a relative path (not starting with `/`), or an absolute path.
561
629
 
630
+ #### Installation of `ascp` through other component
631
+
562
632
  If the embedded method is not used, the following packages are also suitable:
563
633
 
564
634
  - IBM Aspera Connect Client (Free)
@@ -604,17 +674,7 @@ The procedure:
604
674
  cd $HOME && tar zcvf rvm-ascli.tgz .rvm
605
675
  ```
606
676
 
607
- - Show the Aspera SDK URL
608
-
609
- ```bash
610
- ascli --show-config --fields=sdk_url
611
- ```
612
-
613
- - Download the SDK archive from that URL
614
-
615
- ```bash
616
- curl -Lso sdk.zip https://ibm.biz/aspera_transfer_sdk
617
- ```
677
+ - Download the SDK archive for the selected architecture, follow [Install `ascp`](#installation-of-ascp-through-transferd)
618
678
 
619
679
  - Transfer those 2 files to the target system
620
680
 
@@ -627,7 +687,7 @@ tar zxvf rvm-ascli.tgz
627
687
 
628
688
  source ~/.rvm/scripts/rvm
629
689
 
630
- ascli config ascp install --sdk-url=file:///sdk.zip
690
+ ascli config ascp install --sdk-url=file:///[SDK archive file path]
631
691
  ```
632
692
 
633
693
  - Add those lines to shell init (`.profile`)
@@ -642,18 +702,18 @@ Installation without network:
642
702
 
643
703
  It is essentially the same procedure as installation for Windows with internet, but instead of retrieving files from internet, copy the files from a machine with internet access, and then install from those archives:
644
704
 
645
- - Download the `exe` Ruby installer from <https://rubyinstaller.org/downloads/>
705
+ - Download the Ruby installer from <https://rubyinstaller.org/downloads/>
646
706
 
647
707
  ```bash
648
- v=$(curl -s https://rubyinstaller.org/downloads/|sed -nEe 's|.*(https://.*/releases/download/.*exe).*|\1|p'|head -n 1)
708
+ v=$(curl -s https://rubyinstaller.org/downloads/ | sed -nEe 's|.*(https://.*/releases/download/.*exe).*|\1|p' | head -n 1)
649
709
  curl -o ${v##*/} $v
650
710
  ```
651
711
 
652
712
  - Create an archive with necessary gems like in previous section
653
713
 
654
- - Download the SDK from: <https://ibm.biz/aspera_transfer_sdk>
714
+ - Download the SDK following [Install `ascp`](#installation-of-ascp-through-transferd)
655
715
 
656
- - Create a Zip with all those files, and transfer to the target system.
716
+ - Create a Zip with all those files and transfer to the target system.
657
717
 
658
718
  Then, on the target system:
659
719
 
@@ -664,7 +724,7 @@ Then, on the target system:
664
724
  rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\aspera-cli
665
725
  ```
666
726
 
667
- - Install the gems: Extract the gem archive, and then:
727
+ - Install the gems: Extract the gem archive and then:
668
728
 
669
729
  ```bat
670
730
  gem install --force --local *.gem
@@ -738,7 +798,7 @@ ascli -v
738
798
  ```
739
799
 
740
800
  ```text
741
- 4.20.0
801
+ 4.22.0.pre
742
802
  ```
743
803
 
744
804
  In order to keep persistency of configuration on the host, you should specify your user's configuration folder as a volume for the container.
@@ -839,7 +899,7 @@ podman load -i ascli_image_latest.tar.gz
839
899
 
840
900
  #### Container: `aspera.conf`
841
901
 
842
- `ascp`'s configuration file `aspera.conf` is located in the container at: `/aspera_sdk/aspera.conf` (see Dockerfile).
902
+ `ascp`'s configuration file `aspera.conf` is located in the container at: `/ibm_aspera/aspera.conf` (see Dockerfile).
843
903
  As the container is immutable, it is not recommended to modify this file.
844
904
  If one wants to change the content, it is possible to tell `ascp` to use another file using `ascp` option `-f`, e.g. by locating it on the host folder `$HOME/.aspera/ascli` mapped to the container folder `/home/cliuser/.aspera/ascli`:
845
905
 
@@ -1501,16 +1561,33 @@ To redirect results to a file, use option `output`.
1501
1561
 
1502
1562
  Depending on action, the output will contain:
1503
1563
 
1504
- - `single_object` : displayed as a 2 dimensional table: one line per attribute, first column is attribute name, and second is attribute value. Nested hashes are collapsed.
1505
- - `object_list` : displayed as a 2 dimensional table: one line per item, one column per attribute.
1506
- - `value_list` : a table with one column.
1507
- - `empty` : nothing
1508
- - `status` : a message
1509
- - `other_struct` : a complex structure that cannot be displayed as an array
1564
+ | Result Type | Description |
1565
+ |-----------------|-------------------|
1566
+ | `single_object` | displayed as a 2 dimensional table: one line per field, first column is field name, and second is field value. Nested hashes are collapsed. |
1567
+ | `object_list` | displayed as a 2 dimensional table: one line per item, one column per field. |
1568
+ | `value_list` | a table with one column. |
1569
+ | `empty` | nothing |
1570
+ | `status` | a message |
1571
+ | `other_struct` | a complex structure that cannot be displayed as an array |
1572
+
1573
+ #### Option: `format`
1510
1574
 
1511
- #### Format of output
1575
+ The style of output can be set using the `format` option:
1512
1576
 
1513
- By default, result of type single_object and object_list are displayed using format `table`.
1577
+ | `format` | Output formatting |
1578
+ |----------|-------------------|
1579
+ | `table` | Text table (default) |
1580
+ | `text` | Value as `String` |
1581
+ | `ruby` | Ruby code |
1582
+ | `json` | JSON code |
1583
+ | `jsonpp` | JSON pretty printed |
1584
+ | `yaml` | YAML |
1585
+ | `csv` | Comma Separated Values |
1586
+ | `image` | Image URL or Image data |
1587
+
1588
+ By default, result of type `single_object` and `object_list` are displayed using format `table`.
1589
+
1590
+ #### Option: `table_style`
1514
1591
 
1515
1592
  The table style can be customized with option: `table_style` which expects a `Hash`, options are the ones described in gem [`terminal-table`](https://github.com/tj/terminal-table).
1516
1593
 
@@ -1522,28 +1599,64 @@ ascli config preset over --table-style=@ruby:'{border: :unicode_thick_edge}'
1522
1599
 
1523
1600
  > **Note:** Other border styles exist, not limited to: `:unicode`, `:unicode_round`.
1524
1601
 
1525
- In a table format, when displaying **Objects** (single, or list), by default, sub object are flattened (option `flat_hash`).
1526
- For example, object `{"user":{"id":1,"name":"toto"}}` will have attributes: `user.id` and `user.name`.
1527
- Setting option `flat_hash` to `false` will only display one field: `user` and value is the sub `Hash`.
1528
- When in flatten mode, it is possible to filter fields using the option `fields` using the compound field name using `.` (dot) as separator.
1602
+ #### Option: `flat_hash`: `.`-join keys
1603
+
1604
+ This optin controls how object fields are displayed for complex objects.
1605
+
1606
+ Effective only when `format` is `table` to display `single_object` or `object_list`.
1529
1607
 
1530
- Object lists are displayed one per line, with attributes as columns.
1531
- Single objects (or tables with a single result) are transposed: one attribute per line.
1532
- If transposition of single object is not desired, use option: `transpose_single` set to `no`.
1533
- If option `multi_table` is `yes`, then elements of a table are displayed individually in a table.
1608
+ If value is `no`, then object's `field` names are only the first level keys of the `Hash` result and values that are `Hash` are displayed as such in Ruby syntax.
1534
1609
 
1535
- The style of output can be set using the `format` option, supporting:
1610
+ If value is `yes` (default), then object are flattened, i.e. deep `Hash` are transformed into 1-level Hash, where keys are `.`-junction of deep keys.
1611
+ In this case, it is possible to filter fields using the option `fields` using the compound field name using `.` (dot) as separator.
1536
1612
 
1537
- - `table` : Text table (default)
1538
- - `text` : Value as String
1539
- - `ruby` : Ruby code
1540
- - `json` : JSON code
1541
- - `jsonpp` : JSON pretty printed
1542
- - `yaml` : YAML
1543
- - `csv` : Comma Separated Values
1544
- - `image` : Image URL or Image data
1613
+ Example: Result of command is a list of objects with a single object:
1614
+
1615
+ ```console
1616
+ $ ascli config echo @json:'[{"user":{"id":1,"name":"toto"},"project":"blah"}]'
1617
+ ╭─────────┬───────────┬─────────╮
1618
+ user.id user.name │ project │
1619
+ ╞═════════╪═══════════╪═════════╡
1620
+ 1 │ toto │ blah │
1621
+ ╰─────────┴───────────┴─────────╯
1622
+
1623
+ $ ascli config echo @json:'[{"user":{"id":1,"name":"toto"},"project":"blah"}]' --flat-hash=no
1624
+ ╭───────────────────────────┬─────────╮
1625
+ │ user │ project │
1626
+ ╞═══════════════════════════╪═════════╡
1627
+ │ {"id"=>1, "name"=>"toto"} │ blah │
1628
+ ╰───────────────────────────┴─────────╯
1629
+ ```
1545
1630
 
1546
- #### Verbosity of output
1631
+ #### Option: `multi_single`
1632
+
1633
+ This option controls if object fields are displayed as columns or lines.
1634
+
1635
+ If value is `no` (default), `object_list` are displayed with one object per line, with fields as columns (see above).
1636
+ `single_object` are displayed with one field per line (and columns are: `field`, `value`).
1637
+
1638
+ If an `object_list` has a single element, it is possible to have `ascli` display the object as a single object (one field per line instead of columns) with option: `multi_single` set to `single`.
1639
+
1640
+ This parameter can be set as a global default with:
1641
+
1642
+ ```bash
1643
+ ascli config preset set GLOBAL multi_single single
1644
+ ```
1645
+
1646
+ In case multiple objects are returned, it is possible to display one table per object with option `multi_single` set to `yes`.
1647
+
1648
+ ```console
1649
+ $ ascli config echo @json:'[{"user":{"id":1,"name":"toto"},"project":"blash"}]' --multi-single=yes
1650
+ ╭───────────┬───────╮
1651
+ │ field │ value │
1652
+ ╞═══════════╪═══════╡
1653
+ │ user.id │ 1 │
1654
+ │ user.name │ toto │
1655
+ │ project │ blash │
1656
+ ╰───────────┴───────╯
1657
+ ```
1658
+
1659
+ #### Option: `display`: Verbosity of output
1547
1660
 
1548
1661
  Output messages are categorized in 3 types:
1549
1662
 
@@ -1557,13 +1670,17 @@ The option `display` controls the level of output:
1557
1670
  - `data` display `data` and `error` messages
1558
1671
  - `error` display only error messages.
1559
1672
 
1560
- By default, secrets are removed from output: option `show_secrets` defaults to `no`, unless `display` is `data`, to allows piping results.
1561
- To hide secrets from output, set option `show_secrets` to `no`.
1673
+ #### Option: `show_secrets`: Hide or show secrets in results
1674
+
1675
+ If value is `no` (default), then secrets are redacted from command results.
1676
+
1677
+ If value is `yes`, then secrets shown in clear in results.
1678
+
1679
+ If `display` is `data`, secrets are included to allows piping results.
1562
1680
 
1563
- #### Option: `fields`: Selection of output object properties
1681
+ #### Option: `fields`: Selection of output object fields
1564
1682
 
1565
- By default, a `table` output format will display one line per entry, and columns for each fields (attributes, properties).
1566
- Depending on the command, columns may include by default all fields, or only some selected fields.
1683
+ Depending on the command, results may include by default all fields, or only some selected fields.
1567
1684
  It is possible to define specific columns to be displayed, by setting the `fields` option.
1568
1685
 
1569
1686
  The `fields` option is a list that can be either a comma separated list or an extended value `Array`.
@@ -1572,8 +1689,8 @@ Individual elements of the list can be:
1572
1689
 
1573
1690
  - **property** : add property to the current list
1574
1691
  - `-`**property** : remove property from the current list
1575
- - `DEF` : default list of properties (that's the default, when not set)
1576
- - `ALL` : all properties
1692
+ - `DEF` : default list of fields (that's the default, when not set)
1693
+ - `ALL` : all fields
1577
1694
  - A Ruby `RegEx` : using `@ruby:'/.../'`, or `@re:...` add those matching to the list
1578
1695
 
1579
1696
  Examples:
@@ -1581,13 +1698,13 @@ Examples:
1581
1698
  - `a,b,c` : the list of attributes specified as a comma separated list (overrides the all default)
1582
1699
  - `@json:'["a","b","c"]'` : `Array` extended value: same as above
1583
1700
  - `b,DEF,-a` : default property list, remove `a` and add `b` in first position
1584
- - `@ruby:'/^server/'` : Display all properties whose name begin with `server`
1701
+ - `@ruby:'/^server/'` : Display all fields whose name begin with `server`
1585
1702
 
1586
1703
  #### Option: `select`
1587
1704
 
1588
1705
  Table output (`object_list`) can be filtered using option `select`.
1589
1706
  This option is either a `Hash` or `Proc`.
1590
- The `Proc` takes as argument a line (`Hash`) in the table and is a Ruby lambda expression that returns `true` or `false`.
1707
+ The `Proc` takes as argument a line (`Hash`) in the table and is a Ruby lambda expression that shall returns `true` to select or `false` to remove an entry.
1591
1708
 
1592
1709
  Example:
1593
1710
 
@@ -1596,12 +1713,12 @@ ascli aoc admin user list --fields=name,email,ats_admin --query=@json:'{"sort":"
1596
1713
  ```
1597
1714
 
1598
1715
  ```output
1599
- +-------------------------------+----------------------------------+-----------+
1600
- | name | email | ats_admin |
1601
- +-------------------------------+----------------------------------+-----------+
1602
- | John Curtis | john@example.com | true |
1603
- | Laurent Martin | laurent@example.com | true |
1604
- +-------------------------------+----------------------------------+-----------+
1716
+ ╭────────────────┬─────────────────────┬───────────╮
1717
+ nameemail ats_admin
1718
+ ╞════════════════╪═════════════════════╪═══════════╡
1719
+ John Curtis john@example.com true
1720
+ Laurent Martin laurent@example.com true
1721
+ ╰────────────────┴─────────────────────┴───────────╯
1605
1722
  ```
1606
1723
 
1607
1724
  > **Note:** Option `select` filters elements from the result of command, while the `query` option gives filtering parameters to the API when listing elements.
@@ -1616,19 +1733,26 @@ In above example, the same result is obtained with option:
1616
1733
 
1617
1734
  The percent selector allows identification of an entity by another unique identifier other than the native identifier.
1618
1735
 
1619
- When a command is executed on a single entity, the entity is identified by a unique identifier that follows the command:
1620
- e.g. `ascli aoc admin user show 1234` where `1234` is the user's identifier.
1736
+ Syntax: `%<field>:<value>`
1621
1737
 
1622
- Some commands provide the following capability:
1623
- If the entity can also be uniquely identified by a name, then the name can be used instead of the identifier, using the **percent selector**: `ascli aoc admin user show %name:john` where `john` is the user name.
1738
+ When a command is executed on a single entity, the entity is identified by a unique identifier that follows the command.
1739
+ For example, in the following command, `1234` is the user's identifier:
1624
1740
 
1625
- Syntax: `%<field>:<value>`
1741
+ ```bash
1742
+ ascli aoc admin user show 1234
1743
+ ```
1744
+
1745
+ Some commands provide the following capability:
1746
+ If the entity can also be uniquely identified by a name, then the name can be used instead of the identifier, using the **percent selector**.
1747
+ For example, if the name of the user is `john` and a field for this entity named `name` has a value `john`:
1626
1748
 
1627
- > **Note:** The legacy option `id` is deprecated: `--id=1234` (options have a single value and thus do not provide the possibility to identify sub-entities)
1749
+ ```bash
1750
+ ascli aoc admin user show %name:john
1751
+ ```
1628
1752
 
1629
1753
  ### Extended Value Syntax
1630
1754
 
1631
- Most options and arguments are specified by a simple string (e.g. username or url).
1755
+ Most options and arguments are specified by a simple string (e.g. `username` or `url`).
1632
1756
  Sometime it is convenient to read a value from a file: for example read the PEM value of a private key, or a list of files.
1633
1757
  Some options expect a more complex value such as `Hash` or `Array`.
1634
1758
 
@@ -1644,31 +1768,31 @@ Decoders act like a function with its parameter on right hand side and are recog
1644
1768
 
1645
1769
  The following decoders are supported:
1646
1770
 
1647
- | Decoder | Parameter| Returns | Description |
1648
- |----------|----------|---------|-------------|
1649
- | `base64` | String | String | Decode a base64 encoded string |
1650
- | `csvt` | String | Array | Decode a titled CSV value |
1651
- | `env` | String | String | Read from a named env var name, e.g. `--password=@env:MYPASSVAR` |
1652
- | `file` | String | String | Read value from specified file (prefix `~/` is replaced with the users home folder), e.g. `--key=@file:~/.ssh/mykey` |
1653
- | `json` | String | Any | Decode JSON values (convenient to provide complex structures) |
1654
- | `lines` | String | Array | Split a string in multiple lines and return an array |
1655
- | `list` | String | Array | Split a string in multiple items taking first character as separator and return an array |
1656
- | `none` | None | Nil | A null value |
1657
- | `path` | String | String | Performs path expansion on specified path (prefix `~/` is replaced with the users home folder), e.g. `--config-file=@path:~/sample_config.yml` |
1658
- | `preset` | String | Hash | Get whole option preset value by name. Sub-values can also be used using `.` as separator. e.g. `foo.bar` is `conf[foo][bar]` |
1659
- | `extend` | String | String | Evaluates embedded extended value syntax in string |
1660
- | `re` | String | Regexp | Ruby Regular Expression (short for `@ruby:/.../`) |
1661
- | `ruby` | String | Any | Execute specified Ruby code |
1662
- | `secret` | None | String | Ask password interactively (hides input) |
1663
- | `stdin` | None | String | Read from stdin in text mode (no value on right) |
1664
- | `stdbin` | None | String | Read from stdin in binary mode (no value on right) |
1665
- | `uri` | String | String | Read value from specified URL, e.g. `--fpac=@uri:http://serv/f.pac` |
1666
- | `val` | String | String | Prevent decoders on the right to be decoded. e.g. `--key=@val:@file:foo` sets the option `key` to value `@file:foo`. |
1667
- | `yaml` | String | Any | Decode YAML |
1668
- | `zlib` | String | String | Un-compress zlib data |
1771
+ | Decoder | Parameter| Returns | Description |
1772
+ |----------|----------|----------|-------------|
1773
+ | `base64` | `String` | `String` | Decode a base64 encoded string |
1774
+ | `csvt` | `String` | `Array` | Decode a titled CSV value |
1775
+ | `env` | `String` | `String` | Read from a named env var name, e.g. `--password=@env:MYPASSVAR` |
1776
+ | `file` | `String` | `String` | Read value from specified file (prefix `~/` is replaced with the users home folder), e.g. `--key=@file:~/.ssh/mykey` |
1777
+ | `json` | `String` | Any | Decode JSON values (convenient to provide complex structures) |
1778
+ | `lines` | `String` | `Array` | Split a string in multiple lines and return an array |
1779
+ | `list` | `String` | `Array` | Split a string in multiple items taking first character as separator and return an array |
1780
+ | `none` | None | Nil | A null value |
1781
+ | `path` | `String` | `String` | Performs path expansion on specified path (prefix `~/` is replaced with the users home folder), e.g. `--config-file=@path:~/sample_config.yml` |
1782
+ | `preset` | `String` | `Hash` | Get whole option preset value by name. Sub-values can also be used using `.` as separator. e.g. `foo.bar` is `conf[foo][bar]` |
1783
+ | `extend` | `String` | `String` | Evaluates embedded extended value syntax in string |
1784
+ | `re` | `String` | `Regexp` | Ruby Regular Expression (short for `@ruby:/.../`) |
1785
+ | `ruby` | `String` | Any | Execute specified Ruby code |
1786
+ | `secret` | None | `String` | Ask password interactively (hides input) |
1787
+ | `stdin` | None | `String` | Read from stdin in text mode (no value on right) |
1788
+ | `stdbin` | None | `String` | Read from stdin in binary mode (no value on right) |
1789
+ | `uri` | `String` | `String` | Read value from specified URL, e.g. `--fpac=@uri:http://serv/f.pac` |
1790
+ | `val` | `String` | `String` | Prevent decoders on the right to be decoded. e.g. `--key=@val:@file:foo` sets the option `key` to value `@file:foo`. |
1791
+ | `yaml` | `String` | Any | Decode YAML |
1792
+ | `zlib` | `String` | `String` | Un-compress zlib data |
1669
1793
 
1670
1794
  > **Note:** A few commands support a value of type `Proc` (lambda expression).
1671
- For example, the **Extended Value** `@ruby:'->(i){i["attr"]}'` is a lambda expression that returns the value of attribute `attr` of the `Hash` `i`.
1795
+ For example, the **Extended Value** `@ruby:'->(i){i["attr"]}'` is a lambda expression that returns the value for key `attr` of the `Hash` `i`.
1672
1796
 
1673
1797
  To display the result of an extended value, use the `config echo` command.
1674
1798
 
@@ -1725,15 +1849,15 @@ ascli config echo @json:@extend:'{"hello":true,"version":"@preset:config.version
1725
1849
  ```
1726
1850
 
1727
1851
  ```output
1728
- +---------+-----------+
1729
- | key | value |
1730
- +---------+-----------+
1731
- | hello | true |
1732
- | version | 4.14.0 |
1733
- +---------+-----------+
1852
+ ╭─────────┬────────╮
1853
+ field │ value
1854
+ ╞═════════╪════════╡
1855
+ hello true
1856
+ version 4.21.1 │
1857
+ ╰─────────┴────────╯
1734
1858
  ```
1735
1859
 
1736
- Example: Create a `Hash` from YAML provided as **heredoc**:
1860
+ Example: Create a `Hash` from YAML provided as shell **heredoc**:
1737
1861
 
1738
1862
  ```bash
1739
1863
  ascli config echo @yaml:@stdin: --format=json<<EOF
@@ -1753,7 +1877,7 @@ EOF
1753
1877
 
1754
1878
  ### Configuration and Persistency Folder
1755
1879
 
1756
- `ascli` configuration and other runtime files (token cache, file lists, persistency files, SDK) are stored by default in `[User's home folder]/.aspera/ascli`.
1880
+ `ascli` configuration and persistency files (token cache, file lists, persistency files) are stored by default in `[User's home folder]/.aspera/ascli`.
1757
1881
 
1758
1882
  > **Note:** `[User's home folder]` is found using Ruby's `Dir.home` (`rb_w32_home_dir`).
1759
1883
  It uses the `HOME` env var primarily, and on MS Windows it also looks at `%HOMEDRIVE%%HOMEPATH%` and `%USERPROFILE%`.
@@ -1782,9 +1906,9 @@ ascli config folder
1782
1906
  C:\Users\Kenji\.aspera\ascli
1783
1907
  ```
1784
1908
 
1785
- When OAuth is used (AoC, Faspex4 api v4, Faspex5) `ascli` keeps a cache of generated bearer tokens in folder `persist_store` in configuration folder by default.
1909
+ When OAuth is used (AoC, Faspex5) `ascli` keeps a cache of generated bearer tokens in folder `persist_store` in configuration folder by default.
1786
1910
  Option `cache_tokens` (**yes**/no) allows to control if Oauth tokens are cached on file system, or generated for each request.
1787
- The command `config flush_tokens` clears that cache.
1911
+ The command `config tokens flush` clears that cache.
1788
1912
  Tokens are kept on disk for a maximum of 30 minutes (`TOKEN_CACHE_EXPIRY_SEC`) and garbage collected after that.
1789
1913
  When a token has expired, then a new token is generated, either using a refresh_token if it is available, or by the default method.
1790
1914
 
@@ -1954,11 +2078,11 @@ ascp errors
1954
2078
  ascp info --sdk-folder=sdk_test_dir
1955
2079
  ascp install
1956
2080
  ascp install --sdk-folder=sdk_test_dir
2081
+ ascp install 1.1.3
1957
2082
  ascp products list
1958
2083
  ascp products use 'IBM Aspera Connect'
1959
2084
  ascp show
1960
2085
  ascp spec
1961
- ascp use /usr/bin/ascp
1962
2086
  check_update
1963
2087
  coffee
1964
2088
  coffee --ui=text
@@ -1977,6 +2101,8 @@ echo -- --special-string
1977
2101
  echo @base64:SGVsbG8gV29ybGQK
1978
2102
  echo @csvt:@stdin:
1979
2103
  echo @env:USER
2104
+ echo @json:'[{"user":{"id":1,"name":"foo"},"project":"bar"}]' --multi-single=single
2105
+ echo @json:'[{"user":{"id":1,"name":"foo"},"project":"bar"}]' --multi-single=yes
1980
2106
  echo @lines:@stdin:
1981
2107
  echo @list:,1,2,3
1982
2108
  echo @secret:
@@ -1990,7 +2116,6 @@ echo hello
1990
2116
  email_test --notify-to=my_email_external
1991
2117
  file
1992
2118
  file --logger=syslog --log-level=debug
1993
- flush_tokens
1994
2119
  folder
1995
2120
  gem name
1996
2121
  gem path
@@ -2006,6 +2131,7 @@ preset delete conf_name
2006
2131
  preset initialize conf_name @json:'{"p1":"v1","p2":"v2"}'
2007
2132
  preset list
2008
2133
  preset overview
2134
+ preset set GLOBAL version_check_days 0
2009
2135
  preset set conf_name param value
2010
2136
  preset set default shares conf_name
2011
2137
  preset show conf_name
@@ -2017,6 +2143,9 @@ remote_certificate chain https://node.example.com/path
2017
2143
  remote_certificate name https://node.example.com/path
2018
2144
  remote_certificate only https://node.example.com/path
2019
2145
  smtp_settings
2146
+ tokens flush
2147
+ transferd install
2148
+ transferd list
2020
2149
  vault create my_label @json:'{"password":"my_password_here","description":"my secret"}'
2021
2150
  vault delete my_label
2022
2151
  vault info
@@ -2145,7 +2274,7 @@ ascli config wizard
2145
2274
  #### Example of configuration for a plugin
2146
2275
 
2147
2276
  For Faspex, Shares, Node (including ATS, Aspera Transfer Service), Console,
2148
- only username/password and url are required (either on command line, or from configuration file).
2277
+ only username/password and URL are required (either on command line, or from configuration file).
2149
2278
  Those can usually be provided on the command line:
2150
2279
 
2151
2280
  ```bash
@@ -2391,16 +2520,16 @@ This is available:
2391
2520
  - in the `thumbnail` command of `node` when using **gen4/access key** API.
2392
2521
  - when using the `show` command of `preview` plugin.
2393
2522
  - `coffee` and `image` commands of `config` plugin.
2394
- - any displayed value which is an url to image can be displayed with option `format` set to `image`
2523
+ - any displayed value which is a URL to image can be displayed with option `format` set to `image`
2395
2524
 
2396
2525
  The following options can be specified in the option `image`:
2397
2526
 
2398
2527
  | Option | Type | Description |
2399
2528
  |------------|---------|-------------|
2400
- | reserve | Integer | Lines reserved to display a status |
2401
- | text | Bool | Display text instead of image|
2402
- | double | Bool | Display double text resolution (half characters) |
2403
- | font_ratio | Float | Font height/width ratio in terminal |
2529
+ | reserve | `Integer` | Lines reserved to display a status |
2530
+ | text | `Bool` | Display text instead of image|
2531
+ | double | `Bool` | Display double text resolution (half characters) |
2532
+ | font_ratio | `Float` | Font height/width ratio in terminal |
2404
2533
 
2405
2534
  ```bash
2406
2535
  ascli config image https://eudemo.asperademo.com/wallpaper.jpg --ui=text --image=@json:'{"text":true}'
@@ -2433,12 +2562,12 @@ The gem is equipped with traces, mainly for debugging and learning APIs.
2433
2562
  By default logging level is `warn` and the output channel is `stderr`.
2434
2563
  To increase debug level, use option `log_level` (e.g. using command line `--log-level=xx`, env var `ASCLI_LOG_LEVEL`, or an [Option Preset](#option-preset)).
2435
2564
 
2436
- By default passwords and secrets are removed from logs.
2437
- Use option `log_secrets` set to `yes` to reveal secrets in logs.
2565
+ By default passwords and secrets are redacted from logs.
2566
+ Set option `log_secrets` to `yes` to include secrets in logs.
2438
2567
 
2439
- Available loggers: `stdout`, `stderr`, `syslog`.
2568
+ Option `logger`: `stdout`, `stderr`, `syslog`.
2440
2569
 
2441
- Available levels: `debug`, `info`, `warn`, `error`.
2570
+ Option `log_level`: `debug`, `info`, `warn`, `error`.
2442
2571
 
2443
2572
  > **Note:** When using the `direct` agent (`ascp`), additional transfer logs can be activated using `ascp` options and `ascp_args`, see [`direct`](#agent-direct).
2444
2573
 
@@ -2472,13 +2601,13 @@ It will display the exact content of HTTP requests and responses.
2472
2601
  To ignore SSL certificate for **any** address/port, use option: `insecure`, i.e. `--insecure=yes`.
2473
2602
  To ignore SSL certificate for a list of specific address/port, use option `ignore_certificate`, set to an `Array` of URL for which certificate will be ignored (only the address and port are matched), e.g. `--ignore-certificate=@list:,https://127.0.0.1:9092`
2474
2603
 
2475
- > **Note:** Ignoring certificate also applies to `ascp`'s wss.
2604
+ > **Note:** Ignoring certificate also applies to `ascp` WSS.
2476
2605
 
2477
2606
  Ignoring a certificate is not recommended, it is better to add the certificate to the trusted store.
2478
2607
  So, a warning is displayed when a certificate is ignored.
2479
2608
  To disable the warning, use option `silent_insecure` set to `no`.
2480
2609
 
2481
- HTTP connection parameters (not `ascp` wss) can be adjusted using option `http_options`:
2610
+ HTTP connection parameters (not `ascp` WSS) can be adjusted using option `http_options`:
2482
2611
 
2483
2612
  | Parameter | Default | Where |
2484
2613
  |---------------------------|---------------|-----------|
@@ -2491,7 +2620,7 @@ HTTP connection parameters (not `ascp` wss) can be adjusted using option `http_o
2491
2620
  | `retry_on_error` | 0 | `ascli` |
2492
2621
  | `retry_sleep` | nil | `ascli` |
2493
2622
 
2494
- Time values are in set **seconds** and can be of type either integer or float.
2623
+ Time values are in set **seconds** and can be of type either `Integer` or `Float`.
2495
2624
  Default values are the ones of Ruby:
2496
2625
  For a full list, refer to the Ruby library: [`Net::HTTP`](https://ruby-doc.org/stdlib/libdoc/net/http/rdoc/Net/HTTP.html).
2497
2626
 
@@ -2644,11 +2773,12 @@ ascli config ascp info
2644
2773
  ```
2645
2774
 
2646
2775
  ```output
2647
- +--------------------+-----------------------------------------------------------+
2648
- | key | value |
2649
- +--------------------+-----------------------------------------------------------+
2650
- | ascp | /Users/laurent/.aspera/ascli/sdk/ascp |
2776
+ ╭─────────┬──────────────────────────────────────────────────╮
2777
+ field │ value
2778
+ ╞═════════╪══════════════════════════════════════════════════╡
2779
+ ascp /Users/john/.aspera/sdk/ascp
2651
2780
  ...
2781
+ ╰─────────┴──────────────────────────────────────────────────╯
2652
2782
  ```
2653
2783
 
2654
2784
  #### Selection of `ascp` location for [`direct`](#agent-direct) agent
@@ -2762,51 +2892,53 @@ Downloaded: IBMAsperaConnectInstaller-3.11.2.63.dmg
2762
2892
  ### Transfer Clients: Agents
2763
2893
 
2764
2894
  Some of the actions on Aspera Applications lead to file transfers (upload and download) using the FASP protocol (`ascp`).
2765
-
2766
- When a transfer needs to be started, a [**transfer-spec**](#transfer-specification) has been internally prepared.
2767
- This [**transfer-spec**](#transfer-specification) will be executed by a transfer client, here called **Transfer Agent**.
2895
+ Transfers will be executed by a transfer client, here called **Transfer Agent**.
2768
2896
 
2769
2897
  The following agents are supported and selected with option `transfer`:
2770
2898
 
2771
- - [`direct`](#agent-direct) : direct execution of `ascp` (local)
2772
- - [`trsdk`](#agent-transfer-sdk) : use of Aspera Transfer SDK (local)
2773
- - [`connect`](#agent-connect-client) : use Connect Client (local)
2774
- - [`alpha`](#agent-desktop-client) : use the new Desktop Client (local)
2775
- - [`node`](#agent-node-api) : use an Aspera Transfer Node (**remote**).
2776
- - [`httpgw`](#agent-http-gateway) : use an Aspera HTTP Gateway (**remote**)
2899
+ | `transfer` | location | Description of agent |
2900
+ |------------------------------------|----------|-------------------------------|
2901
+ | [`direct`](#agent-direct) | local | direct execution of `ascp` |
2902
+ | [`transferd`](#agent-transfer-sdk) | local | Aspera Transfer Daemon |
2903
+ | [`connect`](#agent-connect-client) | local | Aspera Connect Client |
2904
+ | [`desktop`](#agent-desktop-client) | local | Aspera for Desktop |
2905
+ | [`node`](#agent-node-api) | remote | Aspera Transfer Node |
2906
+ | [`httpgw`](#agent-http-gateway) | remote | Aspera HTTP Gateway |
2777
2907
 
2778
2908
  > **Note:** All transfer operations are seen from the point of view of the agent.
2779
- For example, a node agent executing an **upload**, or **package send** operation
2780
- will effectively push files to the related server from the agent node.
2909
+ For example, an agent executing an **upload**, or **package send** operation will effectively push files to the related server from the system where the agent runs.
2781
2910
 
2782
- `ascli` standardizes on the use of a [**transfer-spec**](#transfer-specification) instead of **native** `ascp` options to provide parameters for a transfer session, as a common method for those three Transfer Agents.
2911
+ All of above agents (including `direct`) receive transfer parameters as a [**transfer-spec**](#transfer-specification).
2912
+ Parameters in transfer-spec can be modified with option `ts`.
2783
2913
 
2784
- Specific options for agents are provided with option `transfer_info`, cumulatively.
2914
+ **Specific** options for agents are provided with option `transfer_info`.
2915
+
2916
+ > **Note:** Parameters in `transfer_info` are specific for each agent type and are described in the agents respective sections.
2785
2917
 
2786
2918
  #### Agent: Direct
2787
2919
 
2788
- The `direct` agent directly executes a local `ascp`.
2920
+ The `direct` agent directly executes a local `ascp` in `ascli`.
2789
2921
  This is the default agent for `ascli` (option `--transfer=direct`).
2790
- `ascli` will search locally installed Aspera products, including SDK, and use `ascp` from that component.
2922
+ `ascli` will locally search installed Aspera products, including SDK, and use `ascp` from that component.
2791
2923
  Refer to section [FASP](#fasp-configuration).
2792
2924
 
2793
2925
  The `transfer_info` option accepts the following optional parameters to control multi-session, Web Socket Session, Resume policy and add any argument to `ascp`:
2794
2926
 
2795
2927
  | Name | Type | Description |
2796
2928
  |------------------------|---------|-------------|
2797
- | `wss` | Bool | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: true |
2798
- | `quiet` | Bool | If `true`, then `ascp` progress bar is not shown.<br/>Default: `false` |
2799
- | `trusted_certs` | Array | List of repositories for trusted certificates. |
2800
- | `client_ssh_key` | String | SSH Keys to use for token-based transfers. One of: `dsa_rsa`, `rsa`, `per_client`. Default: `rsa` |
2801
- | `ascp_args` | Array | Array of strings with native `ascp` arguments.<br/>Default: `[]` |
2802
- | `spawn_timeout_sec` | Float | Multi session<br/>Verification time that `ascp` is running<br/>Default: `3` |
2803
- | `spawn_delay_sec` | Float | Multi session<br/>Delay between startup of sessions<br/>Default: `2` |
2804
- | `multi_incr_udp` | Bool | Multi Session<br/>Increment UDP port on multi-session<br/>If `true`, each session will have a different UDP port starting at `fasp_port` (or default 33001)<br/>Else, each session will use `fasp_port` (or `ascp` default)<br/>Default: `true` on Windows, else `false` |
2805
- | `resume` | Hash | Resume parameters. See below |
2806
- | `resume.iter_max` | Integer | Max number of retry on error<br/>Default: `7` |
2807
- | `resume.sleep_initial` | Integer | First Sleep before retry<br/>Default: `2` |
2808
- | `resume.sleep_factor` | Integer | Multiplier of sleep period between attempts<br/>Default: `2` |
2809
- | `resume.sleep_max` | Integer | Default: `60` |
2929
+ | `wss` | `Bool` | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: `true` |
2930
+ | `quiet` | `Bool` | If `true`, then `ascp` progress bar is not shown.<br/>Default: `false` |
2931
+ | `trusted_certs` | `Array` | List of repositories for trusted certificates. |
2932
+ | `client_ssh_key` | `String` | SSH Keys to use for token-based transfers. One of: `dsa_rsa`, `rsa`, `per_client`. Default: `rsa` |
2933
+ | `ascp_args` | `Array` | Array of strings with native `ascp` arguments.<br/>Default: `[]` |
2934
+ | `spawn_timeout_sec` | `Float` | Multi session<br/>Verification time that `ascp` is running<br/>Default: `3` |
2935
+ | `spawn_delay_sec` | `Float` | Multi session<br/>Delay between startup of sessions<br/>Default: `2` |
2936
+ | `multi_incr_udp` | `Bool` | Multi Session<br/>Increment UDP port on multi-session<br/>If `true`, each session will have a different UDP port starting at `fasp_port` (or default 33001)<br/>Else, each session will use `fasp_port` (or `ascp` default)<br/>Default: `true` on Windows, else `false` |
2937
+ | `resume` | `Hash` | Resume parameters. See below |
2938
+ | `resume.iter_max` | `Integer` | Max number of retry on error<br/>Default: `7` |
2939
+ | `resume.sleep_initial` | `Integer` | First Sleep before retry<br/>Default: `2` |
2940
+ | `resume.sleep_factor` | `Integer` | Multiplier of sleep period between attempts<br/>Default: `2` |
2941
+ | `resume.sleep_max` | `Integer` | Default: `60` |
2810
2942
 
2811
2943
  In case of transfer interruption, the agent will **resume** a transfer up to `iter_max` time.
2812
2944
  Sleep between iterations is given by the following formula where `iter_index` is the current iteration index, starting at 0:
@@ -2928,7 +3060,7 @@ There are no option for `transfer_info`.
2928
3060
 
2929
3061
  #### Agent: Desktop Client
2930
3062
 
2931
- By specifying option: `--transfer=alpha`, `ascli` will start transfers using the locally installed **IBM Aspera Desktop Client**.
3063
+ By specifying option: `--transfer=desktop`, `ascli` will start transfers using the locally installed **IBM Aspera Desktop Client**.
2932
3064
  There are no option for `transfer_info`.
2933
3065
 
2934
3066
  #### Agent: Node API
@@ -2938,12 +3070,12 @@ This is especially useful for direct node-to-node transfers.
2938
3070
 
2939
3071
  Parameters provided in option `transfer_info` are:
2940
3072
 
2941
- | Name | Type | Description |
2942
- |----------|--------|-------------|
2943
- | url | string | URL of the node API</br>Mandatory |
2944
- | username | string | Node api user or access key</br>Mandatory |
2945
- | password | string | Password, secret or bearer token</br>Mandatory |
2946
- | root_id | string | Root file id</br>Mandatory only for bearer token |
3073
+ | Nam e | Type | Description |
3074
+ |------------|--------|--------------------------------------------------|
3075
+ | `url` | `String` | URL of the node API<br/>Mandatory |
3076
+ | `username` | `String` | Node api user or access key<br/>Mandatory |
3077
+ | `password` | `String` | Password, secret or bearer token<br/>Mandatory |
3078
+ | `root_id` | `String` | Root file id<br/>Mandatory only for bearer token |
2947
3079
 
2948
3080
  Like any other option, `transfer_info` can get its value from a pre-configured [Option Preset](#option-preset) :
2949
3081
 
@@ -2970,12 +3102,12 @@ By specifying option: `--transfer=httpgw`, `ascli` will start transfers using th
2970
3102
 
2971
3103
  Parameters provided in option `transfer_info` are:
2972
3104
 
2973
- | Name | Type | Description |
2974
- |------------------------|--------|---------------------------------------|
2975
- | url | string | URL of the HTTP GW</br>Mandatory |
2976
- | upload_chunk_size | int | Size in bytes of chunks for upload<br/>Default: `64000` |
2977
- | api_version | string | Force use of version (`v1`, `v2`)<br/>Default: `v2` |
2978
- | synchronous | bool | Wait for each message acknowledgment<br/>Default: `false` |
3105
+ | Name | Type | Description |
3106
+ |---------------------|-----------|---------------------------------------|
3107
+ | `url` | `String` | URL of the HTTP GW<br/>Mandatory |
3108
+ | `upload_chunk_size` | `Integer` | Size in bytes of chunks for upload<br/>Default: `64000` |
3109
+ | `api_version` | `String` | Force use of version (`v1`, `v2`)<br/>Default: `v2` |
3110
+ | `synchronous` | `Bool` | Wait for each message acknowledgment<br/>Default: `false` |
2979
3111
 
2980
3112
  Example:
2981
3113
 
@@ -2990,15 +3122,15 @@ If the application, e.g. AoC or Faspex 5, is configured to use the HTTP Gateway,
2990
3122
  #### Agent: Transfer SDK
2991
3123
 
2992
3124
  Another possibility is to use the Transfer SDK daemon (`asperatransferd`).
2993
- Set option `transfer` to `trsdk`.
3125
+ Set option `transfer` to `transferd`.
2994
3126
 
2995
3127
  Options for `transfer_info` are:
2996
3128
 
2997
- | Name | Type | Description |
2998
- |----------|--------|-------------|
2999
- | `url` | string | IP address and port listened by the daemon</br>Mandatory<br/>Default: `:0` |
3000
- | `external` | bool | Use external daemon, do not start one.<br/>Default: `false` |
3001
- | `keep` | bool | Keep the daemon running after exiting `ascli`<br/>Default: `false` |
3129
+ | Name | Type | Description |
3130
+ |----------|----------|-------------|
3131
+ | `url` | `String` | IP address and port listened by the daemon<br/>Mandatory<br/>Default: `:0` |
3132
+ | `start` | `Bool` | Start a new daemon.<br/>Default: `true` |
3133
+ | `stop` | `Bool` | Stop daemon when exiting `ascli`<br/>Default: `true` |
3002
3134
 
3003
3135
  > **Note:** If port zero is specified in the URL, then the daemon will listen on a random available port. If no address is specified, then `127.0.0.1` is used.
3004
3136
 
@@ -3081,91 +3213,92 @@ Columns:
3081
3213
 
3082
3214
  `ascp` argument or environment variable is provided in description.
3083
3215
 
3084
- | Field | Type | D | N | C | T | H | Description |
3085
- | ----- | ---- | - | - | - | - | - | ----------- |
3086
- | apply_local_docroot | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Apply local docroot to source paths.<br/>(--apply-local-docroot) |
3087
- | authentication | string | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | value=token for SSH bypass keys, else password asked if not provided.<br/>(&lt;ignored&gt;) |
3088
- | cipher | string | Y | Y | Y | Y | Y | In transit encryption type.<br/>Allowed values: none, aes-128, aes-192, aes-256, aes-128-cfb, aes-192-cfb, aes-256-cfb, aes-128-gcm, aes-192-gcm, aes-256-gcm<br/>(-c (conversion){enum}) |
3089
- | cipher_allowed | string | Y | Y | Y | Y | Y | returned by node API. Valid literals include "aes-128" and "none".<br/>(&lt;ignored&gt;) |
3090
- | compression | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only, 0 / 1?<br/>(&lt;ignored&gt;) |
3091
- | content_protection | string | Y | Y | Y | Y | Y | Enable client-side encryption at rest. (CSEAR, content protection)<br/>Allowed values: encrypt, decrypt<br/>(--file-crypt {enum}) |
3092
- | content_protection_password | string | Y | Y | Y | Y | Y | Specifies CSEAR password. (content protection)<br/>(env:ASPERA_SCP_FILEPASS) |
3093
- | cookie | string | Y | Y | Y | Y | Y | Metadata for transfer specified by application<br/>(env:ASPERA_SCP_COOKIE) |
3094
- | create_dir | bool | Y | Y | Y | Y | Y | Specifies whether to create new directories.<br/>(-d) |
3095
- | delete_before_transfer | bool | Y | Y | Y | Y | Y | Before transfer, delete files that exist at the destination but not at the source.<br/>The source and destination arguments must be directories that have matching names.<br/>Objects on the destination that have the same name but different type or size as objects<br/>on the source are not deleted.<br/>(--delete-before-transfer) |
3096
- | delete_source | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
3097
- | destination_root | string | Y | Y | Y | Y | Y | Destination root directory.<br/>(&lt;special&gt;) |
3098
- | destination_root_id | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The file ID of the destination root directory.<br/>Required when using Bearer token auth for the destination node.<br/>(&lt;ignored&gt;) |
3099
- | dgram_size | int | Y | Y | Y | Y | Y | UDP datagram size in bytes<br/>(-Z {int}) |
3100
- | direction | string | Y | Y | Y | Y | Y | Direction of transfer (on client side)<br/>Allowed values: send, receive<br/>(--mode (conversion){enum}) |
3101
- | exclude_newer_than | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | skip src files with mtime > arg<br/>(--exclude-newer-than {int}) |
3102
- | exclude_older_than | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | skip src files with mtime < arg<br/>(--exclude-older-than {int}) |
3103
- | fasp_port | int | Y | Y | Y | Y | Y | Specifies fasp (UDP) port.<br/>(-O {int}) |
3104
- | fasp_url | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Only used in Faspex.<br/>(&lt;ignored&gt;) |
3105
- | file_checksum | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | Enable checksum reporting for transferred files by specifying the hash to use.<br/>Allowed values: sha-512, sha-384, sha-256, sha1, md5, none<br/>(&lt;ignored&gt;) |
3106
- | http_fallback | bool<br/>string | Y | Y | Y | Y | Y | When true(1), attempts to perform an HTTP transfer if a FASP transfer cannot be performed.<br/>(-y (conversion){bool}\|{string}) |
3107
- | http_fallback_port | int | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specifies http port when no cipher is used<br/>(-t {int}) |
3108
- | https_fallback_port | int | Y | Y | Y | Y | Y | Specifies https port when cipher is used<br/>(-t {int}) |
3109
- | keepalive | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The session is running in persistent session mode.<br/>(--keepalive) |
3110
- | lock_min_rate | bool | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3111
- | lock_min_rate_kbps | bool | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | If true, lock the minimum transfer rate to the value set for min_rate_kbps.<br/>If false, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(&lt;ignored&gt;) |
3112
- | lock_rate_policy | bool | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | If true, lock the rate policy to the default value.<br/>(&lt;ignored&gt;) |
3113
- | lock_target_rate | bool | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3114
- | lock_target_rate_kbps | bool | Y | Y | Y | Y | Y | If true, lock the target transfer rate to the default value set for target_rate_kbps.<br/>If false, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(&lt;ignored&gt;) |
3115
- | min_rate_cap_kbps | int | Y | Y | Y | Y | Y | The highest minimum rate that an incoming transfer can request, in kilobits per second.<br/>Client minimum rate requests that exceed the minimum rate cap are ignored.<br/>The default value of unlimited applies no cap to the minimum rate. (Default: 0)<br/>(&lt;ignored&gt;) |
3116
- | min_rate_kbps | int | Y | Y | Y | Y | Y | Set the minimum transfer rate in kilobits per second.<br/>(-m {int}) |
3117
- | move_after_transfer | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | The relative path to which the files will be moved after the transfer at the source side. Available as of 3.8.0.<br/>(--move-after-transfer {string}) |
3118
- | multi_session | int | Y | Y | Y | Y | Y | Use multi-session transfer. max 128.<br/>Each participant on one host needs an independent UDP (-O) port.<br/>Large files are split between sessions only when transferring with resume_policy=none.<br/><br/>(&lt;special&gt;) |
3119
- | multi_session_threshold | int | Y | Y | &nbsp; | &nbsp; | &nbsp; | Split files across multiple ascp sessions if their size in bytes is greater than or equal to the specified value.<br/>(0=no file is split)<br/>(--multi-session-threshold {int}) |
3120
- | obfuscate_file_names | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | HTTP Gateway obfuscates file names when set to true.<br/>(&lt;ignored&gt;) |
3121
- | overwrite | string | Y | Y | Y | Y | Y | Overwrite destination files with the source files of the same name.<br/>Allowed values: never, always, diff, older, diff+older<br/>(--overwrite {enum}) |
3122
- | password | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Password for local Windows user when transfer user associated with node api user is not the same as the one running asperanoded.<br/>Allows impersonating the transfer user and have access to resources (e.g. network shares).<br/>Windows only, node api only.<br/>(&lt;ignored&gt;) |
3123
- | paths | array | Y | Y | Y | Y | Y | Array of path to the source (required) and a path to the destination (optional).<br/>(&lt;special&gt;) |
3124
- | precalculate_job_size | bool | Y | Y | Y | Y | Y | Specifies whether to precalculate the job size.<br/>(--precalculate-job-size) |
3125
- | preserve_access_time | bool | Y | Y | Y | Y | Y | Preserve the source-file access timestamps at the destination.<br/>Because source access times are updated by the transfer operation,<br/>the timestamp that is preserved is the one just before to the transfer.<br/>(--preserve-access-time) |
3126
- | preserve_acls | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve access control lists.<br/>Allowed values: none, native, metafile<br/>(--preserve-acls {enum}) |
3127
- | preserve_creation_time | bool | Y | Y | Y | Y | Y | (Windows only) Preserve source-file creation timestamps at the destination.<br/>Only Windows systems retain information about creation time.<br/>If the destination is not a Windows computer, this option is ignored.<br/>(--preserve-creation-time) |
3128
- | preserve_extended_attrs | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the extended attributes.<br/>Allowed values: none, native, metafile<br/>(--preserve-xattrs {enum}) |
3129
- | preserve_file_owner_gid | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the group ID for a file owner<br/>(--preserve-file-owner-gid) |
3130
- | preserve_file_owner_uid | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the user ID for a file owner<br/>(--preserve-file-owner-uid) |
3131
- | preserve_modification_time | bool | Y | Y | Y | Y | Y | Set the modification time, the last time a file or directory was modified (written), of a transferred file<br/>to the modification of the source file or directory.<br/>Preserve source-file modification timestamps at the destination.<br/>(--preserve-modification-time) |
3132
- | preserve_remote_acls | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve remote access control lists.<br/>Allowed values: none, native, metafile<br/>(--remote-preserve-acls {enum}) |
3133
- | preserve_source_access_time | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the time logged for when the source file was accessed<br/>(--preserve-source-access-time) |
3134
- | preserve_times | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Preserve file timestamps.<br/>(--preserve-times) |
3135
- | proxy | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Specify the address of the Aspera high-speed proxy server.<br/>dnat(s)://[user[:password]@]server:port<br/>Default ports for DNAT and DNATS protocols are 9091 and 9092.<br/>Password, if specified here, overrides the value of environment variable ASPERA_PROXY_PASS.<br/>(--proxy {string}) |
3136
- | rate_policy | string | Y | Y | Y | Y | Y | The transfer rate policy to use when sharing bandwidth.<br/>Allowed values: low, fair, high, fixed<br/>(--policy {enum}) |
3137
- | rate_policy_allowed | string | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | Specifies most aggressive rate policy that is allowed.<br/>Returned by node API.<br/>Allowed values: low, fair, high, fixed<br/>(&lt;ignored&gt;) |
3138
- | read_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
3139
- | remote_access_key | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The access key ID of the access key that was used to construct the bearer token that is used to authenticate to the remote node.<br/>(&lt;ignored&gt;) |
3140
- | remote_host | string | Y | Y | Y | Y | Y | IP or fully qualified domain name of the remote server<br/>(--host {string}) |
3141
- | remote_password | string | Y | Y | Y | Y | Y | SSH session password<br/>(env:ASPERA_SCP_PASS) |
3142
- | remote_user | string | Y | Y | Y | Y | Y | Remote user. Default value is "xfer" on node or connect.<br/>(--user {string}) |
3143
- | remove_after_transfer | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
3144
- | remove_empty_directories | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | Specifies whether to remove empty directories.<br/>(--remove-empty-directories) |
3145
- | remove_empty_source_directory | bool | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Remove empty source subdirectories and remove the source directory itself, if empty<br/>(--remove-empty-source-directory) |
3146
- | remove_skipped | bool | Y | Y | Y | &nbsp; | &nbsp; | Must also have remove_after_transfer set to true, Defaults to false, if true, skipped files will be removed as well.<br/>(--remove-skipped) |
3147
- | resume_policy | string | Y | Y | Y | Y | Y | If a transfer is interrupted or fails to finish, resume without re-transferring the whole files.<br/>Allowed values: none, attrs, sparse_csum, full_csum<br/>(-k (conversion){enum}) |
3148
- | retry_duration | string<br/>int | &nbsp; | Y | Y | &nbsp; | &nbsp; | Specifies how long to wait before retrying transfer. (e.g. "5min")<br/>(&lt;ignored&gt;) |
3149
- | source_root | string | Y | Y | Y | Y | Y | Path to be prepended to each source path.<br/>This is either a conventional path or it can be a URI but only if there is no root defined.<br/>(--source-prefix64 (conversion){string}) |
3150
- | source_root_id | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | The file ID of the source root directory. Required when using Bearer token auth for the source node.<br/>(&lt;ignored&gt;) |
3151
- | src_base | string | Y | Y | &nbsp; | &nbsp; | &nbsp; | Specify the prefix to be stripped off from each source object.<br/>The remaining portion of the source path is kept intact at the destination.<br/>Special care must be taken when used with cloud storage.<br/>(--src-base64 (conversion){string}) |
3152
- | ssh_args | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Array of arguments to pass to SSH. Use with caution.<br/>(&lt;ignored&gt;) |
3153
- | ssh_port | int | Y | Y | Y | Y | Y | Specifies SSH (TCP) port. Default: local:22, other:33001<br/>(-P {int}) |
3154
- | ssh_private_key | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Private key used for SSH authentication.<br/>Shall look like: -----BEGIN RSA PRIV4TE KEY-----\nMII...<br/>Note the JSON encoding: \n for newlines.<br/>(env:ASPERA_SCP_KEY) |
3155
- | ssh_private_key_passphrase | string | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The passphrase associated with the transfer user's SSH private key. Available as of 3.7.2.<br/>(env:ASPERA_SCP_PASS) |
3156
- | sshfp | string | Y | Y | Y | Y | Y | Check it against server SSH host key fingerprint<br/>(--check-sshfp {string}) |
3157
- | symlink_policy | string | Y | Y | Y | Y | Y | Handle source side symbolic links<br/>Allowed values: follow, copy, copy+force, skip<br/>(--symbolic-links {enum}) |
3158
- | tags | hash | Y | Y | Y | Y | Y | Metadata for transfer as JSON<br/>(--tags64 (conversion){hash}) |
3159
- | target_rate_cap_kbps | int | &nbsp; | &nbsp; | Y | &nbsp; | &nbsp; | Returned by upload/download_setup node API.<br/>(&lt;ignored&gt;) |
3160
- | target_rate_kbps | int | Y | Y | Y | Y | Y | Specifies desired speed for the transfer.<br/>(-l {int}) |
3161
- | target_rate_percentage | string | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3162
- | title | string | &nbsp; | Y | Y | &nbsp; | &nbsp; | Title of the transfer<br/>(&lt;ignored&gt;) |
3163
- | token | string | Y | Y | Y | Y | Y | Authorization token: Bearer, Basic or ATM (Also arg -W)<br/>(env:ASPERA_SCP_TOKEN) |
3164
- | use_ascp4 | bool | Y | Y | &nbsp; | &nbsp; | &nbsp; | specify version of protocol<br/>(&lt;special&gt;) |
3165
- | use_system_ssh | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | TODO, comment...<br/>(&lt;ignored&gt;) |
3166
- | write_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
3167
- | wss_enabled | bool | Y | Y | Y | Y | Y | Server has Web Socket service enabled<br/>(&lt;special&gt;) |
3168
- | wss_port | int | Y | Y | Y | Y | Y | TCP port used for websocket service feed<br/>(&lt;special&gt;) |
3216
+ | Field | Type | D | N | D | T | H | C | Description |
3217
+ | ----- | ---- | - | - | - | - | - | - | ----------- |
3218
+ | apply_local_docroot | bool | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Apply local docroot to source paths.<br/>(--apply-local-docroot) |
3219
+ | authentication | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | value=token for SSH bypass keys, else password asked if not provided.<br/>(&lt;ignored&gt;) |
3220
+ | cipher | string | Y | Y | Y | Y | Y | Y | In transit encryption type.<br/>Allowed values: none, aes-128, aes-192, aes-256, aes-128-cfb, aes-192-cfb, aes-256-cfb, aes-128-gcm, aes-192-gcm, aes-256-gcm<br/>(-c (conversion){enum}) |
3221
+ | cipher_allowed | string | Y | Y | Y | Y | Y | Y | returned by node API. Valid literals include "aes-128" and "none".<br/>(&lt;ignored&gt;) |
3222
+ | compression | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only, 0 / 1?<br/>(&lt;ignored&gt;) |
3223
+ | content_protection | string | Y | Y | Y | Y | Y | Y | Enable client-side encryption at rest. (CSEAR, content protection)<br/>Allowed values: encrypt, decrypt<br/>(--file-crypt {enum}) |
3224
+ | content_protection_password | string | Y | Y | Y | Y | Y | Y | Specifies CSEAR password. (content protection)<br/>(env:ASPERA_SCP_FILEPASS) |
3225
+ | cookie | string | Y | Y | Y | Y | Y | Y | Metadata for transfer specified by application<br/>(env:ASPERA_SCP_COOKIE) |
3226
+ | create_dir | bool | Y | Y | Y | Y | Y | Y | Specifies whether to create new directories.<br/>(-d) |
3227
+ | delete_before_transfer | bool | Y | Y | Y | Y | Y | Y | Before transfer, delete files that exist at the destination but not at the source.<br/>The source and destination arguments must be directories that have matching names.<br/>Objects on the destination that have the same name but different type or size as objects<br/>on the source are not deleted.<br/>(--delete-before-transfer) |
3228
+ | delete_source | bool | Y | Y | Y | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
3229
+ | destination_root | string | Y | Y | Y | Y | Y | Y | Destination root directory.<br/>(&lt;special&gt;) |
3230
+ | destination_root_id | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The file ID of the destination root directory.<br/>Required when using Bearer token auth for the destination node.<br/>(&lt;ignored&gt;) |
3231
+ | dgram_size | int | Y | Y | Y | Y | Y | Y | UDP datagram size in bytes<br/>(-Z {int}) |
3232
+ | direction | string | Y | Y | Y | Y | Y | Y | Direction of transfer (on client side)<br/>Allowed values: send, receive<br/>(--mode (conversion){enum}) |
3233
+ | exclude_newer_than | string | Y | Y | Y | Y | Y | Y | Exclude files, but not directories, from the transfer if they are newer than the specified number of seconds added to the source computer's epoch. e.g. "-86400" for newer than a day back.<br/>(--exclude-newer-than {string}) |
3234
+ | exclude_older_than | string | Y | Y | Y | Y | Y | Y | Exclude files, but not directories, from the transfer if they are older than the specified number of seconds added to the source computer's epoch. e.g. "-86400" for older than a day back.<br/>(--exclude-older-than {string}) |
3235
+ | fasp_port | int | Y | Y | Y | Y | Y | Y | Specifies fasp (UDP) port.<br/>(-O {int}) |
3236
+ | fasp_url | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Only used in Faspex.<br/>(&lt;ignored&gt;) |
3237
+ | file_checksum | string | Y | Y | Y | &nbsp; | &nbsp; | &nbsp; | Enable checksum reporting for transferred files by specifying the hash to use.<br/>Allowed values: sha-512, sha-384, sha-256, sha1, md5, none<br/>(&lt;ignored&gt;) |
3238
+ | http_fallback | bool<br/>string | Y | Y | Y | Y | Y | Y | When true(1), attempts to perform an HTTP transfer if a FASP transfer cannot be performed.<br/>(-y (conversion){bool}\|{string}) |
3239
+ | http_fallback_port | int | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Specifies http port when no cipher is used<br/>(-t {int}) |
3240
+ | https_fallback_port | int | Y | Y | Y | Y | Y | Y | Specifies https port when cipher is used<br/>(-t {int}) |
3241
+ | keepalive | bool | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | The session is running in persistent session mode.<br/>(--keepalive) |
3242
+ | lock_min_rate | bool | Y | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3243
+ | lock_min_rate_kbps | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | If true, lock the minimum transfer rate to the value set for min_rate_kbps.<br/>If false, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(&lt;ignored&gt;) |
3244
+ | lock_rate_policy | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | If true, lock the rate policy to the default value.<br/>(&lt;ignored&gt;) |
3245
+ | lock_target_rate | bool | Y | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3246
+ | lock_target_rate_kbps | bool | Y | Y | Y | Y | Y | Y | If true, lock the target transfer rate to the default value set for target_rate_kbps.<br/>If false, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(&lt;ignored&gt;) |
3247
+ | min_rate_cap_kbps | int | Y | Y | Y | Y | Y | Y | The highest minimum rate that an incoming transfer can request, in kilobits per second.<br/>Client minimum rate requests that exceed the minimum rate cap are ignored.<br/>The default value of unlimited applies no cap to the minimum rate. (Default: 0)<br/>(&lt;ignored&gt;) |
3248
+ | min_rate_kbps | int | Y | Y | Y | Y | Y | Y | Set the minimum transfer rate in kilobits per second.<br/>(-m {int}) |
3249
+ | move_after_transfer | string | Y | Y | Y | &nbsp; | &nbsp; | &nbsp; | The relative path to which the files will be moved after the transfer at the source side. Available as of 3.8.0.<br/>(--move-after-transfer {string}) |
3250
+ | multi_session | int | Y | Y | Y | Y | Y | Y | Use multi-session transfer. max 128.<br/>Each participant on one host needs an independent UDP (-O) port.<br/>Large files are split between sessions only when transferring with resume_policy=none.<br/><br/>(&lt;special&gt;) |
3251
+ | multi_session_threshold | int | Y | Y | Y | &nbsp; | &nbsp; | &nbsp; | Split files across multiple ascp sessions if their size in bytes is greater than or equal to the specified value.<br/>(0=no file is split)<br/>(--multi-session-threshold {int}) |
3252
+ | obfuscate_file_names | bool | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | &nbsp; | HTTP Gateway obfuscates file names when set to true.<br/>(&lt;ignored&gt;) |
3253
+ | overwrite | string | Y | Y | Y | Y | Y | Y | Overwrite destination files with the source files of the same name.<br/>Allowed values: never, always, diff, older, diff+older<br/>(--overwrite {enum}) |
3254
+ | password | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Password for local Windows user when transfer user associated with node api user is not the same as the one running asperanoded.<br/>Allows impersonating the transfer user and have access to resources (e.g. network shares).<br/>Windows only, node api only.<br/>(&lt;ignored&gt;) |
3255
+ | paths | array | Y | Y | Y | Y | Y | Y | Array of path to the source (required) and a path to the destination (optional).<br/>(&lt;special&gt;) |
3256
+ | precalculate_job_size | bool | Y | Y | Y | Y | Y | Y | Specifies whether to precalculate the job size.<br/>(--precalculate-job-size) |
3257
+ | preserve_access_time | bool | Y | Y | Y | Y | Y | Y | Preserve the source-file access timestamps at the destination.<br/>Because source access times are updated by the transfer operation,<br/>the timestamp that is preserved is the one just before to the transfer.<br/>(--preserve-access-time) |
3258
+ | preserve_acls | string | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Preserve access control lists.<br/>Allowed values: none, native, metafile<br/>(--preserve-acls {enum}) |
3259
+ | preserve_creation_time | bool | Y | Y | Y | Y | Y | Y | (Windows only) Preserve source-file creation timestamps at the destination.<br/>Only Windows systems retain information about creation time.<br/>If the destination is not a Windows computer, this option is ignored.<br/>(--preserve-creation-time) |
3260
+ | preserve_extended_attrs | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve the extended attributes.<br/>Allowed values: none, native, metafile<br/>(--preserve-xattrs {enum}) |
3261
+ | preserve_file_owner_gid | bool | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Preserve the group ID for a file owner<br/>(--preserve-file-owner-gid) |
3262
+ | preserve_file_owner_uid | bool | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Preserve the user ID for a file owner<br/>(--preserve-file-owner-uid) |
3263
+ | preserve_modification_time | bool | Y | Y | Y | Y | Y | Y | Set the modification time, the last time a file or directory was modified (written), of a transferred file<br/>to the modification of the source file or directory.<br/>Preserve source-file modification timestamps at the destination.<br/>(--preserve-modification-time) |
3264
+ | preserve_remote_acls | string | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Preserve remote access control lists.<br/>Allowed values: none, native, metafile<br/>(--remote-preserve-acls {enum}) |
3265
+ | preserve_source_access_time | bool | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Preserve the time logged for when the source file was accessed<br/>(--preserve-source-access-time) |
3266
+ | preserve_times | bool | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Preserve file timestamps.<br/>(--preserve-times) |
3267
+ | proxy | string | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Specify the address of the Aspera high-speed proxy server.<br/>dnat(s)://[user[:password]@]server:port<br/>Default ports for DNAT and DNATS protocols are 9091 and 9092.<br/>Password, if specified here, overrides the value of environment variable ASPERA_PROXY_PASS.<br/>(--proxy {string}) |
3268
+ | rate_policy | string | Y | Y | Y | Y | Y | Y | The transfer rate policy to use when sharing bandwidth.<br/>Allowed values: low, fair, high, fixed<br/>(--policy {enum}) |
3269
+ | rate_policy_allowed | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | Specifies most aggressive rate policy that is allowed.<br/>Returned by node API.<br/>Allowed values: low, fair, high, fixed<br/>(&lt;ignored&gt;) |
3270
+ | read_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
3271
+ | remote_access_key | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The access key ID of the access key that was used to construct the bearer token that is used to authenticate to the remote node.<br/>(&lt;ignored&gt;) |
3272
+ | remote_host | string | Y | Y | Y | Y | Y | Y | IP or fully qualified domain name of the remote server<br/>(--host {string}) |
3273
+ | remote_password | string | Y | Y | Y | Y | Y | Y | SSH session password<br/>(env:ASPERA_SCP_PASS) |
3274
+ | remote_user | string | Y | Y | Y | Y | Y | Y | Remote user. Default value is "xfer" on node or connect.<br/>(--user {string}) |
3275
+ | remove_after_transfer | bool | Y | Y | Y | &nbsp; | &nbsp; | &nbsp; | Remove SRC files after transfer success<br/>(--remove-after-transfer) |
3276
+ | remove_empty_directories | bool | Y | Y | Y | &nbsp; | &nbsp; | &nbsp; | Specifies whether to remove empty directories.<br/>(--remove-empty-directories) |
3277
+ | remove_empty_source_directory | bool | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Remove empty source subdirectories and remove the source directory itself, if empty<br/>(--remove-empty-source-directory) |
3278
+ | remove_skipped | bool | Y | Y | Y | &nbsp; | &nbsp; | Y | Must also have remove_after_transfer set to true, Defaults to false, if true, skipped files will be removed as well.<br/>(--remove-skipped) |
3279
+ | resume_policy | string | Y | Y | Y | Y | Y | Y | If a transfer is interrupted or fails to finish, resume without re-transferring the whole files.<br/>Allowed values: none, attrs, sparse_csum, full_csum<br/>(-k (conversion){enum}) |
3280
+ | retry_duration | string<br/>int | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Y | Specifies how long to wait before retrying transfer. (e.g. "5min")<br/>(&lt;ignored&gt;) |
3281
+ | source_root | string | Y | Y | Y | Y | Y | Y | Path to be prepended to each source path.<br/>This is either a conventional path or it can be a URI but only if there is no root defined.<br/>(--source-prefix64 (conversion){string}) |
3282
+ | source_root_id | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | The file ID of the source root directory. Required when using Bearer token auth for the source node.<br/>(&lt;ignored&gt;) |
3283
+ | src_base | string | Y | Y | Y | &nbsp; | &nbsp; | &nbsp; | Specify the prefix to be stripped off from each source object.<br/>The remaining portion of the source path is kept intact at the destination.<br/>Special care must be taken when used with cloud storage.<br/>(--src-base64 (conversion){string}) |
3284
+ | ssh_args | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Array of arguments to pass to SSH. Use with caution.<br/>(&lt;ignored&gt;) |
3285
+ | ssh_port | int | Y | Y | Y | Y | Y | Y | Specifies SSH (TCP) port. Default: local:22, other:33001<br/>(-P {int}) |
3286
+ | ssh_private_key | string | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Private key used for SSH authentication.<br/>Shall look like: -----BEGIN RSA PRIV4TE KEY-----\nMII...<br/>Note the JSON encoding: \n for newlines.<br/>(env:ASPERA_SCP_KEY) |
3287
+ | ssh_private_key_passphrase | string | Y | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | The passphrase associated with the transfer user's SSH private key. Available as of 3.7.2.<br/>(env:ASPERA_SCP_PASS) |
3288
+ | sshfp | string | Y | Y | Y | Y | Y | Y | Check it against server SSH host key fingerprint<br/>(--check-sshfp {string}) |
3289
+ | symlink_policy | string | Y | Y | Y | Y | Y | Y | Handle source side symbolic links<br/>Allowed values: follow, copy, copy+force, skip<br/>(--symbolic-links {enum}) |
3290
+ | tags | hash | Y | Y | Y | Y | Y | Y | Metadata for transfer as JSON. Key `aspera` is reserved. Key `aspera.xfer_retry` specified a retry timeout for node api initiated transfers.<br/>(--tags64 (conversion){hash}) |
3291
+ | target_rate_cap_kbps | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | Y | Returned by upload/download_setup node API.<br/>(&lt;ignored&gt;) |
3292
+ | target_rate_kbps | int | Y | Y | Y | Y | Y | Y | Specifies desired speed for the transfer.<br/>(-l {int}) |
3293
+ | target_rate_percentage | string | Y | Y | Y | Y | Y | Y | TODO: remove ?<br/>(&lt;ignored&gt;) |
3294
+ | title | string | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | Y | Title of the transfer<br/>(&lt;ignored&gt;) |
3295
+ | token | string | Y | Y | Y | Y | Y | Y | Authorization token: Bearer, Basic or ATM (Also arg -W)<br/>(env:ASPERA_SCP_TOKEN) |
3296
+ | use_ascp4 | bool | Y | Y | Y | &nbsp; | &nbsp; | &nbsp; | specify version of protocol<br/>(&lt;special&gt;) |
3297
+ | use_system_ssh | string | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | TODO, comment...<br/>(&lt;ignored&gt;) |
3298
+ | write_threads | int | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | ascp4 only<br/>(&lt;ignored&gt;) |
3299
+ | wss_enabled | bool | Y | Y | Y | Y | Y | Y | Server has Web Socket service enabled<br/>(&lt;special&gt;) |
3300
+ | wss_port | int | Y | Y | Y | Y | Y | Y | TCP port used for websocket service feed<br/>(&lt;special&gt;) |
3301
+ | xfer_max_retries | int | &nbsp; | Y | &nbsp; | &nbsp; | &nbsp; | &nbsp; | maximum number of retries, for node API initiated transfers. Shall not exceed aspera.conf `transfer_manager_max_retries` (default 5).<br/>(&lt;ignored&gt;) |
3169
3302
 
3170
3303
  #### Destination folder for transfers
3171
3304
 
@@ -3561,9 +3694,9 @@ where:
3561
3694
  | Name | Type | Description |
3562
3695
  |--------|------|-------------|
3563
3696
  |count |int |Number of files<br/>Mandatory|
3564
- |file |string|Basename for files<br>Default: `file`|
3565
- |size |int |Size of first file.<br>Default: 0|
3566
- |inc |int |Increment applied to determine next file size<br>Default: 0|
3697
+ |file |string|Basename for files<br/>Default: `file`|
3698
+ |size |int |Size of first file.<br/>Default: 0|
3699
+ |inc |int |Increment applied to determine next file size<br/>Default: 0|
3567
3700
  |seq |enum |Sequence in determining next file size<br/>Values: random, sequential<br/>Default: sequential|
3568
3701
  |buf_init|enum |How source data is initialized<br/>Option 'none' is not allowed for downloads.<br/>Values:none, zero, random<br/>Default:zero|
3569
3702
 
@@ -3610,7 +3743,7 @@ ascli server upload "faux:///mydir?file=testfile&count=1m&size=0&inc=2&seq=seque
3610
3743
  ```text
3611
3744
  ascli -h
3612
3745
  NAME
3613
- ascli -- a command line tool for Aspera Applications (v4.20.0)
3746
+ ascli -- a command line tool for Aspera Applications (v4.22.0.pre)
3614
3747
 
3615
3748
  SYNOPSIS
3616
3749
  ascli COMMANDS [OPTIONS] [ARGS]
@@ -3649,8 +3782,7 @@ OPTIONS: global
3649
3782
  --select=VALUE Select only some items in lists: column, value (Hash, Proc)
3650
3783
  --table-style=VALUE Table display style (Hash)
3651
3784
  --flat-hash=ENUM (Table) Display deep values as additional keys: no, [yes]
3652
- --transpose-single=ENUM (Table) Single object fields output vertically: no, [yes]
3653
- --multi-table=ENUM (Table) Each element of a table are displayed as a table: [no], yes
3785
+ --multi-single=ENUM (Table) Control how object list is displayed as single table, or multiple objects: [no], yes, single
3654
3786
  --show-secrets=ENUM Show secrets on command output: [no], yes
3655
3787
  --image=VALUE Options for image display (Hash)
3656
3788
  -h, --help Show this message
@@ -3684,7 +3816,8 @@ OPTIONS: global
3684
3816
  --key-path=VALUE Wizard: path to private key for JWT
3685
3817
  --ascp-path=VALUE Path to ascp
3686
3818
  --use-product=VALUE Use ascp from specified product
3687
- --sdk-url=VALUE URL to get SDK
3819
+ --sdk-url=VALUE URL to get Aspera Transfer Daemon
3820
+ --locations-url=VALUE URL to get locations of Aspera Transfer Daemon
3688
3821
  --sdk-folder=VALUE SDK folder path
3689
3822
  --progress-bar=ENUM Display progress bar: [no], yes
3690
3823
  --smtp=VALUE SMTP configuration (Hash)
@@ -3703,11 +3836,11 @@ OPTIONS: global
3703
3836
  --to-folder=VALUE Destination folder for transferred files
3704
3837
  --sources=VALUE How list of transferred files is provided (@args,@ts,Array)
3705
3838
  --src-type=ENUM Type of file list: [list], pair
3706
- --transfer=ENUM Type of transfer agent: node, [direct], alpha, httpgw, connect, trsdk
3839
+ --transfer=ENUM Type of transfer agent: desktop, node, [direct], transferd, httpgw, connect
3707
3840
  --transfer-info=VALUE Parameters for transfer agent (Hash)
3708
3841
 
3709
3842
  COMMAND: config
3710
- SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test file flush_tokens folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings test vault wizard
3843
+ SUBCOMMANDS: ascp check_update coffee detect documentation download echo email_test file folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings test tokens transferd vault wizard
3711
3844
 
3712
3845
 
3713
3846
  COMMAND: shares
@@ -3848,10 +3981,10 @@ OPTIONS:
3848
3981
  --thumb-vid-scale=VALUE Png: video: size (ffmpeg scale argument)
3849
3982
  --thumb-vid-fraction=VALUE Png: video: time percent position of snapshot
3850
3983
  --thumb-img-size=VALUE Png: non-video: height (and width)
3851
- --thumb-text-font=VALUE Png: plaintext: font to render text with imagemagick convert (identify -list font)
3984
+ --thumb-text-font=VALUE Png: plaintext: font for text rendering: `magick identify -list font`
3852
3985
  --video-conversion=ENUM Mp4: method for preview generation: [reencode], blend, clips
3853
3986
  --video-png-conv=ENUM Mp4: method for thumbnail generation: [fixed], animated
3854
- --video-scale=VALUE Mp4: all: video scale (ffmpeg)
3987
+ --video-scale=VALUE Mp4: all: video scale (ffmpeg scale argument)
3855
3988
  --video-start-sec=VALUE Mp4: all: start offset (seconds) of video preview
3856
3989
  --reencode-ffmpeg=VALUE Mp4: reencode: options to ffmpeg
3857
3990
  --blend-keyframes=VALUE Mp4: blend: # key frames
@@ -4018,7 +4151,7 @@ ascli aoc user profile show
4018
4151
  Optionally, it is possible to create a new organization-specific integration, i.e. client application identification.
4019
4152
  For this, specify the option: `--use-generic-client=no`.
4020
4153
 
4021
- If you already know the application, and want to limit the detection to it, provide url and plugin name:
4154
+ If you already know the application, and want to limit the detection to it, provide URL and plugin name:
4022
4155
 
4023
4156
  ```bash
4024
4157
  ascli config wizard _your_instance_ aoc
@@ -4036,7 +4169,7 @@ Several types of OAuth authentication are supported:
4036
4169
 
4037
4170
  - JSON Web Token (JWT) : authentication is secured by a private key (recommended for `ascli`)
4038
4171
  - Web based authentication : authentication is made by user using a browser
4039
- - URL Token : external users authentication with url tokens (public links)
4172
+ - URL Token : external users authentication with URL tokens (public links)
4040
4173
 
4041
4174
  The authentication method is controlled by option `auth`.
4042
4175
 
@@ -4781,7 +4914,7 @@ So, for example, the creation of a node using ATS in IBM Cloud looks like (see o
4781
4914
  First, Retrieve the ATS node address
4782
4915
 
4783
4916
  ```bash
4784
- ascli aoc admin ats cluster show --cloud=softlayer --region=eu-de --fields=transfer_setup_url --format=csv --transpose-single=no
4917
+ ascli aoc admin ats cluster show --cloud=softlayer --region=eu-de --fields=transfer_setup_url --format=csv
4785
4918
  ```
4786
4919
 
4787
4920
  Then use the returned address for the `url` key to actually create the AoC Node entity:
@@ -4845,6 +4978,20 @@ If a user recipient (email) is not already registered and the workspace allows e
4845
4978
  - if the option `new_user_option` is `@json:{"package_contact":true}` (default), then a public link is sent and the external user does not need to create an account
4846
4979
  - if the option `new_user_option` is `@json:{}`, then external users are invited to join the workspace
4847
4980
 
4981
+ #### List packages
4982
+
4983
+ By default, when using `aoc packages list`, the following `query` is performed:
4984
+
4985
+ | query parameter | value |
4986
+ |----------------------------|-------|
4987
+ | `archived` | `false` |
4988
+ | `has_content` | `true` |
4989
+ | `received` | `true` |
4990
+ | `completed` | `true` |
4991
+ | `workspace_id` | based on current workspace |
4992
+ | `exclude_dropbox_packages` | `true` or `false` depending if watching a dropbox|
4993
+ | `dropbox_id` | set accoring to `dropbox_name` |
4994
+
4848
4995
  #### Example: Send a package with one file to two users, using their email
4849
4996
 
4850
4997
  ```bash
@@ -4875,7 +5022,7 @@ To list packages in a shared inbox, the query has to be specified with the the s
4875
5022
  Additional parameters can be specified, as supported by the API (to find out available filters, consult the API definition, or use the web interface in developer mode).
4876
5023
  The current workspace is added unless specified in the query.
4877
5024
 
4878
- > **Note:** By default, `exclude_dropbox_packages` is set to true for user packages, and to false for shared inbox packages. This can be overridden in the query.
5025
+ > **Note:** By default, `exclude_dropbox_packages` is set to `true` for user packages, and to false for shared inbox packages. This can be overridden in the query.
4879
5026
 
4880
5027
  Using shared inbox name:
4881
5028
 
@@ -4886,7 +5033,7 @@ ascli aoc packages list --query=@json:'{"dropbox_name":"My Shared Inbox","archiv
4886
5033
  Using shared inbox identifier: first retrieve the id of the shared inbox, and then list packages with the appropriate filter.
4887
5034
 
4888
5035
  ```bash
4889
- shared_box_id=$(ascli aoc packages shared_inboxes show --name='My Shared Inbox' --format=csv --display=data --fields=id --transpose-single=no)
5036
+ shared_box_id=$(ascli aoc packages shared_inboxes show --name='My Shared Inbox' --format=csv --display=data --fields=id)
4890
5037
  ```
4891
5038
 
4892
5039
  ```bash
@@ -4938,6 +5085,26 @@ ascli aoc packages recv ALL --once-only=yes --lock-port=12345
4938
5085
 
4939
5086
  Typically, one would execute this command on a regular basis, using the method of your choice: see [Scheduler](#scheduler).
4940
5087
 
5088
+ ### Example: Content of a received Package
5089
+
5090
+ Some `node` operations are available for a package, such as `browse` and `find`.
5091
+
5092
+ To list the content of a package, use command `packages browse <package id> <folder>`:
5093
+
5094
+ ```bash
5095
+ ascli aoc package browse my5CnbeWng /
5096
+ ```
5097
+
5098
+ To list recursively, use command `find`.
5099
+
5100
+ To download only some of the files listed in the package, just add the path of the files on the command line.
5101
+
5102
+ For advanced users, it's also possible to pipe node information for the package and use node operations:
5103
+
5104
+ ```bash
5105
+ ascli aoc package node_info <package id here> / --format=json --show-secrets=yes --display=data | ascli node -N --preset=@json:@stdin: access_key do self browse /
5106
+ ```
5107
+
4941
5108
  ### Files
4942
5109
 
4943
5110
  The Files application presents a **Home** folder to users in a given workspace.
@@ -5092,7 +5259,7 @@ For instructions, refer to section `find` for plugin `node`.
5092
5259
 
5093
5260
  ```bash
5094
5261
  admin analytics transfers nodes
5095
- admin analytics transfers organization --query=@json:'{"status":"completed","direction":"receive"}' --notify-to=my_email_external --notify-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: <%=ev["files_completed"]%> files received\n\n<%=ev.to_yaml%>}'
5262
+ admin analytics transfers organization --query=@json:'{"status":"completed","direction":"receive","limit":2}' --notify-to=my_email_external --notify-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: <%=ev["files_completed"]%> files received\n\n<%=ev.to_yaml%>}'
5096
5263
  admin analytics transfers users --once-only=yes
5097
5264
  admin application list
5098
5265
  admin ats access_key create --cloud=aws --region=my_region --params=@json:'{"id":"ak_aws","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_bucket","credentials":{"access_key_id":"my_access_key","secret_access_key":"my_secret_key"},"path":"/"}}'
@@ -5117,8 +5284,10 @@ admin group list
5117
5284
  admin kms_profile list
5118
5285
  admin node do %name:my_node_name --secret=my_ak_secret browse /
5119
5286
  admin node do %name:my_node_name --secret=my_ak_secret delete /folder1
5287
+ admin node do %name:my_node_name --secret=my_ak_secret delete /folder_sub
5120
5288
  admin node do %name:my_node_name --secret=my_ak_secret mkdir /folder1
5121
- admin node do %name:my_node_name --secret=my_ak_secret v3 access_key create @json:'{"id":"testsub1","storage":{"path":"/folder1"}}'
5289
+ admin node do %name:my_node_name --secret=my_ak_secret mkdir /folder_sub
5290
+ admin node do %name:my_node_name --secret=my_ak_secret v3 access_key create @json:'{"id":"testsub1","storage":{"path":"/folder_sub"}}'
5122
5291
  admin node do %name:my_node_name --secret=my_ak_secret v3 access_key delete testsub1
5123
5292
  admin node do %name:my_node_name --secret=my_ak_secret v3 events
5124
5293
  admin node do %name:my_node_name delete test_shared_folder
@@ -5133,7 +5302,9 @@ admin package list --http-options=@json:'{"read_timeout":120.0}'
5133
5302
  admin saml_configuration list
5134
5303
  admin self show
5135
5304
  admin short_link list
5136
- admin subscription
5305
+ admin subscription account
5306
+ admin subscription usage
5307
+ admin subscription usage MONTH
5137
5308
  admin user list
5138
5309
  admin user modify %name:my_user_email @json:'{"deactivated":false}'
5139
5310
  admin workspace list
@@ -5156,8 +5327,8 @@ files browse my_remote_file
5156
5327
  files browse my_remote_folder
5157
5328
  files browse my_remote_folder/
5158
5329
  files delete /testsrc
5159
- files download --transfer=alpha testdst/test_file.bin
5160
5330
  files download --transfer=connect testdst/test_file.bin
5331
+ files download --transfer=desktop testdst/test_file.bin
5161
5332
  files find /
5162
5333
  files find / '\.partial$'
5163
5334
  files find / @ruby:'->(f){f["type"].eql?("file")}'
@@ -5189,13 +5360,14 @@ files v3 info
5189
5360
  gateway --pid-file=pid_aocfxgw https://localhost:12345/aspera/faspex &
5190
5361
  org --url=my_public_link_recv_from_aoc_user
5191
5362
  organization
5192
- packages browse package_id3 /contents
5363
+ packages browse package_id3 /
5193
5364
  packages list
5194
5365
  packages list --query=@json:'{"dropbox_name":"my_shared_inbox_name","sort":"-received_at","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false}'
5195
5366
  packages receive ALL --once-only=yes --to-folder=. --lock-port=12345
5196
5367
  packages receive ALL --once-only=yes --to-folder=. --lock-port=12345 --query=@json:'{"dropbox_name":"my_shared_inbox_name","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false,"include_draft":false}' --ts=@json:'{"resume_policy":"sparse_csum","target_rate_kbps":50000}'
5197
5368
  packages receive INIT --once-only=yes --query=@json:'{"dropbox_name":"my_shared_inbox_name"}'
5198
5369
  packages receive package_id3 --to-folder=.
5370
+ packages receive package_id3 --to-folder=. /
5199
5371
  packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_shared_inbox_meta"],"metadata":[{"input_type":"single-text","name":"Project Id","values":["123"]},{"input_type":"single-dropdown","name":"Type","values":["Opt2"]},{"input_type":"multiple-checkbox","name":"CheckThose","values":["Check1","Check2"]},{"input_type":"date","name":"Optional Date","values":["2021-01-13T15:02:00.000Z"]}]}' test_file.bin
5200
5372
  packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_shared_inbox_meta"],"metadata":{"Project Id":"456","Type":"Opt2","CheckThose":["Check1","Check2"],"Optional Date":"2021-01-13T15:02:00.000Z"}}' test_file.bin
5201
5373
  packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE","recipients":["my_shared_inbox_meta"],"metadata":{"Type":"Opt2","CheckThose":["Check1","Check2"],"Optional Date":"2021-01-13T15:02:00.000Z"}}' test_file.bin
@@ -5290,7 +5462,7 @@ ascli ats api_key create
5290
5462
 
5291
5463
  ```output
5292
5464
  +--------+----------------------------------------------+
5293
- | key | value |
5465
+ | field | value |
5294
5466
  +--------+----------------------------------------------+
5295
5467
  | id | ats_XXXXXXXXXXXXXXXXXXXXXXXX |
5296
5468
  | secret | YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY |
@@ -5392,7 +5564,7 @@ delete my_inside_folder
5392
5564
  delete my_upload_folder/to.delete
5393
5565
  df
5394
5566
  download my_inside_folder/test_file.bin --to-folder=. --transfer-info=@json:'{"wss":false,"resume":{"iter_max":1}}'
5395
- download my_inside_folder/test_file.bin --to-folder=my_upload_folder --transfer=node
5567
+ download my_large_file --to-folder=my_upload_folder --transfer=node --ts=@json:'{"resume_policy":"none"}'
5396
5568
  du /
5397
5569
  health transfer --to-folder=my_upload_folder --format=nagios
5398
5570
  info
@@ -5410,10 +5582,10 @@ upload 'faux:///test1?100m' 'faux:///test2?100m' --to-folder=/Upload --ts=@json:
5410
5582
  upload 'test_file.bin' --to-folder=my_inside_folder --ts=@json:'{"multi_session":3,"multi_session_threshold":1,"resume_policy":"none","target_rate_kbps":100000}' --transfer-info=@json:'{"spawn_delay_sec":2.5,"multi_incr_udp":false}' --progress-bar=yes
5411
5583
  upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-list","filelist.txt"]}' --to-folder=my_inside_folder
5412
5584
  upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-pair-list","file_pair_list.txt"]}'
5413
- upload --sources=@ts --ts=@json:'{"paths":[{"source":"test_file.bin","destination":"my_inside_folder/other_name_4"}]}' --transfer=trsdk
5585
+ upload --sources=@ts --ts=@json:'{"paths":[{"source":"test_file.bin","destination":"my_inside_folder/other_name_4"}]}' --transfer=transferd
5414
5586
  upload --src-type=pair 'test_file.bin' my_inside_folder/other_name_2 --notify-to=my_email_external --transfer-info=@json:'{"ascp_args":["-l","100m"]}'
5415
- upload --src-type=pair --sources=@json:'["test_file.bin","my_inside_folder/other_name_3"]' --transfer-info=@json:'{"quiet":false}' --ts=@json:'{"use_ascp4":true}' --progress=no
5416
- upload --src-type=pair test_file.bin my_upload_folder/other_name_5 --ts=@json:'{"cipher":"aes-192-gcm","content_protection":"encrypt","content_protection_password":"my_secret_here","cookie":"biscuit","create_dir":true,"delete_before_transfer":false,"delete_source":false,"exclude_newer_than":1,"exclude_older_than":10000,"fasp_port":33001,"http_fallback":false,"multi_session":0,"overwrite":"diff+older","precalculate_job_size":true,"preserve_access_time":true,"preserve_creation_time":true,"rate_policy":"fair","resume_policy":"sparse_csum","symlink_policy":"follow"}'
5587
+ upload --src-type=pair --sources=@json:'["test_file.bin","my_inside_folder/other_name_3"]' --transfer-info=@json:'{"quiet":false}' --progress=no
5588
+ upload --src-type=pair test_file.bin my_upload_folder/other_name_5 --ts=@json:'{"cipher":"aes-192-gcm","content_protection":"encrypt","content_protection_password":"my_secret_here","cookie":"biscuit","create_dir":true,"delete_before_transfer":false,"delete_source":false,"exclude_newer_than":"-1","exclude_older_than":"-10000","fasp_port":33001,"http_fallback":false,"multi_session":0,"overwrite":"diff+older","precalculate_job_size":true,"preserve_access_time":true,"preserve_creation_time":true,"rate_policy":"fair","resume_policy":"sparse_csum","symlink_policy":"follow"}'
5417
5589
  upload --to-folder=my_upload_folder/target_hot --lock-port=12345 --transfer-info=@json:'{"ascp_args":["--remove-after-transfer","--remove-empty-directories","--exclude-newer-than=-8","--src-base","source_hot"]}' source_hot
5418
5590
  ```
5419
5591
 
@@ -5523,6 +5695,8 @@ This plugin gives access to capabilities provided by the HSTS node API.
5523
5695
  The authentication is `username` and `password` or `access_key` and `secret` through options: `username` and `password`.
5524
5696
 
5525
5697
  > **Note:** Capabilities of this plugin are used in other plugins which access to the node API, such as `aoc`, `ats`, `shares`.
5698
+ >
5699
+ > **Note:** This plugin can be used with any type of **Aspera Node**, either on-prem or ATS, provided that you have node api credentials. Those credentials can be either Node API user or Access Key (e.g. on ATS).
5526
5700
 
5527
5701
  ### File Operations
5528
5702
 
@@ -5583,10 +5757,10 @@ Examples of expressions:
5583
5757
  ascli node access_keys do self find /Documents '*.txt'
5584
5758
  ```
5585
5759
 
5586
- The following are examples of `ruby_lambda` to be provided in the following template command:
5760
+ The following are examples of Ruby lambda code to be provided in the following template command:
5587
5761
 
5588
5762
  ```bash
5589
- ascli node access_keys do self find / @ruby:'ruby_lambda'
5763
+ ascli node access_keys do self find / @ruby:'->(f){[code here]}'
5590
5764
  ```
5591
5765
 
5592
5766
  > **Note:** Single quotes are used here above to protect the whole **Ruby** expression from the shell. Then double quotes are used for strings in the **Ruby** expression to not mix with the shell.
@@ -5634,7 +5808,7 @@ ascli node access_keys do self find / @ruby:'->(f){f["type"].eql?("file") and (D
5634
5808
  When a transfer is run, its information is stored (typicall, 1 day) in the HSTS database (Redis).
5635
5809
  This information can be retrieved with command: `transfer list`.
5636
5810
 
5637
- If the number of transfer is too large, then the list will be retrieved in several API calls.
5811
+ If the number of transfers is too large, then the list will be retrieved using several API calls.
5638
5812
 
5639
5813
  In addition, it is possible to list "only new information" using option `once_only`.
5640
5814
 
@@ -5642,7 +5816,7 @@ In addition, it is possible to list "only new information" using option `once_on
5642
5816
  ascli node transfer list --once-only=yes
5643
5817
  ```
5644
5818
 
5645
- The `iteratin_token` that keeps memory of latest event is stored in the persistance repository of `ascli`.
5819
+ The `iteration_token` that keeps memory of latest event is stored in the persistance repository of `ascli`.
5646
5820
  To reset it, add option: `--query=@json:'{"reset": true}'`.
5647
5821
  To list only a number of events, use the `max` parameter in query.
5648
5822
  Other parameters are directly transmitted to the underlying API (`GET /ops/transfers`).
@@ -5792,7 +5966,7 @@ Bearer tokens are part of the **gen4/access key** API.
5792
5966
  It follows the model of OAuth 2.
5793
5967
  For example, they are used in Aspera on Cloud.
5794
5968
  This is also available for developers for any application integrating Aspera.
5795
- In this API, files, users and groups are identified by an id (a String, e.g. `"125"`, not necessarily numerical).
5969
+ In this API, files, users and groups are identified by an id (a `String`, e.g. `"125"`, not necessarily numerical).
5796
5970
 
5797
5971
  Bearer tokens are typically generated by the authentication application and then recognized by the node API.
5798
5972
  A bearer token is authorized on the node by creating `permissions` on a **folder**.
@@ -5804,6 +5978,8 @@ Bearer tokens can be generated using command `bearer_token`: it takes two argume
5804
5978
 
5805
5979
  | parameter | Default | type | description |
5806
5980
  | ------------------------ |-----------------------------|-----------|----------------------------------------------------------|
5981
+ | _scope | `user:all` | Special | Either `user:all` or `admin:all` |
5982
+ | _validity | 86400 | Special | Validity in seconds from now. |
5807
5983
  | user_id | - | Mandatory | Identifier of user |
5808
5984
  | scope | `node.<access_key>:<_scope>`| Mandatory | API scope, e.g. `node.<access_key>:<node scope>` |
5809
5985
  | expires_at | `now+<_validity>` | Mandatory | Format: `%Y-%m-%dT%H:%M:%SZ` e.g. `2021-12-31T23:59:59Z` |
@@ -5811,12 +5987,10 @@ Bearer tokens can be generated using command `bearer_token`: it takes two argume
5811
5987
  | group_ids | - | Optional | List of group ids |
5812
5988
  | organization_id | - | Optional | Organization id |
5813
5989
  | watermarking_json_base64 | - | Optional | Watermarking information (not used) |
5814
- | _scope | `user:all` | Special | Either `user:all` or `admin:all` |
5815
- | _validity | 86400 | Special | Validity in seconds from now. |
5816
5990
 
5817
5991
  > **Note:** For convenience, `ascli` provides additional parameters `_scope` and `_validity`.
5818
5992
  > They are not part of the API and are removed from the final payload.
5819
- > They are used respectively to build the default value of `scope` and `expires_at`.
5993
+ > They are used respectively to easily set a value for `scope` and `expires_at`.
5820
5994
 
5821
5995
  #### Bearer token: Environment
5822
5996
 
@@ -5899,7 +6073,7 @@ Using `ascli`, an access key can be created using the `access_key create` on the
5899
6073
 
5900
6074
  Now, let's assume we are the user, the only information received are:
5901
6075
 
5902
- - The url of the node API
6076
+ - The URL of the node API
5903
6077
  - A Bearer token
5904
6078
  - A file `id` for which we have access
5905
6079
 
@@ -5923,7 +6097,6 @@ access_key do my_ak_name delete test_nd_ak3
5923
6097
  access_key do my_ak_name download test_nd_ak3 --to-folder=.
5924
6098
  access_key do my_ak_name find my_test_folder
5925
6099
  access_key do my_ak_name find my_test_folder @ruby:'->(f){f["name"].end_with?(".jpg")}'
5926
- access_key do my_ak_name find my_test_folder exec:'f["name"].end_with?(".jpg")'
5927
6100
  access_key do my_ak_name mkdir /tst_nd_ak
5928
6101
  access_key do my_ak_name node_info /
5929
6102
  access_key do my_ak_name rename /tst_nd_ak test_nd_ak2
@@ -5931,6 +6104,7 @@ access_key do my_ak_name show %id:1
5931
6104
  access_key do my_ak_name show /test_nd_ak3
5932
6105
  access_key do my_ak_name upload 'faux:///test_nd_ak3?100k' --default-ports=no
5933
6106
  access_key do self permission %id:root_id create @json:'{"access_type":"user","access_id":"666"}'
6107
+ access_key do self permission / show 1
5934
6108
  access_key do self show / --fields=id --output=root_id
5935
6109
  access_key list
5936
6110
  access_key set_bearer_key self @file:my_private_key
@@ -5968,7 +6142,7 @@ slash
5968
6142
  space /
5969
6143
  ssync bandwidth %name:my_node_sync
5970
6144
  ssync counters %name:my_node_sync
5971
- ssync create @json:'{"configuration":{"name":"my_node_sync","local":{"path":"my_local_path"},"remote":{"host":"my_host","port":my_port,"user":"my_username","pass":"my_password_here","path":"my_remote_path"}}}'
6145
+ ssync create @json:'{"configuration":{"name":"my_node_sync","local":{"path":"my_local_path_real"},"remote":{"host":"my_host","port":my_port,"user":"my_username","pass":"my_password_here","path":"my_remote_path"}}}'
5972
6146
  ssync delete %name:my_node_sync
5973
6147
  ssync files %name:my_node_sync
5974
6148
  ssync list
@@ -6073,16 +6247,16 @@ Activation is in two steps:
6073
6247
  - Click on `Create` Button
6074
6248
  - Take note of Client Id (and Client Secret, but not used in current version)
6075
6249
 
6076
- - The user uses a private key and sets the public key in his faspex 5 profile
6250
+ - The user will authenticate with a private key and set the public key in his faspex 5 profile.
6077
6251
 
6252
+ **Note:** If you don't have a private key refer to section [Private Key](#private-key) to generate one.
6253
+
6078
6254
  This operation is done by each user using the CLI.
6079
6255
 
6080
6256
  - As user, click on the user logo, left to the app switcher on top right.
6081
6257
  - Select `Account Settings`
6082
6258
  - on the bottom in the text field: `Public key in PEM format` paste the **public** key corresponding to the private key used by the user.
6083
6259
 
6084
- **Note:** If you don't have any refer to section [Private Key](#private-key)
6085
-
6086
6260
  Then use these options:
6087
6261
 
6088
6262
  ```text
@@ -6147,16 +6321,22 @@ ascli config preset update f5boot --url=https://localhost/aspera/faspex --auth=b
6147
6321
 
6148
6322
  ```bash
6149
6323
  admin accounts list
6324
+ admin alternate_addresses list
6150
6325
  admin clean_deleted
6151
6326
  admin contacts list
6152
6327
  admin distribution_lists create @json:'{"name":"test4","contacts":[{"name":"john@example.com"}]}'
6153
6328
  admin distribution_lists delete %name:test4
6154
6329
  admin distribution_lists list --query=@json:'{"type":"global"}'
6155
- admin event app
6330
+ admin event app --query=@json:'{"max":20}'
6156
6331
  admin event web
6157
6332
  admin jobs list --query=@json:'{"job_type":"email","status":"failed"}' --fields=id,error_desc
6158
6333
  admin metadata_profiles list
6334
+ admin node browse %name:Local
6159
6335
  admin node list
6336
+ admin node shared_folders %name:Local list
6337
+ admin node shared_folders %name:Local show %name:Main
6338
+ admin node shared_folders %name:Local user %name:Main list
6339
+ admin node show %name:Local
6160
6340
  admin oauth_clients list --query=@json:'[["client_types[]","public"]]'
6161
6341
  admin registrations list
6162
6342
  admin saml_configs list
@@ -6175,6 +6355,8 @@ gateway --pid-file=pid_f5_fxgw https://localhost:12346/aspera/faspex &
6175
6355
  health
6176
6356
  invitation list
6177
6357
  invitations create @json:'{"email_address":"aspera.user1+u@gmail.com"}'
6358
+ packages browse f5_pack_id --query=@json:'{"recursive":true}'
6359
+ packages delete f5_pack_id
6178
6360
  packages list --box=my_shared_box_name
6179
6361
  packages list --box=my_workgroup --group-type=workgroups
6180
6362
  packages list --query=@json:'{"mailbox":"inbox","status":"completed"}'
@@ -6182,8 +6364,8 @@ packages receive --box=my_shared_box_name package_box_id1 --to-folder=.
6182
6364
  packages receive --box=my_workgroup --group-type=workgroups workgroup_package_id1 --to-folder=.
6183
6365
  packages receive ALL --once-only=yes --to-folder=.
6184
6366
  packages receive INIT --once-only=yes
6185
- packages receive f5_p31 --to-folder=. --ts=@json:'{"content_protection_password":"my_secret_here"}'
6186
- packages send --shared-folder=%name:my_shared_folder_name @json:'{"title":"test title","recipients":["my_email_internal"]}' my_shared_folder_file
6367
+ packages receive f5_pack_id --to-folder=. --ts=@json:'{"content_protection_password":"my_secret_here"}'
6368
+ packages send --shared-folder=%name:my_shared_folder_name @json:'{"title":"test title","recipients":["my_email_internal"]}' my_shared_folder_file --fields=id --display=data --output=test
6187
6369
  packages send --url=my_public_link_send_f5_user @json:'{"title":"test title"}' test_file.bin
6188
6370
  packages send --url=my_public_link_send_shared_box @json:'{"title":"test title"}' test_file.bin
6189
6371
  packages send @json:'{"title":"test title","recipients":["my_shared_box_name"],"metadata":{"Options":"Opt1","TextInput":"example text"}}' test_file.bin
@@ -6191,9 +6373,9 @@ packages send @json:'{"title":"test title","recipients":["my_workgroup"]}' test_
6191
6373
  packages send @json:'{"title":"test title","recipients":[{"name":"my_username"}]my_meta}' test_file.bin --ts=@json:'{"content_protection_password":"my_secret_here"}'
6192
6374
  packages show --box=my_shared_box_name package_box_id1
6193
6375
  packages show --box=my_workgroup --group-type=workgroups workgroup_package_id1
6194
- packages show f5_p31
6195
- packages status f5_p31
6196
- postprocessing --pid-file=pid_f5_postproc @json:'{"url":"https://localhost:8443/domain","processing":{"script_folder":""}}' &
6376
+ packages show f5_pack_id
6377
+ packages status f5_pack_id
6378
+ postprocessing --pid-file=pid_f5_postproc @json:'{"url":"http://localhost:8088/asclihook","processing":{"script_folder":""}}' &
6197
6379
  shared browse %name:my_src
6198
6380
  shared list
6199
6381
  shared_folders browse %name:my_shared_folder_name
@@ -6230,13 +6412,23 @@ To select another inbox, use option `box` with one of the following values:
6230
6412
 
6231
6413
  ### Faspex 5: Send a package
6232
6414
 
6233
- The `Hash` creation **Command Parameter** provided to command `faspex5 packages send [extended value: Hash with package info ] [files...]` corresponds to the Faspex 5 API: `POST /packages`.
6415
+ A package can be sent with the command:
6416
+
6417
+ ```bash
6418
+ ascli faspex5 packages send [extended value: Hash with package info ] [files...]
6419
+ ```
6234
6420
 
6235
- The interface is the one of the API (Refer to Faspex5 API documentation, or look at request in browser).
6421
+ The `Hash` creation **Command Parameter** provided to command corresponds to the Faspex 5 API: `POST /packages` (refer to the API reference for a full list of parameters, or look at request in browser).
6236
6422
 
6237
6423
  Required fields are `title` and `recipients`.
6238
6424
 
6239
- Example using `@json:` format:
6425
+ Example (assuming a default preset is created for the connection information):
6426
+
6427
+ ```bash
6428
+ ascli faspex5 packages send @json:'{"title":"some title","recipients":["user@example.com"]}' mybygfile1
6429
+ ```
6430
+
6431
+ Longer example for the ayload of `@json:`:
6240
6432
 
6241
6433
  ```json
6242
6434
  {"title":"some title","recipients":[{"recipient_type":"user","name":"user@example.com"}]}
@@ -6320,7 +6512,7 @@ To list the content of a package, use command `faspex5 packages browse /`.
6320
6512
 
6321
6513
  Option `query` is available.
6322
6514
 
6323
- To list recursively add option `--query=@json:{"recursive":true}`.
6515
+ To list recursively add option `--query=@json:'{"recursive":true}'`.
6324
6516
 
6325
6517
  > **Note:** Option `recursive` makes recursive API calls, so it can take a long time on large packages.
6326
6518
 
@@ -6393,15 +6585,15 @@ ascli faspex5 admin shared create @json:'{"name":"the shared inbox","metadata_pr
6393
6585
  ### Faspex 5: List content in Shared folder and send package from remote source
6394
6586
 
6395
6587
  ```bash
6396
- ascli faspex5 shared_folders list
6588
+ ascli faspex5 shared_folders list --fields=id,name
6397
6589
  ```
6398
6590
 
6399
6591
  ```markdown
6400
- +----+----------+---------+-----+
6401
- | id | name | node_id | ... |
6402
- +----+----------+---------+-----+
6403
- | 3 | partages | 2 | ... |
6404
- +----+----------+---------+-----+
6592
+ +----+----------+
6593
+ | id | name |
6594
+ +----+----------+
6595
+ | 3 | partages |
6596
+ +----+----------+
6405
6597
  ```
6406
6598
 
6407
6599
  ```bash
@@ -6444,13 +6636,13 @@ Private invitations are for internal users, provide the user or shared inbox ide
6444
6636
 
6445
6637
  > **Note:** Operation requires admin level.
6446
6638
 
6447
- Automated cleanup period can be displayed with:
6639
+ The default automated cleanup period can be displayed with:
6448
6640
 
6449
6641
  ```bash
6450
6642
  ascli faspex5 admin configuration show --fields=days_before_deleting_package_records
6451
6643
  ```
6452
6644
 
6453
- This parameter can also be modified, for example:
6645
+ This parameter can be modified with:
6454
6646
 
6455
6647
  ```bash
6456
6648
  ascli faspex5 admin configuration modify @json:'{"days_before_deleting_package_records":30}'
@@ -6462,6 +6654,8 @@ To start package purge, i.e. permanently remove packages marked for deletion old
6462
6654
  ascli faspex5 admin clean_deleted
6463
6655
  ```
6464
6656
 
6657
+ > **Note:** The expiration perid taken by default is the one from `admin configuration show`. To use a different period than the default, specify it on command line with: `@json:'{"days_before_deleting_package_records":15}'`
6658
+
6465
6659
  To delete all packages, one can use the following command:
6466
6660
 
6467
6661
  ```bash
@@ -6469,12 +6663,32 @@ ascli faspex5 packages list --box=ALL --format=yaml --fields=id | ascli faspex5
6469
6663
  ```
6470
6664
 
6471
6665
  > **Note:** Above command will mark all packages for deletion, and will be permanently removed after the configured period (`clean_deleted` command).
6472
- > It is possible to add a filter to the list command to only delete packages matching some criteria, e.g. using `--select=@ruby:`.
6666
+ > It is possible to add a filter to the list command to only delete packages matching some criteria, e.g. using `--select=@ruby:'->(p){...}'` on `packages list`.
6667
+
6668
+ ### Faspex 5: Admin: Unlock user
6669
+
6670
+ To unlock a user, you can de-activate and then re-activate the user:
6671
+
6672
+ ```bash
6673
+ ascli faspex5 admin accounts modify %name:some.user@example.com @json:'{"account_activated":false}'
6674
+ ```
6675
+
6676
+ ```bash
6677
+ ascli faspex5 admin accounts modify %name:some.user@example.com @json:'{"account_activated":true}'
6678
+ ```
6679
+
6680
+ > **Note:** here we use the convenient percent selector, but the numerical if can be used as well.
6681
+
6682
+ To send a password reset link to a user, use command `reset_password` on the `account`.
6473
6683
 
6474
6684
  ### Faspex 5: Faspex 4-style postprocessing
6475
6685
 
6476
- `ascli` provides command `postprocessing` in plugin `faspex5` to emulate Faspex 4 postprocessing.
6477
- It implements Faspex 5 web hooks, and calls a local script with the same environment as Faspex 4.
6686
+ The command command `ascli faspex5 postprocessing` emulates Faspex 4 postprocessing script execution in Faspex 5.
6687
+ It implements Faspex 5 web hooks and calls a script with the same environment variables as set by Faspex 4.
6688
+ Environment variables at set to the values provided by the web hook which are the same as Faspex 4 postprocessing.
6689
+
6690
+ It allows to quickly migrate workflows to Faspex 5 while preserving scripts.
6691
+ Nevertheless, on long term, a native approach shall be considered, such as using Aspera Orchestrator or other workflow engine.
6478
6692
 
6479
6693
  It is invoked like this:
6480
6694
 
@@ -6482,41 +6696,46 @@ It is invoked like this:
6482
6696
  ascli faspex5 postprocessing @json:'{"url":"http://localhost:8080/processing"}'
6483
6697
  ```
6484
6698
 
6485
- The following parameters are supported:
6699
+ The following parameters are supported in the extended value `Hash`:
6486
6700
 
6487
- | parameter | type | default | description |
6488
- |----------------------------|---------|------------------------|-----------------------------------------------------|
6489
- | url | string | http://localhost:8080 | Base url on which requests are listened | <!-- markdownlint-disable-line -->
6490
- | certificate | hash | nil | Certificate information (if HTTPS) |
6491
- | certificate.key | string | nil | Path to private key file |
6492
- | certificate.cert | string | nil | Path to certificate |
6493
- | certificate.chain | string | nil | Path to intermediary certificates |
6494
- | processing | hash | nil | Behavior of post processing |
6495
- | processing.script_folder | string | . | Prefix added to script path |
6496
- | processing.fail_on_error | bool | false | Fail if true and process exit with non zero |
6497
- | processing.timeout_seconds | integer | 60 | Max. execution time before script is killed |
6701
+ | parameter | type | default | description |
6702
+ |----------------------------|----------|---------|-----------------------------------------------------|
6703
+ | url | `String` | `http://localhost:8080` | Base URL on which requests are listened, a path can be provided. | <!-- markdownlint-disable-line -->
6704
+ | certificate | `Hash` | nil | Certificate information (if URL is HTTPS) |
6705
+ | certificate.key | `String` | nil | Path to private key file |
6706
+ | certificate.cert | `String` | nil | Path to certificate |
6707
+ | certificate.chain | `String` | nil | Path to certificate chain |
6708
+ | processing | `Hash` | nil | Behavior of post processing |
6709
+ | processing.script_folder | `String` | . | Prefix added to script path |
6710
+ | processing.fail_on_error | `Bool` | false | Fail if true and process exits with non zero code |
6711
+ | processing.timeout_seconds | `Integer`| 60 | Max. execution time before script is killed |
6498
6712
 
6499
- Parameter `url` defines:
6713
+ Parameter `url` (base URL) defines:
6500
6714
 
6501
6715
  - If `http` or `https` is used
6502
- - The local port number
6503
- - The **base path**, i.e. the path under which requests are received.
6716
+ - The local port number (default 443 for HTTPS, 80 for HTTP)
6717
+ - The **base path**, i.e. the path under which requests are received, if a reverse proxy is used this can be used to route.
6504
6718
 
6505
6719
  When a request is received the following happens:
6506
6720
 
6507
- - The processor get the path of the url called
6508
- - It removes the **base path**
6721
+ - `ascli` gets the path of the URL called
6722
+ - It removes the **base path** of base URL.
6509
6723
  - It prepends it with the value of `script_folder`
6510
6724
  - It executes the script
6511
6725
  - Upon success, a success code is returned
6512
6726
 
6513
- In Faspex 5, configure like this:
6727
+ For example:
6514
6728
 
6515
- **Webhook endpoint URI** : `http://localhost:8080/processing/script1.sh`
6729
+ The base URL is defined as: `http://localhost:8080/processing`.
6730
+ The parameter `script_folder` is set to `/opt/scripts`
6516
6731
 
6517
- Then, the postprocessing script executed will be `script1.sh`.
6732
+ In Faspex 5, the URL of the webhook endpoint shall be reachable from within Faspex containers.
6733
+ For example, if `ascli` in running in the base host, the URL hostname shall not be localhost, as this refers to the local address inside Faspex container.
6734
+ Instead, one can specify the IP address of the host or `host.containers.internal`.
6518
6735
 
6519
- Environment variables at set to the values provided by the web hook which are the same as Faspex 4 postprocessing.
6736
+ **Webhook endpoint URI** : `http://host.containers.internal:8080/processing/script1.sh`
6737
+
6738
+ Then the postprocessing script executed will be `/opt/scripts/script1.sh`.
6520
6739
 
6521
6740
  ### Faspex 5: Faspex 4 Gateway
6522
6741
 
@@ -6524,7 +6743,7 @@ Environment variables at set to the values provided by the web hook which are th
6524
6743
 
6525
6744
  For legacy faspex client applications that use the `send` API (only) of Faspex v4, the command `gateway` provides the capability to present an API compatible with Faspex 4, and it will call the Faspex 5 API.
6526
6745
 
6527
- It takes a single argument which is the url at which the gateway will be located (locally):
6746
+ It takes a single argument which is the URL at which the gateway will be located (locally):
6528
6747
 
6529
6748
  ```bash
6530
6749
  ascli faspex5 gateway https://localhost:12345/aspera/faspex
@@ -6551,6 +6770,8 @@ curl -H "Authorization: $(ascli ascli bearer)" https://faspex5.example.com/asper
6551
6770
 
6552
6771
  ## Plugin: `faspex`: IBM Aspera Faspex v4
6553
6772
 
6773
+ > **Note:** Faspex v4 is end of support since Sept. 30th, 2024. So this plugin for faspex v4 is deprecated. If you still need to use Faspex4, then use `ascli` version 4.19.0 or earlier.
6774
+ >
6554
6775
  > **Note:** For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
6555
6776
 
6556
6777
  This plugin uses APIs versions 3 Faspex v4.
@@ -6846,7 +7067,7 @@ If you don't have credentials but have access to the IBM Cloud console, then use
6846
7067
  If you have those parameters already, then following options shall be provided:
6847
7068
 
6848
7069
  - `bucket` bucket name
6849
- - `endpoint` storage endpoint url, e.g. `https://s3.hkg02.cloud-object-storage.appdomain.cloud`
7070
+ - `endpoint` storage endpoint URL, e.g. `https://s3.hkg02.cloud-object-storage.appdomain.cloud`
6850
7071
  - `apikey` API Key
6851
7072
  - `crn` resource instance id
6852
7073
 
@@ -6932,7 +7153,7 @@ ascli cos node info
6932
7153
  ascli cos node upload 'faux:///sample1G?1g'
6933
7154
  ```
6934
7155
 
6935
- > **Note:** A dummy file `sample1G` of size 2GB is generated using the `faux` PVCL (man `ascp` and section above), but you can, of course, send a real file by specifying a real file path instead.
7156
+ > **Note:** A dummy file `sample1G` of size 2GB is generated using the `faux` PVCL scheme (see previous section and `man ascp`), but you can, of course, send a real file by specifying a real file path instead.
6936
7157
 
6937
7158
  ### Cos sample commands
6938
7159
 
@@ -7022,13 +7243,17 @@ To display the value, use `asuserdata`:
7022
7243
 
7023
7244
  ```bash
7024
7245
  asuserdata -a | grep max_request_file_create_size_kb
7246
+ ```
7025
7247
 
7248
+ ```console
7026
7249
  max_request_file_create_size_kb: "1024"
7250
+ ```
7027
7251
 
7252
+ ```bash
7028
7253
  asconfigurator -x "server; max_request_file_create_size_kb,16384"
7029
7254
  ```
7030
7255
 
7031
- If you use a value different than 16777216, then specify it using option `max_size`.
7256
+ If you use a value different than `16777216`, then specify it using option `max_size`.
7032
7257
 
7033
7258
  > **Note:** The HSTS parameter (`max_request_file_create_size_kb`) is in **kiloBytes** while the generator parameter is in **Bytes** (factor of 1024).
7034
7259
 
@@ -7036,12 +7261,12 @@ If you use a value different than 16777216, then specify it using option `max_si
7036
7261
 
7037
7262
  `ascli` requires the following external tools available in the `PATH`:
7038
7263
 
7039
- - **ImageMagick** : `convert` `composite`
7264
+ - **ImageMagick** v7+: `magick` `composite`
7040
7265
  - **OptiPNG** : `optipng`
7041
7266
  - **FFmpeg** : `ffmpeg` `ffprobe`
7042
- - **Libreoffice** : `libreoffice`
7267
+ - **Libreoffice** : `unoconv`
7043
7268
 
7044
- Here shown on Redhat/CentOS.
7269
+ Here shown on Redhat/Rocky Linux.
7045
7270
 
7046
7271
  Other OSes should work as well, but are note tested.
7047
7272
 
@@ -7075,9 +7300,9 @@ curl -s https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.ta
7075
7300
 
7076
7301
  If you don't want to have preview for office documents or if it is too complex you can skip office document preview generation by using option: `--skip-types=office`
7077
7302
 
7078
- The generation of preview in based on the use of `unoconv` and `libreoffice`
7303
+ The generation of preview in based on the use of Libreoffice's `unoconv`.
7079
7304
 
7080
- - CentOS 8
7305
+ - RHEL 8/Rocky Linux 8+
7081
7306
 
7082
7307
  ```bash
7083
7308
  dnf install unoconv
@@ -7281,6 +7506,7 @@ If the preview generator does not have access to files on the file system (it is
7281
7506
 
7282
7507
  ```bash
7283
7508
  check --skip-types=office
7509
+ events --once-only=yes --skip-types=office --log-level=info
7284
7510
  scan --scan-id=1 --skip-types=office --log-level=info --file-access=remote --ts=@json:'{"target_rate_kbps":1000000}'
7285
7511
  scan --skip-types=office --log-level=info
7286
7512
  show --base=test my_docx
@@ -7385,7 +7611,7 @@ Interesting `ascp` features are found in its arguments: (see `ascp` manual):
7385
7611
 
7386
7612
  > **Note:** `ascli` takes transfer parameters exclusively as a [**transfer-spec**](#transfer-specification), with `ts` option.
7387
7613
  >
7388
- > **Note:** Most, but not all, native `ascp` arguments are available as standard [**transfer-spec**](#transfer-specification) parameters.
7614
+ > **Note:** Usual native `ascp` arguments are available as standard [**transfer-spec**](#transfer-specification) parameters, but not special or advanced options.
7389
7615
  >
7390
7616
  > **Note:** Only for the [`direct`](#agent-direct) transfer agent (not others, like connect or node), native `ascp` arguments can be provided with parameter `ascp_args` of option `transfer_info` .
7391
7617