feat: 在创建 .env 文件时自动生成随机密码和密钥
- 添加 generate_random_string 函数生成随机字符串 - 自动生成 DB_PASSWORD(32 字符) - 自动生成 JWT_SECRET(64 字符) - 自动生成 ADMIN_RESET_PASSWORD_KEY(32 字符) - 更新提示信息,显示生成的值的前 8 个字符 - 适用于 deploy.sh 和 backend/deploy.sh
This commit is contained in:
+23
-10
@@ -126,14 +126,27 @@ deploy_docker() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 生成随机字符串
|
||||||
|
generate_random_string() {
|
||||||
|
local length=${1:-32}
|
||||||
|
openssl rand -hex $length 2>/dev/null || \
|
||||||
|
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
|
||||||
|
}
|
||||||
|
|
||||||
# 创建 .env 文件(如果不存在)
|
# 创建 .env 文件(如果不存在)
|
||||||
if [ ! -f ".env" ]; then
|
if [ ! -f ".env" ]; then
|
||||||
warn ".env 文件不存在,创建示例文件..."
|
warn ".env 文件不存在,创建示例文件..."
|
||||||
|
|
||||||
|
# 生成随机值
|
||||||
|
DB_PASSWORD=$(generate_random_string 32)
|
||||||
|
JWT_SECRET=$(generate_random_string 64)
|
||||||
|
ADMIN_RESET_KEY=$(generate_random_string 32)
|
||||||
|
|
||||||
cat > .env <<EOF
|
cat > .env <<EOF
|
||||||
# 数据库配置
|
# 数据库配置
|
||||||
DB_URL=jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true
|
DB_URL=jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true
|
||||||
DB_USERNAME=root
|
DB_USERNAME=root
|
||||||
DB_PASSWORD=your_password_here
|
DB_PASSWORD=${DB_PASSWORD}
|
||||||
|
|
||||||
# Spring Profile
|
# Spring Profile
|
||||||
SPRING_PROFILES_ACTIVE=prod
|
SPRING_PROFILES_ACTIVE=prod
|
||||||
@@ -144,17 +157,17 @@ SERVER_PORT=8000
|
|||||||
# Polygon RPC
|
# Polygon RPC
|
||||||
POLYGON_RPC_URL=https://polygon-rpc.com
|
POLYGON_RPC_URL=https://polygon-rpc.com
|
||||||
|
|
||||||
# JWT 密钥(生产环境必须修改)
|
# JWT 密钥(已自动生成随机值,生产环境建议修改)
|
||||||
JWT_SECRET=your-jwt-secret-key-change-in-production
|
JWT_SECRET=${JWT_SECRET}
|
||||||
|
|
||||||
# 管理员密码重置密钥(生产环境必须修改)
|
# 管理员密码重置密钥(已自动生成随机值,生产环境建议修改)
|
||||||
ADMIN_RESET_PASSWORD_KEY=your-admin-reset-key-change-in-production
|
ADMIN_RESET_PASSWORD_KEY=${ADMIN_RESET_KEY}
|
||||||
EOF
|
EOF
|
||||||
error ".env 文件已创建,请先编辑配置相关参数后再运行部署脚本"
|
info ".env 文件已创建,已自动生成随机密码和密钥"
|
||||||
error "特别是以下参数必须修改:"
|
warn "生产环境建议修改以下参数:"
|
||||||
error " - DB_PASSWORD: 数据库密码"
|
warn " - DB_PASSWORD: 数据库密码(当前: ${DB_PASSWORD:0:8}...)"
|
||||||
error " - JWT_SECRET: JWT 密钥(生产环境)"
|
warn " - JWT_SECRET: JWT 密钥(当前: ${JWT_SECRET:0:8}...)"
|
||||||
error " - ADMIN_RESET_PASSWORD_KEY: 管理员密码重置密钥(生产环境)"
|
warn " - ADMIN_RESET_PASSWORD_KEY: 管理员密码重置密钥(当前: ${ADMIN_RESET_KEY:0:8}...)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -39,15 +39,28 @@ check_docker() {
|
|||||||
info "Docker 环境检查通过"
|
info "Docker 环境检查通过"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 生成随机字符串
|
||||||
|
generate_random_string() {
|
||||||
|
local length=${1:-32}
|
||||||
|
openssl rand -hex $length 2>/dev/null || \
|
||||||
|
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
|
||||||
|
}
|
||||||
|
|
||||||
# 创建 .env 文件(如果不存在)
|
# 创建 .env 文件(如果不存在)
|
||||||
create_env_file() {
|
create_env_file() {
|
||||||
if [ ! -f ".env" ]; then
|
if [ ! -f ".env" ]; then
|
||||||
warn ".env 文件不存在,创建示例文件..."
|
warn ".env 文件不存在,创建示例文件..."
|
||||||
|
|
||||||
|
# 生成随机值
|
||||||
|
DB_PASSWORD=$(generate_random_string 32)
|
||||||
|
JWT_SECRET=$(generate_random_string 64)
|
||||||
|
ADMIN_RESET_KEY=$(generate_random_string 32)
|
||||||
|
|
||||||
cat > .env <<EOF
|
cat > .env <<EOF
|
||||||
# 数据库配置
|
# 数据库配置
|
||||||
DB_URL=jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true
|
DB_URL=jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true
|
||||||
DB_USERNAME=root
|
DB_USERNAME=root
|
||||||
DB_PASSWORD=your_password_here
|
DB_PASSWORD=${DB_PASSWORD}
|
||||||
|
|
||||||
# Spring Profile
|
# Spring Profile
|
||||||
SPRING_PROFILES_ACTIVE=prod
|
SPRING_PROFILES_ACTIVE=prod
|
||||||
@@ -61,17 +74,17 @@ MYSQL_PORT=3307
|
|||||||
# Polygon RPC
|
# Polygon RPC
|
||||||
POLYGON_RPC_URL=https://polygon-rpc.com
|
POLYGON_RPC_URL=https://polygon-rpc.com
|
||||||
|
|
||||||
# JWT 密钥(生产环境必须修改)
|
# JWT 密钥(已自动生成随机值,生产环境建议修改)
|
||||||
JWT_SECRET=your-jwt-secret-key-change-in-production
|
JWT_SECRET=${JWT_SECRET}
|
||||||
|
|
||||||
# 管理员密码重置密钥(生产环境必须修改)
|
# 管理员密码重置密钥(已自动生成随机值,生产环境建议修改)
|
||||||
ADMIN_RESET_PASSWORD_KEY=your-admin-reset-key-change-in-production
|
ADMIN_RESET_PASSWORD_KEY=${ADMIN_RESET_KEY}
|
||||||
EOF
|
EOF
|
||||||
error ".env 文件已创建,请先编辑配置相关参数后再运行部署脚本"
|
info ".env 文件已创建,已自动生成随机密码和密钥"
|
||||||
error "特别是以下参数必须修改:"
|
warn "生产环境建议修改以下参数:"
|
||||||
error " - DB_PASSWORD: 数据库密码"
|
warn " - DB_PASSWORD: 数据库密码(当前: ${DB_PASSWORD:0:8}...)"
|
||||||
error " - JWT_SECRET: JWT 密钥(生产环境)"
|
warn " - JWT_SECRET: JWT 密钥(当前: ${JWT_SECRET:0:8}...)"
|
||||||
error " - ADMIN_RESET_PASSWORD_KEY: 管理员密码重置密钥(生产环境)"
|
warn " - ADMIN_RESET_PASSWORD_KEY: 管理员密码重置密钥(当前: ${ADMIN_RESET_KEY:0:8}...)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user