initial commit

This commit is contained in:
2025-10-26 23:39:49 -05:00
commit 5fb0909e8d
120 changed files with 11279 additions and 0 deletions

296
scripts/env-setup.sh Executable file
View File

@@ -0,0 +1,296 @@
#!/bin/bash
# ====================================
# SCRIPT DE CONFIGURACIÓN DE ENTORNO
# Balotario Licencia A-I
# ====================================
set -e # Salir en caso de error
# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Función para imprimir con colores
print_info() {
echo -e "${ $1${NC}"
}
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_header() {
echo -e "${BLUE}"
echo "======================================"
echo "🌍 CONFIGURACIÓN DE ENTORNO"
echo "Balotario Licencia A-I"
echo "======================================"
echo -e "${NC}"
}
# Función para generar SECRET_KEY
generate_secret_key() {
if command -v python3 &> /dev/null; then
python3 -c "import secrets; print(secrets.token_hex(32))"
elif command -v python &> /dev/null; then
python -c "import secrets; print(secrets.token_hex(32))"
elif command -v openssl &> /dev/null; then
openssl rand -hex 32
else
# Fallback básico
date +%s | sha256sum | base64 | head -c 32
fi
}
# Función para configurar desarrollo
setup_development() {
print_info "Configurando entorno de desarrollo..."
SECRET_KEY=$(generate_secret_key)
cat > .env << EOF
# ====================================
# CONFIGURACIÓN DE DESARROLLO
# Generado automáticamente: $(date)
# ====================================
# Configuración de Flask
SECRET_KEY=${SECRET_KEY}
FLASK_ENV=development
FLASK_CONFIG=development
FLASK_DEBUG=true
# Configuración del servidor
HOST=127.0.0.1
PORT=5000
# Configuración de Docker
DOCKER_CONTAINER=false
# Configuración de logging
LOG_LEVEL=DEBUG
AUTO_RELOAD=true
SHOW_DEBUG_TOOLBAR=false
# ====================================
# NOTAS:
# - Cambia SECRET_KEY antes de ir a producción
# - Revisa .env.sample para más opciones
# ====================================
EOF
print_success "Configuración de desarrollo creada en .env"
}
# Función para configurar producción
setup_production() {
print_info "Configurando entorno de producción..."
SECRET_KEY=$(generate_secret_key)
cat > .env << EOF
# ====================================
# CONFIGURACIÓN DE PRODUCCIÓN
# Generado automáticamente: $(date)
# ====================================
# Configuración de Flask
SECRET_KEY=${SECRET_KEY}
FLASK_ENV=production
FLASK_CONFIG=production
FLASK_DEBUG=false
# Configuración del servidor
HOST=0.0.0.0
PORT=5000
# Configuración de Docker
DOCKER_CONTAINER=true
# Configuración de logging
LOG_LEVEL=INFO
# ====================================
# IMPORTANTE:
# - Guarda SECRET_KEY en lugar seguro
# - Revisa todas las configuraciones antes de desplegar
# - Considera usar variables de entorno del sistema
# ====================================
EOF
print_success "Configuración de producción creada en .env"
print_warning "IMPORTANTE: Guarda la SECRET_KEY en un lugar seguro"
}
# Función para configurar Docker
setup_docker() {
print_info "Configurando entorno para Docker..."
SECRET_KEY=$(generate_secret_key)
cat > .env << EOF
# ====================================
# CONFIGURACIÓN PARA DOCKER
# Generado automáticamente: $(date)
# ====================================
# Configuración de Flask
SECRET_KEY=${SECRET_KEY}
FLASK_ENV=production
FLASK_CONFIG=production
FLASK_DEBUG=false
# Configuración del servidor
HOST=0.0.0.0
PORT=5000
# Configuración de Docker
DOCKER_CONTAINER=true
# Configuración de logging
LOG_LEVEL=INFO
# ====================================
# DOCKER NOTES:
# - Estas variables pueden ser sobrescritas en docker-compose.yml
# - Para desarrollo con Docker, cambia FLASK_ENV=development
# ====================================
EOF
print_success "Configuración para Docker creada en .env"
}
# Función para validar configuración
validate_env() {
print_info "Validando configuración..."
if [ ! -f ".env" ]; then
print_error "Archivo .env no encontrado"
return 1
fi
# Verificar variables esenciales
if ! grep -q "SECRET_KEY=" .env; then
print_error "SECRET_KEY no encontrada en .env"
return 1
fi
if ! grep -q "FLASK_ENV=" .env; then
print_error "FLASK_ENV no encontrada en .env"
return 1
fi
print_success "Configuración válida"
# Mostrar resumen
echo ""
print_info "Resumen de configuración:"
echo "------------------------"
grep -E "^(SECRET_KEY|FLASK_ENV|FLASK_DEBUG|HOST|PORT)=" .env | while read line; do
key=$(echo $line | cut -d'=' -f1)
value=$(echo $line | cut -d'=' -f2)
if [ "$key" = "SECRET_KEY" ]; then
echo " $key=***OCULTA***"
else
echo " $key=$value"
fi
done
}
# Función para mostrar ayuda
show_help() {
echo "Uso: $0 [COMANDO]"
echo ""
echo "Comandos disponibles:"
echo " dev Configurar para desarrollo local"
echo " prod Configurar para producción"
echo " docker Configurar para Docker"
echo " validate Validar configuración actual"
echo " backup Crear backup de .env actual"
echo " restore Restaurar desde .env.sample"
echo " help Mostrar esta ayuda"
echo ""
echo "Ejemplos:"
echo " $0 dev # Configuración de desarrollo"
echo " $0 prod # Configuración de producción"
echo " $0 docker # Configuración para Docker"
}
# Función para crear backup
backup_env() {
if [ -f ".env" ]; then
backup_file=".env.backup.$(date +%Y%m%d_%H%M%S)"
cp .env "$backup_file"
print_success "Backup creado: $backup_file"
else
print_warning "No hay archivo .env para respaldar"
fi
}
# Función para restaurar desde sample
restore_env() {
if [ -f ".env.sample" ]; then
cp .env.sample .env
print_success "Configuración restaurada desde .env.sample"
print_warning "Recuerda personalizar los valores en .env"
else
print_error "Archivo .env.sample no encontrado"
return 1
fi
}
# Función principal
main() {
print_header
case "${1:-help}" in
"dev"|"development")
backup_env
setup_development
validate_env
;;
"prod"|"production")
backup_env
setup_production
validate_env
;;
"docker")
backup_env
setup_docker
validate_env
;;
"validate"|"check")
validate_env
;;
"backup")
backup_env
;;
"restore")
backup_env
restore_env
;;
"help"|"--help"|"-h")
show_help
;;
*)
print_error "Comando desconocido: $1"
echo ""
show_help
exit 1
;;
esac
}
# Ejecutar función principal
main "$@"