Compare commits
4 commits
1a4c7e609a
...
f28cc21519
Author | SHA1 | Date | |
---|---|---|---|
f28cc21519 | |||
453bd7e90f | |||
1ad34ff7b7 | |||
894235d7e5 |
10 changed files with 324 additions and 188 deletions
18
README.md
18
README.md
|
@ -66,6 +66,7 @@ bin/update.sh
|
|||
| `bin/aider_install.sh -u` | Desinstala Aider CLI |
|
||||
| `bin/sora_enable.sh` | Activa el alias 'sora' para Aider permanentemente |
|
||||
| `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
|
||||
|
||||
|
@ -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.
|
||||
|
||||
#### 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.
|
||||
|
||||
### Instalación de Helix Editor
|
||||
|
|
255
bin/ai_token.sh
Executable file
255
bin/ai_token.sh
Executable 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
12
bin/config/ai.tokens
Normal 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
|
|
@ -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_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."
|
||||
|
||||
|
|
|
@ -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
21
sops/groq.sops.yaml
Normal 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"
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in a new issue