aspera-cli 4.18.0 → 4.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +23 -0
- data/CONTRIBUTING.md +5 -12
- data/README.md +152 -84
- data/examples/build_exec +85 -0
- data/examples/build_package.sh +28 -0
- data/lib/aspera/agent/alpha.rb +4 -4
- data/lib/aspera/agent/base.rb +2 -0
- data/lib/aspera/agent/connect.rb +3 -4
- data/lib/aspera/agent/direct.rb +108 -104
- data/lib/aspera/agent/httpgw.rb +1 -1
- data/lib/aspera/api/aoc.rb +2 -2
- data/lib/aspera/api/httpgw.rb +95 -57
- data/lib/aspera/api/node.rb +110 -77
- data/lib/aspera/ascp/installation.rb +47 -32
- data/lib/aspera/ascp/management.rb +4 -1
- data/lib/aspera/ascp/products.rb +2 -8
- data/lib/aspera/cli/extended_value.rb +27 -14
- data/lib/aspera/cli/formatter.rb +35 -28
- data/lib/aspera/cli/main.rb +11 -11
- data/lib/aspera/cli/manager.rb +109 -94
- data/lib/aspera/cli/plugin.rb +4 -7
- data/lib/aspera/cli/plugin_factory.rb +10 -1
- data/lib/aspera/cli/plugins/aoc.rb +15 -14
- data/lib/aspera/cli/plugins/config.rb +35 -29
- data/lib/aspera/cli/plugins/faspex.rb +5 -4
- data/lib/aspera/cli/plugins/faspex5.rb +16 -13
- data/lib/aspera/cli/plugins/node.rb +50 -41
- data/lib/aspera/cli/plugins/orchestrator.rb +3 -2
- data/lib/aspera/cli/plugins/preview.rb +1 -1
- data/lib/aspera/cli/plugins/server.rb +2 -2
- data/lib/aspera/cli/plugins/shares.rb +11 -7
- data/lib/aspera/cli/special_values.rb +13 -0
- data/lib/aspera/cli/sync_actions.rb +73 -32
- data/lib/aspera/cli/transfer_agent.rb +3 -2
- data/lib/aspera/cli/transfer_progress.rb +1 -1
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/environment.rb +100 -7
- data/lib/aspera/faspex_gw.rb +1 -1
- data/lib/aspera/keychain/encrypted_hash.rb +2 -0
- data/lib/aspera/log.rb +1 -0
- data/lib/aspera/node_simulator.rb +1 -1
- data/lib/aspera/oauth/jwt.rb +1 -1
- data/lib/aspera/oauth/url_json.rb +2 -0
- data/lib/aspera/oauth/web.rb +7 -6
- data/lib/aspera/rest.rb +46 -15
- data/lib/aspera/secret_hider.rb +3 -2
- data/lib/aspera/ssh.rb +1 -1
- data/lib/aspera/transfer/faux_file.rb +7 -5
- data/lib/aspera/transfer/parameters.rb +27 -19
- data/lib/aspera/transfer/spec.rb +8 -10
- data/lib/aspera/transfer/sync.rb +52 -47
- data/lib/aspera/web_auth.rb +0 -1
- data/lib/aspera/web_server_simple.rb +24 -13
- data.tar.gz.sig +0 -0
- metadata +5 -4
- metadata.gz.sig +0 -0
- data/examples/rubyc +0 -24
- data/lib/aspera/open_application.rb +0 -69
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 89df3ebc2bf7a146a16e59154a73efcfc2e11f7767aba28725f9443de04772b7
|
|
4
|
+
data.tar.gz: 33469a2bc4991b106ab3002927e823f280c016fc070a2bdcbb3edb286506041d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d57c69a340b866cfe5c3003c94ecb3ebc8c61aba7011ee4b8683da60d9615dd060fb94ac153e16eb98bd11f7dfa1deb117b1ca2ecd5bfe5d46e5a390ec290a01
|
|
7
|
+
data.tar.gz: fa364474177bc6d2f648474b1eed12b45733e84a5d4896d3075225ed1212aed27f64725ba38a400a3f9c5da2e7e2acf46d6a41164e5d92c1e2ce3a94498c5401
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changes (Release notes)
|
|
2
2
|
|
|
3
|
+
* 4.19.0
|
|
4
|
+
* New Features:
|
|
5
|
+
* `server`: add support for `async` (Aspera Sync) from Transfer SDK
|
|
6
|
+
* **global**: #156 support sending folders with httpgw
|
|
7
|
+
* **global**: new value for option `format`: `multi`
|
|
8
|
+
* Issues Fixed:
|
|
9
|
+
* `aoc`: #157 fix problem with `files browse` on a link
|
|
10
|
+
* `sync`: better documentation and handling of options.
|
|
11
|
+
* Breaking Changes:
|
|
12
|
+
* **global**: Default value for direct agent option `transfer_info.multi_incr_udp` is `true` on Windows, and now `false` on other platforms.
|
|
13
|
+
* **global**: Token based transfers now use the RSA key only. Direct agent option `transfer_info.client_ssh_key` allows changing this behavior.
|
|
14
|
+
|
|
15
|
+
* 4.18.1
|
|
16
|
+
|
|
17
|
+
* New Features:
|
|
18
|
+
* none
|
|
19
|
+
* Issues Fixed:
|
|
20
|
+
* **global**: #146 (@junkimu) Fix problem on Windows WRT terminal detection
|
|
21
|
+
* **global**: node gen4 (aoc) browsing through link now follows the link correctly
|
|
22
|
+
* `shares`: #147 Fix problem for `shares files mkdir`
|
|
23
|
+
* Breaking Changes:
|
|
24
|
+
* **global**: Removed option `id`, deprecated since 4.14.0
|
|
25
|
+
|
|
3
26
|
* 4.18.0
|
|
4
27
|
|
|
5
28
|
* New Features:
|
data/CONTRIBUTING.md
CHANGED
|
@@ -228,7 +228,7 @@ Then procedure is as follows:
|
|
|
228
228
|
|
|
229
229
|
## Docker image build
|
|
230
230
|
|
|
231
|
-
The Dockerfile template allows
|
|
231
|
+
The `Dockerfile.tmpl.erb` template allows customization of the optional copying of the `aspera-cli.gem` file, as opposed to installing from rubygems.org. It also supports customizing the retrieval of the SDK.
|
|
232
232
|
|
|
233
233
|
### Default image build
|
|
234
234
|
|
|
@@ -278,19 +278,11 @@ make docker_push_beta
|
|
|
278
278
|
|
|
279
279
|
## Single executable build
|
|
280
280
|
|
|
281
|
-
|
|
281
|
+
Initially, `rubyc` (gem [`ruby-packer`](https://github.com/pmq20/ruby-packer) and [here](https://github.com/you54f/ruby-packer)) was used to build a single executable.
|
|
282
282
|
|
|
283
|
-
|
|
284
|
-
make single
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
This is based on tool `rubyc` (gem `ruby-packer`): either place the executable in folder `tmp`, or the architecture-specific version will be automatically downloaded.
|
|
283
|
+
https://www.tebako.org/
|
|
288
284
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
```bash
|
|
292
|
-
sudo dnf install -y perl perl-FindBin perl-IPC-Cmd
|
|
293
|
-
```
|
|
285
|
+
A modern version of this is now used: [`tebako`](https://github.com/tamatebako/tebako) for which a container is provided.
|
|
294
286
|
|
|
295
287
|
## Long Term Implementation and delivery improvements
|
|
296
288
|
|
|
@@ -299,3 +291,4 @@ sudo dnf install -y perl perl-FindBin perl-IPC-Cmd
|
|
|
299
291
|
- <https://github.com/oauth-xx/oauth2>
|
|
300
292
|
- use gem Thor <http://whatisthor.com/> (or other standard Ruby CLI manager)
|
|
301
293
|
- Package a single-file executable for various architectures with <https://github.com/pmq20/ruby-packer> (`rubyc`)
|
|
294
|
+
- look at <https://github.com/phusion/traveling-ruby>
|
data/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
## Introduction
|
|
12
12
|
|
|
13
|
-
Version : 4.
|
|
13
|
+
Version : 4.19.0
|
|
14
14
|
|
|
15
15
|
Laurent/2016-2024
|
|
16
16
|
|
|
@@ -92,7 +92,7 @@ Once the gem is installed, `ascli` shall be accessible:
|
|
|
92
92
|
|
|
93
93
|
```console
|
|
94
94
|
$ ascli --version
|
|
95
|
-
4.
|
|
95
|
+
4.19.0
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
### First use
|
|
@@ -300,52 +300,6 @@ Download the Ruby installer executable from <https://rubyinstaller.org/downloads
|
|
|
300
300
|
rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\aspera-cli
|
|
301
301
|
```
|
|
302
302
|
|
|
303
|
-
Installation without network:
|
|
304
|
-
|
|
305
|
-
It is essentially the same procedure, but instead of retrieving files from internet, copy the files from a machine with internet access, and then install from those archives:
|
|
306
|
-
|
|
307
|
-
- Download the `exe` Ruby installer from <https://rubyinstaller.org/downloads/>
|
|
308
|
-
|
|
309
|
-
```bash
|
|
310
|
-
v=$(curl -s https://rubyinstaller.org/downloads/|sed -nEe 's|.*(https://.*/releases/download/.*exe).*|\1|p'|head -n 1)
|
|
311
|
-
curl -o ${v##*/} $v
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
- Create an archive with necessary gems: <https://help.rubygems.org/kb/rubygems/installing-gems-with-no-network>
|
|
315
|
-
|
|
316
|
-
```bat
|
|
317
|
-
gem install aspera-cli -N -i my_gems
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
Zip the files `*.gem` from folder `repo/my_gems`
|
|
321
|
-
|
|
322
|
-
- Download the SDK from: <https://ibm.biz/aspera_sdk>
|
|
323
|
-
|
|
324
|
-
Create a Zip with all those files, and transfer to the target system.
|
|
325
|
-
|
|
326
|
-
Then, on the target system:
|
|
327
|
-
|
|
328
|
-
- Unzip the archive
|
|
329
|
-
- Execute the installer:
|
|
330
|
-
|
|
331
|
-
```bat
|
|
332
|
-
rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\aspera-cli
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
- Install the gems:
|
|
336
|
-
|
|
337
|
-
```bat
|
|
338
|
-
gem install --force --local *.gem
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
- Install the SDK
|
|
342
|
-
|
|
343
|
-
```bash
|
|
344
|
-
ascli config ascp install --sdk-url=file:///sdk.zip
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
> **Note:** An example of installation script is provided: [docs/install.bat](docs/install.bat)
|
|
348
|
-
|
|
349
303
|
#### macOS: `brew`
|
|
350
304
|
|
|
351
305
|
**macOS** come with Ruby.
|
|
@@ -410,6 +364,26 @@ One can remove all installed gems, for example to start fresh:
|
|
|
410
364
|
gem uninstall -axI $(ls $(gem env gemdir)/gems/|sed -e 's/-[^-]*$//'|sort -u)
|
|
411
365
|
```
|
|
412
366
|
|
|
367
|
+
#### Linux as simple user
|
|
368
|
+
|
|
369
|
+
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):
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Then open a new terminal, or "source" the shell initialization script:
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
source ~/.bashrc
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
Then install Ruby:
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
rbenv install 3.2.2
|
|
385
|
+
```
|
|
386
|
+
|
|
413
387
|
#### Other Unixes (AIX)
|
|
414
388
|
|
|
415
389
|
Ruby is sometimes made available as an installable package through third party providers.
|
|
@@ -544,7 +518,7 @@ ascli config ascp install
|
|
|
544
518
|
If a local SDK installation is preferred instead of fetching from internet: one can specify the location of the SDK file:
|
|
545
519
|
|
|
546
520
|
```bash
|
|
547
|
-
curl -Lso sdk.zip https://ibm.biz/
|
|
521
|
+
curl -Lso sdk.zip https://ibm.biz/aspera_transfer_sdk
|
|
548
522
|
```
|
|
549
523
|
|
|
550
524
|
```bash
|
|
@@ -574,6 +548,18 @@ Refer to section: [Transfer Agents](#transfer-clients-agents)
|
|
|
574
548
|
|
|
575
549
|
> **Note:** No pre-packaged version is provided yet.
|
|
576
550
|
|
|
551
|
+
#### Gem files and dependencies
|
|
552
|
+
|
|
553
|
+
The sample script: [examples/build_package.sh](examples/build_package.sh) can be used to download all necessary gems and dependencies in a tar gz.
|
|
554
|
+
|
|
555
|
+
```console
|
|
556
|
+
$ ./build_package.sh aspera-cli 4.18.0
|
|
557
|
+
|
|
558
|
+
Archive: aspera-cli-4.18.0-gems.tgz
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
#### Unix-like
|
|
562
|
+
|
|
577
563
|
A method to build one is provided here:
|
|
578
564
|
|
|
579
565
|
The procedure:
|
|
@@ -595,7 +581,7 @@ ascli --show-config --fields=sdk_url
|
|
|
595
581
|
- Download the SDK archive from that URL
|
|
596
582
|
|
|
597
583
|
```bash
|
|
598
|
-
curl -Lso sdk.zip https://ibm.biz/
|
|
584
|
+
curl -Lso sdk.zip https://ibm.biz/aspera_transfer_sdk
|
|
599
585
|
```
|
|
600
586
|
|
|
601
587
|
- Transfer those 2 files to the target system
|
|
@@ -618,12 +604,48 @@ ascli config ascp install --sdk-url=file:///sdk.zip
|
|
|
618
604
|
source ~/.rvm/scripts/rvm
|
|
619
605
|
```
|
|
620
606
|
|
|
621
|
-
|
|
607
|
+
#### Windows
|
|
608
|
+
|
|
609
|
+
Installation without network:
|
|
610
|
+
|
|
611
|
+
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:
|
|
612
|
+
|
|
613
|
+
- Download the `exe` Ruby installer from <https://rubyinstaller.org/downloads/>
|
|
614
|
+
|
|
615
|
+
```bash
|
|
616
|
+
v=$(curl -s https://rubyinstaller.org/downloads/|sed -nEe 's|.*(https://.*/releases/download/.*exe).*|\1|p'|head -n 1)
|
|
617
|
+
curl -o ${v##*/} $v
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
- Create an archive with necessary gems like in previous section
|
|
621
|
+
|
|
622
|
+
- Download the SDK from: <https://ibm.biz/aspera_transfer_sdk>
|
|
623
|
+
|
|
624
|
+
- Create a Zip with all those files, and transfer to the target system.
|
|
625
|
+
|
|
626
|
+
Then, on the target system:
|
|
627
|
+
|
|
628
|
+
- Unzip the archive
|
|
629
|
+
- Execute the installer:
|
|
630
|
+
|
|
631
|
+
```bat
|
|
632
|
+
rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\aspera-cli
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
- Install the gems: Extract the gem archive, and then:
|
|
636
|
+
|
|
637
|
+
```bat
|
|
638
|
+
gem install --force --local *.gem
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
- Install the SDK
|
|
622
642
|
|
|
623
643
|
```bash
|
|
624
|
-
|
|
644
|
+
ascli config ascp install --sdk-url=file:///sdk.zip
|
|
625
645
|
```
|
|
626
646
|
|
|
647
|
+
> **Note:** An example of installation script is provided: [docs/install.bat](docs/install.bat)
|
|
648
|
+
|
|
627
649
|
### Container
|
|
628
650
|
|
|
629
651
|
The container image is: [`docker.io/martinlaurent/ascli`](https://hub.docker.com/r/docker.io/martinlaurent/ascli).
|
|
@@ -684,7 +706,7 @@ ascli -v
|
|
|
684
706
|
```
|
|
685
707
|
|
|
686
708
|
```text
|
|
687
|
-
4.
|
|
709
|
+
4.19.0
|
|
688
710
|
```
|
|
689
711
|
|
|
690
712
|
In order to keep persistency of configuration on the host, you should specify your user's configuration folder as a volume for the container.
|
|
@@ -1475,6 +1497,7 @@ If transposition of single object is not desired, use option: `transpose_single`
|
|
|
1475
1497
|
The style of output can be set using the `format` option, supporting:
|
|
1476
1498
|
|
|
1477
1499
|
- `table` : Text table (default)
|
|
1500
|
+
- `multi` : List of elements are displayed as a list of tables
|
|
1478
1501
|
- `text` : Value as String
|
|
1479
1502
|
- `ruby` : Ruby code
|
|
1480
1503
|
- `json` : JSON code
|
|
@@ -1902,7 +1925,8 @@ ascp use /usr/bin/ascp
|
|
|
1902
1925
|
check_update
|
|
1903
1926
|
coffee
|
|
1904
1927
|
coffee --ui=text
|
|
1905
|
-
coffee --ui=text --
|
|
1928
|
+
coffee --ui=text --image=@json:'{"text":true,"double":false}'
|
|
1929
|
+
coffee --ui=text --image=@json:'{"text":true}'
|
|
1906
1930
|
detect https://faspex4.example.com/path
|
|
1907
1931
|
detect https://faspex5.example.com/path
|
|
1908
1932
|
detect https://node.example.com/path
|
|
@@ -1937,8 +1961,8 @@ genkey my_key 4096
|
|
|
1937
1961
|
image https://eudemo.asperademo.com/wallpaper.jpg
|
|
1938
1962
|
initdemo
|
|
1939
1963
|
open
|
|
1940
|
-
|
|
1941
|
-
|
|
1964
|
+
plugins create my_command
|
|
1965
|
+
plugins list
|
|
1942
1966
|
preset delete conf_name
|
|
1943
1967
|
preset initialize conf_name @json:'{"p1":"v1","p2":"v2"}'
|
|
1944
1968
|
preset list
|
|
@@ -2723,19 +2747,21 @@ Refer to section [FASP](#fasp-configuration).
|
|
|
2723
2747
|
|
|
2724
2748
|
The `transfer_info` option accepts the following optional parameters to control multi-session, Web Socket Session, Resume policy and add any argument to `ascp`:
|
|
2725
2749
|
|
|
2726
|
-
| Name | Type
|
|
2727
|
-
|
|
2728
|
-
| `wss` | Bool
|
|
2729
|
-
| `
|
|
2730
|
-
| `
|
|
2731
|
-
| `
|
|
2732
|
-
| `
|
|
2733
|
-
| `
|
|
2734
|
-
| `
|
|
2735
|
-
| `
|
|
2736
|
-
| `resume
|
|
2737
|
-
| `resume.
|
|
2738
|
-
| `resume.
|
|
2750
|
+
| Name | Type | Description |
|
|
2751
|
+
|------------------------|---------|-------------|
|
|
2752
|
+
| `wss` | Bool | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: true |
|
|
2753
|
+
| `quiet` | Bool | If `true`, then `ascp` progress bar is not shown.<br/>Default: `false` |
|
|
2754
|
+
| `trusted_certs` | Array | List of repositories for trusted certificates. |
|
|
2755
|
+
| `client_ssh_key` | String | SSH Keys to use for token-based transfers. One of: `dsa_rsa`, `rsa`, `per_client`. Default: `rsa` |
|
|
2756
|
+
| `ascp_args` | Array | Array of strings with native `ascp` arguments.<br/>Default: `[]` |
|
|
2757
|
+
| `spawn_timeout_sec` | Float | Multi session<br/>Verification time that `ascp` is running<br/>Default: `3` |
|
|
2758
|
+
| `spawn_delay_sec` | Float | Multi session<br/>Delay between startup of sessions<br/>Default: `2` |
|
|
2759
|
+
| `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` |
|
|
2760
|
+
| `resume` | Hash | Resume parameters. See below |
|
|
2761
|
+
| `resume.iter_max` | Integer | Max number of retry on error<br/>Default: `7` |
|
|
2762
|
+
| `resume.sleep_initial` | Integer | First Sleep before retry<br/>Default: `2` |
|
|
2763
|
+
| `resume.sleep_factor` | Integer | Multiplier of sleep period between attempts<br/>Default: `2` |
|
|
2764
|
+
| `resume.sleep_max` | Integer | Default: `60` |
|
|
2739
2765
|
|
|
2740
2766
|
In case of transfer interruption, the agent will **resume** a transfer up to `iter_max` time.
|
|
2741
2767
|
Sleep between iterations is given by the following formula where `iter_index` is the current iteration index, starting at 0:
|
|
@@ -2745,7 +2771,7 @@ max( sleep_max , sleep_initial * sleep_factor ^ iter_index )
|
|
|
2745
2771
|
```
|
|
2746
2772
|
|
|
2747
2773
|
By default, Ruby's root CA store is used to validate any HTTPS endpoint used by `ascp` (e.g. WSS).
|
|
2748
|
-
In order to use a custom certificate store, use the `trusted_certs` option
|
|
2774
|
+
In order to use a custom certificate store, use the `trusted_certs` option of direct agent's option `transfer_info`.
|
|
2749
2775
|
To use `ascp`'s default, use option: `--transfer-info=@json:'{"trusted_certs":null}'`.
|
|
2750
2776
|
|
|
2751
2777
|
Some transfer errors are considered **retry-able** (e.g. timeout) and some other not (e.g. wrong password).
|
|
@@ -3032,7 +3058,7 @@ Columns:
|
|
|
3032
3058
|
| fasp_port | int | Y | Y | Y | Y | Y | Specifies fasp (UDP) port.<br/>(-O {int}) |
|
|
3033
3059
|
| fasp_url | string | | | | | | Only used in Faspex.<br/>(<ignored>) |
|
|
3034
3060
|
| file_checksum | string | Y | Y | | | | 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/>(<ignored>) |
|
|
3035
|
-
| 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}
|
|
3061
|
+
| 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}) |
|
|
3036
3062
|
| http_fallback_port | int | Y | | | | | Specifies http port when no cipher is used<br/>(-t {int}) |
|
|
3037
3063
|
| https_fallback_port | int | Y | Y | Y | Y | Y | Specifies https port when cipher is used<br/>(-t {int}) |
|
|
3038
3064
|
| keepalive | bool | Y | | | | | The session is running in persistent session mode.<br/>(--keepalive) |
|
|
@@ -3539,7 +3565,7 @@ ascli server upload "faux:///mydir?file=testfile&count=1m&size=0&inc=2&seq=seque
|
|
|
3539
3565
|
```text
|
|
3540
3566
|
ascli -h
|
|
3541
3567
|
NAME
|
|
3542
|
-
ascli -- a command line tool for Aspera Applications (v4.
|
|
3568
|
+
ascli -- a command line tool for Aspera Applications (v4.19.0)
|
|
3543
3569
|
|
|
3544
3570
|
SYNOPSIS
|
|
3545
3571
|
ascli COMMANDS [OPTIONS] [ARGS]
|
|
@@ -3570,7 +3596,8 @@ ARGS
|
|
|
3570
3596
|
OPTIONS: global
|
|
3571
3597
|
--interactive=ENUM Use interactive input of missing params: [no], yes
|
|
3572
3598
|
--ask-options=ENUM Ask even optional options: [no], yes
|
|
3573
|
-
--
|
|
3599
|
+
--struct-parser=ENUM Default parser when expected value is a struct: json, ruby
|
|
3600
|
+
--format=ENUM Output format: text, nagios, ruby, json, jsonpp, yaml, [table], multi, csv, image
|
|
3574
3601
|
--output=VALUE Destination for results (String)
|
|
3575
3602
|
--display=ENUM Output only some information: [info], data, error
|
|
3576
3603
|
--fields=VALUE Comma separated list of: fields, or ALL, or DEF (String, Array, Regexp, Proc)
|
|
@@ -3594,7 +3621,7 @@ OPTIONS: global
|
|
|
3594
3621
|
--pid-file=VALUE Write process identifier to file, delete on exit (String)
|
|
3595
3622
|
|
|
3596
3623
|
COMMAND: config
|
|
3597
|
-
SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test file flush_tokens folder gem genkey image initdemo open plugins preset proxy_check pubkey remote_certificate smtp_settings throw vault wizard
|
|
3624
|
+
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 throw vault wizard
|
|
3598
3625
|
OPTIONS:
|
|
3599
3626
|
--home=VALUE Home folder for tool (String)
|
|
3600
3627
|
--config-file=VALUE Path to YAML file with preset configuration
|
|
@@ -3604,7 +3631,6 @@ OPTIONS:
|
|
|
3604
3631
|
--query=VALUE Additional filter for for some commands (list/delete) (Hash)
|
|
3605
3632
|
--value=VALUE Value for create, update, list filter (Hash) (deprecated: (4.14) Use positional value for create/modify or option: query for list/delete)
|
|
3606
3633
|
--property=VALUE Name of property to set (modify operation)
|
|
3607
|
-
--id=VALUE Resource identifier (deprecated: (4.14) Use positional identifier after verb (modify,delete,show))
|
|
3608
3634
|
--bulk=ENUM Bulk operation (only some): [no], yes
|
|
3609
3635
|
--bfail=ENUM Bulk operation error handling: no, [yes]
|
|
3610
3636
|
-N, --no-default Do not load default configuration for plugin
|
|
@@ -5019,6 +5045,9 @@ files browse /
|
|
|
5019
5045
|
files browse / --url=my_private_link
|
|
5020
5046
|
files browse / --url=my_public_link_folder_no_pass
|
|
5021
5047
|
files browse / --url=my_public_link_folder_pass --password=my_public_link_password
|
|
5048
|
+
files browse my_remote_file
|
|
5049
|
+
files browse my_remote_folder
|
|
5050
|
+
files browse my_remote_folder/
|
|
5022
5051
|
files delete /testsrc
|
|
5023
5052
|
files download --transfer=alpha testdst/test_file.bin
|
|
5024
5053
|
files download --transfer=connect testdst/test_file.bin
|
|
@@ -5036,8 +5065,11 @@ files show /
|
|
|
5036
5065
|
files show testdst/test_file.bin
|
|
5037
5066
|
files sync admin status --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
|
|
5038
5067
|
files sync admin status --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
|
|
5068
|
+
files sync start --sync-info=@json:'{"name":"my_aoc_sync1","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
|
|
5039
5069
|
files sync start --sync-info=@json:'{"name":"my_aoc_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/testdst"}}'
|
|
5040
5070
|
files sync start --sync-info=@json:'{"sessions":[{"name":"my_aoc_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/testdst","reset":true}]}'
|
|
5071
|
+
files sync start pull /testdst /data/local_sync --sync-info=@json:'{"reset":true,"quiet":false}'
|
|
5072
|
+
files sync start pull /testdst /data/local_sync --sync-info=@json:'{"sessions":[{"reset":true}]}'
|
|
5041
5073
|
files thumbnail my_test_folder/video_file.mpg
|
|
5042
5074
|
files thumbnail my_test_folder/video_file.mpg --query=@json:'{"text":true,"double":true}'
|
|
5043
5075
|
files transfer push /testsrc --to-folder=/testdst test_file.bin
|
|
@@ -5389,7 +5421,7 @@ Example:
|
|
|
5389
5421
|
- `ascli node browse /` : list files with **gen3/node user** API
|
|
5390
5422
|
- `ascli node access_key do self browse /` : list files with **gen4/access key** API
|
|
5391
5423
|
|
|
5392
|
-
|
|
5424
|
+
#### Browse
|
|
5393
5425
|
|
|
5394
5426
|
Native API parameters can be placed in option `query`.
|
|
5395
5427
|
|
|
@@ -5805,8 +5837,8 @@ ssync summary %name:my_node_sync
|
|
|
5805
5837
|
stream list
|
|
5806
5838
|
sync admin status --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
|
|
5807
5839
|
sync admin status --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
|
|
5840
|
+
sync start --sync-info=@json:'{"name":"my_node_sync1","reset":true,"quiet":false,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
|
|
5808
5841
|
sync start --sync-info=@json:'{"name":"my_node_sync2","reset":true,"direction":"pull","local":{"path":"/data/local_sync"},"remote":{"path":"/aspera-test-dir-tiny"}}'
|
|
5809
|
-
sync start --sync-info=@json:'{"sessions":[{"name":"my_node_sync1","direction":"pull","local_dir":"/data/local_sync","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
|
|
5810
5842
|
transfer list --query=@json:'{"active_only":true}'
|
|
5811
5843
|
transfer sessions
|
|
5812
5844
|
transport
|
|
@@ -6337,6 +6369,14 @@ Then, the postprocessing script executed will be `script1.sh`.
|
|
|
6337
6369
|
|
|
6338
6370
|
Environment variables at set to the values provided by the web hook which are the same as Faspex 4 postprocessing.
|
|
6339
6371
|
|
|
6372
|
+
### Faspex 5: Missing commands
|
|
6373
|
+
|
|
6374
|
+
If a command is missing, then it is still possible to execute command by calling directly the API on the command line using `curl`:
|
|
6375
|
+
|
|
6376
|
+
```bash
|
|
6377
|
+
curl -H "Authorization: $(ascli ascli bearer)" https://faspex5.example.com/aspera/faspex/api/v5/api_endpoint_here
|
|
6378
|
+
```
|
|
6379
|
+
|
|
6340
6380
|
## Plugin: `faspex`: IBM Aspera Faspex v4
|
|
6341
6381
|
|
|
6342
6382
|
> **Note:** For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
|
|
@@ -6573,9 +6613,11 @@ admin user ldap add the_name
|
|
|
6573
6613
|
admin user local list
|
|
6574
6614
|
admin user saml import @json:'{"id":"the_id","name_id":"the_name"}'
|
|
6575
6615
|
files browse /
|
|
6616
|
+
files delete my_share1/new_folder
|
|
6576
6617
|
files delete my_share1/test_file.bin
|
|
6577
6618
|
files download --to-folder=. my_share1/test_file.bin
|
|
6578
6619
|
files download --to-folder=. my_share1/test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://tst.example.com/path@"}'
|
|
6620
|
+
files mkdir my_share1/new_folder
|
|
6579
6621
|
files upload --to-folder=https://shares.share1 'faux:///testfile?1m' --transfer=httpgw --transfer-info=@json:'{"url":"my_example.com/path@","synchronous":true,"api_version":"v1","upload_chunk_size":100000}'
|
|
6580
6622
|
files upload --to-folder=my_share1 test_file.bin
|
|
6581
6623
|
files upload --to-folder=my_share1 test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://tst.example.com/path@"}'
|
|
@@ -6749,6 +6791,8 @@ health
|
|
|
6749
6791
|
> **Note:** Add `ascli faspio` in front of the commands:
|
|
6750
6792
|
|
|
6751
6793
|
```bash
|
|
6794
|
+
bridges create @json:'{"name":"test1","local":{"protocol":"tcp","tls_enabled":false,"port":"3000","bind_address":"127.0.0.1"},"forward":{"protocol":"fasp","tls_enabled":false,"port":"3994","bind_address":"127.0.0.1","host":["10.0.0.1"]}}'
|
|
6795
|
+
bridges delete --bulk=yes @json:@stdin:
|
|
6752
6796
|
bridges list
|
|
6753
6797
|
health
|
|
6754
6798
|
```
|
|
@@ -7087,28 +7131,52 @@ An interface for the `async` utility is provided in the following plugins:
|
|
|
7087
7131
|
- `aoc files sync` (uses node)
|
|
7088
7132
|
- `shares files sync` (uses node)
|
|
7089
7133
|
|
|
7090
|
-
|
|
7134
|
+
One advantage over the `async` command line is the possibility to use a configuration file, using standard options of `ascli`.
|
|
7135
|
+
Moreover `ascli` supports sync with application requiring token-based authorization.
|
|
7091
7136
|
|
|
7092
|
-
|
|
7137
|
+
Some of the `sync` parameters are filled by the related plugin using transfer spec parameters (e.g. including token).
|
|
7093
7138
|
|
|
7094
|
-
> **Note:** All `sync` commands require an `async` enabled license and availability of the `async` executable (and `asyncadmin`).
|
|
7139
|
+
> **Note:** All `sync` commands require an `async` enabled license and availability of the `async` executable (and `asyncadmin`). The Transfer SDK 1.3 includes this.
|
|
7095
7140
|
|
|
7096
|
-
|
|
7141
|
+
`sync` supports 0 or 3 arguments:
|
|
7097
7142
|
|
|
7098
|
-
|
|
7143
|
+
- direction
|
|
7144
|
+
- local folder
|
|
7145
|
+
- remote folder
|
|
7146
|
+
|
|
7147
|
+
Additional options can be provided with option `sync_info`, for which two syntax are possible, as follows.
|
|
7148
|
+
|
|
7149
|
+
### `async` API and conf format
|
|
7099
7150
|
|
|
7100
7151
|
It is the same payload as specified on the option `--conf` of `async` or in node API `/asyncs`.
|
|
7101
7152
|
This is the preferred syntax and allows a single session definition.
|
|
7102
|
-
|
|
7153
|
+
|
|
7154
|
+
> **Note:** No progress, nor error messages is provided on terminal.
|
|
7103
7155
|
|
|
7104
7156
|
Documentation on Async node API can be found on [IBM Developer Portal](https://developer.ibm.com/apis/catalog?search=%22aspera%20sync%20api%22).
|
|
7105
7157
|
|
|
7106
|
-
|
|
7158
|
+
If 3 arguments are provided they are mapped to:
|
|
7159
|
+
|
|
7160
|
+
- `direction`
|
|
7161
|
+
- `local.path`
|
|
7162
|
+
- `remote.path`
|
|
7163
|
+
|
|
7164
|
+
### `async` options mapping
|
|
7107
7165
|
|
|
7108
7166
|
`ascli` defines a JSON equivalent to regular `async`options.
|
|
7109
7167
|
It is based on a JSON representation of `async` command line options.
|
|
7110
7168
|
It allows definition of multiple sync sessions in a single command, although usually only one sync session is defined.
|
|
7111
7169
|
|
|
7170
|
+
This is the mode selection if there is either keys `sessions` or `instance` in option `sync_info`.
|
|
7171
|
+
|
|
7172
|
+
> **Note:** Progress and error messages are provided on terminal like regular command line invocation of `async`.
|
|
7173
|
+
|
|
7174
|
+
If 3 arguments are provided, they are applied to the first (and only) session and mapped to:
|
|
7175
|
+
|
|
7176
|
+
- `direction`
|
|
7177
|
+
- `local_dir`
|
|
7178
|
+
- `remote_dir`
|
|
7179
|
+
|
|
7112
7180
|
## Hot folder
|
|
7113
7181
|
|
|
7114
7182
|
### Requirements
|
data/examples/build_exec
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
if test $# -ne 2; then
|
|
6
|
+
echo "Usage: $0 <CLI_TARGET_EXECUTABLE> <CLI_ENTRY_SCRIPT>" 1>&2
|
|
7
|
+
exit 1
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
CLI_TARGET_EXECUTABLE=$1
|
|
11
|
+
CLI_ENTRY_SCRIPT=$(realpath $2)
|
|
12
|
+
CLI_EXEC_NAME=$(basename $CLI_TARGET_EXECUTABLE)
|
|
13
|
+
CLI_ROOT=$(dirname $(dirname $CLI_ENTRY_SCRIPT))
|
|
14
|
+
|
|
15
|
+
echo "Project folder: $CLI_ROOT"
|
|
16
|
+
echo "Executable: $CLI_TARGET_EXECUTABLE"
|
|
17
|
+
echo "Exec Name: $CLI_EXEC_NAME"
|
|
18
|
+
echo "Entry: $CLI_ENTRY_SCRIPT"
|
|
19
|
+
|
|
20
|
+
# tebako press --root=$(TB_WORK_DIR) --entry-point=ascli --output=$(TB_WORK_DIR)/$(CLI_TARGET_EXECUTABLE) --Ruby=3.2.4
|
|
21
|
+
|
|
22
|
+
if true;then
|
|
23
|
+
tebako_command=tebako
|
|
24
|
+
tebako_args="--root=$CLI_ROOT --entry-point=ascli --output=$CLI_TARGET_EXECUTABLE --Ruby=3.3.3"
|
|
25
|
+
case $(uname -s) in
|
|
26
|
+
Darwin)
|
|
27
|
+
brew update
|
|
28
|
+
brew install gnu-sed bash pkg-config bison flex binutils libffi gdbm zlib \
|
|
29
|
+
ncurses double-conversion boost jemalloc glog libevent libsodium lz4 xz \
|
|
30
|
+
libyaml openssl@3
|
|
31
|
+
# brew install m4
|
|
32
|
+
# boost fmt
|
|
33
|
+
#export PATH=$(dirname $(brew ls m4|grep '/m4$'|head -n 1)):$PATH
|
|
34
|
+
#export PATH=$(dirname $(brew ls binutils|grep '/ar$'|head -n 1)):$PATH
|
|
35
|
+
#tebako_bin=$CLI_ROOT/tmp/tbkbin
|
|
36
|
+
tebako_root=$CLI_ROOT/../tebako-tmp
|
|
37
|
+
#export PATH=$tebako_bin:$PATH
|
|
38
|
+
mkdir -p $tebako_root
|
|
39
|
+
#mkdir -p $tebako_bin
|
|
40
|
+
# need ar from apple
|
|
41
|
+
#rm -f $tebako_bin/ar
|
|
42
|
+
#ln -s /usr/bin/ar $tebako_bin
|
|
43
|
+
export PATH=$(echo $PATH|tr : \\n|grep -v /binutils/|tr \\n :)
|
|
44
|
+
#tebako setup --Ruby=3.3.4 --prefix=$tebako_root
|
|
45
|
+
tebako press --Ruby=3.3.4 --prefix=$tebako_root --root=$CLI_ROOT/examples/tebako --entry-point=ascli --output=$CLI_TARGET_EXECUTABLE
|
|
46
|
+
#tebako press --Ruby=3.3.4 --prefix=$tebako_root --root=$CLI_ROOT --entry-point=$CLI_ENTRY_SCRIPT --output=$CLI_TARGET_EXECUTABLE
|
|
47
|
+
exit 0
|
|
48
|
+
;;
|
|
49
|
+
Linux)
|
|
50
|
+
work_dir=/mnt/w
|
|
51
|
+
tebako press --root=$work_dir --entry-point=ascli --output=$work_dir/ascli.exe --Ruby=3.3.3
|
|
52
|
+
tebako_prefix="podman run -it --rm -v $PWD:$work_dir ghcr.io/tamatebako/tebako-ubuntu-20.04:0.8.6"
|
|
53
|
+
tebako_opts=--patchelf
|
|
54
|
+
;;
|
|
55
|
+
*)
|
|
56
|
+
echo "This OS is not supported." >&2
|
|
57
|
+
exit 1
|
|
58
|
+
;;
|
|
59
|
+
esac
|
|
60
|
+
command $tebako_command $tebako_args
|
|
61
|
+
else
|
|
62
|
+
# https://github.com/you54f/ruby-packer
|
|
63
|
+
# https://github.com/YOU54F/ruby-packer/releases
|
|
64
|
+
set -e
|
|
65
|
+
FOLDER="$(dirname $0)/../tmp"
|
|
66
|
+
RUBYC="$FOLDER/rubyc"
|
|
67
|
+
if test ! -e "$RUBYC"; then
|
|
68
|
+
mkdir -p "$FOLDER"
|
|
69
|
+
case $(uname -sm|tr ' ' -) in
|
|
70
|
+
Darwin-arm64)
|
|
71
|
+
curl -L https://github.com/YOU54F/ruby-packer/releases/download/rel-20230812/rubyc-Darwin-arm64.tar.gz | tar -xz -C "$FOLDER"
|
|
72
|
+
mv "$FOLDER/rubyc-Darwin-arm64" "$RUBYC"
|
|
73
|
+
;;
|
|
74
|
+
Linux-x86_64)
|
|
75
|
+
curl -L https://github.com/YOU54F/ruby-packer/releases/download/rel-20230812/rubyc-Linux-x86_64.tar.gz | tar -xz -C "$FOLDER"
|
|
76
|
+
mv "$FOLDER/rubyc-Linux-x86_64" "$RUBYC"
|
|
77
|
+
;;
|
|
78
|
+
*)
|
|
79
|
+
echo "This architecture is not supported." >&2
|
|
80
|
+
exit 1
|
|
81
|
+
;;
|
|
82
|
+
esac
|
|
83
|
+
fi
|
|
84
|
+
exec "$RUBYC" -o "$CLI_TARGET_EXECUTABLE" "$CLI_ENTRY_SCRIPT"
|
|
85
|
+
fi
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Usage: ./build_package.sh <gem_name> <gem_version>
|
|
3
|
+
# Example: ./build_package.sh aspera-cli 4.18.0
|
|
4
|
+
set -e
|
|
5
|
+
if [ "$#" -ne 2 ]; then
|
|
6
|
+
echo "Usage: $0 <gem_name> <gem_version>"
|
|
7
|
+
exit 1
|
|
8
|
+
fi
|
|
9
|
+
gem_name=$1
|
|
10
|
+
gem_version=$2
|
|
11
|
+
# on macOS, GNU tar is gtar
|
|
12
|
+
GNU_TAR=tar
|
|
13
|
+
if [ "$(uname)" == "Darwin" ]; then
|
|
14
|
+
GNU_TAR=gtar
|
|
15
|
+
fi
|
|
16
|
+
# temp folder to install gems
|
|
17
|
+
tmp_dir_install=.tmp_install
|
|
18
|
+
# clean, if there were left overs
|
|
19
|
+
rm -fr $tmp_dir_install
|
|
20
|
+
# retrieve list of necessary gems
|
|
21
|
+
echo "Getting gems $gem_name $gem_version"
|
|
22
|
+
# install gems in a temporary folder
|
|
23
|
+
gem install $gem_name:$gem_version --no-document --install-dir $tmp_dir_install
|
|
24
|
+
archive=$gem_name-$gem_version-gems.tgz
|
|
25
|
+
# .gem files are located in cache folder
|
|
26
|
+
$GNU_TAR -zcf $archive --directory=$tmp_dir_install/cache/. .
|
|
27
|
+
rm -fr $tmp_dir_install
|
|
28
|
+
echo "Archive: $archive"
|