Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
1fb306c9
Unverified
Commit
1fb306c9
authored
Apr 06, 2020
by
neil
Committed by
GitHub
Apr 06, 2020
Browse files
Merge pull request #2841 from aattww/master
Add support for Joker.com
parents
47883a94
c064b389
Changes
1
Show whitespace changes
Inline
Side-by-side
dnsapi/dns_joker.sh
0 → 100644
View file @
1fb306c9
#!/usr/bin/env sh
# Joker.com API for acme.sh
#
# This script adds the necessary TXT record to a domain in Joker.com.
#
# You must activate Dynamic DNS in Joker.com DNS configuration first.
# Username and password below refer to Dynamic DNS authentication,
# not your Joker.com login credentials.
# See: https://joker.com/faq/content/11/427/en/what-is-dynamic-dns-dyndns.html
#
# NOTE: This script does not support wildcard certificates, because
# Joker.com API does not support adding two TXT records with the same
# subdomain. Adding the second record will overwrite the first one.
# See: https://joker.com/faq/content/6/496/en/let_s-encrypt-support.html
# "... this request will replace all TXT records for the specified
# label by the provided content"
#
# Author: aattww (https://github.com/aattww/)
#
# Report bugs to https://github.com/acmesh-official/acme.sh/issues/2840
#
# JOKER_USERNAME="xxxx"
# JOKER_PASSWORD="xxxx"
JOKER_API
=
"https://svc.joker.com/nic/replace"
######## Public functions #####################
#Usage: dns_joker_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_joker_add
()
{
fulldomain
=
$1
txtvalue
=
$2
JOKER_USERNAME
=
"
${
JOKER_USERNAME
:-
$(
_readaccountconf_mutable JOKER_USERNAME
)
}
"
JOKER_PASSWORD
=
"
${
JOKER_PASSWORD
:-
$(
_readaccountconf_mutable JOKER_PASSWORD
)
}
"
if
[
-z
"
$JOKER_USERNAME
"
]
||
[
-z
"
$JOKER_PASSWORD
"
]
;
then
_err
"No Joker.com username and password specified."
return
1
fi
_saveaccountconf_mutable JOKER_USERNAME
"
$JOKER_USERNAME
"
_saveaccountconf_mutable JOKER_PASSWORD
"
$JOKER_PASSWORD
"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"Invalid domain"
return
1
fi
_info
"Adding TXT record"
if
_joker_rest
"username=
$JOKER_USERNAME
&password=
$JOKER_PASSWORD
&zone=
$_domain
&label=
$_sub_domain
&type=TXT&value=
$txtvalue
"
;
then
if
_startswith
"
$response
"
"OK"
;
then
_info
"Added, OK"
return
0
fi
fi
_err
"Error adding TXT record."
return
1
}
#fulldomain txtvalue
dns_joker_rm
()
{
fulldomain
=
$1
txtvalue
=
$2
JOKER_USERNAME
=
"
${
JOKER_USERNAME
:-
$(
_readaccountconf_mutable JOKER_USERNAME
)
}
"
JOKER_PASSWORD
=
"
${
JOKER_PASSWORD
:-
$(
_readaccountconf_mutable JOKER_PASSWORD
)
}
"
if
!
_get_root
"
$fulldomain
"
;
then
_err
"Invalid domain"
return
1
fi
_info
"Removing TXT record"
# TXT record is removed by setting its value to empty.
if
_joker_rest
"username=
$JOKER_USERNAME
&password=
$JOKER_PASSWORD
&zone=
$_domain
&label=
$_sub_domain
&type=TXT&value="
;
then
if
_startswith
"
$response
"
"OK"
;
then
_info
"Removed, OK"
return
0
fi
fi
_err
"Error removing TXT record."
return
1
}
#################### Private functions below ##################################
#_acme-challenge.www.domain.com
#returns
# _sub_domain=_acme-challenge.www
# _domain=domain.com
_get_root
()
{
fulldomain
=
$1
i
=
1
while
true
;
do
h
=
$(
printf
"%s"
"
$fulldomain
"
|
cut
-d
.
-f
$i
-100
)
_debug h
"
$h
"
if
[
-z
"
$h
"
]
;
then
return
1
fi
# Try to remove a test record. With correct root domain, username and password this will return "OK: ..." regardless
# of record in question existing or not.
if
_joker_rest
"username=
$JOKER_USERNAME
&password=
$JOKER_PASSWORD
&zone=
$h
&label=jokerTXTUpdateTest&type=TXT&value="
;
then
if
_startswith
"
$response
"
"OK"
;
then
_sub_domain
=
"
$(
echo
"
$fulldomain
"
|
sed
"s/
\\
.
$h
\$
//"
)
"
_domain
=
$h
return
0
fi
fi
i
=
$(
_math
"
$i
"
+ 1
)
done
_debug
"Root domain not found"
return
1
}
_joker_rest
()
{
data
=
"
$1
"
_debug data
"
$data
"
if
!
response
=
"
$(
_post
"
$data
"
"
$JOKER_API
"
""
"POST"
)
"
;
then
_err
"Error POSTing"
return
1
fi
_debug response
"
$response
"
return
0
}
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