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
073ca4bf
Commit
073ca4bf
authored
Apr 19, 2016
by
neil
Browse files
support sh
parents
f321c3c7
0cca2128
Changes
5
Show whitespace changes
Inline
Side-by-side
acme.sh
View file @
073ca4bf
#!/usr/bin/env
ba
sh
#!/usr/bin/env sh
VER
=
2.2.
1
VER
=
2.2.
2
PROJECT_NAME
=
"acme.sh"
PROJECT_NAME
=
"acme.sh"
...
@@ -28,6 +28,13 @@ if [ -z "$AGREEMENT" ] ; then
...
@@ -28,6 +28,13 @@ if [ -z "$AGREEMENT" ] ; then
fi
fi
_URGLY_PRINTF
=
""
if
[
"
$(
printf
'\x41'
)
"
!=
'A'
]
;
then
_URGLY_PRINTF
=
1
fi
_info
()
{
_info
()
{
if
[
-z
"
$2
"
]
;
then
if
[
-z
"
$2
"
]
;
then
echo
"[
$(
date
)
]
$1
"
echo
"[
$(
date
)
]
$1
"
...
@@ -84,18 +91,72 @@ _exists(){
...
@@ -84,18 +91,72 @@ _exists(){
return
$ret
return
$ret
}
}
#a + b
_math
(){
expr
"
$@
"
}
_h_char_2_dec
()
{
_ch
=
$1
case
"
${
_ch
}
"
in
a|A
)
echo
-n
10
;;
b|B
)
echo
-n
11
;;
c|C
)
echo
-n
12
;;
d|D
)
echo
-n
13
;;
e|E
)
echo
-n
14
;;
f|F
)
echo
-n
15
;;
*
)
echo
-n
$_ch
;;
esac
}
_h2b
()
{
_h2b
()
{
hex
=
$(
cat
)
hex
=
$(
cat
)
i
=
1
i
=
1
j
=
2
j
=
2
if
_exists
let
;
then
uselet
=
"1"
fi
_debug uselet
"
$uselet
"
_debug _URGLY_PRINTF
"
$_URGLY_PRINTF
"
while
[
'1'
]
;
do
while
[
'1'
]
;
do
if
[
-z
"
$_URGLY_PRINTF
"
]
;
then
h
=
$(
printf
$hex
|
cut
-c
$i
-
$j
)
h
=
$(
printf
$hex
|
cut
-c
$i
-
$j
)
if
[
-z
"
$h
"
]
;
then
if
[
-z
"
$h
"
]
;
then
break
;
break
;
fi
fi
printf
"
\x
$h
"
printf
"
\x
$h
"
let
"i+=2"
else
let
"j+=2"
ic
=
$(
printf
$hex
|
cut
-c
$i
)
jc
=
$(
printf
$hex
|
cut
-c
$j
)
if
[
-z
"
$ic$jc
"
]
;
then
break
;
fi
ic
=
"
$(
_h_char_2_dec
$ic
)
"
jc
=
"
$(
_h_char_2_dec
$jc
)
"
printf
'\'
"
$(
printf
%o
"
$(
_math
$ic
\*
16 +
$jc
)
"
)
"
fi
if
[
"
$uselet
"
]
;
then
let
"i+=2"
>
/dev/null
let
"j+=2"
>
/dev/null
else
i
=
"
$(
_math
$i
+ 2
)
"
j
=
"
$(
_math
$j
+ 2
)
"
fi
done
done
}
}
...
@@ -133,7 +194,7 @@ _getfile() {
...
@@ -133,7 +194,7 @@ _getfile() {
_err
"Can not find start line:
$startline
"
_err
"Can not find start line:
$startline
"
return
1
return
1
fi
fi
let
"i+=1
"
i
=
"
$(
_math
$i
+ 1
)
"
_debug i
$i
_debug i
$i
j
=
"
$(
grep
-n
--
"
$endline
"
$filename
|
cut
-d
:
-f
1
)
"
j
=
"
$(
grep
-n
--
"
$endline
"
$filename
|
cut
-d
:
-f
1
)
"
...
@@ -141,7 +202,7 @@ _getfile() {
...
@@ -141,7 +202,7 @@ _getfile() {
_err
"Can not find end line:
$endline
"
_err
"Can not find end line:
$endline
"
return
1
return
1
fi
fi
let
"j-=1
"
j
=
"
$(
_math
$j
- 1
)
"
_debug j
$j
_debug j
$j
sed
-n
$i
,
${
j
}
p
"
$filename
"
sed
-n
$i
,
${
j
}
p
"
$filename
"
...
@@ -427,7 +488,8 @@ _calcjwk() {
...
@@ -427,7 +488,8 @@ _calcjwk() {
_debug2 e
"
$e
"
_debug2 e
"
$e
"
modulus
=
$(
openssl rsa
-in
$keyfile
-modulus
-noout
|
cut
-d
'='
-f
2
)
modulus
=
$(
openssl rsa
-in
$keyfile
-modulus
-noout
|
cut
-d
'='
-f
2
)
n
=
$(
echo
$modulus
| _h2b | _base64 | _urlencode
)
_debug2 modulus
"
$modulus
"
n
=
$(
echo
-n
$modulus
| _h2b | _base64 | _urlencode
)
jwk
=
'{"e": "'
$e
'", "kty": "RSA", "n": "'
$n
'"}'
jwk
=
'{"e": "'
$e
'", "kty": "RSA", "n": "'
$n
'"}'
_debug2 jwk
"
$jwk
"
_debug2 jwk
"
$jwk
"
...
@@ -440,28 +502,28 @@ _calcjwk() {
...
@@ -440,28 +502,28 @@ _calcjwk() {
_debug2 crv
$crv
_debug2 crv
$crv
pubi
=
"
$(
openssl ec
-in
$keyfile
-noout
-text
2>/dev/null |
grep
-n
pub: |
cut
-d
:
-f
1
)
"
pubi
=
"
$(
openssl ec
-in
$keyfile
-noout
-text
2>/dev/null |
grep
-n
pub: |
cut
-d
:
-f
1
)
"
pubi
=
$(
_math
$pubi
+ 1
)
_debug2 pubi
$pubi
_debug2 pubi
$pubi
let
"pubi=pubi+1"
pubj
=
"
$(
openssl ec
-in
$keyfile
-noout
-text
2>/dev/null |
grep
-n
"ASN1 OID:"
|
cut
-d
:
-f
1
)
"
pubj
=
"
$(
openssl ec
-in
$keyfile
-noout
-text
2>/dev/null |
grep
-n
"ASN1 OID:"
|
cut
-d
:
-f
1
)
"
pubj
=
$(
_math
$pubj
+ 1
)
_debug2 pubj
$pubj
_debug2 pubj
$pubj
let
"pubj=pubj-1"
pubtext
=
"
$(
openssl ec
-in
$keyfile
-noout
-text
2>/dev/null |
sed
-n
"
$pubi
,
${
pubj
}
p"
|
tr
-d
"
\n\r
"
)
"
pubtext
=
"
$(
openssl ec
-in
$keyfile
-noout
-text
2>/dev/null |
sed
-n
"
$pubi
,
${
pubj
}
p"
|
tr
-d
"
\n\r
"
)
"
_debug2 pubtext
"
$pubtext
"
_debug2 pubtext
"
$pubtext
"
xlen
=
"
$(
printf
"
$pubtext
"
|
tr
-d
':'
|
wc
-c
)
"
xlen
=
"
$(
printf
"
$pubtext
"
|
tr
-d
':'
|
wc
-c
)
"
let
"xlen=xlen/4"
xlen
=
$(
_math
$xlen
/ 4
)
_debug2 xlen
$xlen
_debug2 xlen
$xlen
let
"xend=xlen+1"
xend
=
$(
_math
$xend
+ 1
)
x
=
"
$(
printf
$pubtext
|
cut
-d
:
-f
2-
$xend
)
"
x
=
"
$(
printf
$pubtext
|
cut
-d
:
-f
2-
$xend
)
"
_debug2 x
$x
_debug2 x
$x
x64
=
"
$(
printf
$x
|
tr
-d
: | _h2b | _base64 | _urlencode
)
"
x64
=
"
$(
printf
$x
|
tr
-d
: | _h2b | _base64 | _urlencode
)
"
_debug2 x64
$x64
_debug2 x64
$x64
let
"xend+=1"
xend
=
$(
_math
$xend
+ 1
)
y
=
"
$(
printf
$pubtext
|
cut
-d
:
-f
$xend
-10000
)
"
y
=
"
$(
printf
$pubtext
|
cut
-d
:
-f
$xend
-10000
)
"
_debug2 y
$y
_debug2 y
$y
...
@@ -658,12 +720,12 @@ _startserver() {
...
@@ -658,12 +720,12 @@ _startserver() {
_debug
"_NC"
"
$_NC
"
_debug
"_NC"
"
$_NC
"
# while true ; do
# while true ; do
if
[
"
$DEBUG
"
]
;
then
if
[
"
$DEBUG
"
]
;
then
if
!
echo
-e
-n
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
|
$_NC
-p
$Le_HTTPPort
;
then
if
!
printf
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
|
$_NC
-p
$Le_HTTPPort
;
then
echo
-e
-n
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
|
$_NC
$Le_HTTPPort
;
printf
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
|
$_NC
$Le_HTTPPort
;
fi
fi
else
else
if
!
echo
-e
-n
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
|
$_NC
-p
$Le_HTTPPort
>
/dev/null 2>&1
;
then
if
!
printf
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
|
$_NC
-p
$Le_HTTPPort
>
/dev/null 2>&1
;
then
echo
-e
-n
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
|
$_NC
$Le_HTTPPort
>
/dev/null 2>&1
printf
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
|
$_NC
$Le_HTTPPort
>
/dev/null 2>&1
fi
fi
fi
fi
if
[
"
$?
"
!=
"0"
]
;
then
if
[
"
$?
"
!=
"0"
]
;
then
...
@@ -1122,7 +1184,7 @@ issue() {
...
@@ -1122,7 +1184,7 @@ issue() {
_currentRoot
=
"
$_w
"
_currentRoot
=
"
$_w
"
fi
fi
_debug
"_currentRoot"
"
$_currentRoot
"
_debug
"_currentRoot"
"
$_currentRoot
"
let
"
_index
+=1"
_index
=
$(
_math
$
_index
+ 1
)
vtype
=
"
$VTYPE_HTTP
"
vtype
=
"
$VTYPE_HTTP
"
if
_startswith
"
$_currentRoot
"
"dns"
;
then
if
_startswith
"
$_currentRoot
"
"dns"
;
then
...
@@ -1317,7 +1379,7 @@ issue() {
...
@@ -1317,7 +1379,7 @@ issue() {
fi
fi
while
[
"1"
]
;
do
while
[
"1"
]
;
do
let
"
waittimes
+=1"
waittimes
=
$(
_math
$
waittimes
+ 1
)
if
[
"
$waittimes
"
-ge
"
$MAX_RETRY_TIMES
"
]
;
then
if
[
"
$waittimes
"
-ge
"
$MAX_RETRY_TIMES
"
]
;
then
_err
"
$d
:Timeout"
_err
"
$d
:Timeout"
_clearupwebbroot
"
$_currentRoot
"
"
$removelevel
"
"
$token
"
_clearupwebbroot
"
$_currentRoot
"
"
$removelevel
"
"
$token
"
...
@@ -1424,7 +1486,7 @@ issue() {
...
@@ -1424,7 +1486,7 @@ issue() {
_setopt
"
$DOMAIN_CONF
"
"Le_RenewalDays"
"="
"
$Le_RenewalDays
"
_setopt
"
$DOMAIN_CONF
"
"Le_RenewalDays"
"="
"
$Le_RenewalDays
"
let
"
Le_NextRenewTime=Le_CertCreateTime
+
Le_RenewalDays
*24*60*
60
"
Le_NextRenewTime
=
$(
_math
$
Le_CertCreateTime
+
$
Le_RenewalDays
\*
24
\*
60
\*
60
)
_setopt
"
$DOMAIN_CONF
"
"Le_NextRenewTime"
"="
"
$Le_NextRenewTime
"
_setopt
"
$DOMAIN_CONF
"
"Le_NextRenewTime"
"="
"
$Le_NextRenewTime
"
Le_NextRenewTimeStr
=
$(
_time2str
$Le_NextRenewTime
)
Le_NextRenewTimeStr
=
$(
_time2str
$Le_NextRenewTime
)
...
@@ -1787,6 +1849,19 @@ _precheck() {
...
@@ -1787,6 +1849,19 @@ _precheck() {
return
0
return
0
}
}
_setShebang
()
{
_file
=
"
$1
"
_shebang
=
"
$2
"
if
[
-z
"
$_shebang
"
]
;
then
_err
"Usage: file shebang"
return
1
fi
cp
"
$_file
"
"
$_file
.tmp"
echo
"
$_shebang
"
>
"
$_file
"
sed
-n
2,99999p
"
$_file
.tmp"
>>
"
$_file
"
rm
-f
"
$_file
.tmp"
}
install
()
{
install
()
{
if
!
_initpath
;
then
if
!
_initpath
;
then
...
@@ -1881,6 +1956,20 @@ install() {
...
@@ -1881,6 +1956,20 @@ install() {
installcronjob
installcronjob
if
[
-z
"
$NO_DETECT_SH
"
]
;
then
#Modify shebang
if
_exists bash
;
then
_info
"Good, bash is installed, change the shebang to use bash as prefered."
_shebang
=
'#!/usr/bin/env bash'
_setShebang
"
$LE_WORKING_DIR
/
$PROJECT_ENTRY
"
"
$_shebang
"
if
[
-d
"
$LE_WORKING_DIR
/dnsapi"
]
;
then
for
_apifile
in
$(
ls
"
$LE_WORKING_DIR
/dnsapi/"
*
.sh
)
;
do
_setShebang
"
$_apifile
"
"
$_shebang
"
done
fi
fi
fi
_info OK
_info OK
}
}
...
...
dnsapi/dns_cf.sh
View file @
073ca4bf
#!/usr/bin/env
ba
sh
#!/usr/bin/env sh
#
#
...
@@ -112,7 +112,7 @@ _get_root() {
...
@@ -112,7 +112,7 @@ _get_root() {
return
1
return
1
fi
fi
p
=
$i
p
=
$i
let
"i+=1"
i
=
$(
expr
$i
+ 1
)
done
done
return
1
return
1
}
}
...
...
dnsapi/dns_cx.sh
View file @
073ca4bf
#!/usr/bin/env
ba
sh
#!/usr/bin/env sh
# Cloudxns.com Domain api
# Cloudxns.com Domain api
#
#
...
@@ -159,7 +159,7 @@ _get_root() {
...
@@ -159,7 +159,7 @@ _get_root() {
return
1
return
1
fi
fi
p
=
$i
p
=
$i
let
"i+=1"
i
=
$(
expr
$i
+ 1
)
done
done
return
1
return
1
}
}
...
...
dnsapi/dns_dp.sh
View file @
073ca4bf
#!/usr/bin/env
ba
sh
#!/usr/bin/env sh
# Dnspod.cn Domain api
# Dnspod.cn Domain api
#
#
...
@@ -165,7 +165,7 @@ _get_root() {
...
@@ -165,7 +165,7 @@ _get_root() {
return
1
return
1
fi
fi
p
=
$i
p
=
$i
let
"i+=1"
i
=
$(
expr
$i
+ 1
)
done
done
return
1
return
1
}
}
...
...
dnsapi/dns_myapi.sh
View file @
073ca4bf
#!/usr/bin/env
ba
sh
#!/usr/bin/env sh
#Here is a sample custom api script.
#Here is a sample custom api script.
#This file name is "dns_myapi.sh"
#This file name is "dns_myapi.sh"
...
...
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