# What's expected
Since in `acme.sh` path strings are concatenated with a hardcoded slash in between, the left operand must never end with a trailing slash for the resulting path to be valid. Otherwise, obviously, the resulting path will have two adjacent slashes in the middle and will not be valid.
# What actually happens
Even though I cannot tell for each of the input params, I know this for sure for the the `--home` argument's value.
If I run `acme.sh` with `--home` argument's value being a path ending in a trailing slash,
```sh
acme.sh ... --debug ... --home /some/path/ ... -d somedomainna.me ...
```
I get the following (distinct) occurrencies of resulting invalid paths containing two adjacent slashes:
```
[...] Using config home:/some/path/
[...] DOMAIN_PATH='/some/path//somedomainna.me'
[...] _CURL='curl --silent --dump-header /some/path//http.header -L -g '
[...] The domain key is here: /some/path//somedomainna.me/somedomainna.me.key
[...] _CURL='curl --silent --dump-header /some/path//http.header -L -g -I '
[...] Your cert is in: /some/path//somedomainna.me/somedomainna.me.cer
[...] Your cert key is in: /some/path//somedomainna.me/somedomainna.me.key
[...] The intermediate CA cert is in: /some/path//somedomainna.me/ca.cer
[...] And the full chain certs is there: /some/path//somedomainna.me/fullchain.cer
```
# Suggested fix
Trim trailing slash in `--home` argument's value from the get-go.
There might be '|' in __val (e.g., SYNO_Password), which will cause that
all content of the conf file is cleared. Fix it by escaping '|'
manually.
Signed-off-by: Adam Tao <tcx4c70@gmail.com>
In our environment we use DNS manual mode and take the TXT record
output of acme.sh and process it with Ansible to install the records
(then we call renew later when the records have been pushed to the DNS
servers by a whole bunch of other bits).
One problem is that after getting/showing the TXT records, acme.sh
always returns 1. This makes it difficult to tell if there is
actually an error condition.
Since we have set the manual-mode flag, not installing the DNS records
is an expected correct result. This returns a separate error code for
this situation (3), which can be distinguished in automation.