[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>
This commit is contained in:
Mauro Rosero P. 2025-03-21 17:07:30 -05:00
parent 1a4c7e609a
commit 894235d7e5
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26
8 changed files with 291 additions and 188 deletions

258
bin/ai_token.sh Executable file
View file

@ -0,0 +1,258 @@
#!/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 16:53:56
#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="Gestor de Tokens de IA"
title="${head_000} ${head_002}"
# Comprobar dependencias necesarias
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
}
# 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 "ERROR: El archivo de configuración de proveedores no existe: $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
# Añadir opción para salir
options+="\n999:Salir"
# Mostrar menú usando console.lib
choice=$(menu_actions "Seleccione el proveedor de IA para configurar su token:" "$options" 12)
# Verificar salida
if [ "$choice" == "${head_key_end}" ] || [ "$choice" == "999" ]; then
clear
echo "Operación cancelada por el usuario."
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 "Token de API para $provider_name" "Ingrese su token de API para $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}" "El token no puede estar vacío. Por favor ingrese un token válido."
continue
fi
# Comprobar longitud del token (debe tener al menos 20 caracteres)
if [ ${#value} -lt 20 ]; then
dialog_error_box "${head_warning}" "El token parece ser demasiado corto. Verifique que haya copiado el token completo."
# Preguntar si continuar
dialog_yesno "¿Desea continuar de todos modos con este token?"
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 "El archivo $sops_file ya existe. ¿Desea sobrescribirlo?"
if [ $result -ne 0 ]; then
dialog_error_box "${head_canceled}" "Operación cancelada por el usuario."
clear
exit 0
fi
fi
# Obtener token
token=$(get_token "$provider_desc" "$provider_code")
if [ $? -ne 0 ]; then
dialog_error_box "${head_canceled}" "Operación cancelada por el usuario."
clear
exit 0
fi
# Encriptar token
if encrypt_token "$provider_code" "$token"; then
dialog_error_box "${head_success}" "El token de $provider_desc ha sido encriptado exitosamente en: $sops_file"
else
dialog_error_box "${head_error}" "Falló la encriptación del token de $provider_desc."
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 @@
"claude","Anthropic Calude API",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

@ -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