[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
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# Función para solicitar el token
|
# Función para solicitar y validar el token
|
||||||
request_token() {
|
request_token() {
|
||||||
local platform=$1
|
local platform=$1
|
||||||
local platform_name=""
|
local platform_name=""
|
||||||
|
local token=""
|
||||||
|
|
||||||
case $platform in
|
case $platform in
|
||||||
"github") platform_name="${cvmsg_010}" ;;
|
"github") platform_name="${cvmsg_010}" ;;
|
||||||
|
@ -117,14 +118,39 @@ request_token() {
|
||||||
"forgejo") platform_name="${cvmsg_012}" ;;
|
"forgejo") platform_name="${cvmsg_012}" ;;
|
||||||
esac
|
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}"
|
${cvmsg_005}"
|
||||||
|
|
||||||
if [ $codex -ne 0 ]; then
|
if [ $codex -ne 0 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$value"
|
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
|
||||||
|
|
||||||
|
echo "$token"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,19 +159,22 @@ save_token() {
|
||||||
local platform=$1
|
local platform=$1
|
||||||
local token=$2
|
local token=$2
|
||||||
local filename="${DEVELOPERS_DIR}/${platform}.sops.yaml"
|
local filename="${DEVELOPERS_DIR}/${platform}.sops.yaml"
|
||||||
|
local token_file="/tmp/vcs_token_$$"
|
||||||
|
|
||||||
# Crear archivo YAML temporal con el token
|
# Convertir token a base64 para mayor seguridad
|
||||||
local temp_file=$(mktemp)
|
local token_base64=$(echo -n "$token" | base64)
|
||||||
echo "token: $token" > "$temp_file"
|
|
||||||
|
# Crear archivo temporal con el token en base64
|
||||||
|
echo "token: $token_base64" > "$token_file"
|
||||||
|
|
||||||
# Encriptar el archivo con SOPS
|
# Encriptar el archivo con SOPS
|
||||||
sops --encrypt "$temp_file" > "$filename"
|
sops --encrypt "$token_file" > "$filename"
|
||||||
local result=$?
|
local result=$?
|
||||||
|
|
||||||
# Eliminar archivo temporal
|
# 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
|
if [ $result -eq 0 ]; then
|
||||||
chmod 600 "$filename"
|
chmod 600 "$filename"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -56,4 +56,7 @@ cvmsg_011="Gitlab"
|
||||||
cvmsg_012="Forgejo"
|
cvmsg_012="Forgejo"
|
||||||
cvmsg_013="SOPS no está instalado"
|
cvmsg_013="SOPS no está instalado"
|
||||||
cvmsg_014="Por favor, ejecute bin/bootstrap.sh para instalar las herramientas necesarias."
|
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