Compare commits

...

4 commits

Author SHA1 Message Date
f28cc21519
[FIXED] Jarvis Description Claude Token 2025-03-21 17:19:25 -05:00
453bd7e90f
[IMPROVED] Simplificar menú de ai_token.sh eliminando opción de salida explícita
- Elimina la opción 999 para salir del menú
- Mantiene la funcionalidad de salir con la tecla ESC
- Usa el comportamiento estándar de console.lib para manejo de cancelación

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-21 17:15:13 -05:00
1ad34ff7b7
[IMPROVED] Internacionalizar ai_token.sh para usar variables de mensajes
- Reemplaza todos los strings hardcodeados por variables de mensajes
- Añade soporte completo para internacionalización
- Actualiza documentación en README.md sobre el gestor de tokens
- Incluye información detallada sobre proveedores soportados

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-21 17:12:52 -05:00
894235d7e5
[ADDED] Script ai_token.sh para gestionar múltiples tokens de proveedores de IA
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-21 17:07:30 -05:00
10 changed files with 324 additions and 188 deletions

View file

@ -66,6 +66,7 @@ bin/update.sh
| `bin/aider_install.sh -u` | Desinstala Aider CLI | | `bin/aider_install.sh -u` | Desinstala Aider CLI |
| `bin/sora_enable.sh` | Activa el alias 'sora' para Aider permanentemente | | `bin/sora_enable.sh` | Activa el alias 'sora' para Aider permanentemente |
| `bin/sora_disable.sh` | Desactiva el alias 'sora' para Aider | | `bin/sora_disable.sh` | Desactiva el alias 'sora' para Aider |
| `bin/ai_token.sh` | Gestiona tokens de múltiples proveedores de IA vía SOPS |
### Herramientas para Editores de Código ### Herramientas para Editores de Código
@ -162,6 +163,23 @@ bin/aider_install.sh -u
Aider es un asistente de código basado en IA que te permite colaborar con modelos de lenguaje de OpenAI directamente desde la terminal. El script de instalación utiliza el instalador oficial de Aider. Aider es un asistente de código basado en IA que te permite colaborar con modelos de lenguaje de OpenAI directamente desde la terminal. El script de instalación utiliza el instalador oficial de Aider.
#### Gestor de Tokens de IA
```bash
# Gestionar tokens de diferentes proveedores de IA
bin/ai_token.sh
```
El script `ai_token.sh` proporciona una forma centralizada y segura de gestionar tokens de API para múltiples proveedores de IA:
- Muestra un menú interactivo con los proveedores disponibles definidos en `bin/config/ai.tokens`
- Solicita y valida el token de API de forma segura
- Encripta el token usando SOPS y lo almacena en `$HOME/sops/{provider}.sops.yaml`
- Incluye verificaciones de seguridad (longitud del token, caracteres válidos)
- Soporte completo para internacionalización
Proveedores soportados por defecto: Anthropic Claude, OpenAI ChatGPT, Google Gemini, Groq, DeepSeek, HuggingFace, Replicate, OpenRouter, Brave Search, Serper Search, Voyage RAG, Apify y más.
La configuración de proyectos se almacena en `bin/config/projects.dat`, donde se encuentra el nombre de la carpeta de proyectos utilizada por el sistema. La configuración de proyectos se almacena en `bin/config/projects.dat`, donde se encuentra el nombre de la carpeta de proyectos utilizada por el sistema.
### Instalación de Helix Editor ### Instalación de Helix Editor

255
bin/ai_token.sh Executable file
View file

@ -0,0 +1,255 @@
#!/bin/bash
#Script : ai_token.sh
#Apps : MRDEVS TOOLS
#Description : Gestiona tokens de proveedores de IA usando SOPS
#Author : Sora Rosero One <sora@rosero.one>
#Generated by : Claude Code (claude-3-7-sonnet-20250219)
#Created : 2025/03/21 16:06:20
#Modified : 2025/03/21 17:14:59
#Version : 1.0.0
#Use Notes :
# Gestiona múltiples tokens de IA definidos en ai.tokens
#==============================================================================
# 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"
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"
BIN_PATH=$BIN_HOME/$BIN_BASE
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"
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/developers.lib"
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.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"
apps_title="${aimsg_100}"
title="${head_000} ${head_002}"
# Comprobar dependencias necesarias
check_dependencies() {
# Verificar que 'dialog' esté instalado
if ! command -v dialog &>/dev/null; then
echo "${qrmsg_013}"
exit 1
fi
# Verificar que 'sops' esté instalado
if ! command -v sops &>/dev/null; then
dialog_error_box "${head_error}" "${aimsg_115}"
exit 1
fi
}
# Función para cargar la lista de proveedores desde el archivo de configuración
load_providers() {
local config_file="$BIN_HOME/$BIN_BASE/$BIN_CFGS/ai.tokens"
if [ ! -f "$config_file" ]; then
echo "${aimsg_111} $config_file"
exit 1
fi
# Inicializar arrays globales para los proveedores
provider_codes=()
provider_descs=()
# Leer el archivo de configuración y llenar los arrays
while IFS=',' read -r provider_code provider_desc enabled active extra; do
# Eliminar comillas
provider_code=$(echo "$provider_code" | tr -d '"')
provider_desc=$(echo "$provider_desc" | tr -d '"')
# Agregar a los arrays
provider_codes+=("$provider_code")
provider_descs+=("$provider_desc")
done < <(grep -v "^#" "$config_file")
}
# Función para encriptar token con SOPS
encrypt_token() {
local provider_code="$1"
local token="$2"
local output_file="$BIN_HOME/$BIN_SOPS/${provider_code}.sops.yaml"
local temp_file="/tmp/ai_token_$$"
# Crear directorio si no existe
mkdir -p "$BIN_HOME/$BIN_SOPS"
# Codificar el token en base64
local token_base64=$(echo -n "$token" | base64)
# Crear archivo temporal con token codificado
echo "$token_base64" > "$temp_file"
# Encriptar usando SOPS
if sops --encrypt "$temp_file" > "$output_file"; then
# Asegurar permisos adecuados
chmod 600 "$output_file"
rm -f "$temp_file"
return 0
else
rm -f "$temp_file"
return 1
fi
}
# Función para mostrar menú de proveedores usando console.lib
show_provider_menu() {
local options=""
local menu_text=""
# Construir el menú usando console.lib
for i in "${!provider_codes[@]}"; do
# Asegurarnos de que la clave sea única
if [ -n "$options" ]; then
options+="\n"
fi
options+="${i}:${provider_descs[i]}"
# Añadir descripción para el menú
if [ -n "$menu_text" ]; then
menu_text+="\n"
fi
menu_text+="${i} ${provider_codes[i]}"
done
# Mostrar menú usando console.lib
choice=$(menu_actions "${aimsg_101}" "$options" 12)
# Verificar salida
if [ "$choice" == "${head_key_end}" ]; then
clear
echo "${aimsg_108}"
exit 0
fi
# Obtener el código y descripción del proveedor seleccionado
selected_provider_code="${provider_codes[$choice]}"
selected_provider_desc="${provider_descs[$choice]}"
return 0
}
# Función para solicitar el token al usuario usando console.lib
get_token() {
local provider_name="$1"
local provider_code="$2"
while true; do
# Usar dialog_input_pass de console.lib
dialog_input_pass "${aimsg_102} $provider_name" "${aimsg_103} $provider_code:" ""
# Comprobar si el usuario canceló
if [ $codex -ne 0 ]; then
return 1
fi
# Validar token
if [ -z "$value" ]; then
dialog_error_box "${head_error}" "${aimsg_104}"
continue
fi
# Comprobar longitud del token (debe tener al menos 20 caracteres)
if [ ${#value} -lt 20 ]; then
dialog_error_box "${head_warning}" "${aimsg_105}"
# Preguntar si continuar
dialog_yesno "${aimsg_106}"
if [ $result -ne 0 ]; then
continue
fi
fi
# Token válido
break
done
# Devolver el token
echo "$value"
return 0
}
# Función principal
main() {
check_dependencies
# Cargar proveedores
load_providers
# Mostrar menú de proveedores
show_provider_menu
# Ahora tenemos selected_provider_code y selected_provider_desc
provider_code="$selected_provider_code"
provider_desc="$selected_provider_desc"
# Verificar archivo de token si ya existe
sops_file="$BIN_HOME/$BIN_SOPS/${provider_code}.sops.yaml"
if [ -f "$sops_file" ]; then
# Preguntar con dialog_yesno de console.lib
dialog_yesno "${aimsg_107}"
if [ $result -ne 0 ]; then
dialog_error_box "${head_canceled}" "${aimsg_108}"
clear
exit 0
fi
fi
# Obtener token
token=$(get_token "$provider_desc" "$provider_code")
if [ $? -ne 0 ]; then
dialog_error_box "${head_canceled}" "${aimsg_108}"
clear
exit 0
fi
# Encriptar token
if encrypt_token "$provider_code" "$token"; then
dialog_error_box "${head_success}" "${aimsg_109} $sops_file"
else
dialog_error_box "${head_error}" "${aimsg_110}"
clear
exit 1
fi
}
# Ejecutar función principal
main
clear
exit 0

12
bin/config/ai.tokens Normal file
View file

@ -0,0 +1,12 @@
"jarvis","Anthropic Calude API (Jarvis)",0,1,0
"router","Open Router API",0,1,0
"chatgpt","OpenAI ChatGPT API",0,1,0
"dpseek","DeepSeek API",0,1,0
"groq","Groq Cloud API",0,1,0
"gemini","Google Gemini API",0,1,0
"hface","HuggingFace API",0,1,0
"brave","Brave Search API",0,1,0
"replica","Replicate API",0,1,0
"serper","Serper Search API",0,1,0
"voyage","Voyage RAG API",0,1,0
"apify","Apify Scrapping API",0,1,0

View file

@ -243,3 +243,21 @@ glmsg_050="Para autenticarse con GitLab, ejecute:"
glmsg_051="Para más información, visite: https://gitlab.com/gitlab-org/cli/blob/main/docs/index.md" glmsg_051="Para más información, visite: https://gitlab.com/gitlab-org/cli/blob/main/docs/index.md"
glmsg_052="ERROR: La instalación de GitLab CLI falló." glmsg_052="ERROR: La instalación de GitLab CLI falló."
# Mensajes para ai_token.sh
aimsg_100="GESTOR DE TOKENS DE IA"
aimsg_101="Seleccione el proveedor de IA para configurar su token:"
aimsg_102="Token de API para"
aimsg_103="Ingrese su token de API para"
aimsg_104="El token no puede estar vacío. Por favor ingrese un token válido."
aimsg_105="El token parece ser demasiado corto. Verifique que haya copiado el token completo."
aimsg_106="¿Desea continuar de todos modos con este token?"
aimsg_107="El archivo ya existe. ¿Desea sobrescribirlo?"
aimsg_108="Operación cancelada por el usuario."
aimsg_109="El token ha sido encriptado exitosamente en:"
aimsg_110="Falló la encriptación del token."
aimsg_111="Error: El archivo de configuración de proveedores no existe:"
aimsg_112="El token contiene caracteres no estándar. Verifique que sea correcto."
aimsg_113="Salir"
aimsg_114="Selección inválida. Intente nuevamente."
aimsg_115="SOPS no está instalado. Por favor, ejecute bin/bootstrap.sh para instalar las herramientas necesarias."

View file

@ -1,32 +0,0 @@
FWD_TOKEN: ENC[AES256_GCM,data:sxOyv9fj4w+eOgpYFSsVwZ2nZFfUNs9eK/oP5GMiEMYErwgT,iv:lxJLIGzsWoBaCoutKzq3qNi+oJ8igOLXfv6n+K+zI1w=,tag:CfrKKHyxCTskON+RLdkCtg==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2024-07-27T01:17:25Z"
mac: ENC[AES256_GCM,data:V2LYucUmH22bNoUnvNlVF8MGHmhsTOQJ5iSW0IC8t/zTwUuHzCZDR6PP4Cy4PK3rDaiUYdsRH8s0byOwWoKlE6+Z0W7ZKpGKv9yKaUwqAl6/f71oHECZVYCupZhbAYxiQ3Yxec+NbS/OIwrmzWNXCLFc9yTAnOMK1ZFYOsrkn+Y=,iv:rSfegBdDF8MtMwDsiLq42lM+J5nUj/MC28srL86l0Kk=,tag:CsOIqs4lo8Yz/Ir3AVPuyQ==,type:str]
pgp:
- created_at: "2024-06-26T16:08:02Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMAx5Q8cfEImn/AQ//eFlqcYujdwa9I6jgJGjG3xbfY5ongvORk/0w3sndiBwH
RjygleZU/00C+ZJYC3eN/wG9QYrhQ6eIfQ5dPKNVNG+to9OHrwGZNyp1SJyQZwgA
tWtLWemo4896tj4rDtIfJ1+dk8RYUVhwBXfSRzhNlsQRyTIhiyDWpyC26cRy/Yb1
D/8xxU4ChQWKFBfTXIxkLtGLcE5apa7qvQOQ/KjxUHKEmbSuyLVe/7vyR336xTek
XD5EJeOeRokZyv7jZx76iSBIErKGq46AFzgBk2S4zbDQfuairOp3evRxD8isvBSn
Wk34Ejjq8cUidPOmEfMZ6m4m+dfBxeHdF8Z0BfJqm8ciL7f96zMH+3wfnCcOwTs+
0oceYqZjXSStZuxy8fiao4xnvhSHQSXutnyHkW4fqRGHi+4RjjZ5DQsVgfzIjTZK
qBQ8oek5g5RshRF20B/ercG019Xu2EjsmvRS7Qo+UFqdkiAQss75dvhC5o1KQ9B7
XFZbiabApT6ugmGierXb9rd/JdlZXG4QvtvFpUeXiHMwTJxfmpVJmUd1OUDNy9kj
pE+C1szj2Bwm4DGEHLughtxI6lBJvnhK1T/RUH0Ay/JyZl9GnUiheRQgVkHJAQE/
BDKjaNA+cJ7lCEf1vEqOj7Sys3Ow4WmtEPexlkfWU/MtFKrB9iTx0Anhn1iYesPS
XgFAT1JjPn/QnX3UdYDaDdRjzU5RZ6QYGRZx1f4uOcYveT4/zY2yOVRo75JAYZY6
mOt8EqC4FbGMBnNtPCSW/O1fGz4zvQv1+enJLAWVOYCSwPmKobHDCBEuxtUN/Vw=
=5s0f
-----END PGP MESSAGE-----
fp: 5E03E50A10EF95AD7082F2331E50F1C7C42269FF
unencrypted_suffix: _unencrypted
version: 3.9.0

21
sops/groq.sops.yaml Normal file
View file

@ -0,0 +1,21 @@
{
"data": "ENC[AES256_GCM,data:G4t/rJUQ+D5kXKpa9Z6ho0j63PjcqAJszUHfTaj6mY99HO5Oq44cmoNTJF3B8T+jLe6L+tCmGjCprtxf9gn6rJH2J7yZNg+rM34AZnE=,iv:mUjUwD+JxfGdWQCU3EpkSEdAtJfeagK2qgWRe50aQb0=,tag:IfMBpStbF1WN8QED8ce4iA==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": null,
"lastmodified": "2025-03-21T22:05:23Z",
"mac": "ENC[AES256_GCM,data:bJhHUYvPCnW70WDrmMQlXYVl+YlUXISaq3Jl0+yUn0f58UTAw+tV/VRAhwQ4Idem2qh/O9O/z6agoRfAmcBsM33nFqltS19jDkfH8p69wSAqkpgFG+5/1uQuQuFdZPsDuBHWWVQPifk8B7ou9K+aZoBMtDN3+1KXKOfzy5ZE/6A=,iv:K1IDjtKZZbrkJ/d/KHLqv27fE8C+PkCWAO2UF5kvUKo=,tag:k4jvC0x0Aptr4iHrJNhB6A==,type:str]",
"pgp": [
{
"created_at": "2025-03-21T22:05:23Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAx5Q8cfEImn/ARAAlnbMPu1hX3CoWRbVBL4WoLM/4YkI63hMyezqVVGX9H0i\nFt+nts0Y+quG9NcS0VBdEhR/fsCoJMIsDRf4KG6Hx0iW7KizOpOMhekhjoDKDms/\n4qAy5y5JxSLJCi2Q/6ATOsBMceK+tZyvsMEEcptsp+rd1i6Ij19+mWY3S6HCtIjT\nRbK54vMgOOmmoja6RZpYS+1jwEm3Elk6MfnKRBuZf1DYbcp3VL9jQdsViG9rB5gf\nJvvo8/nACa1Du4plgrwLEL70OFU0ZYq5Ag1J3e5G3wSD4Wfvynn/vw7Cc4mixmlj\nuZyPgsoLFxEYMGDoIupi/ztdWGTH7rFJxc0wFgVIj1bLKXJ0MRarR0tNkuTN2tFV\n7oZoRzEjU7yKP+OEXBn4EKNrAXzgDQK4x/Vrp111ucsZd6hlz0EhbUHSuXZDzkVX\nm7uKa/1/drjYNuOoaFOEAjAC8C0lYbatncihOjqsv/4QNCL0xW5Lhm7kn0CeUxnk\nSt5KNIejL8aTgtWTGuHmgDMIjVwcifIMi4TY11z9s1Qm8qWraTr83dufuMRfJ/S2\nn4WA0sRNLhPjaLrNX6TqhsBbbdDa7qZugVWiy1vFfO3s25WWMGjuee7PC3ROziTF\n0Z8PNYUliMCpkwnzrIXZLJGiSDa2pYgjdj7Oq8FFXKqWhlAROvMprdX5lBPX7h7S\nXgGfnc1LlfxuK1fZ5jIUgq5g089+gUaRh7w04a2hEfAdLjMwuy3Pp5M+q4dBDwj/\nrtMNLfsLx7KZvY5RH5t/kp9EO652ckxRp+6q+XFUf0vc/Be/H2FhioCIAakq3MI=\n=KHeg\n-----END PGP MESSAGE-----",
"fp": "ACB17A9DB7A680D0FED714E2A17ADF8EA1E9DB07"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.9.2"
}
}

View file

@ -1,39 +0,0 @@
email_user: ENC[AES256_GCM,data:N/WCt9AOEujAGYm1VNBNvxU=,iv:Yo9skhS/IcqwVztYGfltinNoIGB/wn0Pl3zwWw9MCK4=,tag:oSoVyy6shqaKj4/yCDBPJA==,type:str]
email_password: ENC[AES256_GCM,data:FYAJovKCynakjlbeL16dJUMfWO190wAk,iv:BMdolWsXVSmiBmQJ9Uzd5iFYWHUxsIE8+5v4mYqqIE8=,tag:fChsO7RRTCS5OEzQKwHIpg==,type:str]
imap_server: ENC[AES256_GCM,data:FgUcmb8GP0XKE81nrW0FNMoSWW35,iv:GrBb8Wb5lxy7PMpWXeug3NrNSrSWZC69t9y7MeZffko=,tag:hXHMiulPBeAlBYcz+Mr5YQ==,type:str]
imap_port: ENC[AES256_GCM,data:exfu,iv:jfi1/6afTMwyvUhwPF7nDgb7ftBEZuNIsjH5X6RMmyw=,tag:sYihTxL4dWDFAcpcGSu4QQ==,type:int]
imap_ssl: ENC[AES256_GCM,data:y2WVvQ==,iv:1tMskaB6wglPf1RsxytDbMcaIS+ArVZp69leZYBpKZQ=,tag:g+z0fu8NIBYStVuklJtrcg==,type:bool]
smtp_server: ENC[AES256_GCM,data:FbBQTXtJPS5DtL1W3Zrh9kkwFJ9Z,iv:rkOxOx3TDvAFfEu0KtK33lHVhrmfqMYbfSIjAhC7/q8=,tag:0arS3HPEghfoqtfdshzHig==,type:str]
smtp_port: ENC[AES256_GCM,data:OAQy,iv:r41gwA6EQANqQgV1rFeTFlbDhJic11n55dKLMR0Ea3s=,tag:FSVRfjPCWE6lxjA+HtjguQ==,type:int]
smtp_ssl: ENC[AES256_GCM,data:nIDVoA==,iv:bWszsK64EJz/HG75v17XWWEWlnWjbfZLjhwKlhL2rZw=,tag:0xApqNAA2sb3GvbiIgxvZw==,type:bool]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2025-01-06T14:01:44Z"
mac: ENC[AES256_GCM,data:W6CcDi95USxKgQRabUuyoxdUH76Y9m/HVGsTZGp/64tAKsZ021CGofWxzq3oC9NrRR57u67vUs3simoJfMdxKWUldkL9dV54U2jIvXHiVUN9daPnYXzhb8f+JajES08fGymiMVsfKSCYVWsYZ4oPqbY3N2up9kyj1Iv67vh8HOQ=,iv:Yb2f+y+1EeE3IDNXOPqfTeFAXhcVzODpd0Jtnbzykrs=,tag:qHxP/ts1s5jpa1J2tg4n1g==,type:str]
pgp:
- created_at: "2024-06-26T16:08:02Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMAx5Q8cfEImn/AQ//eFlqcYujdwa9I6jgJGjG3xbfY5ongvORk/0w3sndiBwH
RjygleZU/00C+ZJYC3eN/wG9QYrhQ6eIfQ5dPKNVNG+to9OHrwGZNyp1SJyQZwgA
tWtLWemo4896tj4rDtIfJ1+dk8RYUVhwBXfSRzhNlsQRyTIhiyDWpyC26cRy/Yb1
D/8xxU4ChQWKFBfTXIxkLtGLcE5apa7qvQOQ/KjxUHKEmbSuyLVe/7vyR336xTek
XD5EJeOeRokZyv7jZx76iSBIErKGq46AFzgBk2S4zbDQfuairOp3evRxD8isvBSn
Wk34Ejjq8cUidPOmEfMZ6m4m+dfBxeHdF8Z0BfJqm8ciL7f96zMH+3wfnCcOwTs+
0oceYqZjXSStZuxy8fiao4xnvhSHQSXutnyHkW4fqRGHi+4RjjZ5DQsVgfzIjTZK
qBQ8oek5g5RshRF20B/ercG019Xu2EjsmvRS7Qo+UFqdkiAQss75dvhC5o1KQ9B7
XFZbiabApT6ugmGierXb9rd/JdlZXG4QvtvFpUeXiHMwTJxfmpVJmUd1OUDNy9kj
pE+C1szj2Bwm4DGEHLughtxI6lBJvnhK1T/RUH0Ay/JyZl9GnUiheRQgVkHJAQE/
BDKjaNA+cJ7lCEf1vEqOj7Sys3Ow4WmtEPexlkfWU/MtFKrB9iTx0Anhn1iYesPS
XgFAT1JjPn/QnX3UdYDaDdRjzU5RZ6QYGRZx1f4uOcYveT4/zY2yOVRo75JAYZY6
mOt8EqC4FbGMBnNtPCSW/O1fGz4zvQv1+enJLAWVOYCSwPmKobHDCBEuxtUN/Vw=
=5s0f
-----END PGP MESSAGE-----
fp: 5E03E50A10EF95AD7082F2331E50F1C7C42269FF
unencrypted_suffix: _unencrypted
version: 3.9.0

View file

@ -1,39 +0,0 @@
email_user: ENC[AES256_GCM,data:NVoOIuEDMzZjzrr0EZNZfPw=,iv:bylMgoFkwH1oEMPujvrq/Vc4RCIeOZlJxOW+rBU7GuQ=,tag:iFv++8qiF+baIIIeuW7lGQ==,type:str]
email_password: ENC[AES256_GCM,data:ZNrTYejjgEETe9FTldy2qH3TYaIblVgc,iv:ULaupM9Gqp3UcFkxU1Fu7ZQGAzxsu2G/lfyTT7sd5Ng=,tag:idlYHSI//JyS1IYUpr+LBw==,type:str]
imap_server: ENC[AES256_GCM,data:FgUcmb8GP0XKE81nrW0FNMoSWW35,iv:GrBb8Wb5lxy7PMpWXeug3NrNSrSWZC69t9y7MeZffko=,tag:hXHMiulPBeAlBYcz+Mr5YQ==,type:str]
imap_port: ENC[AES256_GCM,data:exfu,iv:jfi1/6afTMwyvUhwPF7nDgb7ftBEZuNIsjH5X6RMmyw=,tag:sYihTxL4dWDFAcpcGSu4QQ==,type:int]
imap_ssl: ENC[AES256_GCM,data:y2WVvQ==,iv:1tMskaB6wglPf1RsxytDbMcaIS+ArVZp69leZYBpKZQ=,tag:g+z0fu8NIBYStVuklJtrcg==,type:bool]
smtp_server: ENC[AES256_GCM,data:FbBQTXtJPS5DtL1W3Zrh9kkwFJ9Z,iv:rkOxOx3TDvAFfEu0KtK33lHVhrmfqMYbfSIjAhC7/q8=,tag:0arS3HPEghfoqtfdshzHig==,type:str]
smtp_port: ENC[AES256_GCM,data:OAQy,iv:r41gwA6EQANqQgV1rFeTFlbDhJic11n55dKLMR0Ea3s=,tag:FSVRfjPCWE6lxjA+HtjguQ==,type:int]
smtp_ssl: ENC[AES256_GCM,data:nIDVoA==,iv:bWszsK64EJz/HG75v17XWWEWlnWjbfZLjhwKlhL2rZw=,tag:0xApqNAA2sb3GvbiIgxvZw==,type:bool]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2025-01-06T14:28:45Z"
mac: ENC[AES256_GCM,data:IUIIi3UACwwqHNqWFApgJMRxiCG5WBsjZ98OAMCrpaPXwcf9sCa/K9MGk6sNZi2QSX4WP1L6dYszBEWnCCbkJDiAbHyeKRy9qFUdUc9N2aD6NscyFZyRbUkuAf4SZCEMaNP9k1ekk1NViOfp3pQBnefLQYOSv2J8AJX8ujTZ6hA=,iv:AXXJ1STjHSnEU3ILv2wh5gO6+xxRCDXCvNYpRbXg/bI=,tag:cXO4KhAs47rz0rDqGPA70Q==,type:str]
pgp:
- created_at: "2024-06-26T16:08:02Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMAx5Q8cfEImn/AQ//eFlqcYujdwa9I6jgJGjG3xbfY5ongvORk/0w3sndiBwH
RjygleZU/00C+ZJYC3eN/wG9QYrhQ6eIfQ5dPKNVNG+to9OHrwGZNyp1SJyQZwgA
tWtLWemo4896tj4rDtIfJ1+dk8RYUVhwBXfSRzhNlsQRyTIhiyDWpyC26cRy/Yb1
D/8xxU4ChQWKFBfTXIxkLtGLcE5apa7qvQOQ/KjxUHKEmbSuyLVe/7vyR336xTek
XD5EJeOeRokZyv7jZx76iSBIErKGq46AFzgBk2S4zbDQfuairOp3evRxD8isvBSn
Wk34Ejjq8cUidPOmEfMZ6m4m+dfBxeHdF8Z0BfJqm8ciL7f96zMH+3wfnCcOwTs+
0oceYqZjXSStZuxy8fiao4xnvhSHQSXutnyHkW4fqRGHi+4RjjZ5DQsVgfzIjTZK
qBQ8oek5g5RshRF20B/ercG019Xu2EjsmvRS7Qo+UFqdkiAQss75dvhC5o1KQ9B7
XFZbiabApT6ugmGierXb9rd/JdlZXG4QvtvFpUeXiHMwTJxfmpVJmUd1OUDNy9kj
pE+C1szj2Bwm4DGEHLughtxI6lBJvnhK1T/RUH0Ay/JyZl9GnUiheRQgVkHJAQE/
BDKjaNA+cJ7lCEf1vEqOj7Sys3Ow4WmtEPexlkfWU/MtFKrB9iTx0Anhn1iYesPS
XgFAT1JjPn/QnX3UdYDaDdRjzU5RZ6QYGRZx1f4uOcYveT4/zY2yOVRo75JAYZY6
mOt8EqC4FbGMBnNtPCSW/O1fGz4zvQv1+enJLAWVOYCSwPmKobHDCBEuxtUN/Vw=
=5s0f
-----END PGP MESSAGE-----
fp: 5E03E50A10EF95AD7082F2331E50F1C7C42269FF
unencrypted_suffix: _unencrypted
version: 3.9.0

View file

@ -1,39 +0,0 @@
email_user: ENC[AES256_GCM,data:Shu1ND3+QxeOjuYTXpSqZDo=,iv:UWFX7n3IhrKmV+c2rJc0LJfbuw7j/hj3zTnutKlW1GU=,tag:xF6etHWv+DB4k/NxfCWfCw==,type:str]
email_password: ENC[AES256_GCM,data:OVGlxUU2PmVLg2uhaE6dSyS3tDVWZy9U,iv:j5TPbR7KYT9kRiux8I7tYXAqX1LbLIm90TgR0F3TxIM=,tag:vYjdfWuBoeQRxOwMT3Y0pA==,type:str]
imap_server: ENC[AES256_GCM,data:FgUcmb8GP0XKE81nrW0FNMoSWW35,iv:GrBb8Wb5lxy7PMpWXeug3NrNSrSWZC69t9y7MeZffko=,tag:hXHMiulPBeAlBYcz+Mr5YQ==,type:str]
imap_port: ENC[AES256_GCM,data:exfu,iv:jfi1/6afTMwyvUhwPF7nDgb7ftBEZuNIsjH5X6RMmyw=,tag:sYihTxL4dWDFAcpcGSu4QQ==,type:int]
imap_ssl: ENC[AES256_GCM,data:y2WVvQ==,iv:1tMskaB6wglPf1RsxytDbMcaIS+ArVZp69leZYBpKZQ=,tag:g+z0fu8NIBYStVuklJtrcg==,type:bool]
smtp_server: ENC[AES256_GCM,data:FbBQTXtJPS5DtL1W3Zrh9kkwFJ9Z,iv:rkOxOx3TDvAFfEu0KtK33lHVhrmfqMYbfSIjAhC7/q8=,tag:0arS3HPEghfoqtfdshzHig==,type:str]
smtp_port: ENC[AES256_GCM,data:OAQy,iv:r41gwA6EQANqQgV1rFeTFlbDhJic11n55dKLMR0Ea3s=,tag:FSVRfjPCWE6lxjA+HtjguQ==,type:int]
smtp_ssl: ENC[AES256_GCM,data:nIDVoA==,iv:bWszsK64EJz/HG75v17XWWEWlnWjbfZLjhwKlhL2rZw=,tag:0xApqNAA2sb3GvbiIgxvZw==,type:bool]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2025-01-06T13:56:42Z"
mac: ENC[AES256_GCM,data:sfkJr/26JA+xPdzQP6yNz2qkn2kYJLSHu8Kb2lLbKZCu0oUOzMtfK65wfHm5a70WuvIKxCJ0zKSZI4FOKV0XEszetUvrCLY8Uw8u2/qVTV7zVqD4hjTPSJoxA+EEuuc8jZ8V/ntSAxo88M30/ZbUJX8b60q9XRPzfcCeq9XjX+E=,iv:BcYVr5Qzp6XAUz4RbGqe+IJqNOOvCkC8SxsrMXZj/ok=,tag:kYjyNLAG/1XHw94DrYETYA==,type:str]
pgp:
- created_at: "2024-06-26T16:08:02Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMAx5Q8cfEImn/AQ//eFlqcYujdwa9I6jgJGjG3xbfY5ongvORk/0w3sndiBwH
RjygleZU/00C+ZJYC3eN/wG9QYrhQ6eIfQ5dPKNVNG+to9OHrwGZNyp1SJyQZwgA
tWtLWemo4896tj4rDtIfJ1+dk8RYUVhwBXfSRzhNlsQRyTIhiyDWpyC26cRy/Yb1
D/8xxU4ChQWKFBfTXIxkLtGLcE5apa7qvQOQ/KjxUHKEmbSuyLVe/7vyR336xTek
XD5EJeOeRokZyv7jZx76iSBIErKGq46AFzgBk2S4zbDQfuairOp3evRxD8isvBSn
Wk34Ejjq8cUidPOmEfMZ6m4m+dfBxeHdF8Z0BfJqm8ciL7f96zMH+3wfnCcOwTs+
0oceYqZjXSStZuxy8fiao4xnvhSHQSXutnyHkW4fqRGHi+4RjjZ5DQsVgfzIjTZK
qBQ8oek5g5RshRF20B/ercG019Xu2EjsmvRS7Qo+UFqdkiAQss75dvhC5o1KQ9B7
XFZbiabApT6ugmGierXb9rd/JdlZXG4QvtvFpUeXiHMwTJxfmpVJmUd1OUDNy9kj
pE+C1szj2Bwm4DGEHLughtxI6lBJvnhK1T/RUH0Ay/JyZl9GnUiheRQgVkHJAQE/
BDKjaNA+cJ7lCEf1vEqOj7Sys3Ow4WmtEPexlkfWU/MtFKrB9iTx0Anhn1iYesPS
XgFAT1JjPn/QnX3UdYDaDdRjzU5RZ6QYGRZx1f4uOcYveT4/zY2yOVRo75JAYZY6
mOt8EqC4FbGMBnNtPCSW/O1fGz4zvQv1+enJLAWVOYCSwPmKobHDCBEuxtUN/Vw=
=5s0f
-----END PGP MESSAGE-----
fp: 5E03E50A10EF95AD7082F2331E50F1C7C42269FF
unencrypted_suffix: _unencrypted
version: 3.9.0

View file

@ -1,39 +0,0 @@
email_user: ENC[AES256_GCM,data:x7Ae2seQ952FvGjGdOg=,iv:qPsx2hR2ChcrY3qB++qn3Ddwp/rlvp43PiyzH9lKKUM=,tag:aOUKQUzNOddofT3w/hkEJg==,type:str]
email_password: ENC[AES256_GCM,data:5uLanDzDAFLmu/LodFJNVc9mgt63rOmM,iv:d3t7zOJyxMXgAydZteos59VUShz+pi7lpDECg+zB644=,tag:pLVc00z+elvXC0paMYVZng==,type:str]
imap_server: ENC[AES256_GCM,data:FgUcmb8GP0XKE81nrW0FNMoSWW35,iv:GrBb8Wb5lxy7PMpWXeug3NrNSrSWZC69t9y7MeZffko=,tag:hXHMiulPBeAlBYcz+Mr5YQ==,type:str]
imap_port: ENC[AES256_GCM,data:exfu,iv:jfi1/6afTMwyvUhwPF7nDgb7ftBEZuNIsjH5X6RMmyw=,tag:sYihTxL4dWDFAcpcGSu4QQ==,type:int]
imap_ssl: ENC[AES256_GCM,data:y2WVvQ==,iv:1tMskaB6wglPf1RsxytDbMcaIS+ArVZp69leZYBpKZQ=,tag:g+z0fu8NIBYStVuklJtrcg==,type:bool]
smtp_server: ENC[AES256_GCM,data:FbBQTXtJPS5DtL1W3Zrh9kkwFJ9Z,iv:rkOxOx3TDvAFfEu0KtK33lHVhrmfqMYbfSIjAhC7/q8=,tag:0arS3HPEghfoqtfdshzHig==,type:str]
smtp_port: ENC[AES256_GCM,data:OAQy,iv:r41gwA6EQANqQgV1rFeTFlbDhJic11n55dKLMR0Ea3s=,tag:FSVRfjPCWE6lxjA+HtjguQ==,type:int]
smtp_ssl: ENC[AES256_GCM,data:nIDVoA==,iv:bWszsK64EJz/HG75v17XWWEWlnWjbfZLjhwKlhL2rZw=,tag:0xApqNAA2sb3GvbiIgxvZw==,type:bool]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2025-01-06T14:19:10Z"
mac: ENC[AES256_GCM,data:lPv22fULp6zfni/Icq2VyoExX3gHL9n+LQldDgC7ew22NmVP0SxmSj19NBDQz4xONF/5DykuxYqCLsrOCeMJC0ax6g9OxkcA05bL6gigEowAoVsbULLeGU9oSRRAo6XeZjHFmF+iJWKxrvH9y6AlDJaHAj+XnTNeh7ArfQt2dy0=,iv:NNRUM2NWECcbAP3X3OuN+Oe70BJx2j7rimBYHk3oWRM=,tag:IXLjnqj2rKVbBmTdYnNQnA==,type:str]
pgp:
- created_at: "2024-06-26T16:08:02Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQIMAx5Q8cfEImn/AQ//eFlqcYujdwa9I6jgJGjG3xbfY5ongvORk/0w3sndiBwH
RjygleZU/00C+ZJYC3eN/wG9QYrhQ6eIfQ5dPKNVNG+to9OHrwGZNyp1SJyQZwgA
tWtLWemo4896tj4rDtIfJ1+dk8RYUVhwBXfSRzhNlsQRyTIhiyDWpyC26cRy/Yb1
D/8xxU4ChQWKFBfTXIxkLtGLcE5apa7qvQOQ/KjxUHKEmbSuyLVe/7vyR336xTek
XD5EJeOeRokZyv7jZx76iSBIErKGq46AFzgBk2S4zbDQfuairOp3evRxD8isvBSn
Wk34Ejjq8cUidPOmEfMZ6m4m+dfBxeHdF8Z0BfJqm8ciL7f96zMH+3wfnCcOwTs+
0oceYqZjXSStZuxy8fiao4xnvhSHQSXutnyHkW4fqRGHi+4RjjZ5DQsVgfzIjTZK
qBQ8oek5g5RshRF20B/ercG019Xu2EjsmvRS7Qo+UFqdkiAQss75dvhC5o1KQ9B7
XFZbiabApT6ugmGierXb9rd/JdlZXG4QvtvFpUeXiHMwTJxfmpVJmUd1OUDNy9kj
pE+C1szj2Bwm4DGEHLughtxI6lBJvnhK1T/RUH0Ay/JyZl9GnUiheRQgVkHJAQE/
BDKjaNA+cJ7lCEf1vEqOj7Sys3Ow4WmtEPexlkfWU/MtFKrB9iTx0Anhn1iYesPS
XgFAT1JjPn/QnX3UdYDaDdRjzU5RZ6QYGRZx1f4uOcYveT4/zY2yOVRo75JAYZY6
mOt8EqC4FbGMBnNtPCSW/O1fGz4zvQv1+enJLAWVOYCSwPmKobHDCBEuxtUN/Vw=
=5s0f
-----END PGP MESSAGE-----
fp: 5E03E50A10EF95AD7082F2331E50F1C7C42269FF
unencrypted_suffix: _unencrypted
version: 3.9.0