diff options
author | Ramón M. Gómez <ramongomez@us.es> | 2020-02-18 13:23:03 +0100 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2020-02-18 13:23:03 +0100 |
commit | b0c75868fbc53bca519bc81ff3c473461e497adb (patch) | |
tree | 61ec46f3c0b0eaf12dab16cee05eb437120adecb /server | |
parent | 18eb8d61584b38a2250981b0a9d06c96e7b6e213 (diff) |
#957: Script `registeredsoftware`: use common server functions and avoid SQL injection.
Diffstat (limited to 'server')
-rwxr-xr-x | server/bin/registeredsoftware | 54 |
1 files changed, 16 insertions, 38 deletions
diff --git a/server/bin/registeredsoftware b/server/bin/registeredsoftware index cc78147c..5acd6185 100755 --- a/server/bin/registeredsoftware +++ b/server/bin/registeredsoftware @@ -1,8 +1,9 @@ #!/bin/bash -# registeredsoftware str_image +#/** #@file registeredsoftware #@brief Lista el software instalado en una imagen de sistema. -#@param str_image Nombre canónico de la imagen. +#@usage registeredsoftware Image +#@param Image Nombre canónico de la imagen. #@return Líneas con el formato: programa versión #@version 1.0 - Creación del script. #@author Ramón Gómez - Univ. Sevilla @@ -10,53 +11,30 @@ #@version 1.1.0 - Incluir sistema operativo. #@author Ramón Gómez - Univ. Sevilla #@date 2016-06-08 +#**/ # Variables. -PROG=$(basename $0) OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg -MYCNF=/tmp/.my.cnf.$$ -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - echo "$PROG: Lista el software instalado en una imagen de sistema." - echo "Formato: $PROG str_image" - exit 0 -fi +source $OPENGNSYS/lib/ogfunctions.sh || exit 1 + +# Mostrar ayuda o número de versión. +[ "$*" == "help" ] && help +[ "$*" == "version" ] && version # Control básico de errores. -if [ $# -ne 1 ]; then - echo "$PROG Error: Formato: $PROG str_image" >&2 - exit 1 -fi -if [ ! -r $SERVERCONF ]; then - echo "$PROG: Sin acceso a fichero de configuración" - exit 2 -fi +[ $# -eq 1 ] || raiseError usage +[ "$USER" != "root" ] && raiseError access "Need to be root" +source $SERVERCONF 2>/dev/null || raiseError access "Sin acceso a fichero de configuración" # Sustituir caracteres ' por \' para evitar inyección SQL. -RESOURCE="${1//\'/\'}" - -# Obtener datos de acceso a la base de datos. -source $SERVERCONF - -# Componer fichero con credenciales de conexión a la base de datos. -touch $MYCNF -chmod 600 $MYCNF -cat << EOT > $MYCNF -[client] -user=$USUARIO -password=$PASSWORD -EOT - -# Borrar el fichero temporal si termina el proceso. -trap "rm -f $MYCNF" 0 1 2 3 6 9 15 +RESOURCE="${1//\'/\\\'}" # Obtener lista de componentes del perfil de software asociado a la imagen. -mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ - "SELECT descr FROM - ((SELECT 1 AS orden, nombresos.nombreso AS descr +dbexec "SELECT descr + FROM ((SELECT 1 AS orden, nombresos.nombreso AS descr FROM perfilessoft JOIN imagenes USING(idperfilsoft) JOIN nombresos USING(idnombreso) @@ -68,5 +46,5 @@ mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ JOIN softwares USING(idsoftware) JOIN imagenes USING(idperfilsoft) WHERE imagenes.nombreca='$RESOURCE')) AS unidas - ORDER BY orden ASC, descr ASC;" + ORDER BY orden ASC, descr ASC;" |