[MODIFIED] Nuevo Token para Jarvis

[FIXED] Para pasar el valor a la función de encriptación
This commit is contained in:
Mauro Rosero P. 2025-03-21 17:32:46 -05:00
parent f28cc21519
commit 2efdcec22e
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26
3 changed files with 7 additions and 179 deletions

View file

@ -232,7 +232,7 @@ main() {
fi
# Obtener token
token=$(get_token "$provider_desc" "$provider_code")
get_token "$provider_desc" "$provider_code"
if [ $? -ne 0 ]; then
dialog_error_box "${head_canceled}" "${aimsg_108}"
clear
@ -240,7 +240,7 @@ main() {
fi
# Encriptar token
if encrypt_token "$provider_code" "$token"; then
if encrypt_token "$provider_code" "$value"; then
dialog_error_box "${head_success}" "${aimsg_109} $sops_file"
else
dialog_error_box "${head_error}" "${aimsg_110}"

View file

@ -1,172 +0,0 @@
#!/bin/bash
#Script : jarvis_token.sh
#Apps : MRDEVS TOOLS
#Description : Almacena token encriptado de Claude Code (Jarvis) usando SOPS
#Author : Mauro Rosero Pérez
#Company Email : mauro@rosero.one
#Personal Email : mauro.rosero@gmail.com
#Created : 2025/03/12 20:26:07
#Modified : 2025/03/19 11:57:08
#Version : 1.2.0
#Use Notes :
# Jarvis es el agente autonomo a nivel de servidor
#==============================================================================
# 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
# Usar DEVELOPER_DIR de base.lib
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BIN_BASE="bin"
BIN_LIBS="lib"
BIN_MESG="msg"
BIN_CFGS="config"
BIN_SOPS="sops"
# 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")
# 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"
title="${head_000} ${head_002}"
check_dependencies() {
# Verificar que 'dialog' esté instalado
if ! command -v dialog &>/dev/null; then
echo "${npm_001}"
exit 1
fi
# Verificar que 'sops' esté instalado
if ! command -v sops &>/dev/null; then
dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_051}" 7 50
exit 1
fi
}
encrypt_token() {
local output_file="$1"
local token="$2"
local token_file="/tmp/jarvis_token_$$"
# Ensure directory exists
mkdir -p "${BIN_HOME}/${BIN_SOPS}"
# Convert token to base64
local token_base64=$(echo -n "$token" | base64)
# Create temporary file with base64 encoded token
echo "$token_base64" > "$token_file"
# Encrypt using sops
if sops --encrypt "$token_file" > "$output_file"; then
# Ensure secure permissions
chmod 600 "$output_file"
else
rm -f "$token_file"
return 1
fi
# Clean up
rm -f "$token_file"
return 0
}
main() {
check_dependencies
# Ensure directory exists
mkdir -p "${BIN_HOME}/${BIN_SOPS}"
# Get SOPS config file path
sops_file="${BIN_HOME}/${BIN_SOPS}/jarvis.sops.yaml"
# Check if file exists and ask for confirmation to overwrite
if [ -f "$sops_file" ]; then
dialog --backtitle "$title" --title "${npm_031}" \
--yesno "El archivo $sops_file ${npm_053}" 7 60
if [ $? -ne 0 ]; then
dialog --backtitle "$title" --title "${head_canceled}" --msgbox "${npm_008}" 6 40
clear
exit 0
fi
fi
# Get Jarvis token
while true; do
token=$(dialog --backtitle "$title" --stdout --title "${npm_000_0} Token" \
--passwordbox "${npm_054} ${npm_000_0}:" 8 60)
# Check if user canceled
if [ $? -ne 0 ]; then
clear
dialog --backtitle "$title" --title "${head_canceled}" --msgbox "${npm_008}" 6 40
clear
exit 0
fi
# Validate token
if [ -z "$token" ]; then
dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_055}" 7 60
continue
fi
# Check token length (should be at least 64 characters)
if [ ${#token} -lt 64 ]; then
dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_056}" 7 60
continue
fi
# Check token format (should contain alphanumeric characters and some special chars)
if ! [[ "$token" =~ ^[A-Za-z0-9\#\-\_\.]+$ ]]; then
dialog --backtitle "$title" --title "${head_warning}" --msgbox "${npm_057}" 7 60
fi
# Token is valid
break
done
# Clear screen before proceeding
clear
# Encrypt the token
if encrypt_token "$sops_file" "$token"; then
dialog --backtitle "$title" --title "${npm_014}" --msgbox "${npm_058} $sops_file" 7 70
else
dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_059}" 7 50
clear
exit 1
fi
}
# Execute main function
main
clear
exit 0

View file

@ -1,17 +1,17 @@
{
"data": "ENC[AES256_GCM,data:0QDmEqXpOKs0v1ga5BGLKBMUfG3oonXdwJywtiZEuDzOflSFO9wteezYIz2na85Zlli5I+pYUpt96lg43ZqZ9ZiyCrpfrfuDqcVscVSr9iWc+rMAYjLVBUZI5+gH1PsUZFlG5o+ioKl+tYunFU9hKx7FbHRFIe1AGbweoDxy6mMjqwxHwdopoHoV+8zoSqK5XFo=,iv:HdXQhmFARl9mlAIxfHFjrKT6+wG0SZQ0yvVH9W9yruw=,tag:5wAk2e5wXi5ckDA25tK5kA==,type:str]",
"data": "ENC[AES256_GCM,data:dbwrHE/0qqxyl1IJ6zd8hR3PmAYPF4lDDnWSDTKhW9kBNEf5WHRjgCK55bNBWVw7F9zcQa4vTuuyMzxXfy3iSJNeXDKDdKEZetf/x4KIl/RCsDwvN6fbxfBBeIL9O/xKzJiH5QXFMJIlWXUfAI/BUpndamKp/8zIqGjSI/rUnEIFB/JdU7puBxw6/3npct9oNVY=,iv:k4Da7Vfhnusbq5eLaF4TEFTyF2tswhKEWPuA9h6I2EU=,tag:geUtJ1HP2+q9cKRuEWHPgA==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": null,
"lastmodified": "2025-03-19T19:20:07Z",
"mac": "ENC[AES256_GCM,data:OdAbCBM749u+2jNyWCeqWEZjQhZPBbrFX5D+D00oFCMHdU1SFPE4+7+bcGdjS2sdzgU5VQJhj72RRK0RYToRBQDoW17lmXHhvShrXAfHmtCr27ikjDTRnecBFgGOrzk3LkADtNj33w0U7OeQjC5BzLBXlIJzRCjoAFigXIbvrUA=,iv:8mFrzFyUTx43Pk8ntw7MGc3y2MDgGLBz2lNQQe1J4IA=,tag:dmwrgkBntqtG9z0aNjnCOg==,type:str]",
"lastmodified": "2025-03-21T22:27:06Z",
"mac": "ENC[AES256_GCM,data:DEEEq9qvSGhsgWb6k5br0mxB85LAgA7XWxuFyi3TF+kIe/f2/Du/RNnvU9/jDU5eN6w6K+ERQQNwG9YcL8VlWK07xrQYxL40SEuPB0vhWFCA+yXXrNGLalv+vWHDK2S9wnv1p//fk9IwrDLDfk6ki+/P/hxne7IV31lYoF+EOLc=,iv:QOcBMPiSrKDzWflQ1loDb1+E29GooZwGYXkbsWOJvyg=,tag:cSy6ImCXKKZSitQWuB6s4Q==,type:str]",
"pgp": [
{
"created_at": "2025-03-19T19:20:07Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAx5Q8cfEImn/ARAAwYo+n42glMyddN5Ci5aKAp6Eg8rJKSQnzFKAT9CBHCeV\n8p9uymDsEq/BBaUDr3s7uFHHSwMgJLYUfAFcAXC7nFInxQ1t1miUr45njIaKMTuX\nnr72Y6U2xwYlY0vzYC4hmBiedJyRbBV8AIveZLZdhugGq6bsrdJOHjyC67JwwmKX\nZwgmLaCS6qDxoIKnyFIoPWVz4FZCE4y6A27fkXpSjU70/8yZC9ghMN1IXFNsJx6C\nrsyS0tyIwZcz5MSWcSNczgpzC9+UJFGAvZwR2geyUi0xrZpuXD2NAmU2nklG+YsN\ntbdJErFmWvZZBi6Si6AxHaHZLDgGsZq6DltBSjN/ySuNVeZ7M3opi28bHKFwYC2J\n9AAUhNzQIDBA4MQrPLy1u3C6PB6AS6aZ9jnVm3IeWyQUZ0Pk5Xysvp9Re230gMTy\nfR4rESQ0RohBMpMptlYEAZR/PebPSMnH5wikvb84FIROhhcEbn29lOw/ssEHdj7D\nO0VdqDLoW6znHCiuB5NfIxV4x98c5e2/c0KYiZQqRFmGuSndB17M5S8knD8VSJ83\nUIrQtH+Mjp1Yifx4AvPa2TQrmaQNH7dcjtkd5Tqun8NoBYUPv8jTH36ti+lyt2gZ\nSwegV+bTaeMZhvOsc1k2MAtchv8nKno8NQberUIytZteoWJWZs+iBd1/VFBpF4zS\nXgHeYOAtI0FjkX4kVrANwtFcFe7E7/6HgXeUNn2seuapqWp1/1TuVjzv+KM5R+3a\nAk4pwoi0wQnjj0Jk1qE7kDUrQGAxP/gb117ACEewOh1BogMZWvw0YW5xa53iPz4=\n=+/ik\n-----END PGP MESSAGE-----",
"created_at": "2025-03-21T22:27:06Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAx5Q8cfEImn/AQ/9FbFO7illKRiQoiRWszamHYbEGLDNCnOwzdqvMCC1k3EK\nsqtp6MzNbO3LvR6BOHNPuybvSQUdf4xKMAKOsWHk3i61nJhzc0q6Q7SWYmDli4xi\nD2YF3NQEYcyCS/rf45jKtm5eJuvQGZT+y9+hVWXV+NRCoG86eiQabY+MoCJ1y0k7\nKq+/uza6Tvpnaxqeyf9a0kwUnskjmcRt2r72+BfMVpDlHSQ079zhpRo4VdGoDizW\nFJ3XrFiLqP8LAEFZaBpJzXBphXp0uvSHq9Fq+ELTHWArcoT/48Gqm8ZPuuU+J8TV\nA4E4TwfWjxJojcrPHCisXapW/5WiYssR+QZxmeoTgoCJXHpFkWFiHiGWWOYslQdb\noBlvr0+qnPlaFdx11hqvJ2Yoo4pWWsdDi/MYQEP5+ExVpfbCH+V6OeQ+YsmSdHhF\nHZXH8eqRFI7QY46Wyn3NiOnhVt+iRNrd9mWDanzkCPEE3BgounwA4nmvvfOie8qU\nkbcsAdfnd4VJK4G5qe1bz3BfsQmJf5xtVCV9XFDT47uyIJub2fc4Z0DQCherfhvc\n07RSYGU6/r2niIt9p79xoUNn6gcl40vFUTObR1BGoUcuulNMr9mf57N3OHwEp+le\ni3eFZA8yw5PVzTuAhqkhRlNP5vtP9MVongIbhD0MGgfJ11RHzwekccsILZyelWPS\nXAEHpLpxLyD8FQBtL7C7tC/kwi8Pr1wtSpgWH0aI2oEgtZR39uKxVp0x6vn9c4ZV\npVxnQQb6IhsgGn2ZUjzkkegaXIASqi4kXKV4FIhOtU9EVMDkiCSwnKgPYJtH\n=+1pw\n-----END PGP MESSAGE-----",
"fp": "ACB17A9DB7A680D0FED714E2A17ADF8EA1E9DB07"
}
],