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
175c9dec
Commit
175c9dec
authored
Jan 30, 2016
by
neil
Browse files
init dnsapi
parent
bb2294e7
Changes
2
Hide whitespace changes
Inline
Side-by-side
dnsapi/dns-cf.sh
0 → 100644
View file @
175c9dec
#!/bin/bash
#
#CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
#
#CF_Email="xxxx@sss.com"
CF_Api
=
"https://api.cloudflare.com/client/v4/"
#Usage: _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns-cf-add
()
{
fulldomain
=
$1
txtvalue
=
$2
_info
"first detect the root zone"
if
!
_get_root
$fulldomain
>
/dev/null
;
then
_err
"invalid domain"
return
1
fi
_cf_rest GET
"/zones/
$_domain_id
/dns_records?type=TXT&name=
$fulldomain
"
if
[
"
$?
"
!=
"0"
]
||
!
printf
$response
|
grep
\"
success
\"
:true
>
/dev/null
;
then
_err
"Error"
return
1
fi
count
=
$(
printf
$response
|
grep
-o
\"
count
\"
:[^,]
*
|
cut
-d
:
-f
2
)
if
[
"
$count
"
==
"0"
]
;
then
_info
"Adding record"
if
_cf_rest GET
"/zones/
$_domain_id
/dns_records?type=TXT&name=
$fulldomain
&content=
$txtvalue
"
;
then
_info
"Added, sleeping 10 seconds"
sleep
10
return
0
fi
_err
"Add txt record error."
else
_info
"Updating record"
record_id
=
$(
printf
$response
|
grep
-o
\"
id
\"
:
\"
[
^
\"
]
*
\"
|
cut
-d
:
-f
2 |
tr
-d
\"
)
_info
"record_id"
$record_id
_cf_rest PUT
"/zones/
$_domain_id
/dns_records/
$record_id
"
"{
\"
id
\"
:
\"
$record_id
\"
,
\"
type
\"
:
\"
TXT
\"
,
\"
name
\"
:
\"
$fulldomain
\"
,
\"
content
\"
:
\"
$txtvalue
\"
,
\"
zone_id
\"
:
\"
$_domain_id
\"
,
\"
zone_name
\"
:
\"
$_domain
\"
}"
if
[
"
$?
"
==
"0"
]
;
then
_info
"Updated, sleeping 10 seconds"
sleep
10
return
0
;
fi
_err
"Update error"
return
1
fi
}
#_acme-challenge.www.domain.com
# _sub_domain=_acme-challenge.www
# _domain=domain.com
# _domain_id=sdjkglgdfewsdfg
_get_root
()
{
domain
=
$1
i
=
2
p
=
1
while
[
'1'
]
;
do
h
=
$(
printf
$domain
|
cut
-d
.
-f
$i
-100
)
if
[
-z
"
$h
"
]
;
then
#not valid
return
1
;
fi
if
!
_cf_get
"zones?name=
$h
"
;
then
return
1
fi
if
printf
$response
|
grep
\"
name
\"
:
\"
$h
\"
;
then
_domain_id
=
$(
printf
$response
|
grep
-o
\"
id
\"
:
\"
[
^
\"
]
*
\"
|
cut
-d
:
-f
2 |
tr
-d
\"
)
if
[
"
$_domain_id
"
]
;
then
_sub_domain
=
$(
printf
$domain
|
cut
-d
.
-f
1-
$p
)
_domain
=
$h
return
0
fi
return
1
fi
p
=
$i
let
"i+=1"
done
return
1
}
_cf_rest
()
{
m
=
$1
ep
=
"
$2
"
echo
$ep
if
[
"
$3
"
]
;
then
data
=
"--data
\"
$3
\"
"
fi
response
=
"
$(
curl
--silent
-X
$m
"
$CF_Api
/
$ep
"
-H
"X-Auth-Email:
$CF_Email
"
-H
"X-Auth-Key:
$CF_Key
"
-H
"Content-Type: application/json"
$data
)
"
if
[
"
$?
"
!=
"0"
]
;
then
echo
$error
$ep
return
1
fi
echo
$response
return
0
}
_debug
()
{
if
[
-z
"
$DEBUG
"
]
;
then
return
fi
if
[
-z
"
$2
"
]
;
then
echo
$1
else
echo
"
$1
"
=
"
$2
"
fi
}
_info
()
{
if
[
-z
"
$2
"
]
;
then
echo
"
$1
"
else
echo
"
$1
"
=
"
$2
"
fi
}
_err
()
{
if
[
-z
"
$2
"
]
;
then
echo
"
$1
"
>
&2
else
echo
"
$1
"
=
"
$2
"
>
&2
fi
}
le.sh
View file @
175c9dec
...
@@ -320,7 +320,6 @@ _initpath() {
...
@@ -320,7 +320,6 @@ _initpath() {
if
[
-z
"
$CA_CERT_PATH
"
]
;
then
if
[
-z
"
$CA_CERT_PATH
"
]
;
then
CA_CERT_PATH
=
"
$WORKING_DIR
/
$domain
/ca.cer"
CA_CERT_PATH
=
"
$WORKING_DIR
/
$domain
/ca.cer"
fi
fi
}
}
...
@@ -619,12 +618,44 @@ issue() {
...
@@ -619,12 +618,44 @@ issue() {
_debug txt
"
$txt
"
_debug txt
"
$txt
"
#dns
#dns
#1. check use api
#1. check use api
_err
"Add the following TXT record:"
d_api
=
""
_err
"Domain:
$txtdomain
"
if
[
-f
"
$WORKING_DIR
/
$d
/
$Le_Webroot
"
]
;
then
_err
"TXT value:
$txt
"
d_api
=
"
$WORKING_DIR
/
$d
/
$Le_Webroot
"
_err
"Please be aware that you prepend _acme-challenge. before your domain"
elif
[
-f
"
$WORKING_DIR
/
$d
/
$Le_Webroot
.sh"
]
;
then
_err
"so the resulting subdomain will be:
$txtdomain
"
d_api
=
"
$WORKING_DIR
/
$d
/
$Le_Webroot
.sh"
#dnsadded='1'
elif
[
-f
"
$WORKING_DIR
/
$Le_Webroot
"
]
;
then
d_api
=
"
$WORKING_DIR
/
$Le_Webroot
"
elif
[
-f
"
$WORKING_DIR
/
$Le_Webroot
.sh"
]
;
then
d_api
=
"
$WORKING_DIR
/
$Le_Webroot
.sh"
fi
if
[
"
$d_api
"
]
;
then
_info
"Found domain api file:
$d_api
"
else
_err
"Add the following TXT record:"
_err
"Domain:
$txtdomain
"
_err
"TXT value:
$txt
"
_err
"Please be aware that you prepend _acme-challenge. before your domain"
_err
"so the resulting subdomain will be:
$txtdomain
"
continue
fi
if
!
source
$d_api
;
then
_err
"Load file
$d_api
error. Please check your api file and try again."
return
1
fi
addcommand
=
"
$Le_Webroot
-add"
if
!
command
-v
$addcommand
;
then
_err
"It seems that your api file is not correct, it must have a function named:
$Le_Webroot
"
return
1
fi
if
!
$addcommand
$txtdomain
$txt
;
then
_err
"Error add txt for domain:
$txtdomain
"
return
1
fi
dnsadded
=
'1'
fi
fi
done
done
...
@@ -806,13 +837,17 @@ renew() {
...
@@ -806,13 +837,17 @@ renew() {
_initpath
$Le_Domain
_initpath
$Le_Domain
if
[
-f
"
$DOMAIN_CONF
"
]
;
then
if
[
!
-f
"
$DOMAIN_CONF
"
]
;
then
source
"
$DOMAIN_CONF
"
_err
"
$Le_Domain
is not a issued domain, skip."
if
[
-z
"
$FORCE
"
]
&&
[
"
$Le_NextRenewTime
"
]
&&
[
"
$(
date
-u
"+%s"
)
"
-lt
"
$Le_NextRenewTime
"
]
;
then
return
1
;
_info
"Skip, Next renewal time is:
$Le_NextRenewTimeStr
"
fi
return
2
fi
source
"
$DOMAIN_CONF
"
if
[
-z
"
$FORCE
"
]
&&
[
"
$Le_NextRenewTime
"
]
&&
[
"
$(
date
-u
"+%s"
)
"
-lt
"
$Le_NextRenewTime
"
]
;
then
_info
"Skip, Next renewal time is:
$Le_NextRenewTimeStr
"
return
2
fi
fi
IS_RENEW
=
"1"
IS_RENEW
=
"1"
issue
"
$Le_Webroot
"
"
$Le_Domain
"
"
$Le_Alt
"
"
$Le_Keylength
"
"
$Le_RealCertPath
"
"
$Le_RealKeyPath
"
"
$Le_RealCACertPath
"
"
$Le_ReloadCmd
"
issue
"
$Le_Webroot
"
"
$Le_Domain
"
"
$Le_Alt
"
"
$Le_Keylength
"
"
$Le_RealCertPath
"
"
$Le_RealKeyPath
"
"
$Le_RealCACertPath
"
"
$Le_ReloadCmd
"
IS_RENEW
=
""
IS_RENEW
=
""
...
...
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