summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRamón M. Gómez <ramongomez@us.es>2020-02-18 13:23:03 +0100
committerRamón M. Gómez <ramongomez@us.es>2020-02-18 13:23:03 +0100
commitb0c75868fbc53bca519bc81ff3c473461e497adb (patch)
tree61ec46f3c0b0eaf12dab16cee05eb437120adecb
parent18eb8d61584b38a2250981b0a9d06c96e7b6e213 (diff)
#957: Script `registeredsoftware`: use common server functions and avoid SQL injection.
-rwxr-xr-xserver/bin/registeredsoftware54
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;"