se agrego cifrado de credenciales con openssl

This commit is contained in:
2025-08-16 03:21:15 -03:00
parent 2d3ef2c612
commit 025b9f1541
3 changed files with 97 additions and 85 deletions

View File

@ -1,15 +1,77 @@
#!/bin/bash
set -e
# 📁 Crear directorio de scripts
echo "🔧 Instalación del comando git subir"
# 📦 Verificar openssl
if ! command -v openssl &> /dev/null; then
echo "⚠️ openssl no está instalado. Instalando..."
if command -v apt &> /dev/null; then
sudo apt update && sudo apt install -y openssl
elif command -v pacman &> /dev/null; then
sudo pacman -Sy --noconfirm openssl
else
echo "❌ No se pudo instalar openssl automáticamente. Instalalo manualmente."
exit 1
fi
fi
# 📁 Crear carpeta
mkdir -p "$HOME/.scripts"
# 📜 Copiar script principal
# 🔄 Reconfigurar si existen credenciales
if [[ -f "$HOME/.scripts/.env" || -f "$HOME/.scripts/.env.enc" ]]; then
read -p "⚠️ Ya existen credenciales. ¿Querés reconfigurarlas? (s/n): " reconfig
[[ "$reconfig" != "s" ]] && echo "🚫 Instalación cancelada." && exit 0
fi
# 🔐 Solicitar credenciales
read -p "👤 Usuario de Gitea: " GITEA_USER
read -s -p "🔑 Token o contraseña: " GITEA_TOKEN
echo ""
read -p "🌐 URL base de la API de Gitea (ej: https://gitea.midominio.org): " GITEA_API_URL
# 🔎 Verificar credenciales
response=$(curl -s -u "$GITEA_USER:$GITEA_TOKEN" "$GITEA_API_URL/api/v1/user")
if ! echo "$response" | grep -q '"login":"'"$GITEA_USER"'"'; then
echo "❌ Credenciales inválidas. Abortando instalación."
exit 1
fi
# 🔐 Cifrar si desea
read -p "¿Querés guardar las credenciales cifradas con openssl? (s/n): " cifrar
if [[ "$cifrar" == "s" ]]; then
echo "🔐 Ingresá una contraseña para cifrar:"
read -s passphrase
echo -e "GITEA_USER=$GITEA_USER\nGITEA_TOKEN=$GITEA_TOKEN\nGITEA_API_URL=$GITEA_API_URL" | \
openssl enc -aes-256-cbc -salt -out "$HOME/.scripts/.env.enc" -pass pass:"$passphrase"
rm -f "$HOME/.scripts/.env"
echo "✅ Credenciales cifradas guardadas."
else
echo -e "GITEA_USER=$GITEA_USER\nGITEA_TOKEN=$GITEA_TOKEN\nGITEA_API_URL=$GITEA_API_URL" > "$HOME/.scripts/.env"
chmod 600 "$HOME/.scripts/.env"
rm -f "$HOME/.scripts/.env.enc"
echo "⚠️ Credenciales guardadas sin cifrar."
fi
# 📜 Script principal
cat <<'EOF' > "$HOME/.scripts/git-subir.sh"
#!/bin/bash
set -e
source "$HOME/.scripts/.env"
# 🔐 Cargar credenciales
if [[ -f "$HOME/.scripts/.env.enc" ]]; then
echo "🔐 Ingresá la contraseña para descifrar tus credenciales:"
read -s passphrase
openssl enc -aes-256-cbc -d -in "$HOME/.scripts/.env.enc" -pass pass:"$passphrase" > /tmp/.env.dec
source /tmp/.env.dec
rm /tmp/.env.dec
elif [[ -f "$HOME/.scripts/.env" ]]; then
source "$HOME/.scripts/.env"
else
echo "❌ No se encontraron credenciales. Ejecutá instalar-subir.sh primero."
exit 1
fi
remote_url=$(git remote get-url origin | sed 's|https://||')
auth_url="https://$GITEA_USER:$GITEA_TOKEN@$remote_url"
@ -24,7 +86,6 @@ function marco() {
if ! git diff-index --quiet HEAD; then
echo "📦 Se detectaron cambios sin commitear:"
git status -s
read -p "¿Querés hacer commit automático de estos cambios? (s/n): " auto_commit
if [[ "$auto_commit" == "s" ]]; then
read -p "📝 Ingresá el mensaje de commit: " mensaje
@ -62,34 +123,9 @@ EOF
chmod +x "$HOME/.scripts/git-subir.sh"
# 🔗 Crear alias ejecutable
# 🔗 Alias global
echo "Creando alias git-subir..."
cat <<EOF | sudo tee /usr/local/bin/git-subir > /dev/null
#!/bin/bash
exec "$HOME/.scripts/git-subir.sh" "\$@"
EOF
echo -e "#!/bin/bash\nexec \"$HOME/.scripts/git-subir.sh\" \"\$@\"" | sudo tee /usr/local/bin/git-subir > /dev/null
sudo chmod +x /usr/local/bin/git-subir
# 🔐 Credenciales
echo "🔐 Configurando credenciales de Gitea..."
read -p "Usuario de Gitea: " GITEA_USER
read -s -p "Contraseña o Token: " GITEA_TOKEN
echo ""
echo "🔎 Verificando credenciales..."
response=$(curl -s -u "$GITEA_USER:$GITEA_TOKEN" https://gitea.espaciomemoria.ar/api/v1/user)
if echo "$response" | grep -q '"login":"'"$GITEA_USER"'"'; then
echo "✅ Credenciales válidas."
echo "GITEA_USER=$GITEA_USER" > "$HOME/.scripts/.env"
echo "GITEA_TOKEN=$GITEA_TOKEN" >> "$HOME/.scripts/.env"
chmod 600 "$HOME/.scripts/.env"
else
echo "❌ Credenciales inválidas. Abortando instalación."
sudo rm -f /usr/local/bin/git-subir
rm -rf "$HOME/.scripts/git-subir.sh"
exit 1
fi
echo "✅ Instalación completa. Usá el comando: git subir"