[IMPROVED] Mejorar manejo de tokens en cversadm_token.sh siguiendo el ejemplo de cortana_token.sh
- Implementar validación completa de tokens (longitud, formato, caracteres especiales) - Encriptar tokens en base64 antes de guardarlos con SOPS - Usar nombre de archivo temporal único con $$ para prevenir colisiones - Añadir comprobaciones de seguridad adicionales para tokens - Mover todos los mensajes de validación a developers.es 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
4a1933cc8b
commit
fdc8d6b826
2 changed files with 45 additions and 13 deletions
|
@ -106,10 +106,11 @@ select_platform() {
|
|||
return 0
|
||||
}
|
||||
|
||||
# Función para solicitar el token
|
||||
# Función para solicitar y validar el token
|
||||
request_token() {
|
||||
local platform=$1
|
||||
local platform_name=""
|
||||
local token=""
|
||||
|
||||
case $platform in
|
||||
"github") platform_name="${cvmsg_010}" ;;
|
||||
|
@ -117,14 +118,39 @@ request_token() {
|
|||
"forgejo") platform_name="${cvmsg_012}" ;;
|
||||
esac
|
||||
|
||||
dialog_input_pass "${cvmsg_003}" "${cvmsg_004} $platform_name
|
||||
# Bucle para validación de token
|
||||
while true; do
|
||||
dialog_input_pass "${cvmsg_003}" "${cvmsg_004} $platform_name
|
||||
${cvmsg_005}"
|
||||
|
||||
if [ $codex -ne 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
token="$value"
|
||||
|
||||
# Validar token
|
||||
if [ -z "$token" ]; then
|
||||
dialog_error_box "${head_error}" "${cvmsg_015}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Verificar longitud (debería tener al menos 30 caracteres)
|
||||
if [ ${#token} -lt 30 ]; then
|
||||
dialog_error_box "${head_error}" "${cvmsg_016}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Verificar formato (debería contener caracteres alfanuméricos y algunos especiales)
|
||||
if ! [[ "$token" =~ ^[A-Za-z0-9\#\-\_\.]+$ ]]; then
|
||||
dialog_error_box "${head_warning}" "${cvmsg_017}"
|
||||
fi
|
||||
|
||||
# Token válido
|
||||
break
|
||||
done
|
||||
|
||||
if [ $codex -ne 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "$value"
|
||||
echo "$token"
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@ -133,19 +159,22 @@ save_token() {
|
|||
local platform=$1
|
||||
local token=$2
|
||||
local filename="${DEVELOPERS_DIR}/${platform}.sops.yaml"
|
||||
local token_file="/tmp/vcs_token_$$"
|
||||
|
||||
# Crear archivo YAML temporal con el token
|
||||
local temp_file=$(mktemp)
|
||||
echo "token: $token" > "$temp_file"
|
||||
# Convertir token a base64 para mayor seguridad
|
||||
local token_base64=$(echo -n "$token" | base64)
|
||||
|
||||
# Crear archivo temporal con el token en base64
|
||||
echo "token: $token_base64" > "$token_file"
|
||||
|
||||
# Encriptar el archivo con SOPS
|
||||
sops --encrypt "$temp_file" > "$filename"
|
||||
sops --encrypt "$token_file" > "$filename"
|
||||
local result=$?
|
||||
|
||||
# Eliminar archivo temporal
|
||||
rm "$temp_file"
|
||||
rm -f "$token_file"
|
||||
|
||||
# Establecer permisos adecuados
|
||||
# Establecer permisos adecuados (solo lectura para el propietario)
|
||||
if [ $result -eq 0 ]; then
|
||||
chmod 600 "$filename"
|
||||
fi
|
||||
|
|
|
@ -56,4 +56,7 @@ cvmsg_011="Gitlab"
|
|||
cvmsg_012="Forgejo"
|
||||
cvmsg_013="SOPS no está instalado"
|
||||
cvmsg_014="Por favor, ejecute bin/bootstrap.sh para instalar las herramientas necesarias."
|
||||
cvmsg_015="El token no puede estar vacío. Por favor ingrese un token válido."
|
||||
cvmsg_016="El token parece ser demasiado corto. Verifique que haya copiado el token completo."
|
||||
cvmsg_017="El token contiene caracteres no estándar. Verifique que sea correcto."
|
||||
|
||||
|
|
Loading…
Reference in a new issue