jonssonyan 2 лет назад
Родитель
Сommit
40744bc8b0
2 измененных файлов с 90 добавлено и 80 удалено
  1. 90 74
      install_script.sh
  2. 0 6
      install_script_standalone.sh

+ 90 - 74
install_script.sh

@@ -3,7 +3,7 @@ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
 export PATH
 
 # System Required: CentOS 7+/Ubuntu 18+/Debian 10+
-# Version: v2.1.8
+# Version: v2.2.0
 # Description: One click Install Trojan Panel server
 # Author: jonssonyan <https://jonssonyan.com>
 # Github: https://github.com/trojanpanel/install-script
@@ -34,7 +34,7 @@ init_var() {
   crt_path=""
   key_path=""
 
-  # Caddy
+  # Caddy2
   CADDY_DATA="/tpdata/caddy/"
   CADDY_CONFIG="${CADDY_DATA}config.json"
   CADDY_LOG="${CADDY_DATA}logs/"
@@ -166,7 +166,7 @@ mkdir_tools() {
 
   # Trojan Panel前端
   mkdir -p ${TROJAN_PANEL_UI_DATA}
-  # # Nginx
+  # Nginx
   mkdir -p ${UI_NGINX_DATA}
   touch ${UI_NGINX_CONFIG}
 
@@ -188,6 +188,7 @@ can_connect() {
   fi
 }
 
+# 查询.ini配置文件信息
 get_ini_value() {
   local config_file="$1"
   local key="$2"
@@ -326,37 +327,45 @@ EOF
   fi
 }
 
+# 手动设置证书
 install_custom_cert() {
-  while read -r -p "请输入证书的.crt文件路径(必填): " crt_path; do
-    if [[ -z "${crt_path}" ]]; then
-      echo_content red "路径不能为空"
-    else
-      if [[ ! -f "${crt_path}" ]]; then
-        echo_content red "证书的.crt文件路径不存在"
+  domain=$(cat "${DOMAIN_FILE}")
+  if [[ -z "${domain}" ]]; then
+    while read -r -p "请输入证书的.crt文件路径(必填): " crt_path; do
+      if [[ -z "${crt_path}" ]]; then
+        echo_content red "路径不能为空"
       else
-        cp "${crt_path}" "${CERT_PATH}$1.crt"
-        break
+        if [[ ! -f "${crt_path}" ]]; then
+          echo_content red "证书的.crt文件路径不存在"
+        else
+          cp "${crt_path}" "${CERT_PATH}$1.crt"
+          break
+        fi
       fi
-    fi
-  done
-  while read -r -p "请输入证书的.key文件路径(必填): " key_path; do
-    if [[ -z "${key_path}" ]]; then
-      echo_content red "路径不能为空"
-    else
-      if [[ ! -f "${key_path}" ]]; then
-        echo_content red "证书的.key文件路径不存在"
+    done
+    while read -r -p "请输入证书的.key文件路径(必填): " key_path; do
+      if [[ -z "${key_path}" ]]; then
+        echo_content red "路径不能为空"
       else
-        cp "${key_path}" "${CERT_PATH}$1.key"
-        break
+        if [[ ! -f "${key_path}" ]]; then
+          echo_content red "证书的.key文件路径不存在"
+        else
+          cp "${key_path}" "${CERT_PATH}$1.key"
+          break
+        fi
       fi
-    fi
-  done
-  cat >${DOMAIN_FILE} <<EOF
+    done
+    cat >${DOMAIN_FILE} <<EOF
 $1
 EOF
+    echo_content red "\n=============================================================="
+    echo_content skyBlue "---> 手动设置证书安装完成"
+    echo_content yellow "证书目录: ${CERT_PATH}"
+    echo_content red "\n=============================================================="
+  fi
 }
 
-# Caddy2 https手动设置证书配置文件
+# Caddy2 https手动设置证书路径配置文件
 caddy2_https_config() {
   cat >${CADDY_CONFIG} <<EOF
 {
@@ -685,15 +694,15 @@ install_caddy2() {
 ${domain}
 EOF
       echo_content red "\n=============================================================="
-      echo_content skyBlue "---> Caddy安装完成"
+      echo_content skyBlue "---> Caddy2安装完成"
       echo_content yellow "证书目录: ${CERT_PATH}"
       echo_content red "\n=============================================================="
     else
-      echo_content red "---> Caddy安装失败或运行异常,请尝试修复或卸载重装"
+      echo_content red "---> Caddy2安装失败或运行异常,请尝试修复或卸载重装"
       exit 0
     fi
   else
-    echo_content skyBlue "---> 你已经安装了Caddy"
+    echo_content skyBlue "---> 你已经安装了Caddy2"
   fi
 }
 
@@ -970,24 +979,35 @@ install_redis() {
   fi
 }
 
-# 安装Trojan Panel前端
-install_trojan_panel_ui() {
-  if [[ -z $(docker ps -a -q -f "name=^trojan-panel-ui$") ]]; then
-    echo_content green "---> 安装Trojan Panel前端"
+# Trojan Panel前端Nginx http配置文件
+ui_http_config() {
+  cat >${UI_NGINX_CONFIG} <<-EOF
+server {
+    listen       ${trojan_panel_ui_port};
+    server_name  localhost;
 
-    read -r -p "请输入Trojan Panel后端的IP地址(默认:本机后端): " trojan_panel_ip
-    [[ -z "${trojan_panel_ip}" ]] && trojan_panel_ip="127.0.0.1"
-    read -r -p "请输入Trojan Panel后端的服务端口(默认:8081): " trojan_panel_server_port
-    [[ -z "${trojan_panel_server_port}" ]] && trojan_panel_server_port=8081
+    location / {
+        root   ${TROJAN_PANEL_UI_DATA};
+        index  index.html index.htm;
+    }
 
-    read -r -p "请输入Trojan Panel前端端口(默认:8888): " trojan_panel_ui_port
-    [[ -z "${trojan_panel_ui_port}" ]] && trojan_panel_ui_port="8888"
-    while read -r -p "请选择Trojan Panel前端是否开启https?(0/关闭 1/开启 默认:1/开启): " ui_https; do
-      if [[ -z ${ui_https} || ${ui_https} == 1 ]]; then
-        install_cert
-        domain=$(cat "${DOMAIN_FILE}")
-        # 配置Nginx
-        cat >${UI_NGINX_CONFIG} <<-EOF
+    location /api {
+        proxy_pass http://${trojan_panel_ip}:${trojan_panel_server_port};
+    }
+
+    error_page  497               http://\$host:${trojan_panel_ui_port}\$request_uri;
+
+    error_page   500 502 503 504  /50x.html;
+    location = /50x.html {
+        root   /usr/share/nginx/html;
+    }
+}
+EOF
+}
+
+# Trojan Panel前端Nginx https配置文件
+ui_https_config() {
+  cat >${UI_NGINX_CONFIG} <<-EOF
 server {
     listen       ${trojan_panel_ui_port} ssl;
     server_name  localhost;
@@ -1028,35 +1048,31 @@ server {
     }
 }
 EOF
-        break
-      else
-        if [[ ${ui_https} != 0 ]]; then
-          echo_content red "不可以输入除0和1之外的其他字符"
-        else
-          cat >${UI_NGINX_CONFIG} <<-EOF
-server {
-    listen       ${trojan_panel_ui_port};
-    server_name  localhost;
-
-    location / {
-        root   ${TROJAN_PANEL_UI_DATA};
-        index  index.html index.htm;
-    }
+}
 
-    location /api {
-        proxy_pass http://${trojan_panel_ip}:${trojan_panel_server_port};
-    }
+# 安装Trojan Panel前端
+install_trojan_panel_ui() {
+  if [[ -z $(docker ps -a -q -f "name=^trojan-panel-ui$") ]]; then
+    echo_content green "---> 安装Trojan Panel前端"
 
-    error_page  497               http://\$host:${trojan_panel_ui_port}\$request_uri;
+    read -r -p "请输入Trojan Panel后端的IP地址(默认:本机后端): " trojan_panel_ip
+    [[ -z "${trojan_panel_ip}" ]] && trojan_panel_ip="127.0.0.1"
+    read -r -p "请输入Trojan Panel后端的服务端口(默认:8081): " trojan_panel_server_port
+    [[ -z "${trojan_panel_server_port}" ]] && trojan_panel_server_port=8081
 
-    error_page   500 502 503 504  /50x.html;
-    location = /50x.html {
-        root   /usr/share/nginx/html;
-    }
-}
-EOF
-          break
-        fi
+    read -r -p "请输入Trojan Panel前端端口(默认:8888): " trojan_panel_ui_port
+    [[ -z "${trojan_panel_ui_port}" ]] && trojan_panel_ui_port="8888"
+    while read -r -p "请选择Trojan Panel前端是否开启https?(0/关闭 1/开启 默认:1/开启): " ui_https; do
+      if [[ -z ${ui_https} || ${ui_https} == 1 ]]; then
+        install_custom_cert "custom_cert"
+        domain=$(cat "${DOMAIN_FILE}")
+        ui_https_config
+        break
+      elif [[ ${ui_https} == 0 ]]; then
+        ui_http_config
+        break
+      else
+        echo_content red "不可以输入除0和1之外的其他字符"
       fi
     done
 
@@ -1241,7 +1257,7 @@ install_trojan_panel_core() {
 }
 
 # 更新Trojan Panel数据结构
-update__trojan_panel_database() {
+update_trojan_panel_database() {
   echo_content skyBlue "---> 更新Trojan Panel数据结构"
 
   if [[ "${trojan_panel_current_version}" == "v1.3.1" ]]; then
@@ -1316,7 +1332,7 @@ port=8081' >>${trojan_panel_config_path}
 }
 
 # 更新Trojan Panel内核数据结构
-update__trojan_panel_core_database() {
+update_trojan_panel_core_database() {
   echo_content skyBlue "---> 更新Trojan Panel内核数据结构"
 
   version_204_210=("v2.0.4")
@@ -1411,7 +1427,7 @@ update_trojan_panel() {
     redis_pass=$(get_ini_value ${trojan_panel_config_path} redis.password)
     trojan_panel_port=$(get_ini_value ${trojan_panel_config_path} server.port)
 
-    update__trojan_panel_database
+    update_trojan_panel_database
 
     docker exec trojan-panel-redis redis-cli -h "${redis_host}" -p "${redis_port}" -a "${redis_pass}" -e "flushall" &>/dev/null
 
@@ -1475,7 +1491,7 @@ update_trojan_panel_core() {
     grpc_port=$(get_ini_value ${trojan_panel_core_config_path} grpc.port)
     trojan_panel_core_port=$(get_ini_value ${trojan_panel_core_config_path} server.port)
 
-    update__trojan_panel_core_database
+    update_trojan_panel_core_database
 
     docker exec trojan-panel-redis redis-cli -h "${redis_host}" -p "${redis_port}" -a "${redis_pass}" -e "flushall" &>/dev/null
 

+ 0 - 6
install_script_standalone.sh

@@ -2,12 +2,6 @@
 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
 export PATH
 
-# System Required: CentOS 7+/Ubuntu 18+/Debian 10+
-# Version: v2.1.8
-# Description: One click Install Trojan Panel standalone server
-# Author: jonssonyan <https://jonssonyan.com>
-# Github: https://github.com/trojanpanel/install-script
-
 init_var() {
   ECHO_TYPE="echo -e"