revicion con cambio passwd ssl

This commit is contained in:
2025-08-17 00:49:16 -03:00
parent b2b35f41eb
commit 7325e9c91f
3 changed files with 125 additions and 67 deletions

View File

@ -1 +0,0 @@
Salted__<EFBFBD><06> <0C><>|R<><52>R<EFBFBD><4A>7"<22>

View File

@ -2,10 +2,31 @@
echo "🧹 Desinstalando git subir..." echo "🧹 Desinstalando git subir..."
# Eliminar binario BIN="$HOME/.local/bin/git-subir"
rm -f "$HOME/.local/bin/git-subir" CONFIG="$HOME/.config/git-subir.conf"
# Eliminar credenciales y config # Eliminar script
rm -rf "$HOME/.config/git-subir" 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."

View File

@ -1,36 +1,70 @@
#!/bin/bash #!/bin/bash
# =========================================================
# Script: git-subir.sh echo "🚀 Instalando comando git subir..."
# Autor: Nahuel (adaptado con QA)
# Descripción: Automatiza commits y pushes a Gitea con
# soporte de credenciales cifradas.
# =========================================================
CONFIG="$HOME/.config/git-subir.conf" CONFIG="$HOME/.config/git-subir.conf"
BIN="$HOME/.local/bin/git-subir"
# Cargar configuración si existe mkdir -p "$(dirname "$CONFIG")"
if [[ -f "$CONFIG" ]]; then mkdir -p "$(dirname "$BIN")"
source "$CONFIG"
# 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 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" <<EOF
URL=$url
CRED=$cred_cifrada
SALT=$salt
EOF
# Generar script git-subir con commit interactivo
cat > "$BIN" <<'EOF'
#!/bin/bash
CONFIG="$HOME/.config/git-subir.conf"
mkdir -p "$(dirname "$CONFIG")"
source "$CONFIG"
guardar_config() { guardar_config() {
mkdir -p "$(dirname "$CONFIG")" cat > "$CONFIG" <<EOF2
cat > "$CONFIG" <<EOF
URL=$URL URL=$URL
CRED=$CRED CRED=$CRED
EOF SALT=$SALT
EOF2
} }
# ---------------------------------------------------------
# Reconfigurar credenciales # Reconfigurar credenciales
# ---------------------------------------------------------
if [[ "$1" == "--reconfigurar" ]]; then if [[ "$1" == "--reconfigurar" ]]; then
echo "🔄 Reconfigurando credenciales..." echo "🔄 Reconfigurando credenciales..."
read -p "👤 Usuario de Gitea: " usuario read -p "👤 Usuario de Gitea: " usuario
read -s -p "🔑 Token o contraseña: " token read -s -p "🔑 Token o contraseña: " token
echo "" echo ""
read -p "🌐 URL base de la API de Gitea: " URL read -p "🌐 URL base de la API de Gitea: " URL
resp=$(curl -s -u "$usuario:$token" "$URL/api/v1/user") resp=$(curl -s -u "$usuario:$token" "$URL/api/v1/user")
if echo "$resp" | grep -q "\"login\":\"$usuario\""; then if echo "$resp" | grep -q "\"login\":\"$usuario\""; then
echo "✅ Autenticación exitosa con $URL/api/v1/user" echo "✅ Autenticación exitosa con $URL/api/v1/user"
@ -38,75 +72,61 @@ if [[ "$1" == "--reconfigurar" ]]; then
echo "❌ Falló la autenticación. Abortando." echo "❌ Falló la autenticación. Abortando."
exit 1 exit 1
fi fi
read -p "🔐 ¿Querés cifrar las credenciales? (s/n): " cifrar read -p "🔐 ¿Querés cifrar las credenciales? (s/n): " cifrar
if [[ "$cifrar" == "s" ]]; then if [[ "$cifrar" == "s" ]]; then
read -s -p "🔑 Contraseña para cifrado: " pass read -s -p "🔑 Contraseña para cifrado: " pass
echo "" echo ""
CRED=$(echo -n "$usuario:$token" | openssl enc -aes-256-cbc -a -pbkdf2 -pass pass:"$pass") SALT=$(openssl rand -hex 16)
CRED=$(echo -n "$usuario:$token" | openssl enc -aes-256-cbc -a -pbkdf2 -salt -pass pass:"$pass")
else else
CRED="$usuario:$token" CRED="$usuario:$token"
SALT=""
fi fi
guardar_config guardar_config
echo "✅ Reconfiguración completa." echo "✅ Reconfiguración completa."
exit 0 exit 0
fi fi
# --------------------------------------------------------- # Cambiar solo la clave de cifrado
# Cambiar la clave de cifrado
# ---------------------------------------------------------
if [[ "$1" == "--cambiar-clave" ]]; then if [[ "$1" == "--cambiar-clave" ]]; then
echo "🔐 Cambiando contraseña de cifrado..." echo "🔐 Cambiando contraseña de cifrado..."
if [[ -z "$CRED" ]]; then if [[ -z "$SALT" ]]; then
echo "⚠️ No hay credenciales guardadas. Abortando." echo "⚠️ Las credenciales no están cifradas. No se puede cambiar la clave."
exit 1 exit 1
fi fi
read -s -p "🔑 Contraseña actual: " oldpass read -s -p "🔑 Contraseña actual: " oldpass
echo "" echo ""
cred_descifrada=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -pass pass:"$oldpass" 2>/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 if [[ -z "$cred_descifrada" ]]; then
echo "❌ Contraseña incorrecta. Abortando." echo "❌ Contraseña incorrecta. Abortando."
exit 1 exit 1
fi fi
read -s -p "🔑 Nueva contraseña: " newpass read -s -p "🔑 Nueva contraseña: " newpass
echo "" 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 guardar_config
echo "✅ Contraseña de cifrado actualizada." echo "✅ Contraseña de cifrado actualizada."
exit 0 exit 0
fi fi
# --------------------------------------------------------- # Descifrar credenciales si es necesario
# Descifrar credenciales si están cifradas if [[ -n "$SALT" ]]; then
# ---------------------------------------------------------
if [[ "$CRED" =~ ^[A-Za-z0-9+/=]+$ ]]; then
read -s -p "🔑 Contraseña para descifrado: " pass read -s -p "🔑 Contraseña para descifrado: " pass
echo "" echo ""
descifrado=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -pass pass:"$pass" 2>/dev/null) CRED=$(echo "$CRED" | openssl enc -aes-256-cbc -a -d -pbkdf2 -salt -pass pass:"$pass" 2>/dev/null)
if [[ -n "$descifrado" ]]; then if [[ -z "$CRED" ]]; then
CRED="$descifrado" echo "❌ Contraseña incorrecta. Abortando."
exit 1
fi fi
fi fi
usuario=$(echo "$CRED" | cut -d: -f1) usuario=$(echo "$CRED" | cut -d: -f1)
token=$(echo "$CRED" | cut -d: -f2) 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..." echo "📤 Subiendo cambios como $usuario a $URL..."
# ---------------------------------------------------------
# Verificar si es repo git # Verificar si es repo git
# ---------------------------------------------------------
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
echo "📁 No estás en un repositorio git. Inicializando..." echo "📁 No estás en un repositorio git. Inicializando..."
git init 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" git remote add origin "$remote_url"
fi fi
# ---------------------------------------------------------
# Detectar cambios sin commitear # Detectar cambios sin commitear
# ---------------------------------------------------------
if [[ -n "$(git status --porcelain)" ]]; then if [[ -n "$(git status --porcelain)" ]]; then
echo "📦 Hay cambios sin commitear." 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 if [[ "$respuesta" == "s" ]]; then
mensaje=""
while [[ -z "$mensaje" ]]; do
read -p "📝 Ingresá el mensaje de commit: " mensaje read -p "📝 Ingresá el mensaje de commit: " mensaje
done else
mensaje="Commit automático desde git-subir"
fi
git add -A git add -A
git commit -m "$mensaje" git commit -m "$mensaje"
else
git add -A
git commit -m "Auto-commit"
echo "✅ Commit automático generado."
fi
else else
echo "✅ No hay cambios pendientes. Continuando con el push..." echo "✅ No hay cambios pendientes. Continuando con el push..."
fi fi
# --------------------------------------------------------- # Verificar si la rama tiene upstream
# Push con verificación de upstream
# ---------------------------------------------------------
branch=$(git rev-parse --abbrev-ref HEAD) branch=$(git rev-parse --abbrev-ref HEAD)
remote=$(git config --get branch.$branch.remote) remote=$(git config --get branch.$branch.remote)
if [[ -z "$remote" ]]; then if [[ -z "$remote" ]]; then
echo "⚠️ La rama '$branch' no tiene remoto configurado." echo "⚠️ La rama '$branch' no tiene remoto configurado."
echo "👉 Ejecutando: git push --set-upstream origin $branch" 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 else
git push || { echo "❌ Falló el push."; exit 1; } git push
fi 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"