Commit Graph

43 Commits (e3c4c9265dfe2d2816e68dfe310d5f6fcda4f25b)

Author SHA1 Message Date
Martin Arndt 0d7b831661
Fix variable initialization 2 years ago
Martin Arndt 0c9e4f67a8
Update synology_dsm.sh
Split "[ && ]" into "[ ] && [ ]" to make ShellCheck happy
2 years ago
Martin Arndt db3f131dfc
Re-add deprecated SYNO_TOTP_SECRET part for legacy compatibility
As requested in acmesh-official/acme.sh/pull/4646 by Neil Pang
2 years ago
Martin Arndt 0548ad2fc6
Fix debug output of session ID 2 years ago
Martin Arndt 623d615cd7
Remove external OTP dependency from synology_dsm.sh
Also adapt to DSM 7's API improvements.
2 years ago
Markus Lippert a7dd86de71
fix(deploy-synology_dsm): support DID with DSM 7 2 years ago
John Elliott 3a99a77104 Update return statement 3 years ago
John Elliott 5ce8050e46 Update missing oathtool check 3 years ago
John Elliott 5ae3a020bd Add err log for missing oathtool in Synology
Alerts the user that the oathtool is missing and the TOTP can't be
generated.
3 years ago
Nasser Alansari 4635dacf7f Add SYNO_TOTP_SECRET for user with two-factor authentication 3 years ago
Miguel Angelo a31ed4a723 Notify user about a possible problem when using synology_dsm.sh with 2fa enabled user account 3 years ago
Brian Hartvigsen dcb51683c5
shellcheck cleanup
shellcheck sees '\\' as trying to escape the trailing quote (see
koalaman/shellcheck#1548 ).
4 years ago
Brian Hartvigsen 74a4a788b1
Make certificate descriptions sed safe
This escapes special characters used in POSIX sed to prevent mismatches.
e.g. `SYNO_Certficiate=*.example.com` would not match a description of
"*.example.com" and would look to match any number of double quotes (the
last character in the sed regex prior to certificate description),
followed by any single character, followed by "example", followed by any
character, followed by "com".

After this change, it will properly match `*.example.com` and not
`""zexamplefcom`.

Additionally we now store the certificate description as base64 encoded
to prevent issues with single quotes.

Tested on DSM 7.0-41222 (VDSM) and DSM 6.2.4-25556 (DS1515+).
4 years ago
Brian Hartvigsen 5ab9ca1c0d
Better fix for Synology DSM setting wrong default
As noted by @buxm, previous fix didn't work for all versions of DSM 6.
The better fix appears to be simply not outputting the "as_default"
parameter unless we are doing something with the default certificate.
4 years ago
Brian Hartvigsen 1a4a180e8c
FIX: Synology sets "default" on wrong certificate
For some DSM installs, it appears that setting the "default" flag to the
string "false" actually sets it to true.  This causes Synology to set
the last updated certificate to be the default certificate.  Using an
empty string appears to still be accepted as a false-y value for DSMs
where this isn't happening and corrects the behavior in the cases that
it was.

Credit to @Run-King for identifying the fix and @buxm for reporting.
4 years ago
Brian Hartvigsen 2635dfef96
Shellcheck linting
Also removed unused code
4 years ago
Brian Hartvigsen 7d7789ae96
Support DSM 6 and 7
Small changes for DSM 6:

All fields (except enable_syno_token as explained below) must either be in the GET params or the POST params, you can't mix GET and POST params
enable_syno_token=yes must be in both the GET and POST params.
If enable_syno_token=yes is only in the POST fields, then DSM6 returns a synotoken of --------. If enable_syno_token=yes is only in the GET params, then it returns no synotoken at all. It must be in both to work.
Need to use /webapi/auth.cgi instead of /webapi/entry.cgi
Verified with DSM 6.2.3-25426 Update 2 and DSM 7.0-40850
4 years ago
Thijn cc69285420
Fix synology_dsm deployhook for DSM 7 4 years ago
Brian Hartvigsen 99d3a283ef
Use POST for login
This allows us to get the cookie and the token (as it appears to be only in the body in DSM 7.)  HTTP_HEADERS is only guarenteed to be output with POST for both wget and curl.
4 years ago
Brian Hartvigsen 5f5096e1d4
Addressing issues found in DS218+ DSM
DS218+ appears to have a slighly different DSM that sends back headers in lowercase.

Reported by @BartSiwek in #2727
5 years ago
neil 341f000b9c
Merge pull request #2947 from kref/patch-1
fix octal escapes for printf %b format
5 years ago
kref 0deea53931
fix octal escapes for printf %b format
Stop it from misinterpreting a following digit as part of the escape sequence
5 years ago
Brian Hartvigsen 694194be2f
Shellcheck fix
SYNO_Certificate gets set by _getdeployconf, so this may be an empty string but that's fine
5 years ago
Brian Hartvigsen c7f61f8b80
Allow rotating the default certificate which has no description
This means, by default, we will rotate the default certificate that comes with the DSM
5 years ago
Brian Hartvigsen 3a7c7fe4e8
Fix shellcheck issues 5 years ago
Brian Hartvigsen 668967a719
If SYNO_Create is not set here, print the nice message 5 years ago
Brian Hartvigsen d15c14ab93
Fix support for wget
I'm actually not entirely sure why/how this worked with curl but not wget, but it did.  The short answer is that using a GET does not result in the HTTP_HEADER file being written, instead you must pass in the http_headers param ($2) which will return the HTTP headers as a string.  Luckily, the Token is in both the body and the header.  We need it and the id (and smid if 2fa) cookie to proceed.  So now we parrse the response for that instead of the HTTP_HEADER file.

Interesting side note: wget is fine if the URL contains a \r or \n, but curl will barf on it.  So we need to make sure those are stripped from the token as it will be passed in the URL later.
5 years ago
Brian Hartvigsen 52b81608a1
need to _url_encode anything sent in GET requests
Fixes issue raised by @tatablack
5 years ago
Markus Lippert fd64c20807 store device ID 5 years ago
Markus Lippert 80f1034dd6 add OTP support 5 years ago
Brian Hartvigsen 1b475cf9f3
Remove -q from greps 5 years ago
Brian Hartvigsen d07172a528
Replace disabled linter with variable substituion 5 years ago
Brian Hartvigsen 79637097ba
Use _utc_date 5 years ago
Brian Hartvigsen 1259341095
Use deployconf properly 5 years ago
Brian Hartvigsen 5d3bc95ac5
Fix some debug output 5 years ago
Brian Hartvigsen de25232a73
Allow creating new certificates when certificate is not found 5 years ago
Brian Hartvigsen 95769de464
Fix shfmt/shellcheck issues 5 years ago
Brian Hartvigsen 52a168b961
Stop using jq/curl directly
This is a lot more fragile then the previous code due to treating JSON as just a string
5 years ago
Brian Hartvigsen b3b00b6700
Using domainconf instead of account 5 years ago
Brian Hartvigsen 8e8cda132c
Remove boilerplate from what I used for template 5 years ago
Brian Hartvigsen 6459ccb185
Cleanup shfmt warnings 5 years ago
Brian Hartvigsen 548f83c3ad
Cleanup shellcheck errors 5 years ago
Brian Hartvigsen 555e0de9e4
Initial support for Synology DSM
This allows you to update a key on a Synology DSM using the existing API.
Handles restarting the necessary services the certificate is attached to and all other internal stuff (copying the certificate around, etc.)

This is way less error prone than most articles I've found on how to update a Synology DSM certificate.
5 years ago