aspera-cli 4.2.1 → 4.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 89eb5bdf4ecda69281c147ad7e2da3027e98a55316f51774c3504c680c4411e4
4
- data.tar.gz: 5d8f34bf429f575495890b656df0598f94a4ea67aa8d373d756ea7449c729562
3
+ metadata.gz: 69d9db9ef64b0b49f9a0dc83949bc1dbff6934dc158132e4bce6b8fc12a8d0bd
4
+ data.tar.gz: 60a1d6b8cbf0b0d2f7128f8131d31a94166a856eb17197db3578d3aa0e760dff
5
5
  SHA512:
6
- metadata.gz: b5a4c5f67e5f9685a1e11e7c1dc8fce6474157471ca5d5d7ad3583b4318a268a04f2fc3b3dcd84c0866f5ccb41a73596e28921d607311347c9537ec1cacec194
7
- data.tar.gz: 40901b7baa26597164855e3f66b347666e37737315c075027a8dad81054fde424dd78c3e3432cd40093d7bb06af060981f6643b91a766e08ffe9c86b9d673f93
6
+ metadata.gz: 5a918f2f400041eff1655d97829ff5cf64d52a09e1223032823891205cbdeba8109619fd43f9b8ebc7d55022b6e0b72b0f935c357be4b58cfd3a85343431f830
7
+ data.tar.gz: 4927dabefd461997ea0ff07a8a4c2034f767a5925bac6c88faa4370e34d62f1fbca31ba2e8a65ebf723a168da9974c8aacfa8da5662087151f32df1f9e71d4d7
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  [comment1]: # (Do not edit this README.md, edit docs/README.erb.md, for details, read docs/README.md)
2
2
  # `ascli` : Command Line Interface for IBM Aspera products
3
3
 
4
- Version : 4.2.1
4
+ Version : 4.2.2
5
5
 
6
6
  _Laurent/2016-2021_
7
7
 
@@ -81,7 +81,7 @@ Once the gem is installed, `ascli` shall be accessible:
81
81
 
82
82
  ```
83
83
  $ ascli --version
84
- 4.2.1
84
+ 4.2.2
85
85
  ```
86
86
 
87
87
  ## First use
@@ -1267,97 +1267,31 @@ A [_transfer-spec_](#transferspec) is a Hash table, so it is described on the co
1267
1267
 
1268
1268
  ## <a name="transferparams"></a>Transfer Parameters
1269
1269
 
1270
- All standard _transfer-spec_ parameters can be overloaded. To display parameters,
1271
- run in debug mode (--log-level=debug). [_transfer-spec_](#transferspec) can
1272
- also be saved/overridden in the config file.
1270
+ All standard _transfer-spec_ parameters can be speficied.
1271
+ [_transfer-spec_](#transferspec) can also be saved/overridden in the config file.
1273
1272
 
1273
+ References:
1274
+
1275
+ * [Aspera Node API Documentation](https://developer.ibm.com/apis/catalog?search=%22aspera%20node%20api%22)&rarr;/opt/transfers
1276
+ * [Aspera Transfer SDK Documentation](https://developer.ibm.com/apis/catalog?search=%22aspera%20transfer%20sdk%22)&rarr;Guides&rarr;API Ref&rarr;Transfer Spec V1
1277
+
1278
+ Parameters can be displayed with commands:
1279
+
1280
+ ```
1281
+ $ ascli config ascp spec
1282
+ $ ascli config ascp spec --select=@json:'{"f":"Y"}' --fields=-f,n,c
1283
+ ```
1274
1284
 
1275
- <p>
1276
1285
  Columns:
1277
- <ul>
1278
- <li>F=Fasp Manager(local FASP execution)</li>
1279
- <li>N=remote node(node API)</li>
1280
- <li>C=Connect Client(web plugin)</li>
1281
- </ul>
1282
- </p>
1283
- <p>
1284
- Req/Def : Required or default value (- means emty)
1285
- </p>
1286
- <p>
1287
- Fields with EX_ prefix are specific extensions to local mode.
1288
- </p>
1289
- <p>
1290
- arg: related ascp argument or env var suffix (PASS for ASPERA_SCP_PASS)
1291
- </p>
1292
- <p>
1293
- UNDER CONSTRUCTION<br/>
1294
- <a href="https://developer.ibm.com/apis/catalog/?search=aspera">Aspera API Documentation</a>&rarr;Node API&rarr;/opt/transfers<br/>
1295
- </p>
1296
1286
 
1297
- <table>
1298
- <tr><th>Field</th><th>Req/Def</th><th>Type</th><th>F</th><th>N</th><th>C</th><th>arg</th><th>Description</th></tr>
1299
- <tr><td>direction</td><td>Required</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--mode</td><td>Direction: "send" or "receive"</td></tr>
1300
- <tr><td>remote_host</td><td>Required</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--host</td><td>IP or fully qualified domain name of the remote server</td></tr>
1301
- <tr><td>remote_user</td><td>Required</td><td>string</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--user</td><td>Remote user. Default value is "xfer" on node or connect.</td></tr>
1302
- <tr><td>destination_root</td><td>Required</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>last arg</td><td>Destination root directory.</td></tr>
1303
- <tr><td>title</td><td>-</td><td>string</td><td class="no">N</td><td class="yes">Y</td><td class="yes">Y</td><td>-</td><td>Title of the transfer</td></tr>
1304
- <tr><td>tags</td><td>-</td><td>hash</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--tags<br>--tags64</td><td>Metadata for transfer</td></tr>
1305
- <tr><td>token</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>TOKEN<br/>-W</td><td>Authorization token: Bearer, Basic or ATM</td></tr>
1306
- <tr><td>cookie</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>COOKIE</td><td>Metadata for transfer (older,string)</td></tr>
1307
- <tr><td>remote_access_key</td><td>TODO</td><td>string</td><td></td><td></td><td></td><td>?</td><td>Node only?</td></tr>
1308
- <tr><td>source_root</td><td>-</td><td>string</td><td></td><td></td><td></td><td>--source-prefix<br/>--source-prefix64</td><td>Source root directory.(TODO: verify option)</td></tr>
1309
- <tr><td>fasp_port</td><td>33001</td><td>integer</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-O</td><td>Specifies fasp (UDP) port.</td></tr>
1310
- <tr><td>ssh_port</td><td>22 or 33001</td><td>integer</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-P</td><td>Specifies ssh (TCP) port.</td></tr>
1311
- <tr><td>rate_policy</td><td>server config</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--policy</td><td>Valid literals include "low","fair","high" and "fixed".</td></tr>
1312
- <tr><td>symlink_policy</td><td>follow</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--symbolic-links</td><td>copy, follow, copy+force, skip. Default is follow. Handle source side symbolic links by following the link (follow), copying the link itself (copy), skipping (skip), or forcibly copying the link itself (copy+force).</td></tr>
1313
- <tr><td>target_rate_kbps</td><td>-</td><td>integer</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-l</td><td>Specifies desired speed for the transfer.</td></tr>
1314
- <tr><td>min_rate_kbps</td><td>0</td><td>integer</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-m</td><td>Set the minimum transfer rate in kilobits per second.</td></tr>
1315
- <tr><td>cipher</td><td>none</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-c</td><td>in transit encryption type.<br/>none, aes-128, aes-256</td></tr>
1316
- <tr><td>content_protection</td><td>encrypt<br/>decrypt</td><td>string</td><td></td><td></td><td></td><td>--file-crypt=</td><td>encryption at rest</td></tr>
1317
- <tr><td>content_protection_password</td><td>-</td><td>string</td><td></td><td></td><td></td><td>PASS</td><td>Specifies a string password.</td></tr>
1318
- <tr><td>overwrite</td><td>diff</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--overwrite</td><td>Overwrite destination files with the source files of the same name.<br/>never, always, diff, older, or diff+older</td></tr>
1319
- <tr><td>retry_duration</td><td></td><td>string</td><td></td><td></td><td></td><td>TODO</td><td>Specifies how long to wait before retrying transfer. (e.g. "5min")</td></tr>
1320
- <tr><td>http_fallback</td><td></td><td>bool (node), integer</td><td></td><td></td><td></td><td>-y<br/>TODO</td><td>When true(1), attempts to perform an HTTP transfer if a fasp transfer cannot be performed.</td></tr>
1321
- <tr><td>create_dir</td><td></td><td>boolean</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-d</td><td>Specifies whether to create new directories.</td></tr>
1322
- <tr><td>precalculate_job_size</td><td>srv. def.</td><td>boolean</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--precalculate-job-size</td><td>Specifies whether to precalculate the job size.</td></tr>
1323
- <tr><td>delete_source</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>?</td></tr>
1324
- <tr><td>remove_after_transfer</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>Specifies whether to remove file after transfer.</td></tr>
1325
- <tr><td>remove_empty_directories</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>Specifies whether to remove empty directories.</td></tr>
1326
- <tr><td>multi_session</td><td>1</td><td>integer</td><td class="no">N</td><td class="yes">Y</td><td class="no">N</td><td>-C</td><td>Specifies how many parts the transfer is in.</td></tr>
1327
- <tr><td>multi_session_threshold</td><td>null</td><td>integer</td><td class="no">N</td><td class="yes">Y</td><td class="no">N</td><td>-</td><td>in bytes</td></tr>
1328
- <tr><td>exclude_newer_than</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>--exclude-newer-than</td><td>-</td></tr>
1329
- <tr><td>exclude_older_than</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>--exclude-older-than</td><td>-</td></tr>
1330
- <tr><td>preserve_acls</td><td></td><td>string</td><td class="yes">Y</td><td></td><td></td><td>--preserve-acls</td><td>-</td></tr>
1331
- <tr><td>dgram_size</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>-Z</td><td>in bytes</td></tr>
1332
- <tr><td>compression</td><td></td><td>integer</td><td></td><td></td><td></td><td></td><td>ascp4 only, 0 / 1?</td></tr>
1333
- <tr><td>read_threads</td><td></td><td>integer</td><td></td><td></td><td></td><td>-</td><td>ascp4 only</td></tr>
1334
- <tr><td>write_threads</td><td></td><td>integer</td><td></td><td></td><td></td><td>-</td><td>ascp4 only</td></tr>
1335
- <tr><td>use_ascp4</td><td>false</td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>-</td><td>specify version of protocol</td></tr>
1336
- <tr><td>paths</td><td>source files (dest)</td><td>array</td><td></td><td></td><td></td><td>positional<br/>--file-list<br/>--file-pair-list</td><td>Contains a path to the source (required) and a path to the destination.</td></tr>
1337
- <tr><td>http_fallback_port</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>-t</td><td>Specifies http port.</td></tr>
1338
- <tr><td>https_fallback_port</td><td></td><td>integer</td><td></td><td></td><td></td><td>todo</td><td>Specifies https port.</td></tr>
1339
- <tr><td>cipher_allowed</td><td></td><td>string</td><td></td><td></td><td></td><td>-</td><td>returned by node API. Valid literals include "aes-128" and "none".</td></tr>
1340
- <tr><td>target_rate_cap_kbps</td><td></td><td></td><td class="no">N</td><td class="no">?</td><td class="yes">?</td><td>-</td><td>Returned by upload/download_setup node api.</td></tr>
1341
- <tr><td>rate_policy_allowed</td><td></td><td></td><td></td><td></td><td></td><td>-</td><td>returned by node API. Specifies most aggressive rate policy that is allowed. Valid literals include "low", "fair","high" and "fixed".</td></tr>
1342
- <tr><td>ssh_private_key</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>KEY</td><td>Private key used for SSH authentication, Shall look like: `-----BEGIN RSA PRIVATE KEY-----\nMII`<br/>Note the JSON encoding `\` + `n` for newlines.</td></tr>
1343
- <tr><td>remote_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>PASS</td><td>SSH session password</td></tr>
1344
- <tr><td>resume_policy</td><td>faspmgr:<br/>none<br/>other:<br/>sparse_csum</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-k</td><td>none,attrs,sparse_csum,full_csum</td></tr>
1345
- <tr><td>authentication</td><td>-</td><td class="no">N</td><td class="no">N</td><td class="yes">Y</td><td>-</td><td>token: Aspera web keys are provided to allow transparent web based session initiation. on connect: password is not asked. Else, password is asked, and keys are not provided.</td></tr>
1346
- <tr><td>EX_ssh_key_paths</td><td>-</td><td>array</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-i</td><td>Use public key authentication and specify the private key file</td></tr>
1347
- <tr><td>EX_at_rest_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>FILEPASS</td><td>Passphrase used for at rest encryption or decryption</td></tr>
1348
- <tr><td>EX_proxy_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>PROXY_PASS</td><td>TODO</td></tr>
1349
- <tr><td>EX_fasp_proxy_url</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--proxy</td><td>Specify the address of the Aspera high-speed proxy server</td></tr>
1350
- <tr><td>EX_http_proxy_url</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-x</td><td>Specify the proxy server address used by HTTP Fallback</td></tr>
1351
- <tr><td>EX_ascp_args</td><td>-</td><td>array</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>same</td><td>Add command line arguments to ascp</td></tr>
1352
- <tr><td>EX_http_transfer_jpeg</td><td>0</td><td>integer</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-j</td><td>HTTP transfers as JPEG file</td></tr>
1353
- <tr><td>EX_license_text</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>LICENSE</td><td>license file text</td></tr>
1354
- <tr><td>EX_file_list</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--file-list</td><td>source file list</td></tr>
1355
- <tr><td>EX_file_pair_list</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--file-pair-list</td><td>source file pair list</td></tr>
1356
- <tr><td>EX_multi_session_part</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-C</td><td>part for multisession</td></tr>
1357
- <tr><td>EX_no_read</td><td>-</td><td>-</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--no-read</td><td>no read source</td></tr>
1358
- <tr><td>EX_no_write</td><td>-</td><td>-</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--no-write</td><td>no write estination</td></tr>
1359
- </table>
1287
+ * D=Direct (local `ascp` execution)
1288
+ * N=Node API
1289
+ * C=Connect Client
1290
+ * arg=`ascp` argument or environment variable
1360
1291
 
1292
+ Fields with EX_ prefix are extensions to transfer agent `direct`. (only in `ascli`).
1293
+
1294
+ <table><tr><th>Field</th><th>Type</th><th>D</th><th>N</th><th>C</th><th>Description</th></tr><tr><td>cipher</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>In transit encryption type.<br/>none, aes-128, aes-256<br/>Allowed values: aes128, aes192, aes256, aes128cfb, aes192cfb, aes256cfb, aes128gcm, aes192gcm, aes256gcm<br/>(-c)</td></tr><tr><td>content_protection</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Enable client-side content protection. (encryption at rest)<br/>Allowed values: encrypt, decrypt</td></tr><tr><td>content_protection_password</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies CSEAR password.</td></tr><tr><td>cookie</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Metadata for transfer (older,string)<br/>(env:ASPERA_SCP_COOKIE)</td></tr><tr><td>create_dir</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies whether to create new directories.<br/>(-d)</td></tr><tr><td>delete_before_transfer</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--delete-before-transfer)</td></tr><tr><td>delete_source</td><td>bool</td><td>&nbsp;</td><td>Y</td><td>&nbsp;</td><td>Remove SRC files after transfer success</td></tr><tr><td>direction</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Direction of transfer (on client side)<br/>Allowed values: send, receive<br/>(--mode)</td></tr><tr><td>exclude_newer_than</td><td>int</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>skip src files with mtime > arg<br/>(--exclude-newer-than)</td></tr><tr><td>exclude_older_than</td><td>int</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>skip src files with mtime < arg<br/>(--exclude-older-than)</td></tr><tr><td>fasp_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies fasp (UDP) port.<br/>(-O)</td></tr><tr><td>http_fallback</td><td>string<br/>bool</td><td>Y</td><td>Y</td><td>Y</td><td>When true(1), attempts to perform an HTTP transfer if a fasp transfer cannot be performed.<br/>(-y)</td></tr><tr><td>http_fallback_port</td><td>int</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>Specifies http port.<br/>(-t)</td></tr><tr><td>https_fallback_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies https port.</td></tr><tr><td>move_after_transfer</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>(--move-after-transfer)</td></tr><tr><td>multi_session</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>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.</td></tr><tr><td>multi_session_threshold</td><td>int</td><td>Y</td><td>Y</td><td>&nbsp;</td><td>in bytes<br/>(--multi-session-threshold)</td></tr><tr><td>overwrite</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Overwrite destination files with the source files of the same name.<br/>Allowed values: never, always, diff, older, diff+older<br/>(--overwrite)</td></tr><tr><td>paths</td><td>array</td><td>Y</td><td>Y</td><td>Y</td><td>Required. Contains a path to the source (required) and a path to the destination.</td></tr><tr><td>precalculate_job_size</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies whether to precalculate the job size.<br/>(--precalculate-job-size)</td></tr><tr><td>preserve_access_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-access-time)</td></tr><tr><td>preserve_creation_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-creation-time)</td></tr><tr><td>preserve_modification_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-modification-time)</td></tr><tr><td>preserve_times</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-times)</td></tr><tr><td>rate_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>The transfer rate policy to use when sharing bandwidth.<br/>Allowed values: low, fair, high, fixed<br/>(--policy)</td></tr><tr><td>remote_access_key</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Node only?</td></tr><tr><td>remote_host</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>IP or fully qualified domain name of the remote server<br/>(--host)</td></tr><tr><td>remote_user</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Remote user. Default value is "xfer" on node or connect.<br/>(--user)</td></tr><tr><td>remote_password</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>SSH session password<br/>(env:ASPERA_SCP_PASS)</td></tr><tr><td>remove_after_transfer</td><td>bool</td><td>Y</td><td>Y</td><td>&nbsp;</td><td>Remove SRC files after transfer success<br/>(--remove-after-transfer)</td></tr><tr><td>remove_empty_directories</td><td>bool</td><td>Y</td><td>Y</td><td>&nbsp;</td><td>Specifies whether to remove empty directories.<br/>(--remove-empty-directories)</td></tr><tr><td>proxy</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>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)</td></tr><tr><td>resume_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>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)</td></tr><tr><td>retry_duration</td><td>string<br/>int</td><td>&nbsp;</td><td>Y</td><td>Y</td><td>Specifies how long to wait before retrying transfer. (e.g. "5min")</td></tr><tr><td>ssh_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies ssh (TCP) port. Default: local:22, other:33001<br/>(-P)</td></tr><tr><td>ssh_private_key</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>Private key used for SSH authentication.<br/> Shall look like: -----BEGIN RSA PRIVATE KEY-----\nMII...<br/> Note the JSON encoding: \n for newlines.<br/>(env:ASPERA_SCP_KEY)</td></tr><tr><td>symlink_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Handle source side symbolic links by:<br/> following the link (follow),<br/> copying the link itself (copy),<br/> skipping (skip),<br/> or forcibly copying the link itself (copy+force).<br/> Default: follow<br/>Allowed values: follow, copy, copy+force, skip<br/>(--symbolic-links)</td></tr><tr><td>tags</td><td>hash</td><td>Y</td><td>Y</td><td>Y</td><td>Metadata for transfer<br/>(--tags64)</td></tr><tr><td>target_rate_cap_kbps</td><td>int</td><td>&nbsp;</td><td>&nbsp;</td><td>Y</td><td>Returned by upload/download_setup node api.</td></tr><tr><td>target_rate_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies desired speed for the transfer.<br/>(-l)</td></tr><tr><td>title</td><td>string</td><td>&nbsp;</td><td>Y</td><td>Y</td><td>Title of the transfer</td></tr><tr><td>token</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Authorization token: Bearer, Basic or ATM (Also arg -W)<br/>(env:ASPERA_SCP_TOKEN)</td></tr><tr><td>use_ascp4</td><td>bool</td><td>Y</td><td>Y</td><td>&nbsp;</td><td>specify version of protocol</td></tr><tr><td>destination_root</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Destination root directory.</td></tr><tr><td>source_root</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>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)</td></tr><tr><td>min_rate_cap_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr><tr><td>lock_rate_policy</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr><tr><td>lock_target_rate_kbps</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr><tr><td>lock_min_rate_kbps</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr><tr><td>apply_local_docroot</td><td>bool</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>(--apply-local-docroot)</td></tr><tr><td>preserve_acls</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>Preserve access control lists.<br/>Allowable values: none, native, metafile<br/>(--preserve-acls)</td></tr><tr><td>remove_empty_source_directory</td><td>bool</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>TODO: check node, sdk<br/>(--remove-empty-source-directory)</td></tr><tr><td>EX_at_rest_password</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>Passphrase used for at rest encryption or decryption<br/>(env:ASPERA_SCP_FILEPASS)</td></tr><tr><td>EX_proxy_password</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>Password used for Aspera proxy server authentication.<br/> May be overridden by password in URL EX_fasp_proxy_url.<br/>(env:ASPERA_PROXY_PASS)</td></tr><tr><td>EX_license_text</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>License file text override.<br/>By default ascp looks for license file near executable.<br/>(env:ASPERA_SCP_LICENSE)</td></tr><tr><td>dgram_size</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>in bytes<br/>(-Z)</td></tr><tr><td>min_rate_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Set the minimum transfer rate in kilobits per second.<br/>(-m)</td></tr><tr><td>sshfp</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Check it against server SSH host key fingerprint<br/>(--check-sshfp)</td></tr><tr><td>EX_http_proxy_url</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>Specify the proxy server address used by HTTP Fallback<br/>(-x)</td></tr><tr><td>EX_ssh_key_paths</td><td>array</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>Use public key authentication for SSH and specify the private key file paths<br/>(-i)</td></tr><tr><td>EX_http_transfer_jpeg</td><td>int</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>HTTP transfers as JPEG file<br/>(-j)</td></tr><tr><td>EX_no_read</td><td>bool</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>no read source<br/>(--no-read)</td></tr><tr><td>EX_no_write</td><td>bool</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>no write on destination<br/>(--no-write)</td></tr><tr><td>target_rate_percentage</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr><tr><td>rate_policy_allowed</td><td>string</td><td>&nbsp;</td><td>&nbsp;</td><td>Y</td><td>Specifies most aggressive rate policy that is allowed.<br/> Returned by node API.<br/>Allowed values: low, fair, high, fixed</td></tr><tr><td>lock_min_rate</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr><tr><td>lock_target_rate</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr><tr><td>authentication</td><td>string</td><td>&nbsp;</td><td>&nbsp;</td><td>Y</td><td>value=token for SSH bypass keys, else password asked if not provided.</td></tr><tr><td>cipher_allowed</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>returned by node API. Valid literals include "aes-128" and "none".</td></tr><tr><td>EX_file_list</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>source file list</td></tr><tr><td>EX_file_pair_list</td><td>string</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>source file pair list</td></tr><tr><td>EX_ascp_args</td><td>array</td><td>Y</td><td>&nbsp;</td><td>&nbsp;</td><td>Add command line arguments to ascp</td></tr><tr><td>wss_enabled</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr><tr><td>wss_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>&nbsp;</td></tr></table>
1361
1295
 
1362
1296
  ### Destination folder for transfers
1363
1297
 
@@ -1439,7 +1373,7 @@ Source files are located on "Aspera on cloud", when :
1439
1373
 
1440
1374
  ### <a name="multisession"></a>Support of multi-session
1441
1375
 
1442
- Multi session, i.e. starting a transfer of a file set using multiple sessions is supported on "direct" and "node" agents, not yet on connect.
1376
+ Multi session, i.e. starting a transfer of a file set using multiple sessions (one ascp process per session) is supported on "direct" and "node" agents, not yet on connect.
1443
1377
 
1444
1378
  * when agent=node :
1445
1379
 
@@ -1460,6 +1394,7 @@ shall be preferred.
1460
1394
 
1461
1395
  Multi-session spawn is done by `ascli`.
1462
1396
 
1397
+ When multi-session is used, one separate UDP port is used per session (refer to `ascp` manual page).
1463
1398
 
1464
1399
  ### Examples
1465
1400
 
@@ -1508,7 +1443,7 @@ ascli
1508
1443
  ascli -h
1509
1444
  ascli aoc -N remind --username=my_aoc_user_email
1510
1445
  ascli aoc -N servers
1511
- ascli aoc admin analytics transfers --query=@json:'{"status":"completed","direction":"receive"}'
1446
+ ascli aoc admin analytics transfers --query=@json:'{"status":"completed","direction":"receive"}' --notif-to=my_recipient_email --notif-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: <%=ev["files_completed"]%> files received\n\n<%=ev.to_yaml%>}'
1512
1447
  ascli aoc admin ats access_key --id=akibmcloud --secret=somesecret node browse /
1513
1448
  ascli aoc admin ats access_key --id=akibmcloud delete
1514
1449
  ascli aoc admin ats access_key create --cloud=aws --region=my_aws_bucket_region --params=@json:'{"id":"ak_aws","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_aws_bucket_name","credentials":{"access_key_id":"my_aws_bucket_key","secret_access_key":"my_aws_bucket_secret"},"path":"/"}}'
@@ -1613,7 +1548,7 @@ ascli config ascp show
1613
1548
  ascli config check_update
1614
1549
  ascli config doc
1615
1550
  ascli config doc transfer-parameters
1616
- ascli config email_test aspera.user1@gmail.com
1551
+ ascli config email_test --notif-to=my_recipient_email
1617
1552
  ascli config export
1618
1553
  ascli config genkey mykey
1619
1554
  ascli config plugins
@@ -1709,7 +1644,7 @@ ascli server mkdir folder_1/target_hot
1709
1644
  ascli server mv folder_1/200KB.2 folder_1/to.delete
1710
1645
  ascli server upload --sources=@ts --ts=@json:'{"paths":[{"source":"testfile.bin","destination":"NEW_SERVER_FOLDER/othername"}]}'
1711
1646
  ascli server upload --src-type=pair --sources=@json:'["testfile.bin","NEW_SERVER_FOLDER/othername"]'
1712
- ascli server upload --src-type=pair testfile.bin NEW_SERVER_FOLDER/othername
1647
+ ascli server upload --src-type=pair testfile.bin NEW_SERVER_FOLDER/othername --notif-to=my_recipient_email
1713
1648
  ascli server upload --to-folder=folder_1/target_hot --lock-port=12345 --ts=@json:'{"EX_ascp_args":["--remove-after-transfer","--remove-empty-directories","--exclude-newer-than=-8","--src-base","source_hot"]}' source_hot
1714
1649
  ascli server upload testfile.bin --to-folder=NEW_SERVER_FOLDER --ts=@json:'{"multi_session":3,"multi_session_threshold":1,"resume_policy":"none","target_rate_kbps":1500}' --transfer-info=@json:'{"spawn_delay_sec":2.5}' --progress=multi
1715
1650
  ascli shares admin share list
@@ -1734,7 +1669,7 @@ ascli sync start --parameters=@json:'{"sessions":[{"name":"test","reset":true,"r
1734
1669
  ```
1735
1670
  $ ascli -h
1736
1671
  NAME
1737
- ascli -- a command line tool for Aspera Applications (v4.2.1)
1672
+ ascli -- a command line tool for Aspera Applications (v4.2.2)
1738
1673
 
1739
1674
  SYNOPSIS
1740
1675
  ascli COMMANDS [OPTIONS] [ARGS]
@@ -1805,6 +1740,8 @@ OPTIONS:
1805
1740
  --secrets=VALUE secret repository (Hash)
1806
1741
  --sdk-url=VALUE URL to get SDK
1807
1742
  --sdk-folder=VALUE SDK folder location
1743
+ --notif-to=VALUE email recipient for notification of transfers
1744
+ --notif-template=VALUE email ERB template for notification of transfers
1808
1745
  --test-mode=ENUM skip user validation in wizard mode: yes, no
1809
1746
  --version-check-days=VALUE period to check neew version in days (zero to disable)
1810
1747
  --ts=VALUE override transfer spec values (Hash, use @json: prefix), current={"create_dir"=>true}
@@ -1913,7 +1850,7 @@ OPTIONS:
1913
1850
  --source-name=VALUE create package from remote source (by name)
1914
1851
  --storage=VALUE Faspex local storage definition
1915
1852
  --recipient=VALUE use if recipient is a dropbox (with *)
1916
- --box=ENUM package box: inbox, sent, archive
1853
+ --box=ENUM package box: inbox, archive, sent
1917
1854
 
1918
1855
 
1919
1856
  COMMAND: shares2
@@ -1987,7 +1924,6 @@ OPTIONS:
1987
1924
  --new-user-option=VALUE new user creation option
1988
1925
  --from-folder=VALUE share to share source folder
1989
1926
  --scope=VALUE OAuth scope for AoC API calls
1990
- --notify=VALUE notify users that file was received
1991
1927
  --bulk=ENUM bulk operation: yes, no
1992
1928
  --default-ports=ENUM use standard FASP ports or get from node api: yes, no
1993
1929
 
@@ -2234,7 +2170,7 @@ To activate default use of JWT authentication for `ascli` using the [option pres
2234
2170
 
2235
2171
  * change auth method to JWT
2236
2172
  * provide location of private key
2237
- * provide username to login as (OAuthg "subject")
2173
+ * provide username to login as (OAuth "subject")
2238
2174
 
2239
2175
  Execute:
2240
2176
 
@@ -2645,19 +2581,40 @@ The activity app can be queried with:
2645
2581
  $ ascli aoc admin analytics transfers
2646
2582
  ```
2647
2583
 
2648
- It can also support filters and send notification email with a template:
2584
+ It can also support filters and send notification using option `notif_to`. a template is defined using option `notif_template` :
2585
+
2586
+ `mytemplate.erb`:
2587
+
2588
+ ```
2589
+ From: <%=from_name%> <<%=from_email%>>
2590
+ To: <<%=ev['user_email']%>>
2591
+ Subject: <%=ev['files_completed']%> files received
2592
+
2593
+ Dear <%=ev[:user_email.to_s]%>,
2594
+ We received <%=ev['files_completed']%> files for a total of <%=ev['transferred_bytes']%> bytes, starting with file:
2595
+ <%=ev['content']%>
2596
+
2597
+ Thank you.
2598
+ ```
2599
+ The environment provided contains the following additional variable:
2600
+
2601
+ * ev : all details on the transfer event
2602
+
2603
+ Example:
2649
2604
 
2650
2605
  ```
2651
- $ ascli aoc admin analytics transfers --once-only=yes --lock-port=123455 \
2606
+ $ ascli aoc admin analytics transfers --once-only=yes --lock-port=12345 \
2652
2607
  --query=@json:'{"status":"completed","direction":"receive"}' \
2653
- --notify=@json:'{"to":"<''%=transfer[:user_email.to_s]%>","subject":"<''%=transfer[:files_completed.to_s]%> files received","body":"Dear <''%=transfer[:user_email.to_s]%>\nWe received <''%=transfer[:files_completed.to_s]%> files for a total of <''%=transfer[:transferred_bytes.to_s]%> bytes, starting with file:\n<''%=transfer[:content.to_s]%>\n\nThank you."}'
2608
+ --notif-to=active --notif-template=@file:mytemplate.erb
2654
2609
  ```
2655
2610
 
2611
+ Options:
2612
+
2656
2613
  * `once_only` keep track of last date it was called, so next call will get only new events
2657
2614
  * `query` filter (on API call)
2658
2615
  * `notify` send an email as specified by template, this could be places in a file with the `@file` modifier.
2659
2616
 
2660
- Note this must not be executed in less than 5 minutes because the analytics interface accepts only a period of time between 5 minutes and 6 months. here the period is [date of previous execution]..[now].
2617
+ Note this must not be executed in less than 5 minutes because the analytics interface accepts only a period of time between 5 minutes and 6 months. The period is [date of previous execution]..[now].
2661
2618
 
2662
2619
  ## Using specific transfer ports
2663
2620
 
@@ -2908,11 +2865,15 @@ $ ascli node access_key create --value=@json:'{"id":"eudemo-sedemo","secret":"my
2908
2865
 
2909
2866
  3 authentication methods are supported:
2910
2867
 
2911
- * boot
2912
- * web
2913
2868
  * jwt
2869
+ * web
2870
+ * boot
2871
+
2872
+ For JWT, create an API client in Faspex with jwt support, and use: `--auth=jwt`.
2873
+
2874
+ For web method, create an API client in Faspex, and use: --auth=web
2914
2875
 
2915
- For boot method:
2876
+ For boot method: (will be removed in future)
2916
2877
 
2917
2878
  * open a browser
2918
2879
  * start developer mode
@@ -2925,25 +2886,57 @@ Use it as password and use `--auth=boot`.
2925
2886
  $ ascli conf id f5boot update --url=https://localhost/aspera/faspex --auth=boot --password=ABC.DEF.GHI...
2926
2887
  ```
2927
2888
 
2928
- For web method, create an API client in Faspex, and use: --auth=web
2929
-
2930
- For JWT, create an API client in Faspex with jwt supporot, and use: --auth=jwt
2931
- as of beta£3 this does not allow regular users.
2932
-
2933
2889
  Ready to use Faspex5 with CLI.
2934
2890
 
2935
- Once the graphical registration form exist, ther bootstrap method can be removed.
2936
-
2937
2891
  # Plugin: IBM Aspera Faspex (4.x)
2938
2892
 
2939
2893
  Notes:
2940
2894
 
2941
- * the command "v4" requires the use of APIv4, refer to the Faspex Admin manual on how to activate.
2942
- * for full details on Faspex API, refer to: [Reference on Developer Site](https://www.ibm.com/products/aspera/developer)
2895
+ * The command "v4" requires the use of APIv4, refer to the Faspex Admin manual on how to activate.
2896
+ * For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
2897
+
2898
+ ## Listing Packages
2899
+
2900
+ Command: `faspex package list`
2901
+
2902
+ ### Option `box`
2903
+
2904
+ By default it looks in box `inbox`, but the following boxes are also supported: `archive` and `sent`, selected with option `box`.
2905
+
2906
+ ### Option `recipient`
2907
+
2908
+ A user can receive a package because the recipient is:
2909
+
2910
+ * the user himself (default)
2911
+ * the user is part of a dropbox or a workgroup (select with option `recipient` with value `*<name of WG or DB>`
2912
+
2913
+ ### Option `query`
2914
+
2915
+ As inboxes may be large, it is possible to use the following query parameters:
2916
+
2917
+ * `count` : (native) number items in one API call (default=0, equivalent to 10)
2918
+ * `page` : (native) id of page in call (default=0)
2919
+ * `startIndex` : (native) index of item to start, default=0, oldest index=0
2920
+ * `max` : maximum number of items
2921
+ * `pmax` : maximum number of pages
2922
+
2923
+ (SQL query is `LIMIT <startIndex>, <count>`)
2924
+
2925
+ The API is listed in [Faspex 4 API Reference](https://developer.ibm.com/apis/catalog/?search=faspex) under "Services (API v.3)".
2926
+
2927
+ If no parameter `max` or `pmax` is provided, then all packages will be listed in the inbox, which result in paged API calls (using parameter: `count` and `page`). By default page is `0` (`10`), it can be increased to have less calls.
2928
+
2929
+ ### Example
2930
+
2931
+ ```
2932
+ $ ascli faspex package list --box=inbox --recipient='*my_dropbox' --query=@json:'{"max":20,"pmax":2,"count":20}'
2933
+ ```
2934
+
2935
+ List a maximum of 20 items grouped by pages of 20, with maximum 2 pages in received box (inbox) when received in dropbox `*my_dropbox`.
2943
2936
 
2944
2937
  ## Receiving a Package
2945
2938
 
2946
- The command is `package recv`, possible methosd are:
2939
+ The command is `package recv`, possible methods are:
2947
2940
 
2948
2941
  * provide a package id with option `id`
2949
2942
  * provide a public link with option `link`
@@ -2960,7 +2953,7 @@ If the package is in a specific dropbox, add option `recipient` for both the `li
2960
2953
  $ ascli faspex package list --recipient='*thedropboxname'
2961
2954
  ```
2962
2955
 
2963
-
2956
+ if `id` is set to `ALL`, then all packages are downloaded, and if option `once_only`is used, then a persistency file is created to keep track of already downloaded packages.
2964
2957
 
2965
2958
  ## Sending a Package
2966
2959
 
@@ -2979,7 +2972,19 @@ Additional optional parameters in `delivery_info`:
2979
2972
  * Package Note: : `"note":"note this and that"`
2980
2973
  * Package Metadata: `"metadata":{"Meta1":"Val1","Meta2":"Val2"}`
2981
2974
 
2982
- ## operation on dropboxes
2975
+ ## Email notification on transfer
2976
+
2977
+ Like for any transfer, a notification can be sent by email using parameters: `notif_to` and `notif_template` .
2978
+
2979
+ Example:
2980
+
2981
+ ```
2982
+ $ ascli faspex package send --delivery-info=@json:'{"title":"test pkg 1","recipients":["aspera.user1@gmail.com"]}' ~/Documents/Samples/200KB.1 --notif-to=aspera.user1@gmail.com --notif-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: Package sent: <%=ts["tags"]["aspera"]["faspex"]["metadata"]["_pkg_name"]%> files received\n\nTo user: <%=ts["tags"]["aspera"]["faspex"]["recipients"].first["email"]%>}'
2983
+ ```
2984
+
2985
+ In this example the notification template is directly provided on command line. Package information placed in the message are directly taken from the tags in transfer spec. The template can be placed in a file using modifier: `@file:`
2986
+
2987
+ ## Operation on dropboxes
2983
2988
 
2984
2989
  Example:
2985
2990
 
@@ -3397,14 +3402,14 @@ Aspera CLI can send email, for that setup SMTP configuration. This is done with
3397
3402
  The `smtp` option is a hash table (extended value) with the following fields:
3398
3403
  <table>
3399
3404
  <tr><th>field</th><th>default</th><th>example</th><th>description</th></tr>
3400
- <tr><td>server</td><td>-</td><td>smtp.gmail.com</td><td>SMTP server address</td></tr>
3401
- <tr><td>tls</td><td>true</td><td>false</td><td>use of TLS</td></tr>
3402
- <tr><td>port</td><td>587 for tls<br/>25 else</td><td>587</td><td>port for service</td></tr>
3403
- <tr><td>domain</td><td>domain of server</td><td>gmail.com</td><td>email domain of user</td></tr>
3404
- <tr><td>username</td><td>-</td><td>john@example.com</td><td>user to authenticate on SMTP server, leave empty for open auth.</td></tr>
3405
- <tr><td>password</td><td>-</td><td>MyP@ssword</td><td>password for above username</td></tr>
3406
- <tr><td>from\_email</td><td>username if defined</td><td>laurent.martin.l@gmail.com</td><td>address used if received replies</td></tr>
3407
- <tr><td>from\_name</td><td>same as email</td><td>John Wayne</td><td>display name of sender</td></tr>
3405
+ <tr><td>`server`</td><td>-</td><td>smtp.gmail.com</td><td>SMTP server address</td></tr>
3406
+ <tr><td>`tls`</td><td>true</td><td>false</td><td>use of TLS</td></tr>
3407
+ <tr><td>`port`</td><td>587 for tls<br/>25 else</td><td>587</td><td>port for service</td></tr>
3408
+ <tr><td>`domain`</td><td>domain of server</td><td>gmail.com</td><td>email domain of user</td></tr>
3409
+ <tr><td>`username`</td><td>-</td><td>john@example.com</td><td>user to authenticate on SMTP server, leave empty for open auth.</td></tr>
3410
+ <tr><td>`password`</td><td>-</td><td>MyP@ssword</td><td>password for above username</td></tr>
3411
+ <tr><td>`from_email`</td><td>username if defined</td><td>laurent.martin.l@gmail.com</td><td>address used if received replies</td></tr>
3412
+ <tr><td>`from_name`</td><td>same as email</td><td>John Wayne</td><td>display name of sender</td></tr>
3408
3413
  </table>
3409
3414
 
3410
3415
  ## Example of configuration:
@@ -3434,13 +3439,52 @@ $ ascli config id cli_default set smtp @val:@preset:smtp_google
3434
3439
  $ ascli config id default set config cli_default
3435
3440
  ```
3436
3441
 
3442
+ ## Email templates
3443
+
3444
+ Sent emails are built using a template that uses the [ERB](https://www.tutorialspoint.com/ruby/eruby.htm) syntax.
3445
+
3446
+ The template is the full SMTP message, including headers.
3447
+
3448
+ The following variables are defined by default:
3449
+
3450
+ * from_name
3451
+ * from_email
3452
+ * to
3453
+
3454
+ Other variables are defined depending on context.
3455
+
3437
3456
  ## Test
3438
3457
 
3439
3458
  Check settings with `smtp_settings` command. Send test email with `email_test`.
3440
3459
 
3441
3460
  ```
3442
3461
  $ ascli config --smtp=@preset:smtp_google smtp
3443
- $ ascli config --smtp=@preset:smtp_google email sample.dest@example.com
3462
+ $ ascli config --smtp=@preset:smtp_google email --notif-to=sample.dest@example.com
3463
+ ```
3464
+
3465
+ ## Notifications for transfer status
3466
+
3467
+ An e-mail notification can be sent upon transfer success and failure (one email per transfer job, one job being possibly multi session, and possibly after retry).
3468
+
3469
+ To activate, use option `notif_to`.
3470
+
3471
+ A default e-mail template is used, but it can be overriden with option `notif_template`.
3472
+
3473
+ The environment provided contains the following additional variables:
3474
+
3475
+ * subject
3476
+ * body
3477
+ * global_transfer_status
3478
+ * ts
3479
+
3480
+ Example of template:
3481
+
3482
+ ```
3483
+ From: <%=from_name%> <<%=from_email%>>
3484
+ To: <<%=to%>>
3485
+ Subject: <%=subject%>
3486
+
3487
+ Transfer is: <%=global_transfer_status%>
3444
3488
  ```
3445
3489
 
3446
3490
  # Tool: `asession`
@@ -3571,7 +3615,7 @@ Interesting ascp features are found in its arguments: (see ascp manual):
3571
3615
  Note that:
3572
3616
 
3573
3617
  * `ascli` takes transfer parameters exclusively as a transfer_spec, with `--ts` parameter.
3574
- * not all native ascp arguments are available as standard transfer_spec parameters
3618
+ * most, but not all native ascp arguments are available as standard transfer_spec parameters
3575
3619
  * native ascp arguments can be provided with the [_transfer-spec_](#transferspec) parameter: EX_ascp_args (array), only for the "local" transfer agent (not connect or node)
3576
3620
 
3577
3621
  ### server side and configuration
@@ -3668,6 +3712,18 @@ So, it evolved into `ascli`:
3668
3712
 
3669
3713
  # Changes (Release notes)
3670
3714
 
3715
+ * 4.2.2
3716
+
3717
+ * new: `faspex package list` retrieves the whole list, not just first page
3718
+ * new: support web based auth to aoc and faspex 5 using HTTPS, new dependency on gem `webrick`
3719
+ * new: the error "Remote host is not who we expected" displays a special remediation message
3720
+ * new: `conf ascp spec` displays supported transfer spec
3721
+ * new: options `notif_to` and `notif_template` to send email notifications on transfer (and other events)
3722
+ * fix: space character in `faspe:` url are precent encoded if needed
3723
+ * fix: `preview scan`: if file_id is unknown, ignore and continue scan
3724
+ * change: for commands that potentially execute several transfers (`package recv --id=ALL`), if one transfer fails then `ascli` exits with code 1 (instead of zero=success)
3725
+ * change: (break) option `notify` or `aoc` replaced with `notif_to` and `notif_template`
3726
+
3671
3727
  * 4.2.1
3672
3728
 
3673
3729
  * new: command `faspex package recv` supports link of type: `faspe:`
@@ -4092,13 +4148,17 @@ You may either install the suggested Gems, or remove your ed25519 key from your
4092
4148
 
4093
4149
  ## Error "Remote host is not who we expected"
4094
4150
 
4095
- `ascp` version 4.x changed the algorithm used to check the SSH server certificate. To ignore the certificate (SSH fingerprint) add option on client side:
4151
+ Cause: `ascp` >= 4.x checks fingerprint of highest server host key, including ECDSA. `ascp` < 4.0 (3.9.6 and earlier) support only to RSA level (and ignore ECDSA presented by server). `aspera.conf` supports a single fingerprint.
4152
+
4153
+ Workaround on client side: To ignore the certificate (SSH fingerprint) add option on client side (this option can also be added permanently to the config file):
4096
4154
 
4097
4155
  ```
4098
4156
  --ts=@json:'{"sshfp":null}'
4099
4157
  ```
4100
4158
 
4101
- Refer to ES-1944 in release notes of 4.1 and to [HSTS admin manual section "Configuring Transfer Server Authentication With a Host-Key Fingerprint"](https://www.ibm.com/docs/en/ahts/4.2?topic=upgrades-configuring-ssh-server): if you have access to server side, basically disable other SSH host keys than RSA.
4159
+ Workaround on server side: Either remove the fingerprint from `aspera.conf`, or keep only RSA host keys in `sshd_config`.
4160
+
4161
+ References: ES-1944 in release notes of 4.1 and to [HSTS admin manual section "Configuring Transfer Server Authentication With a Host-Key Fingerprint"](https://www.ibm.com/docs/en/ahts/4.2?topic=upgrades-configuring-ssh-server).
4102
4162
 
4103
4163
  ## Miscelaneous
4104
4164
 
data/docs/Makefile CHANGED
@@ -10,9 +10,9 @@ DIR_DOC=
10
10
  INCL_USAGE=$(DIR_TMP)$(EXENAME)_usage.txt
11
11
  INCL_COMMANDS=$(DIR_TMP)$(EXENAME)_commands.txt
12
12
  INCL_ASESSION=$(DIR_TMP)asession_usage.txt
13
- INCL_TRSPEC=$(DIR_DOC)transfer_spec.html
13
+
14
14
  # env var used in README.erb.md
15
- export EXENAME GEMSPEC INCL_USAGE INCL_COMMANDS INCL_ASESSION INCL_TRSPEC
15
+ export EXENAME GEMSPEC INCL_USAGE INCL_COMMANDS INCL_ASESSION
16
16
 
17
17
  TMPL_TEST_CONF=$(DIR_DOC)$(TEST_CONF_FILE_BASE)
18
18
 
@@ -33,8 +33,8 @@ $(MANUAL_PDF): $(DIR_TOP)README.md
33
33
  pandoc --number-sections --resource-path=. --toc -o $(MANUAL_HTML) $(DIR_TOP)README.md
34
34
  wkhtmltopdf toc $(MANUAL_HTML) $(MANUAL_PDF)
35
35
 
36
- $(DIR_TOP)README.md: $(DIR_DOC)README.erb.md $(DIR_DOC)transfer_spec.html $(INCL_COMMANDS) $(INCL_USAGE) $(INCL_ASESSION)
37
- erb -T - --encoding UTF-8:UTF-8 $(DIR_DOC)README.erb.md > $(DIR_TOP)README.md
36
+ $(DIR_TOP)README.md: $(DIR_DOC)README.erb.md $(INCL_COMMANDS) $(INCL_USAGE) $(INCL_ASESSION)
37
+ INCL_DIR_GEM=$(DIR_TOP)lib erb -T - --encoding UTF-8:UTF-8 $(DIR_DOC)README.erb.md > $(DIR_TOP)README.md
38
38
 
39
39
  $(INCL_COMMANDS): $(DIR_TMP).exists $(TEST_MAKEFILE)
40
40
  sed -nEe 's/.*\$$\(EXE_MAN.?\)/$(EXENAME)/p' $(TEST_MAKEFILE) > $(DIR_TMP)usg1.txt