소스 검색

fix(start.sh): prompt for network interface only if there is not an internal ip set

Nicolas Meienberger 2 년 전
부모
커밋
0638e2c693
1개의 변경된 파일43개의 추가작업 그리고 20개의 파일을 삭제
  1. 43 20
      scripts/start.sh

+ 43 - 20
scripts/start.sh

@@ -52,27 +52,8 @@ POSTGRES_PASSWORD=$(derive_entropy "postgres")
 TIPI_VERSION=$(get_json_field "${ROOT_FOLDER}/package.json" version)
 TIPI_VERSION=$(get_json_field "${ROOT_FOLDER}/package.json" version)
 storage_path="${ROOT_FOLDER}"
 storage_path="${ROOT_FOLDER}"
 STORAGE_PATH_ESCAPED="$(echo "${storage_path}" | sed 's/\//\\\//g')"
 STORAGE_PATH_ESCAPED="$(echo "${storage_path}" | sed 's/\//\\\//g')"
-NETWORK_INTERFACE="$(ip route | grep default | awk '{print $5}' | uniq)"
-NETWORK_INTERFACE_COUNT=$(echo "$NETWORK_INTERFACE" | wc -l)
 REDIS_HOST=tipi-redis
 REDIS_HOST=tipi-redis
-
-if [[ "$NETWORK_INTERFACE_COUNT" -eq 0 ]]; then
-  echo "No network interface found!"
-  exit 1
-elif [[ "$NETWORK_INTERFACE_COUNT" -gt 1 ]]; then
-  echo "Found multiple network interfaces. Please select one of the following interfaces:"
-  echo "$NETWORK_INTERFACE"
-  while true; do
-    read -rp "> " USER_NETWORK_INTERFACE
-    if echo "$NETWORK_INTERFACE" | grep -x "$USER_NETWORK_INTERFACE"; then
-      NETWORK_INTERFACE="$USER_NETWORK_INTERFACE"
-      break
-    else
-      echo "Please select one of the interfaces above. (CTRL+C to abort)"
-    fi
-  done
-fi
-INTERNAL_IP="$(ip addr show "${NETWORK_INTERFACE}" | grep "inet " | awk '{print $2}' | cut -d/ -f1)"
+INTERNAL_IP=
 
 
 if [[ "$ARCHITECTURE" == "aarch64" ]]; then
 if [[ "$ARCHITECTURE" == "aarch64" ]]; then
   ARCHITECTURE="arm64"
   ARCHITECTURE="arm64"
@@ -148,6 +129,48 @@ while [ -n "${1-}" ]; do
   shift
   shift
 done
 done
 
 
+if [[ -z "${INTERNAL_IP:-}" ]]; then
+  network_interface="$(ip route | grep default | awk '{print $5}' | uniq)"
+  network_interface_count=$(echo "$network_interface" | wc -l)
+
+  if [[ "$network_interface_count" -eq 0 ]]; then
+    echo "No network interface found!"
+    exit 1
+  elif [[ "$network_interface_count" -gt 1 ]]; then
+    echo "Found multiple network interfaces. Please select one of the following interfaces:"
+    echo "$network_interface"
+    while true; do
+      read -rp "> " USER_NETWORK_INTERFACE
+      if echo "$network_interface" | grep -x "$USER_NETWORK_INTERFACE"; then
+        network_interface="$USER_NETWORK_INTERFACE"
+        break
+      else
+        echo "Please select one of the interfaces above. (CTRL+C to abort)"
+      fi
+    done
+  fi
+
+  INTERNAL_IP="$(ip addr show "${network_interface}" | grep "inet " | awk '{print $2}' | cut -d/ -f1)"
+  internal_ip_count=$(echo "$INTERNAL_IP" | wc -l)
+
+  if [[ "$internal_ip_count" -eq 0 ]]; then
+    echo "No IP address found for network interface ${network_interface}! Set the IP address manually with --listen-ip or with the listenIp field in settings.json."
+    exit 1
+  elif [[ "$internal_ip_count" -gt 1 ]]; then
+    echo "Found multiple IP addresses for network interface ${network_interface}. Please select one of the following IP addresses:"
+    echo "$INTERNAL_IP"
+    while true; do
+      read -rp "> " USER_INTERNAL_IP
+      if echo "$INTERNAL_IP" | grep -x "$USER_INTERNAL_IP"; then
+        INTERNAL_IP="$USER_INTERNAL_IP"
+        break
+      else
+        echo "Please select one of the IP addresses above. (CTRL+C to abort)"
+      fi
+    done
+  fi
+fi
+
 # If port is not 80 and domain is not tipi.localhost, we exit
 # If port is not 80 and domain is not tipi.localhost, we exit
 if [[ "${NGINX_PORT}" != "80" ]] && [[ "${DOMAIN}" != "tipi.localhost" ]]; then
 if [[ "${NGINX_PORT}" != "80" ]] && [[ "${DOMAIN}" != "tipi.localhost" ]]; then
   echo "Using a custom domain with a custom port is not supported"
   echo "Using a custom domain with a custom port is not supported"