]> git.proxmox.com Git - mirror_acme.sh.git/commitdiff
add timeout for nc.
authorneil <git@byneil.com>
Tue, 12 Apr 2016 15:18:22 +0000 (23:18 +0800)
committerneil <git@byneil.com>
Tue, 12 Apr 2016 15:18:22 +0000 (23:18 +0800)
le.sh

diff --git a/le.sh b/le.sh
index 407729074e438a61d1eefd9d0068035ab9a0338f..fd38622696388adc24a6e3366b5ab56f8debe595 100755 (executable)
--- a/le.sh
+++ b/le.sh
@@ -618,7 +618,7 @@ _saveaccountconf() {
 
 _startserver() {
   content="$1"
-
+  _debug "startserver: $$"
   nchelp="$(nc -h 2>&1)"
   
   if echo "$nchelp" | grep "\-q[ ,]" >/dev/null ; then
@@ -646,13 +646,24 @@ _startserver() {
     fi
     if [[ "$?" != "0" ]] ; then
       _err "nc listen error."
-      return 1
+      exit 1
     fi
 #  done
 }
 
-_stopserver() {
+_stopserver(){
   pid="$1"
+  _debug "pid" "$pid"
+  if [[ -z "$pid" ]] ; then
+    return
+  fi
+  
+  if [[ "$(ps | grep "$pid" | grep "nc")" ]] ; then
+    _debug "Found nc process, kill it."
+    kill -s 9 $pid > /dev/null 2>&1
+  fi
+  
+  _get "http://localhost:$Le_HTTPPort" >/dev/null 2>$1
 
 }
 
@@ -1184,9 +1195,13 @@ issue() {
       if [[ "$_currentRoot" == "no" ]] ; then
         _info "Standalone mode server"
         _startserver "$keyauthorization" &
+        if [[ "$?" != "0" ]] ; then
+          return 1
+        fi
         serverproc="$!"
         sleep 2
         _debug serverproc $serverproc
+
       else
         if [[ -z "$wellknown_path" ]] ; then
           wellknown_path="$_currentRoot/.well-known/acme-challenge"
@@ -1224,7 +1239,20 @@ issue() {
       return 1
     fi
     
+    waittimes=0
+    if [[ -z "$MAX_RETRY_TIMES" ]] ; then
+      MAX_RETRY_TIMES=30
+    fi
+    
     while [[ "1" ]] ; do
+      let "waittimes+=1"
+      if [[ "$waittimes" -ge "$MAX_RETRY_TIMES" ]] ; then
+        _err "$d:Timeout"
+        _clearupwebbroot "$_currentRoot" "$removelevel" "$token"
+        _clearup
+        return 1
+      fi
+      
       _debug "sleep 5 secs to verify"
       sleep 5
       _debug "checking"
@@ -1946,14 +1974,13 @@ _process() {
         STAGE="1"
         ;;
     --debug)
-        if [[ "$2" == "-"* ]] ; then
+        if [[ "$2" == "-"* ]] || [[ -z "$2" ]]; then
           DEBUG="1"
         else
           DEBUG="$2"
           shift
-        fi
+        fi 
         ;;
-        
     --webroot|-w)
         wvalue="$2"
         if [[ -z "$_webroot" ]] ; then