From 41f786683b023c185fc359c8da0f094fd7982f79 Mon Sep 17 00:00:00 2001 From: "Mauro Rosero P." Date: Sat, 15 Mar 2025 13:09:26 -0500 Subject: [PATCH] =?UTF-8?q?[ADDED]=20Script=20cversadm=5Ftoken.sh=20para?= =?UTF-8?q?=20gesti=C3=B3n=20de=20tokens=20de=20control=20de=20versiones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Implementa interfaz mediante dialog para seleccionar plataforma (Github, Gitlab, Forgejo) - Solicita token mediante entrada segura (oculta) - Encripta token con SOPS y lo guarda en ~/.developers/[plataforma].sops.yaml - A帽ade mensajes en espa帽ol en developers.es 馃 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- bin/cversadm_token.sh | 173 ++++++++++++++++++++++++++++++++++++++++++ bin/msg/developers.es | 15 ++++ 2 files changed, 188 insertions(+) create mode 100755 bin/cversadm_token.sh diff --git a/bin/cversadm_token.sh b/bin/cversadm_token.sh new file mode 100755 index 0000000..16dd2b3 --- /dev/null +++ b/bin/cversadm_token.sh @@ -0,0 +1,173 @@ +#!/bin/bash +# +# Script: cversadm_token.sh +# Description: Administrador de tokens para plataformas de control de versiones +# Modified: 2025/03/15 +# [Author] Cortana Rosero One +# [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) +# +# Derechos de Autor (C) [2025] [Mauro Rosero P. ] +# +# Este programa es software libre: usted puede redistribuirlo y/o modificarlo +# bajo los t茅rminos de la Licencia P煤blica Affero General de GNU tal como +# lo publica la Free Software Foundation, ya sea la versi贸n 3 de la licencia, +# o (a su elecci贸n) cualquier versi贸n posterior. +# +# Este programa se distribuye con la esperanza de que sea 煤til, +# pero SIN NINGUNA GARANT脥A; sin siquiera la garant铆a impl铆cita de +# COMERCIABILIDAD o IDONEIDAD PARA UN PROP脫SITO PARTICULAR. Consulte la +# Licencia P煤blica Affero General de GNU para obtener m谩s detalles. +# +# Deber铆a haber recibido una copia de la Licencia P煤blica Affero General +# junto con este programa. Si no la recibi贸, consulte . + +# Configuraci贸n inicial +DEVELOPERS_DIR="$HOME/.developers" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BIN_HOME="${SCRIPT_DIR}/.." +BIN_BASE="bin" +BIN_LIBS="lib" +BIN_MESG="msg" + +# Importar bibliotecas necesarias +source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" +source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" + +# Cargar mensajes en espa帽ol +load_messages "${BIN_HOME}" "${BIN_MESG}" "es" "developers" + +# Variables globales +title="MRDevs Tools" +apps_title="${cvmsg_000}" + +# Funci贸n para verificar si SOPS est谩 instalado +check_sops_installed() { + if ! command -v sops &> /dev/null; then + echo "Error: SOPS no est谩 instalado. Por favor, instale SOPS para continuar." + exit 1 + fi +} + +# Funci贸n para asegurar que el directorio .developers existe +ensure_developers_dir() { + if [ ! -d "$DEVELOPERS_DIR" ]; then + mkdir -p "$DEVELOPERS_DIR" + chmod 700 "$DEVELOPERS_DIR" + echo "${cvmsg_008} $DEVELOPERS_DIR" + fi +} + +# Funci贸n para seleccionar la plataforma de control de versiones +select_platform() { + local options="1 ${cvmsg_010} 2 ${cvmsg_011} 3 ${cvmsg_012}" + + dialog_input_menu "${cvmsg_001}" "${cvmsg_002}" "$options" 12 + + if [ $codex -ne 0 ]; then + return 1 + fi + + case $value in + 1) echo "github" ;; + 2) echo "gitlab" ;; + 3) echo "forgejo" ;; + *) return 1 ;; + esac + + return 0 +} + +# Funci贸n para solicitar el token +request_token() { + local platform=$1 + local platform_name="" + + case $platform in + "github") platform_name="${cvmsg_010}" ;; + "gitlab") platform_name="${cvmsg_011}" ;; + "forgejo") platform_name="${cvmsg_012}" ;; + esac + + dialog_input_pass "${cvmsg_003}" "${cvmsg_004} $platform_name +${cvmsg_005}" + + if [ $codex -ne 0 ]; then + return 1 + fi + + echo "$value" + return 0 +} + +# Funci贸n para guardar el token encriptado con SOPS +save_token() { + local platform=$1 + local token=$2 + local filename="${DEVELOPERS_DIR}/${platform}.sops.yaml" + + # Crear archivo YAML temporal con el token + local temp_file=$(mktemp) + echo "token: $token" > "$temp_file" + + # Encriptar el archivo con SOPS + sops --encrypt "$temp_file" > "$filename" + local result=$? + + # Eliminar archivo temporal + rm "$temp_file" + + # Establecer permisos adecuados + if [ $result -eq 0 ]; then + chmod 600 "$filename" + fi + + return $result +} + +# Funci贸n principal +main() { + # Verificar requisitos + check_sops_installed + ensure_developers_dir + + # Seleccionar plataforma + platform=$(select_platform) + if [ $? -ne 0 ]; then + clear + exit 0 + fi + + # Solicitar token + token=$(request_token "$platform") + if [ $? -ne 0 ]; then + clear + exit 0 + fi + + # Guardar token + save_token "$platform" "$token" + if [ $? -eq 0 ]; then + local platform_name="" + case $platform in + "github") platform_name="${cvmsg_010}" ;; + "gitlab") platform_name="${cvmsg_011}" ;; + "forgejo") platform_name="${cvmsg_012}" ;; + esac + + dialog_error_box "${cvmsg_009}" "${cvmsg_006} $platform_name" + else + local platform_name="" + case $platform in + "github") platform_name="${cvmsg_010}" ;; + "gitlab") platform_name="${cvmsg_011}" ;; + "forgejo") platform_name="${cvmsg_012}" ;; + esac + + dialog_error_box "${head_error}" "${cvmsg_007} $platform_name" + fi + + clear +} + +# Ejecutar funci贸n principal +main \ No newline at end of file diff --git a/bin/msg/developers.es b/bin/msg/developers.es index 2efe197..d84536c 100644 --- a/bin/msg/developers.es +++ b/bin/msg/developers.es @@ -40,3 +40,18 @@ dvmsg_105="Opciones:" dvmsg_106=" --help Muestra este mensaje de ayuda." dvmsg_107=" --version Muestra la versi贸n del script." +# Mensajes para cversadm_token.sh +cvmsg_000="ADMINISTRADOR DE TOKENS DE CONTROL DE VERSIONES" +cvmsg_001="Seleccione plataforma de control de versiones" +cvmsg_002="Elija la plataforma para la que desea configurar el token de acceso" +cvmsg_003="Token de acceso" +cvmsg_004="Introduzca el token de acceso personal para" +cvmsg_005="El token se utilizar谩 para operaciones de autenticaci贸n" +cvmsg_006="Token guardado correctamente para" +cvmsg_007="Error al guardar el token para" +cvmsg_008="Carpeta de configuraci贸n creada:" +cvmsg_009="Seleccione una opci贸n" +cvmsg_010="Github" +cvmsg_011="Gitlab" +cvmsg_012="Forgejo" +