[MODIFIED] Nuevo Token para Jarvis
[FIXED] Para pasar el valor a la función de encriptación
This commit is contained in:
parent
f28cc21519
commit
2efdcec22e
3 changed files with 7 additions and 179 deletions
|
@ -232,7 +232,7 @@ main() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Obtener token
|
# Obtener token
|
||||||
token=$(get_token "$provider_desc" "$provider_code")
|
get_token "$provider_desc" "$provider_code"
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
dialog_error_box "${head_canceled}" "${aimsg_108}"
|
dialog_error_box "${head_canceled}" "${aimsg_108}"
|
||||||
clear
|
clear
|
||||||
|
@ -240,7 +240,7 @@ main() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Encriptar token
|
# 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"
|
dialog_error_box "${head_success}" "${aimsg_109} $sops_file"
|
||||||
else
|
else
|
||||||
dialog_error_box "${head_error}" "${aimsg_110}"
|
dialog_error_box "${head_error}" "${aimsg_110}"
|
||||||
|
|
|
@ -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
|
|
|
@ -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": {
|
"sops": {
|
||||||
"kms": null,
|
"kms": null,
|
||||||
"gcp_kms": null,
|
"gcp_kms": null,
|
||||||
"azure_kv": null,
|
"azure_kv": null,
|
||||||
"hc_vault": null,
|
"hc_vault": null,
|
||||||
"age": null,
|
"age": null,
|
||||||
"lastmodified": "2025-03-19T19:20:07Z",
|
"lastmodified": "2025-03-21T22:27:06Z",
|
||||||
"mac": "ENC[AES256_GCM,data:OdAbCBM749u+2jNyWCeqWEZjQhZPBbrFX5D+D00oFCMHdU1SFPE4+7+bcGdjS2sdzgU5VQJhj72RRK0RYToRBQDoW17lmXHhvShrXAfHmtCr27ikjDTRnecBFgGOrzk3LkADtNj33w0U7OeQjC5BzLBXlIJzRCjoAFigXIbvrUA=,iv:8mFrzFyUTx43Pk8ntw7MGc3y2MDgGLBz2lNQQe1J4IA=,tag:dmwrgkBntqtG9z0aNjnCOg==,type:str]",
|
"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": [
|
"pgp": [
|
||||||
{
|
{
|
||||||
"created_at": "2025-03-19T19:20:07Z",
|
"created_at": "2025-03-21T22:27:06Z",
|
||||||
"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-----",
|
"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"
|
"fp": "ACB17A9DB7A680D0FED714E2A17ADF8EA1E9DB07"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in a new issue