From 2efdcec22e8bf42a78bb88e2efad27bfe00d0cbe Mon Sep 17 00:00:00 2001 From: "Mauro Rosero P." Date: Fri, 21 Mar 2025 17:32:46 -0500 Subject: [PATCH] =?UTF-8?q?[MODIFIED]=20Nuevo=20Token=20para=20Jarvis=20[F?= =?UTF-8?q?IXED]=20Para=20pasar=20el=20valor=20a=20la=20funci=C3=B3n=20de?= =?UTF-8?q?=20encriptaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/ai_token.sh | 4 +- bin/jarvis_token.sh | 172 ------------------------------------------ sops/jarvis.sops.yaml | 10 +-- 3 files changed, 7 insertions(+), 179 deletions(-) delete mode 100755 bin/jarvis_token.sh diff --git a/bin/ai_token.sh b/bin/ai_token.sh index 018ceda..9efb918 100755 --- a/bin/ai_token.sh +++ b/bin/ai_token.sh @@ -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}" diff --git a/bin/jarvis_token.sh b/bin/jarvis_token.sh deleted file mode 100755 index 268a578..0000000 --- a/bin/jarvis_token.sh +++ /dev/null @@ -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. ] -#============================================================================== -# 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 -# 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 diff --git a/sops/jarvis.sops.yaml b/sops/jarvis.sops.yaml index 9fe0036..0ebdc44 100644 --- a/sops/jarvis.sops.yaml +++ b/sops/jarvis.sops.yaml @@ -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" } ],