Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
ebaa39b0
Unverified
Commit
ebaa39b0
authored
Apr 01, 2024
by
neil
Committed by
GitHub
Apr 01, 2024
Browse files
Merge pull request #5075 from acmesh-official/dev
sync
parents
6e14a073
fa3d7ad1
Changes
6
Hide whitespace changes
Inline
Side-by-side
acme.sh
View file @
ebaa39b0
...
@@ -2396,13 +2396,18 @@ _migratedomainconf() {
...
@@ -2396,13 +2396,18 @@ _migratedomainconf() {
_old_key
=
"
$1
"
_old_key
=
"
$1
"
_new_key
=
"
$2
"
_new_key
=
"
$2
"
_b64encode
=
"
$3
"
_b64encode
=
"
$3
"
_value
=
$(
_readdomainconf
"
$_old_key
"
)
_old_value
=
$(
_readdomainconf
"
$_old_key
"
)
if
[
-z
"
$_value
"
]
;
then
return
1
# oldkey is not found
fi
_savedomainconf
"
$_new_key
"
"
$_value
"
"
$_b64encode
"
_cleardomainconf
"
$_old_key
"
_cleardomainconf
"
$_old_key
"
_debug
"Domain config
$_old_key
has been migrated to
$_new_key
"
if
[
-z
"
$_old_value
"
]
;
then
return
1
# migrated failed: old value is empty
fi
_new_value
=
$(
_readdomainconf
"
$_new_key
"
)
if
[
-n
"
$_new_value
"
]
;
then
_debug
"Domain config new key exists, old key
$_old_key
='
$_old_value
' has been removed."
return
1
# migrated failed: old value replaced by new value
fi
_savedomainconf
"
$_new_key
"
"
$_old_value
"
"
$_b64encode
"
_debug
"Domain config
$_old_key
has been migrated to
$_new_key
."
}
}
#_migratedeployconf oldkey newkey base64encode
#_migratedeployconf oldkey newkey base64encode
...
@@ -3768,7 +3773,7 @@ _regAccount() {
...
@@ -3768,7 +3773,7 @@ _regAccount() {
eab_sign_t
=
"
$eab_protected64
.
$eab_payload64
"
eab_sign_t
=
"
$eab_protected64
.
$eab_payload64
"
_debug3 eab_sign_t
"
$eab_sign_t
"
_debug3 eab_sign_t
"
$eab_sign_t
"
key_hex
=
"
$(
_durl_replace_base64
"
$_eab_hmac_key
"
| _dbase64
multi
| _hex_dump |
tr
-d
' '
)
"
key_hex
=
"
$(
_durl_replace_base64
"
$_eab_hmac_key
"
| _dbase64 | _hex_dump |
tr
-d
' '
)
"
_debug3 key_hex
"
$key_hex
"
_debug3 key_hex
"
$key_hex
"
eab_signature
=
$(
printf
"%s"
"
$eab_sign_t
"
| _hmac sha256
$key_hex
| _base64 | _url_replace
)
eab_signature
=
$(
printf
"%s"
"
$eab_sign_t
"
| _hmac sha256
$key_hex
| _base64 | _url_replace
)
...
...
deploy/haproxy.sh
View file @
ebaa39b0
...
@@ -36,6 +36,19 @@
...
@@ -36,6 +36,19 @@
# Note: This functionality requires HAProxy was compiled against
# Note: This functionality requires HAProxy was compiled against
# a version of OpenSSL that supports this.
# a version of OpenSSL that supports this.
#
#
# export DEPLOY_HAPROXY_HOT_UPDATE="yes"
# export DEPLOY_HAPROXY_STATS_SOCKET="UNIX:/run/haproxy/admin.sock"
#
# OPTIONAL: Deploy the certificate over the HAProxy stats socket without
# needing to reload HAProxy. Default is "no".
#
# Require the socat binary. DEPLOY_HAPROXY_STATS_SOCKET variable uses the socat
# address format.
#
# export DEPLOY_HAPROXY_MASTER_CLI="UNIX:/run/haproxy-master.sock"
#
# OPTIONAL: To use the master CLI with DEPLOY_HAPROXY_HOT_UPDATE="yes" instead
# of a stats socket, use this variable.
######## Public functions #####################
######## Public functions #####################
...
@@ -46,6 +59,7 @@ haproxy_deploy() {
...
@@ -46,6 +59,7 @@ haproxy_deploy() {
_ccert
=
"
$3
"
_ccert
=
"
$3
"
_cca
=
"
$4
"
_cca
=
"
$4
"
_cfullchain
=
"
$5
"
_cfullchain
=
"
$5
"
_cmdpfx
=
""
# Some defaults
# Some defaults
DEPLOY_HAPROXY_PEM_PATH_DEFAULT
=
"/etc/haproxy"
DEPLOY_HAPROXY_PEM_PATH_DEFAULT
=
"/etc/haproxy"
...
@@ -53,6 +67,8 @@ haproxy_deploy() {
...
@@ -53,6 +67,8 @@ haproxy_deploy() {
DEPLOY_HAPROXY_BUNDLE_DEFAULT
=
"no"
DEPLOY_HAPROXY_BUNDLE_DEFAULT
=
"no"
DEPLOY_HAPROXY_ISSUER_DEFAULT
=
"no"
DEPLOY_HAPROXY_ISSUER_DEFAULT
=
"no"
DEPLOY_HAPROXY_RELOAD_DEFAULT
=
"true"
DEPLOY_HAPROXY_RELOAD_DEFAULT
=
"true"
DEPLOY_HAPROXY_HOT_UPDATE_DEFAULT
=
"no"
DEPLOY_HAPROXY_STATS_SOCKET_DEFAULT
=
"UNIX:/run/haproxy/admin.sock"
_debug _cdomain
"
${
_cdomain
}
"
_debug _cdomain
"
${
_cdomain
}
"
_debug _ckey
"
${
_ckey
}
"
_debug _ckey
"
${
_ckey
}
"
...
@@ -86,6 +102,11 @@ haproxy_deploy() {
...
@@ -86,6 +102,11 @@ haproxy_deploy() {
_savedomainconf Le_Deploy_haproxy_pem_name
"
${
Le_Deploy_haproxy_pem_name
}
"
_savedomainconf Le_Deploy_haproxy_pem_name
"
${
Le_Deploy_haproxy_pem_name
}
"
elif
[
-z
"
${
Le_Deploy_haproxy_pem_name
}
"
]
;
then
elif
[
-z
"
${
Le_Deploy_haproxy_pem_name
}
"
]
;
then
Le_Deploy_haproxy_pem_name
=
"
${
DEPLOY_HAPROXY_PEM_NAME_DEFAULT
}
"
Le_Deploy_haproxy_pem_name
=
"
${
DEPLOY_HAPROXY_PEM_NAME_DEFAULT
}
"
# We better not have '*' as the first character
if
[
"
${
Le_Deploy_haproxy_pem_name
%%
"
${
Le_Deploy_haproxy_pem_name
#?
}
"
}
"
=
'*'
]
;
then
# removes the first characters and add a _ instead
Le_Deploy_haproxy_pem_name
=
"_
${
Le_Deploy_haproxy_pem_name
#?
}
"
fi
fi
fi
# BUNDLE is optional. If not provided then assume "${DEPLOY_HAPROXY_BUNDLE_DEFAULT}"
# BUNDLE is optional. If not provided then assume "${DEPLOY_HAPROXY_BUNDLE_DEFAULT}"
...
@@ -118,6 +139,36 @@ haproxy_deploy() {
...
@@ -118,6 +139,36 @@ haproxy_deploy() {
Le_Deploy_haproxy_reload
=
"
${
DEPLOY_HAPROXY_RELOAD_DEFAULT
}
"
Le_Deploy_haproxy_reload
=
"
${
DEPLOY_HAPROXY_RELOAD_DEFAULT
}
"
fi
fi
# HOT_UPDATE is optional. If not provided then assume "${DEPLOY_HAPROXY_HOT_UPDATE_DEFAULT}"
_getdeployconf DEPLOY_HAPROXY_HOT_UPDATE
_debug2 DEPLOY_HAPROXY_HOT_UPDATE
"
${
DEPLOY_HAPROXY_HOT_UPDATE
}
"
if
[
-n
"
${
DEPLOY_HAPROXY_HOT_UPDATE
}
"
]
;
then
Le_Deploy_haproxy_hot_update
=
"
${
DEPLOY_HAPROXY_HOT_UPDATE
}
"
_savedomainconf Le_Deploy_haproxy_hot_update
"
${
Le_Deploy_haproxy_hot_update
}
"
elif
[
-z
"
${
Le_Deploy_haproxy_hot_update
}
"
]
;
then
Le_Deploy_haproxy_hot_update
=
"
${
DEPLOY_HAPROXY_HOT_UPDATE_DEFAULT
}
"
fi
# STATS_SOCKET is optional. If not provided then assume "${DEPLOY_HAPROXY_STATS_SOCKET_DEFAULT}"
_getdeployconf DEPLOY_HAPROXY_STATS_SOCKET
_debug2 DEPLOY_HAPROXY_STATS_SOCKET
"
${
DEPLOY_HAPROXY_STATS_SOCKET
}
"
if
[
-n
"
${
DEPLOY_HAPROXY_STATS_SOCKET
}
"
]
;
then
Le_Deploy_haproxy_stats_socket
=
"
${
DEPLOY_HAPROXY_STATS_SOCKET
}
"
_savedomainconf Le_Deploy_haproxy_stats_socket
"
${
Le_Deploy_haproxy_stats_socket
}
"
elif
[
-z
"
${
Le_Deploy_haproxy_stats_socket
}
"
]
;
then
Le_Deploy_haproxy_stats_socket
=
"
${
DEPLOY_HAPROXY_STATS_SOCKET_DEFAULT
}
"
fi
# MASTER_CLI is optional. No defaults are used. When the master CLI is used,
# all commands are sent with a prefix.
_getdeployconf DEPLOY_HAPROXY_MASTER_CLI
_debug2 DEPLOY_HAPROXY_MASTER_CLI
"
${
DEPLOY_HAPROXY_MASTER_CLI
}
"
if
[
-n
"
${
DEPLOY_HAPROXY_MASTER_CLI
}
"
]
;
then
Le_Deploy_haproxy_stats_socket
=
"
${
DEPLOY_HAPROXY_MASTER_CLI
}
"
_savedomainconf Le_Deploy_haproxy_stats_socket
"
${
Le_Deploy_haproxy_stats_socket
}
"
_cmdpfx
=
"@1 "
# command prefix used for master CLI only.
fi
# Set the suffix depending if we are creating a bundle or not
# Set the suffix depending if we are creating a bundle or not
if
[
"
${
Le_Deploy_haproxy_bundle
}
"
=
"yes"
]
;
then
if
[
"
${
Le_Deploy_haproxy_bundle
}
"
=
"yes"
]
;
then
_info
"Bundle creation requested"
_info
"Bundle creation requested"
...
@@ -142,12 +193,13 @@ haproxy_deploy() {
...
@@ -142,12 +193,13 @@ haproxy_deploy() {
_issuer
=
"
${
_pem
}
.issuer"
_issuer
=
"
${
_pem
}
.issuer"
_ocsp
=
"
${
_pem
}
.ocsp"
_ocsp
=
"
${
_pem
}
.ocsp"
_reload
=
"
${
Le_Deploy_haproxy_reload
}
"
_reload
=
"
${
Le_Deploy_haproxy_reload
}
"
_statssock
=
"
${
Le_Deploy_haproxy_stats_socket
}
"
_info
"Deploying PEM file"
_info
"Deploying PEM file"
# Create a temporary PEM file
# Create a temporary PEM file
_temppem
=
"
$(
_mktemp
)
"
_temppem
=
"
$(
_mktemp
)
"
_debug _temppem
"
${
_temppem
}
"
_debug _temppem
"
${
_temppem
}
"
cat
"
${
_ccert
}
"
"
${
_cca
}
"
"
${
_ckey
}
"
>
"
${
_temppem
}
"
cat
"
${
_ccert
}
"
"
${
_cca
}
"
"
${
_ckey
}
"
|
grep
.
>
"
${
_temppem
}
"
_ret
=
"
$?
"
_ret
=
"
$?
"
# Check that we could create the temporary file
# Check that we could create the temporary file
...
@@ -265,15 +317,86 @@ haproxy_deploy() {
...
@@ -265,15 +317,86 @@ haproxy_deploy() {
fi
fi
fi
fi
# Reload HAProxy
if
[
"
${
Le_Deploy_haproxy_hot_update
}
"
=
"yes"
]
;
then
_debug _reload
"
${
_reload
}
"
# set the socket name for messages
eval
"
${
_reload
}
"
if
[
-n
"
${
_cmdpfx
}
"
]
;
then
_ret
=
$?
_socketname
=
"master CLI"
if
[
"
${
_ret
}
"
!=
"0"
]
;
then
else
_err
"Error code
${
_ret
}
during reload"
_socketname
=
"stats socket"
return
${
_ret
}
fi
# Update certificate over HAProxy stats socket or master CLI.
if
_exists socat
;
then
# look for the certificate on the stats socket, to chose between updating or creating one
_socat_cert_cmd
=
"echo '
${
_cmdpfx
}
show ssl cert' | socat '
${
_statssock
}
' - | grep -q '^
${
_pem
}
$'
"
_debug _socat_cert_cmd
"
${
_socat_cert_cmd
}
"
eval
"
${
_socat_cert_cmd
}
"
_ret
=
$?
if
[
"
${
_ret
}
"
!=
"0"
]
;
then
_newcert
=
"1"
_info
"Creating new certificate '
${
_pem
}
' over HAProxy
${
_socketname
}
."
# certificate wasn't found, it's a new one. We should check if the crt-list exists and creates/inserts the certificate.
_socat_crtlist_show_cmd
=
"echo '
${
_cmdpfx
}
show ssl crt-list' | socat '
${
_statssock
}
' - | grep -q '^
${
Le_Deploy_haproxy_pem_path
}
$'
"
_debug _socat_crtlist_show_cmd
"
${
_socat_crtlist_show_cmd
}
"
eval
"
${
_socat_crtlist_show_cmd
}
"
_ret
=
$?
if
[
"
${
_ret
}
"
!=
"0"
]
;
then
_err
"Couldn't find '
${
Le_Deploy_haproxy_pem_path
}
' in haproxy 'show ssl crt-list'"
return
"
${
_ret
}
"
fi
# create a new certificate
_socat_new_cmd
=
"echo '
${
_cmdpfx
}
new ssl cert
${
_pem
}
' | socat '
${
_statssock
}
' - | grep -q 'New empty'"
_debug _socat_new_cmd
"
${
_socat_new_cmd
}
"
eval
"
${
_socat_new_cmd
}
"
_ret
=
$?
if
[
"
${
_ret
}
"
!=
"0"
]
;
then
_err
"Couldn't create '
${
_pem
}
' in haproxy"
return
"
${
_ret
}
"
fi
else
_info
"Update existing certificate '
${
_pem
}
' over HAProxy
${
_socketname
}
."
fi
_socat_cert_set_cmd
=
"echo -e '
${
_cmdpfx
}
set ssl cert
${
_pem
}
<<
\n
$(
cat
"
${
_pem
}
"
)
\n
' | socat '
${
_statssock
}
' - | grep -q 'Transaction created'"
_debug _socat_cert_set_cmd
"
${
_socat_cert_set_cmd
}
"
eval
"
${
_socat_cert_set_cmd
}
"
_ret
=
$?
if
[
"
${
_ret
}
"
!=
"0"
]
;
then
_err
"Can't update '
${
_pem
}
' in haproxy"
return
"
${
_ret
}
"
fi
_socat_cert_commit_cmd
=
"echo '
${
_cmdpfx
}
commit ssl cert
${
_pem
}
' | socat '
${
_statssock
}
' - | grep -q '^Success!
$'
"
_debug _socat_cert_commit_cmd
"
${
_socat_cert_commit_cmd
}
"
eval
"
${
_socat_cert_commit_cmd
}
"
_ret
=
$?
if
[
"
${
_ret
}
"
!=
"0"
]
;
then
_err
"Can't commit '
${
_pem
}
' in haproxy"
return
${
_ret
}
fi
if
[
"
${
_newcert
}
"
=
"1"
]
;
then
# if this is a new certificate, it needs to be inserted into the crt-list`
_socat_cert_add_cmd
=
"echo '
${
_cmdpfx
}
add ssl crt-list
${
Le_Deploy_haproxy_pem_path
}
${
_pem
}
' | socat '
${
_statssock
}
' - | grep -q 'Success!'"
_debug _socat_cert_add_cmd
"
${
_socat_cert_add_cmd
}
"
eval
"
${
_socat_cert_add_cmd
}
"
_ret
=
$?
if
[
"
${
_ret
}
"
!=
"0"
]
;
then
_err
"Can't update '
${
_pem
}
' in haproxy"
return
"
${
_ret
}
"
fi
fi
else
_err
"'socat' is not available, couldn't update over
${
_socketname
}
"
fi
else
else
_info
"Reload successful"
# Reload HAProxy
_debug _reload
"
${
_reload
}
"
eval
"
${
_reload
}
"
_ret
=
$?
if
[
"
${
_ret
}
"
!=
"0"
]
;
then
_err
"Error code
${
_ret
}
during reload"
return
${
_ret
}
else
_info
"Reload successful"
fi
fi
fi
return
0
return
0
...
...
deploy/panos.sh
View file @
ebaa39b0
...
@@ -12,6 +12,9 @@
...
@@ -12,6 +12,9 @@
# export PANOS_USER="" #User *MUST* have Commit and Import Permissions in XML API for Admin Role
# export PANOS_USER="" #User *MUST* have Commit and Import Permissions in XML API for Admin Role
# export PANOS_PASS=""
# export PANOS_PASS=""
#
#
# OPTIONAL
# export PANOS_TEMPLATE="" #Template Name of panorama managed devices
#
# The script will automatically generate a new API key if
# The script will automatically generate a new API key if
# no key is found, or if a saved key has expired or is invalid.
# no key is found, or if a saved key has expired or is invalid.
...
@@ -78,6 +81,9 @@ deployer() {
...
@@ -78,6 +81,9 @@ deployer() {
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
key
\"\r\n\r\n
$_panos_key
"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
key
\"\r\n\r\n
$_panos_key
"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
format
\"\r\n\r\n
pem"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
format
\"\r\n\r\n
pem"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
file
\"
; filename=
\"
$(
basename
"
$_cfullchain
"
)
\"
${
nl
}
Content-Type: application/octet-stream
${
nl
}${
nl
}
$(
cat
"
$_cfullchain
"
)
"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
file
\"
; filename=
\"
$(
basename
"
$_cfullchain
"
)
\"
${
nl
}
Content-Type: application/octet-stream
${
nl
}${
nl
}
$(
cat
"
$_cfullchain
"
)
"
if
[
"
$_panos_template
"
]
;
then
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
target-tpl
\"\r\n\r\n
$_panos_template
"
fi
fi
fi
if
[
"
$type
"
=
'key'
]
;
then
if
[
"
$type
"
=
'key'
]
;
then
panos_url
=
"
${
panos_url
}
?type=import"
panos_url
=
"
${
panos_url
}
?type=import"
...
@@ -87,6 +93,9 @@ deployer() {
...
@@ -87,6 +93,9 @@ deployer() {
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
format
\"\r\n\r\n
pem"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
format
\"\r\n\r\n
pem"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
passphrase
\"\r\n\r\n
123456"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
passphrase
\"\r\n\r\n
123456"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
file
\"
; filename=
\"
$(
basename
"
$_cdomain
.key"
)
\"
${
nl
}
Content-Type: application/octet-stream
${
nl
}${
nl
}
$(
cat
"
$_ckey
"
)
"
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
file
\"
; filename=
\"
$(
basename
"
$_cdomain
.key"
)
\"
${
nl
}
Content-Type: application/octet-stream
${
nl
}${
nl
}
$(
cat
"
$_ckey
"
)
"
if
[
"
$_panos_template
"
]
;
then
content
=
"
$content
${
nl
}
--
$delim
${
nl
}
Content-Disposition: form-data; name=
\"
target-tpl
\"\r\n\r\n
$_panos_template
"
fi
fi
fi
#Close multipart
#Close multipart
content
=
"
$content
${
nl
}
--
$delim
--
${
nl
}${
nl
}
"
content
=
"
$content
${
nl
}
--
$delim
--
${
nl
}${
nl
}
"
...
@@ -173,10 +182,20 @@ panos_deploy() {
...
@@ -173,10 +182,20 @@ panos_deploy() {
unset
_panos_key
unset
_panos_key
fi
fi
# PANOS_TEMPLATE
if
[
"
$PANOS_TEMPLATE
"
]
;
then
_debug
"Detected ENV variable PANOS_TEMPLATE. Saving to file."
_savedeployconf PANOS_TEMPLATE
"
$PANOS_TEMPLATE
"
1
else
_debug
"Attempting to load variable PANOS_TEMPLATE from file."
_getdeployconf PANOS_TEMPLATE
fi
#Store variables
#Store variables
_panos_host
=
$PANOS_HOST
_panos_host
=
$PANOS_HOST
_panos_user
=
$PANOS_USER
_panos_user
=
$PANOS_USER
_panos_pass
=
$PANOS_PASS
_panos_pass
=
$PANOS_PASS
_panos_template
=
$PANOS_TEMPLATE
#Test API Key if found. If the key is invalid, the variable _panos_key will be unset.
#Test API Key if found. If the key is invalid, the variable _panos_key will be unset.
if
[
"
$_panos_host
"
]
&&
[
"
$_panos_key
"
]
;
then
if
[
"
$_panos_host
"
]
&&
[
"
$_panos_key
"
]
;
then
...
...
dnsapi/dns_aws.sh
View file @
ebaa39b0
...
@@ -145,7 +145,6 @@ dns_aws_rm() {
...
@@ -145,7 +145,6 @@ dns_aws_rm() {
fi
fi
_sleep 1
_sleep 1
return
1
return
1
}
}
#################### Private functions below ##################################
#################### Private functions below ##################################
...
@@ -207,24 +206,40 @@ _use_container_role() {
...
@@ -207,24 +206,40 @@ _use_container_role() {
}
}
_use_instance_role
()
{
_use_instance_role
()
{
_url
=
"http://169.254.169.254/latest/meta-data/iam/security-credentials/"
_instance_role_name_url
=
"http://169.254.169.254/latest/meta-data/iam/security-credentials/"
_debug
"_url"
"
$_url
"
if
!
_get
"
$_url
"
true
1 | _head_n 1 |
grep
-Fq
200
;
then
if
_get
"
$_instance_role_name_url
"
true
1 | _head_n 1 |
grep
-Fq
401
;
then
_debug
"Using IMDSv2"
_token_url
=
"http://169.254.169.254/latest/api/token"
export
_H1
=
"X-aws-ec2-metadata-token-ttl-seconds: 21600"
_token
=
"
$(
_post
""
"
$_token_url
"
""
"PUT"
)
"
_secure_debug3
"_token"
"
$_token
"
if
[
-z
"
$_token
"
]
;
then
_debug
"Unable to fetch IMDSv2 token from instance metadata"
return
1
fi
export
_H1
=
"X-aws-ec2-metadata-token:
$_token
"
fi
if
!
_get
"
$_instance_role_name_url
"
true
1 | _head_n 1 |
grep
-Fq
200
;
then
_debug
"Unable to fetch IAM role from instance metadata"
_debug
"Unable to fetch IAM role from instance metadata"
return
1
return
1
fi
fi
_aws_role
=
$(
_get
"
$_url
"
""
1
)
_debug
"_aws_role"
"
$_aws_role
"
_instance_role_name
=
$(
_get
"
$_instance_role_name_url
"
""
1
)
_use_metadata
"
$_url$_aws_role
"
_debug
"_instance_role_name"
"
$_instance_role_name
"
_use_metadata
"
$_instance_role_name_url$_instance_role_name
"
"
$_token
"
}
}
_use_metadata
()
{
_use_metadata
()
{
export
_H1
=
"X-aws-ec2-metadata-token:
$2
"
_aws_creds
=
"
$(
_aws_creds
=
"
$(
_get
"
$1
"
""
1 |
_get
"
$1
"
""
1 |
_normalizeJson |
_normalizeJson |
tr
'{,}'
'\n'
|
tr
'{,}'
'\n'
|
while
read
-r
_line
;
do
while
read
-r
_line
;
do
_key
=
"
$(
echo
"
${
_line
%%
:
*
}
"
|
tr
-d
'"'
)
"
_key
=
"
$(
echo
"
${
_line
%%
:
*
}
"
|
tr
-d
'
\
"'
)
"
_value
=
"
${
_line
#*
:
}
"
_value
=
"
${
_line
#*
:
}
"
_debug3
"_key"
"
$_key
"
_debug3
"_key"
"
$_key
"
_secure_debug3
"_value"
"
$_value
"
_secure_debug3
"_value"
"
$_value
"
...
...
dnsapi/dns_kappernet.sh
View file @
ebaa39b0
...
@@ -41,7 +41,7 @@ dns_kappernet_add() {
...
@@ -41,7 +41,7 @@ dns_kappernet_add() {
_debug _domain
"DOMAIN:
$_domain
"
_debug _domain
"DOMAIN:
$_domain
"
_info
"Trying to add TXT DNS Record"
_info
"Trying to add TXT DNS Record"
data
=
"%7B%22name%22%3A%22
$fullhostname
%22%2C%22type%22%3A%22TXT%22%2C%22content%22%3A%22
$txtvalue
%22%2C%22ttl%22%3A%223
6
00%22%2C%22prio%22%3A%22%22%7D"
data
=
"%7B%22name%22%3A%22
$fullhostname
%22%2C%22type%22%3A%22TXT%22%2C%22content%22%3A%22
$txtvalue
%22%2C%22ttl%22%3A%22300%22%2C%22prio%22%3A%22%22%7D"
if
_kappernet_api GET
"action=new&subject=
$_domain
&data=
$data
"
;
then
if
_kappernet_api GET
"action=new&subject=
$_domain
&data=
$data
"
;
then
if
_contains
"
$response
"
"{
\"
OK
\"
:true"
;
then
if
_contains
"
$response
"
"{
\"
OK
\"
:true"
;
then
...
@@ -81,7 +81,7 @@ dns_kappernet_rm() {
...
@@ -81,7 +81,7 @@ dns_kappernet_rm() {
_saveaccountconf_mutable KAPPERNETDNS_Secret
"
$KAPPERNETDNS_Secret
"
_saveaccountconf_mutable KAPPERNETDNS_Secret
"
$KAPPERNETDNS_Secret
"
_info
"Trying to remove the TXT Record:
$fullhostname
containing
$txtvalue
"
_info
"Trying to remove the TXT Record:
$fullhostname
containing
$txtvalue
"
data
=
"%7B%22name%22%3A%22
$fullhostname
%22%2C%22type%22%3A%22TXT%22%2C%22content%22%3A%22
$txtvalue
%22%2C%22ttl%22%3A%223
6
00%22%2C%22prio%22%3A%22%22%7D"
data
=
"%7B%22name%22%3A%22
$fullhostname
%22%2C%22type%22%3A%22TXT%22%2C%22content%22%3A%22
$txtvalue
%22%2C%22ttl%22%3A%22300%22%2C%22prio%22%3A%22%22%7D"
if
_kappernet_api GET
"action=del&subject=
$fullhostname
&data=
$data
"
;
then
if
_kappernet_api GET
"action=del&subject=
$fullhostname
&data=
$data
"
;
then
if
_contains
"
$response
"
"{
\"
OK
\"
:true"
;
then
if
_contains
"
$response
"
"{
\"
OK
\"
:true"
;
then
return
0
return
0
...
...
dnsapi/dns_limacity.sh
0 → 100644
View file @
ebaa39b0
#!/usr/bin/env sh
# Created by Laraveluser
#
# Pass credentials before "acme.sh --issue --dns dns_limacity ..."
# --
# export LIMACITY_APIKEY="<API-KEY>"
# --
#
# Pleas note: APIKEY must have following roles: dns.admin, domains.reader
######## Public functions #####################
LIMACITY_APIKEY
=
"
${
LIMACITY_APIKEY
:-
$(
_readaccountconf_mutable LIMACITY_APIKEY
)
}
"
AUTH
=
$(
printf
"%s"
"api:
$LIMACITY_APIKEY
"
| _base64
-w
0
)
export
_H1
=
"Authorization: Basic
$AUTH
"
export
_H2
=
"Content-Type: application/json"
APIBASE
=
https://www.lima-city.de/usercp
#Usage: dns_limacity_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_limacity_add
()
{
_debug LIMACITY_APIKEY
"
$LIMACITY_APIKEY
"
if
[
"
$LIMACITY_APIKEY
"
=
""
]
;
then
_err
"No Credentials given"
return
1
fi
# save the dns server and key to the account conf file.
_saveaccountconf_mutable LIMACITY_APIKEY
"
${
LIMACITY_APIKEY
}
"
fulldomain
=
$1
txtvalue
=
$2
if
!
_lima_get_domain_id
"
$fulldomain
"
;
then return
1
;
fi
msg
=
$(
_post
"{
\"
nameserver_record
\"
:{
\"
name
\"
:
\"
${
fulldomain
}
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
content
\"
:
\"
${
txtvalue
}
\"
,
\"
ttl
\"
:60}}"
"
${
APIBASE
}
/domains/
${
LIMACITY_DOMAINID
}
/records.json"
""
"POST"
)
_debug
"
$msg
"
if
[
"
$(
echo
"
$msg
"
| _egrep_o
"
\"
status
\"
:
\"
ok
\"
"
)
"
=
""
]
;
then
_err
"
$msg
"
return
1
fi
return
0
}
#Usage: dns_limacity_rm _acme-challenge.www.domain.com
dns_limacity_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
if
!
_lima_get_domain_id
"
$fulldomain
"
;
then return
1
;
fi
for
recordId
in
$(
_get
"
${
APIBASE
}
/domains/
${
LIMACITY_DOMAINID
}
/records.json"
| _egrep_o
"{
\"
id
\"
:[0-9]*[^}]*,
\"
name
\"
:
\"
${
fulldomain
}
\"
"
| _egrep_o
"[0-9]*"
)
;
do
_post
""
"
${
APIBASE
}
/domains/
${
LIMACITY_DOMAINID
}
/records/
${
recordId
}
"
""
"DELETE"
done
return
0
}
#################### Private functions below ##################################
_lima_get_domain_id
()
{
domain
=
"
$1
"
_debug
"
$domain
"
i
=
2
p
=
1
domains
=
$(
_get
"
${
APIBASE
}
/domains.json"
)
if
[
"
$(
echo
"
$domains
"
| _egrep_o
"
\{
.*""domains"""
)
"
]
;
then
response
=
"
$(
echo
"
$domains
"
|
tr
-d
"
\n
"
|
tr
'{'
"|"
|
sed
's/|/&{/g'
|
tr
"|"
"
\n
"
)
"
while
true
;
do
h
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
$i
-100
)
_debug h
"
$h
"
if
[
-z
"
$h
"
]
;
then
#not valid
return
1
fi
hostedzone
=
"
$(
echo
"
$response
"
| _egrep_o
"
\{
.*""unicode_fqdn""[^,]+""
$h
"".*
\}
"
)
"
if
[
"
$hostedzone
"
]
;
then
LIMACITY_DOMAINID
=
$(
printf
"%s
\n
"
"
$hostedzone
"
| _egrep_o
"
\"
id
\"
:
\s
*[0-9]+"
| _head_n 1 |
cut
-d
:
-f
2 |
tr
-d
\
)
if
[
"
$LIMACITY_DOMAINID
"
]
;
then
_sub_domain
=
$(
printf
"%s"
"
$domain
"
|
cut
-d
.
-f
1-
$p
)
_domain
=
$h
return
0
fi
return
1
fi
p
=
$i
i
=
$(
_math
"
$i
"
+ 1
)
done
fi
return
1
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment