From 7325e9c91f314ca3501074a809144130faadf567 Mon Sep 17 00:00:00 2001 From: nbaglietto Date: Sun, 17 Aug 2025 00:49:16 -0300 Subject: [PATCH] revicion con cambio passwd ssl --- credenciales.enc | 1 - desinstalar-subir.sh | 31 +++++++-- instalar-subir.sh | 160 ++++++++++++++++++++++++++----------------- 3 files changed, 125 insertions(+), 67 deletions(-) delete mode 100644 credenciales.enc diff --git a/credenciales.enc b/credenciales.enc deleted file mode 100644 index 6b4676e..0000000 --- a/credenciales.enc +++ /dev/null @@ -1 +0,0 @@ -Salted__ |RRJͅ7" B_Ζ̀^-;W ̧ <\FI;ZfG'|K \ No newline at end of file diff --git a/desinstalar-subir.sh b/desinstalar-subir.sh index bc7d1e6..50521b8 100755 --- a/desinstalar-subir.sh +++ b/desinstalar-subir.sh @@ -2,10 +2,31 @@ echo "🧹 Desinstalando git subir..." -# Eliminar binario -rm -f "$HOME/.local/bin/git-subir" +BIN="$HOME/.local/bin/git-subir" +CONFIG="$HOME/.config/git-subir.conf" -# Eliminar credenciales y config -rm -rf "$HOME/.config/git-subir" +# Eliminar script +if [[ -f "$BIN" ]]; then + rm "$BIN" + echo "✅ Script eliminado: $BIN" +else + echo "⚠️ Script no encontrado en $BIN" +fi -echo "✅ Desinstalación completa." +# Eliminar alias +if git config --global --get alias.subir >/dev/null; then + git config --global --unset alias.subir + echo "✅ Alias 'git subir' eliminado" +else + echo "⚠️ Alias 'git subir' no estaba configurado" +fi + +# Eliminar configuración +if [[ -f "$CONFIG" ]]; then + rm "$CONFIG" + echo "✅ Configuración eliminada: $CONFIG" +else + echo "⚠️ Archivo de configuración no encontrado en $CONFIG" +fi + +echo "🎉 Desinstalación completa." diff --git a/instalar-subir.sh b/instalar-subir.sh index 82ff037..fbba608 100755 --- a/instalar-subir.sh +++ b/instalar-subir.sh @@ -1,36 +1,70 @@ #!/bin/bash -# ========================================================= -# Script: git-subir.sh -# Autor: Nahuel (adaptado con QA) -# Descripción: Automatiza commits y pushes a Gitea con -# soporte de credenciales cifradas. -# ========================================================= + +echo "🚀 Instalando comando git subir..." CONFIG="$HOME/.config/git-subir.conf" +BIN="$HOME/.local/bin/git-subir" -# Cargar configuración si existe -if [[ -f "$CONFIG" ]]; then - source "$CONFIG" +mkdir -p "$(dirname "$CONFIG")" +mkdir -p "$(dirname "$BIN")" + +# Solicitar credenciales +read -p "👤 Usuario de Gitea: " usuario +read -s -p "🔑 Token o contraseña: " token +echo "" +read -p "🌐 URL base de la API de Gitea: " url + +# Validar autenticación +resp=$(curl -s -u "$usuario:$token" "$url/api/v1/user") +if echo "$resp" | grep -q "\"login\":\"$usuario\""; then + echo "✅ Autenticación exitosa con $url/api/v1/user" +else + echo "❌ Falló la autenticación. Abortando." + exit 1 fi +# Cifrado opcional +read -p "🔐 ¿Querés cifrar las credenciales? (s/n): " cifrar +if [[ "$cifrar" == "s" ]]; then + read -s -p "🔑 Contraseña para cifrado: " pass + echo "" + salt=$(openssl rand -hex 16) + cred="$usuario:$token" + cred_cifrada=$(echo -n "$cred" | openssl enc -aes-256-cbc -a -pbkdf2 -salt -pass pass:"$pass") +else + cred_cifrada="$usuario:$token" + salt="" +fi + +# Guardar configuración +cat > "$CONFIG" < "$BIN" <<'EOF' +#!/bin/bash +CONFIG="$HOME/.config/git-subir.conf" +mkdir -p "$(dirname "$CONFIG")" +source "$CONFIG" + guardar_config() { - mkdir -p "$(dirname "$CONFIG")" - cat > "$CONFIG" < "$CONFIG" </dev/null) - + cred_descifrada=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -salt -pass pass:"$oldpass" 2>/dev/null) if [[ -z "$cred_descifrada" ]]; then echo "❌ Contraseña incorrecta. Abortando." exit 1 fi - read -s -p "🔑 Nueva contraseña: " newpass echo "" - CRED=$(echo -n "$cred_descifrada" | openssl enc -aes-256-cbc -a -pbkdf2 -pass pass:"$newpass") - + SALT=$(openssl rand -hex 16) + CRED=$(echo -n "$cred_descifrada" | openssl enc -aes-256-cbc -a -pbkdf2 -salt -pass pass:"$newpass") guardar_config echo "✅ Contraseña de cifrado actualizada." exit 0 fi -# --------------------------------------------------------- -# Descifrar credenciales si están cifradas -# --------------------------------------------------------- -if [[ "$CRED" =~ ^[A-Za-z0-9+/=]+$ ]]; then +# Descifrar credenciales si es necesario +if [[ -n "$SALT" ]]; then read -s -p "🔑 Contraseña para descifrado: " pass echo "" - descifrado=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -pass pass:"$pass" 2>/dev/null) - if [[ -n "$descifrado" ]]; then - CRED="$descifrado" + CRED=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -salt -pass pass:"$pass" 2>/dev/null) + if [[ -z "$CRED" ]]; then + echo "❌ Contraseña incorrecta. Abortando." + exit 1 fi fi usuario=$(echo "$CRED" | cut -d: -f1) token=$(echo "$CRED" | cut -d: -f2) -# Validar URL -if [[ -z "$URL" ]]; then - echo "❌ No se encontró la URL de Gitea en la configuración." - exit 1 -fi - echo "📤 Subiendo cambios como $usuario a $URL..." -# --------------------------------------------------------- # Verificar si es repo git -# --------------------------------------------------------- if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then echo "📁 No estás en un repositorio git. Inicializando..." git init @@ -114,38 +134,56 @@ if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then git remote add origin "$remote_url" fi -# --------------------------------------------------------- # Detectar cambios sin commitear -# --------------------------------------------------------- if [[ -n "$(git status --porcelain)" ]]; then echo "📦 Hay cambios sin commitear." - read -p "❓ ¿Querés escribir un mensaje de commit? (s/n): " respuesta + read -p "¿Querés escribir el mensaje de commit? (s/n): " respuesta if [[ "$respuesta" == "s" ]]; then - mensaje="" - while [[ -z "$mensaje" ]]; do - read -p "📝 Ingresá el mensaje de commit: " mensaje - done - git add -A - git commit -m "$mensaje" + read -p "📝 Ingresá el mensaje de commit: " mensaje else - git add -A - git commit -m "Auto-commit" - echo "✅ Commit automático generado." + mensaje="Commit automático desde git-subir" fi + git add -A + git commit -m "$mensaje" else echo "✅ No hay cambios pendientes. Continuando con el push..." fi -# --------------------------------------------------------- -# Push con verificación de upstream -# --------------------------------------------------------- +# Verificar si la rama tiene upstream branch=$(git rev-parse --abbrev-ref HEAD) remote=$(git config --get branch.$branch.remote) if [[ -z "$remote" ]]; then echo "⚠️ La rama '$branch' no tiene remoto configurado." echo "👉 Ejecutando: git push --set-upstream origin $branch" - git push --set-upstream origin "$branch" || { echo "❌ Falló el push."; exit 1; } + git push --set-upstream origin "$branch" else - git push || { echo "❌ Falló el push."; exit 1; } + git push fi +EOF + +chmod +x "$BIN" + +# Validar PATH +SHELL_RC="$HOME/.bashrc" +[[ "$SHELL" == */zsh ]] && SHELL_RC="$HOME/.zshrc" +grep -q "$HOME/.local/bin" <<< "$PATH" || echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$SHELL_RC" + +# Configurar alias +git config --global alias.subir "!git-subir" + +echo "✅ Alias 'git subir' configurado." +echo "👉 Ejecutá 'source $SHELL_RC' o reiniciá la terminal para aplicar el PATH." + +# Verificación final +if command -v git-subir >/dev/null; then + echo "✅ El comando 'git-subir' está disponible." +else + echo "⚠️ El comando 'git-subir' aún no está disponible." +fi + +echo "🎉 Instalación completa." +echo "🛠️ Opciones disponibles para el comando:" +echo " git subir # Ejecuta git push con autenticación" +echo " git subir --reconfigurar # Cambia usuario, token, URL y clave" +echo " git subir --cambiar-clave # Cambia solo la contraseña de cifrado"