Compare commits
	
		
			3 commits
		
	
	
		
			593cd5ed8c
			...
			c2e059a190
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c2e059a190 | |||
| 51e681bd2c | |||
| 29da09b48d | 
					 4 changed files with 148 additions and 10 deletions
				
			
		
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							|  | @ -68,7 +68,8 @@ bin/update.sh | ||||||
| |---------|-------------| | |---------|-------------| | ||||||
| | `bin/ghadmin_install.sh` | Instala GitHub CLI (gh) con soporte multiplataforma | | | `bin/ghadmin_install.sh` | Instala GitHub CLI (gh) con soporte multiplataforma | | ||||||
| | `bin/gladmin_install.sh` | Instala GitLab CLI (glab) con múltiples métodos de instalación | | | `bin/gladmin_install.sh` | Instala GitLab CLI (glab) con múltiples métodos de instalación | | ||||||
| | `bin/forgejo_login.sh` | Inicia/cierra sesión en Forgejo usando tokens encriptados con SOPS | | | `source bin/forgejo_login.sh` | Inicia/cierra sesión en Forgejo usando tokens encriptados con SOPS | | ||||||
|  | | `source bin/github_login.sh` | Inicia/cierra sesión en GitHub usando tokens encriptados con SOPS | | ||||||
| | `bin/cversion_token.sh` | Gestiona tokens de acceso para plataformas de control de versiones de forma segura | | | `bin/cversion_token.sh` | Gestiona tokens de acceso para plataformas de control de versiones de forma segura | | ||||||
| 
 | 
 | ||||||
| ### Seguridad y Acceso | ### Seguridad y Acceso | ||||||
|  | @ -194,23 +195,34 @@ Este script proporciona una interfaz para gestionar tokens de acceso para difere | ||||||
| - Incluye verificación de formato y seguridad de tokens | - Incluye verificación de formato y seguridad de tokens | ||||||
| - Gestiona automáticamente permisos para archivos de tokens | - Gestiona automáticamente permisos para archivos de tokens | ||||||
| 
 | 
 | ||||||
| #### Autenticación con Forgejo usando token encriptado | #### Autenticación con Forgejo y GitHub usando token encriptado | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| # Iniciar sesión en Forgejo usando el token encriptado | # Iniciar sesión en Forgejo usando el token encriptado | ||||||
| bin/forgejo_login.sh | source bin/forgejo_login.sh | ||||||
| 
 | 
 | ||||||
| # Cerrar sesión de Forgejo | # Cerrar sesión de Forgejo | ||||||
| bin/forgejo_login.sh --logout | source bin/forgejo_login.sh --logout | ||||||
|  | 
 | ||||||
|  | # Iniciar sesión en GitHub usando el token encriptado | ||||||
|  | source bin/github_login.sh | ||||||
|  | 
 | ||||||
|  | # Cerrar sesión de GitHub | ||||||
|  | source bin/github_login.sh --logout | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Este script facilita la autenticación con Forgejo/Codeberg CLI (berg): | El script de Forgejo facilita la autenticación con Forgejo/Codeberg CLI (berg): | ||||||
| - Utiliza el token almacenado y encriptado por cversion_token.sh | - Utiliza el token almacenado y encriptado por cversion_token.sh | ||||||
| - Desencripta automáticamente el token usando SOPS | - Desencripta automáticamente el token usando SOPS | ||||||
| - Detecta la URL de Forgejo basándose en la configuración de git | - Detecta la URL de Forgejo basándose en la configuración de git | ||||||
| - Configura la variable BERG_BASE_URL con la URL detectada | - Configura la variable BERG_BASE_URL con la URL detectada | ||||||
| - Proporciona opciones para login (por defecto) y logout | - Proporciona opciones para login (por defecto) y logout | ||||||
| 
 | 
 | ||||||
|  | El script de GitHub facilita la autenticación con GitHub CLI (gh): | ||||||
|  | - Utiliza el token almacenado y encriptado por cversion_token.sh | ||||||
|  | - Desencripta automáticamente el token usando SOPS | ||||||
|  | - Proporciona opciones para login (por defecto) y logout | ||||||
|  | 
 | ||||||
| ### Copias de Seguridad | ### Copias de Seguridad | ||||||
| 
 | 
 | ||||||
| Para respaldar configuraciones importantes: | Para respaldar configuraciones importantes: | ||||||
|  |  | ||||||
|  | @ -31,8 +31,6 @@ BIN_BASE="bin" | ||||||
| BIN_LIBS="lib" | BIN_LIBS="lib" | ||||||
| BIN_MESG="msg" | BIN_MESG="msg" | ||||||
| BIN_CFGS="config" | BIN_CFGS="config" | ||||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||||
|  | @ -41,7 +39,8 @@ else | ||||||
|   DEVSPATH="devs" |   DEVSPATH="devs" | ||||||
| fi | fi | ||||||
| BIN_HOME="$HOME/$DEVSPATH" | BIN_HOME="$HOME/$DEVSPATH" | ||||||
| 
 | VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||||
|  | BIN_PATH=$BIN_HOME/$BIN_BASE | ||||||
| 
 | 
 | ||||||
| # CHECK SHELL LANGUAGE | # CHECK SHELL LANGUAGE | ||||||
| BIN_LANG=${LANG:0:2} | BIN_LANG=${LANG:0:2} | ||||||
|  |  | ||||||
							
								
								
									
										127
									
								
								bin/github_login.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										127
									
								
								bin/github_login.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,127 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | #Script     	: github_login.sh | ||||||
|  | #Apps			: MRDEVS TOOLS | ||||||
|  | #Description	: Conectar con GitHub usando tokens encriptado | ||||||
|  | #Author			: Cortana Rosero One <cortana@rosero.one> | ||||||
|  | #Generated by	: Claude Code (claude-3-7-sonnet-20250219) | ||||||
|  | #Created		: 2025/03/20 10:58:42 | ||||||
|  | #Modified		: 2025/03/20 11:01:35 | ||||||
|  | #Version		: 1.0.0 | ||||||
|  | #Use Notes		: | ||||||
|  | #============================================================================== | ||||||
|  | # Derechos de Autor [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||||
|  | #============================================================================== | ||||||
|  | # 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 <https://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | # Configuración inicial | ||||||
|  | SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||||
|  | BIN_BASE="bin" | ||||||
|  | BIN_LIBS="lib" | ||||||
|  | BIN_MESG="msg" | ||||||
|  | BIN_CFGS="config" | ||||||
|  | 
 | ||||||
|  | # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||||
|  | if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||||
|  |   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||||
|  | else | ||||||
|  |   DEVSPATH="devs" | ||||||
|  | fi | ||||||
|  | BIN_HOME="$HOME/$DEVSPATH" | ||||||
|  | VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||||
|  | BIN_PATH=$BIN_HOME/$BIN_BASE | ||||||
|  | 
 | ||||||
|  | # CHECK SHELL LANGUAGE | ||||||
|  | BIN_LANG=${LANG:0:2} | ||||||
|  | 
 | ||||||
|  | # Importar bibliotecas necesarias | ||||||
|  | source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||||
|  | 
 | ||||||
|  | # Cargar mensajes en el idioma del sistema o español por defecto | ||||||
|  | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||||
|  | load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" | ||||||
|  | 
 | ||||||
|  | # Variables globales | ||||||
|  | title="${head_000} INICIO DE SESIÓN EN GITHUB" | ||||||
|  | 
 | ||||||
|  | # Función para verificar si gh está instalado | ||||||
|  | check_gh_installed() { | ||||||
|  |   if ! command -v gh &> /dev/null; then | ||||||
|  |     echo "Error: gh (GitHub CLI) no está instalado." | ||||||
|  |     echo "Por favor, ejecute ${BIN_HOME}/${BIN_BASE}/ghadmin_install.sh primero." | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Función para verificar si SOPS está instalado | ||||||
|  | check_sops_installed() { | ||||||
|  |   if ! command -v sops &> /dev/null; then | ||||||
|  |     echo "Error: SOPS no está instalado." | ||||||
|  |     echo "Por favor, ejecute bin/bootstrap.sh para instalar las herramientas necesarias." | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Función para iniciar sesión con token | ||||||
|  | login() { | ||||||
|  |   # Verificar que el archivo de token encriptado existe | ||||||
|  |   if [ ! -f "${DEVELOPER_DIR}/github.sops.yaml" ]; then | ||||||
|  |     echo "Error: No se encontró el archivo de token para GitHub." | ||||||
|  |     echo "Por favor, ejecute bin/cversadm_token.sh para configurar el token primero." | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  |    | ||||||
|  |   # Decodificar el token de base64 | ||||||
|  |   local token=$(sops -d ${DEVELOPER_DIR}/github.sops.yaml | grep -oP '(?<=token: ).*' | base64 -d) | ||||||
|  |     | ||||||
|  |   # Iniciar sesión con gh | ||||||
|  |   echo "Iniciando sesión en GitHub..." | ||||||
|  |   echo "$token" | gh auth login --with-token | ||||||
|  |   local login_status=$? | ||||||
|  |    | ||||||
|  |   if [ $login_status -eq 0 ]; then | ||||||
|  |     echo "Sesión iniciada correctamente en GitHub." | ||||||
|  |   else | ||||||
|  |     echo "Error al iniciar sesión en GitHub. Por favor, verifique su token." | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Función para cerrar sesión | ||||||
|  | logout() { | ||||||
|  |   echo "Cerrando sesión de GitHub..." | ||||||
|  |   if ! gh auth status &>/dev/null; then | ||||||
|  |     echo "No hay sesión activa en GitHub." | ||||||
|  |   else | ||||||
|  |     gh auth logout -h github.com | ||||||
|  |     echo "Sesión cerrada." | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Función principal | ||||||
|  | main() { | ||||||
|  |   # Verificar requisitos | ||||||
|  |   check_gh_installed | ||||||
|  |   check_sops_installed | ||||||
|  |    | ||||||
|  |   # Verificar parámetros | ||||||
|  |   if [ "$1" = "--logout" ]; then | ||||||
|  |     logout | ||||||
|  |   else | ||||||
|  |     login | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Ejecutar función principal con los parámetros recibidos | ||||||
|  | main "$@" | ||||||
|  | @ -6,7 +6,7 @@ Descripción: Actualiza las tarifas por hora de diferentes tipos de programadore | ||||||
| Autor: Mauro Rosero P. <mauro@rosero.one>  | Autor: Mauro Rosero P. <mauro@rosero.one>  | ||||||
| Creación: 2025-03-12 | Creación: 2025-03-12 | ||||||
| Actualización: 2025-03-12 | Actualización: 2025-03-12 | ||||||
| Versión: 1.0 | Versión: 1.2.0 | ||||||
| Licencia: AGPL | Licencia: AGPL | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue