summaryrefslogtreecommitdiffstats
path: root/client/engine
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2011-12-22 13:38:11 +0000
committerramon <ramongomez@us.es>2011-12-22 13:38:11 +0000
commitc3c7cb3ae6f6600223111a572050f34f2df6fa71 (patch)
tree96fce1db6bf64fee2845d3a48abcbe07d9937562 /client/engine
parent4caea352de0d0a19d4e0a2e2dd04980dd28e6be0 (diff)
Congelar versión 1.0.2 en tags/opengnsys-1.0.2 (modifica #446).opengnsys-1.0.2
git-svn-id: https://opengnsys.es/svn/tags/opengnsys-1.0.2@2405 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client/engine')
-rwxr-xr-xclient/engine/Boot.lib204
-rwxr-xr-xclient/engine/Disk.lib119
-rwxr-xr-xclient/engine/File.lib55
-rwxr-xr-xclient/engine/FileSystem.lib91
-rwxr-xr-xclient/engine/Image.lib10
-rwxr-xr-xclient/engine/Inventory.lib37
-rwxr-xr-xclient/engine/Net.lib119
-rwxr-xr-xclient/engine/PostConfEAC.lib141
-rwxr-xr-xclient/engine/Protocol.lib35
-rwxr-xr-xclient/engine/Registry.lib9
-rwxr-xr-xclient/engine/System.lib26
-rw-r--r--client/engine/correspondencia-api.txt227
12 files changed, 653 insertions, 420 deletions
diff --git a/client/engine/Boot.lib b/client/engine/Boot.lib
index 8731580f..e21935ca 100755
--- a/client/engine/Boot.lib
+++ b/client/engine/Boot.lib
@@ -20,10 +20,10 @@
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
#@exception OG_ERR_NOTOS La partición no tiene instalado un sistema operativo.
#@note En Linux, debe arrancarse la partición del directorio \c /boot
-#@version 0.1 - Integracion para OpenGNSys. - EAC: HDboot(); BootLinuxEX() en Boot.lib
+#@version 0.1 - Integración para OpenGnSys. - EAC: HDboot; BootLinuxEX en Boot.lib
#@author Antonio J. Doblas Viso, Universidad de Malaga
#@date 2008-10-27
-#@version 0.9 - Adaptacion para OpenGNSys.
+#@version 0.9 - Adaptación para OpenGnSys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009-09-11
#*/ ##
@@ -68,21 +68,19 @@ case "$TYPE" in
[ -z "$LOADER" ] && ogRaiseError $OG_ERR_NOTOS && return $?
# Activar la partición y copiar Grub4DOS.
ogSetPartitionActive $1 $2
- #FIXME: activar seguimiento inicio sesion XP con grub4dos
- #if `ogGetOsVersion $1 $2 | grep "XP" > /dev/null`
- #then
- # dd if=/dev/zero of=${MNTDIR}/ogboot.me bs=1024 count=3
- # dd if=/dev/zero of=${MNTDIR}/ogboot.firstboot bs=1024 count=3
- # dd if=/dev/zero of=${MNTDIR}/ogboot.secondboot bs=1024 count=3
- # ogLoadHiveWindows $1 $2
- # ogHiveNTRunMachine "cmd /c del c:\ogboot.* " ogcleanboot
- # ogUpdateHiveWindows
- # reboot
- #else
- cp $OGLIB/grub4dos/* $MNTDIR # */ (Comentario Doxygen)
- ##kexec -l $MNTDIR/grub.exe --append=--config-file="find --set-root /$LOADER; chainloader /$LOADER; tpm --init"
- kexec -l $MNTDIR/grub.exe --append=--config-file="root (hd$[$1-1],$[$2-1]); chainloader (hd$[$1-1],$[$2-1])/$LOADER; tpm --init"
- #fi
+ #FIXME: activar seguimiento inicio sesion Windows con grub4dos
+ if [ "$(ogGetOsType $1 $2)" == "Windows" ]; then
+ dd if=/dev/zero of=${MNTDIR}/ogboot.me bs=1024 count=3
+ dd if=/dev/zero of=${MNTDIR}/ogboot.firstboot bs=1024 count=3
+ dd if=/dev/zero of=${MNTDIR}/ogboot.secondboot bs=1024 count=3
+ ogLoadHiveWindows $1 $2
+ ogHiveNTRunMachine "cmd /c del c:\ogboot.*" ogcleanboot
+ ogUpdateHiveWindows
+ reboot
+ else
+ cp $OGLIB/grub4dos/* $MNTDIR # */ (Comentario Doxygen)
+ kexec -l $MNTDIR/grub.exe --append=--config-file="root (hd$[$1-1],$[$2-1]); chainloader (hd$[$1-1],$[$2-1])/$LOADER; tpm --init"
+ fi
;;
*) ogRaiseError $OG_ERR_PARTITION "$1, $2"
return $?
@@ -103,7 +101,7 @@ kexec -e
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
-#@version 0.9 - Adaptación para OpenGNSys.
+#@version 0.9 - Adaptación para OpenGnSys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009-09-23
#*/ ##
@@ -140,7 +138,7 @@ ogGetRegistryValue $MNTDIR system '\ControlSet001\Control\ComputerName\ComputerN
#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
#@warning Función básica usada por \c ogBoot
-#@version 0.9 - Primera adaptación para OpenGNSys.
+#@version 0.9 - Primera adaptación para OpenGnSys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009-09-11
#@version 0.9.2 - Soporta partición /boot independiente.
@@ -202,7 +200,7 @@ awk 'BEGIN {cont=-1;}
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
-#@version 0.9 - Adaptación a OpenGNSys.
+#@version 0.9 - Adaptación a OpenGnSys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009-09-24
#*/ ##
@@ -244,7 +242,7 @@ ogSetRegistryValue $MNTDIR system '\ControlSet001\services\Tcpip\Parameters\NV H
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
-#@version 0.9.2 - Adaptación a OpenGNSys.
+#@version 0.9.2 - Adaptación a OpenGnSys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2010-07-20
#*/ ##
@@ -279,7 +277,7 @@ ogSetRegistryValue $MNTDIR SOFTWARE '\Microsoft\Windows NT\CurrentVersion\Winlog
#@return salida del programa my-sys
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
-#@version 0.9 - Adaptación a OpenGNSys.
+#@version 0.9 - Adaptación a OpenGnSys.
#@author Antonio J. Doblas Viso. Universidad de Málaga
#@date 2009-09-24
#*/ ##
@@ -311,7 +309,7 @@ ms-sys -m -f $PART
#@return salida del programa my-sys
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_NOTFOUND Tipo de partición desconocido o no se puede montar.
-#@version 0.9 - Adaptación a OpenGNSys.
+#@version 0.9 - Adaptación a OpenGnSys.
#@author Antonio J. Doblas Viso. Universidad de Málaga
#@date 2009-09-24
#*/ ##
@@ -346,7 +344,7 @@ ms-sys -s -f $PART
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
-#@version 0.9 - Adaptación a OpenGNSys.
+#@version 0.9 - Adaptación a OpenGnSys.
#@author Antonio J. Doblas Viso. Universidad de Málaga
#@date 2009-09-24
#*/ ##
@@ -354,7 +352,7 @@ ms-sys -s -f $PART
function ogFixBootSector ()
{
# Variables locales.
-local PART DISK FILE
+local PARTYPE DISK PART FILE
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -369,7 +367,7 @@ fi
#TODO, solo si la particion existe
#TODO, solo si es ntfs o fat
PARTYPE=$(ogGetPartitionId $1 $2)
-case $PARTYPE in
+case "$PARTYPE" in
1|4|6|7|b|c|e|f)
;;
*)
@@ -382,15 +380,17 @@ ogUnmount $1 $2 || return $(ogRaiseError $OG_ERR_PARTITION; echo $?)
#Preparando instruccion
let DISK=$1-1
PART=$2
-FILE=/tmp/temporal
+FILE=/tmp/temp$$
cat > $FILE <<EOF
disk=$DISK
main_part=$PART
fix_first_sector=yes
EOF
-spartlnx.run -cui -nm -a -f $FILE
-
+spartlnx.run -cui -nm -a -f $FILE &
+sleep 5
+ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null
+rm -f $FILE
}
@@ -403,7 +403,7 @@ spartlnx.run -cui -nm -a -f $FILE
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
-#@version 0.9 - Integración desde EAC para OpenGNSys.
+#@version 0.9 - Integración desde EAC para OpenGnSys.
#@author Antonio J. Doblas Viso. Universidad de Málaga
#@date 2009-09-24
#@version 1.0.1 - Adapatacion para OpenGnsys.
@@ -415,11 +415,11 @@ spartlnx.run -cui -nm -a -f $FILE
function ogWindowsBootParameters ()
{
# Variables locales.
-local PART DISK FILE
+local PART DISK FILE VERSION WINVER MOUNT
#Preparando variables adaptadas a sintaxis windows.
let DISK=$1-1
PART=$2
-FILE=/tmp/temporal
+FILE=/tmp/temp$$
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -462,7 +462,11 @@ disk=$DISK
main_part=$PART
boot_entry=Windows Resume Application
EOF
-spartlnx.run -cui -nm -w -f $FILE
+spartlnx.run -cui -nm -w -f $FILE &
+sleep 5
+ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null
+
+
#Preparando instruccion tipo windows
cat > $FILE <<EOF
@@ -472,17 +476,23 @@ disk=$DISK
main_part=$PART
boot_entry=$WINVER
EOF
-spartlnx.run -cui -nm -w -f $FILE
+spartlnx.run -cui -nm -w -f $FILE &
+sleep 5
+ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null
+
##Preparando instruccion Ramdisk Options
-#cat > $FILE <<EOF
-#boot_disk=$DISK
-#boot_main_part=$PART
-#disk=$DISK
-#main_part=$PART
-#boot_entry=Ramdisk Options
-#EOF
-#spartlnx.run -cui -nm -w -f $FILE
+cat > $FILE <<EOF
+boot_disk=$DISK
+boot_main_part=$PART
+disk=$DISK
+main_part=$PART
+boot_entry=Ramdisk Options
+EOF
+spartlnx.run -cui -nm -w -f $FILE &
+sleep 5
+ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null
+
#Preparando instruccion Windows Boot Manager
cat > $FILE <<EOF
@@ -492,20 +502,25 @@ disk=$DISK
main_part=$PART
boot_entry=Windows Boot Manager
EOF
-spartlnx.run -cui -nm -w -f $FILE
+spartlnx.run -cui -nm -w -f $FILE &
+sleep 5
+ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null
+
#Preparando instruccion Herramienta de diagnóstico de memoria de Windows
-#cat > $FILE <<EOF
-#boot_disk=$DISK
-#boot_main_part=$PART
-#disk=$DISK
-#main_part=$PART
-#boot_entry=Herramienta de diagnóstico de memoria de Windows
-#EOF
-#spartlnx.run -cui -nm -w -f $FILE
+cat > $FILE <<EOF
+boot_disk=$DISK
+boot_main_part=$PART
+disk=$DISK
+main_part=$PART
+boot_entry=Herramienta de diagnóstico de memoria de Windows
+EOF
+spartlnx.run -cui -nm -w -f $FILE &
+sleep 5
+ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null
}
-
+
# ogWindowsRegisterPartition int_ndisk int_partiton str_volume int_disk int_partition
#@brief Registra una partición en windows con un determinado volumen.
@@ -517,16 +532,14 @@ spartlnx.run -cui -nm -w -f $FILE
#@return
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
-#@version 0.9 - Adaptación a OpenGNSys.
+#@version 0.9 - Adaptación a OpenGnSys.
#@author Antonio J. Doblas Viso. Universidad de Málaga
#@date 2009-09-24
#*/ ##
-
-
function ogWindowsRegisterPartition ()
-{
+{
# Variables locales.
-local PART DISK FILE
+local PART DISK FILE REGISTREDDISK REGISTREDPART REGISTREDVOL VERSION SYSTEMROOT
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -543,7 +556,7 @@ REGISTREDPART=$2
REGISTREDVOL=$(echo $3 | cut -c1 | tr '[:lower:]' '[:upper:]')
DISK=$4
PART=$5
-FILE=/tmp/temporal
+FILE=/tmp/temp$$
ogDiskToDev $REGISTREDDISK $REGISTREDPART || return $(ogRaiseError $OG_ERR_PARTITION "particion a registrar "; echo $?)
ogDiskToDev $DISK $PART || return $(ogRaiseError $OG_ERR_PARTITION "particion de windows"; echo $?)
@@ -577,5 +590,78 @@ main_part=$REGISTREDPART
;ext_part
part_letter=$REGISTREDVOL
EOF
-spartlnx.run -cui -nm -u -f $FILE
+spartlnx.run -cui -nm -u -f $FILE &
+sleep 5
+ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null
+
}
+
+
+# ogGrubInstallPartition int_disk int_partition
+#@brief Instala/actualiza el gestro grub en el "boot sector" de la partición indicada
+#@param int_disk
+#@param indt_part
+#@return
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@version 1.0.2 - Primeras pruebas.
+#@author Antonio J. Doblas Viso. Universidad de Malaga.
+#@date 2011-10-29
+#*/ ##
+
+function ogGrubInstallPartition {
+
+# Variables locales.
+local PART DISK DIRCONF SCHROOTDEVICE
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_partition" \
+ "$FUNCNAME 1 1 "
+ return
+fi
+
+# Error si no se reciben 2 parámetros.
+[ $# == 2 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
+
+DISK=$1; PART=$2; DIRCONF="/etc/schroot"
+
+
+VERSION=$(ogGetOsVersion $DISK $PART)
+echo $VERSION | grep "Linux" || return $(ogRaiseError $OG_ERR_NOTOS "no es linux"; echo $?)
+
+SCHROOTLOCATION=$(ogMount $DISK $PART)
+SCHROOTDEVICE=$(ogDiskToDev $DISK $PART)
+
+rm ${DIRCONF}/schroot.conf
+
+cat >> ${DIRCONF}/schroot.conf << EOF
+[linux]
+description=$VERSION
+type=plain
+directory=$SCHROOTLOCATION
+EOF
+
+cat >> $SCHROOTLOCATION/root/installgrub.sh <<EOF
+#!/bin/bash
+grub-install --recheck --force $SCHROOTDEVICE
+update-grub2
+EOF
+
+chmod 777 $SCHROOTLOCATION/root/installgrub.sh
+
+mount --bind /dev $SCHROOTLOCATION/dev
+mount --bind /dev/pts $SCHROOTLOCATION/dev/pts
+mount --bind /proc $SCHROOTLOCATION/proc
+mount --bind /sys $SCHROOTLOCATION/sys
+
+
+schroot -c linux -- /root/installgrub.sh
+
+rm $SCHROOTLOCATION/root/installgrub.sh
+
+umount $SCHROOTLOCATION/dev/pts
+umount $SCHROOTLOCATION/dev
+umount $SCHROOTLOCATION/proc
+umount $SCHROOTLOCATION/sys
+}
+
diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib
index f15f1e08..6b642b38 100755
--- a/client/engine/Disk.lib
+++ b/client/engine/Disk.lib
@@ -319,7 +319,7 @@ local DISK
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
- ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" \ "$FUNCNAME 1 => 244198584"
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" "$FUNCNAME 1 => 244198584"
return
fi
# Error si no se recibe 1 parámetro.
@@ -467,6 +467,59 @@ esac
#/**
+# ogGetPartitionType int_ndisk int_npartition
+#@brief Muestra el tipo de una particion determinada.
+#@see ogGetFsType
+#*/ ##
+function ogGetPartitionType ()
+{
+ogGetFsType "$@"
+}
+
+
+#/**
+# ogHidePartition int_ndisk int_npartition
+#@brief Oculta un apartición visible.
+#@param int_ndisk nº de orden del disco
+#@param int_npartition nº de orden de la partición
+#@return (nada)
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo).
+#@exception OG_ERR_PARTITION tipo de partición no reconocido.
+#@version 1.0 - Versión en pruebas.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2010/01/12
+#*/ ##
+function ogHidePartition ()
+{
+# Variables locales.
+local PART TYPE NEWTYPE
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1"
+ return
+fi
+# Error si no se reciben 2 parámetros.
+[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+PART=$(ogDiskToDev "$1" "$2") || return $?
+
+# Obtener tipo de partición.
+TYPE=$(ogGetPartitionType "$1" "$2")
+case "$TYPE" in
+ NTFS) NEWTYPE="HNTFS" ;;
+ FAT32) NEWTYPE="HFAT32" ;;
+ FAT16) NEWTYPE="HFAT16" ;;
+ FAT12) NEWTYPE="HFAT12" ;;
+ *) ogRaiseError $OG_ERR_PARTITION "$TYPE"
+ return $? ;;
+esac
+# Cambiar tipo de partición.
+ogSetPartitionId $1 $2 $NEWTYPE
+}
+
+
+#/**
# ogListPartitions int_ndisk
#@brief Lista las particiones definidas en un disco.
#@param int_ndisk nº de orden del disco
@@ -613,11 +666,52 @@ DISK="$(ogDiskToDev $1)" || return $?
PART="$(ogDiskToDev $1 $2)" || return $?
# Convertir tamaño en KB a sectores de 512 B.
SIZE=$[$3*2] || ogRaiseError $OG_ERR_FORMAT || return $?
-# Usar \c sfdisk para redefinir el tamaño.
+# Redefinir el tamaño de la partición.
sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" &>/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $?
partprobe 2>/dev/null
}
+#/**
+# ogUnhidePartition int_ndisk int_npartition
+#@brief Hace visible una partición oculta.
+#@param int_ndisk nº de orden del disco
+#@param int_npartition nº de orden de la partición
+#@return (nada)
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo).
+#@exception OG_ERR_PARTITION tipo de partición no reconocido.
+#@version 1.0 - Versión en pruebas.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2010/01/12
+#*/ ##
+function ogUnhidePartition ()
+{
+# Variables locales.
+local PART TYPE NEWTYPE
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1"
+ return
+fi
+# Error si no se reciben 2 parámetros.
+[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+PART=$(ogDiskToDev "$1" "$2") || return $?
+
+# Obtener tipo de partición.
+TYPE=$(ogGetPartitionType "$1" "$2")
+case "$TYPE" in
+ HNTFS) NEWTYPE="NTFS" ;;
+ HFAT32) NEWTYPE="FAT32" ;;
+ HFAT16) NEWTYPE="FAT16" ;;
+ HFAT12) NEWTYPE="FAT12" ;;
+ *) ogRaiseError $OG_ERR_PARTITION "$TYPE"
+ return $? ;;
+esac
+# Cambiar tipo de partición.
+ogSetPartitionId $1 $2 $NEWTYPE
+}
+
#/**
# ogUpdatePartitionTable
@@ -629,10 +723,10 @@ partprobe 2>/dev/null
#@version 0.1 - Integracion para Opengnsys - EAC: UpdatePartitionTable() en ATA.lib
#@author Antonio J. Doblas Viso. Universidad de Malaga
#@date 27/10/2008
-#*/
-
+#*/ ##
function ogUpdatePartitionTable ()
{
+local i
for i in `ogDiskToDev`
do
partprobe $i
@@ -641,10 +735,12 @@ done
-#/** @function ogGetPartitionsNumber: @brief detecta el numero de particiones del disco duro indicado.
-#@param int_numdisk (indentificado EAC del disco)
-#@return devuelve el numero paritiones del disco duro indicado
-#@warning Salidas de errores no determinada
+#/**
+# ogGetPartitionsNumber int_ndisk
+#@brief Detecta el numero de particiones del disco duro indicado.
+#@param int_ndisk nº de orden del disco
+#@return Devuelve el numero paritiones del disco duro indicado
+#@warning Salidas de errores no determinada
#@attention Requisitos: parted
#@note Notas sin especificar
#@version 0.1 - Integracion para Opengnsys - EAC: DetectNumberPartition () en ATA.lib
@@ -653,14 +749,15 @@ done
#@version 1.0 - Uso de sfdisk Primera version para OpenGnSys
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009/07/24
-#*/
-function ogGetPartitionsNumber () {
+#*/ ##
+function ogGetPartitionsNumber ()
+{
#local disco totalpart
#disco=`ogDiskToDev $1`
#totalpart=`parted $disco print | egrep ^" [0123456789] " -c`
#echo $totalpart
local DISK
-#/// Contar el nº de veces que aparece el disco en su lista de particiones.
+# Contar el nº de veces que aparece el disco en su lista de particiones.
DISK=$(ogDiskToDev $1) 2>/dev/null
sfdisk -l $DISK 2>/dev/null | grep -c "^$DISK"
}
diff --git a/client/engine/File.lib b/client/engine/File.lib
index 52b48075..b04d2278 100755
--- a/client/engine/File.lib
+++ b/client/engine/File.lib
@@ -27,7 +27,7 @@ function ogCalculateChecksum ()
local FILE
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_filepath" \
- "$FUNCNAME REPO ubuntu.img ==> ef899299caf8b517ce36f1157a93d8bf"
+ "$FUNCNAME REPO ubuntu.img ==> ef899299caf8b517ce36f1157a93d8bf"
return
fi
@@ -53,7 +53,7 @@ function ogCompareChecksumFiles ()
local ARGS SOURCE TARGET
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_filepath" \
- "if $FUNCNAME REPO ubuntu.img CACHE ubuntu.img; then ... fi"
+ "if $FUNCNAME REPO ubuntu.img CACHE ubuntu.img; then ...; fi"
return
fi
@@ -89,25 +89,30 @@ function ogCopyFile ()
{
# Variables locales.
local ARGS SOURCE TARGET
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_source [ str_repo | int_ndisk int_npartition ] path_target" \
+ "$FUNCNAME REPO newfile.txt 1 2 /tmp/newfile.txt"
+ return
+fi
ARGS="$@"
case "$1" in
/*) # Camino completo. */ (Comentrio Doxygen)
- SOURCE=$(ogGetPath "$1")
+ SOURCE="$(ogGetPath "$1")"
shift ;;
[1-9]*) # ndisco npartición.
- SOURCE=$(ogGetPath "$1" "$2" "$3")
+ SOURCE="$(ogGetPath "$1" "$2" "$3")"
shift 3 ;;
*) # Otros: repo, cache, cdrom (no se permiten caminos relativos).
- SOURCE=$(ogGetPath "$1" "$2")
+ SOURCE="$(ogGetPath "$1" "$2")"
shift 2 ;;
esac
# Comprobar fichero origen y directorio destino.
[ -n "$SOURCE" ] || ogRaiseError $OG_ERR_NOTFOUND "${ARGS% $*}" || return $?
-TARGET=$(ogGetPath "$@")
+TARGET="$(ogGetPath "$@")"
[ -n "$TARGET" ] || ogRaiseError $OG_ERR_NOTFOUND "$@" || return $?
# Copiar fichero.
-cp -p "$SOURCE" "$TARGET" # (definir posible error)
+cp -a "$SOURCE" "$TARGET" # (definir posible error)
}
@@ -123,8 +128,14 @@ function ogDeleteFile ()
{
# Variables locales.
local FILE
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_file" \
+ "$FUNCNAME 1 2 /tmp/newfile.txt"
+ return
+fi
+
# Comprobar que existe el fichero y borrarlo.
-FILE=$(ogGetPath "$@")
+FILE="$(ogGetPath "$@")"
[ -n "$FILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $?
rm -f "$FILE" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $?
}
@@ -142,8 +153,14 @@ function ogDeleteTree ()
{
# Variables locales.
local DIR
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_dir" \
+ "$FUNCNAME 1 2 /tmp/newdir"
+ return
+fi
+
# Comprobar que existe el directorio y borrarlo con su contenido.
-DIR=$(ogGetPath "$@")
+DIR="$(ogGetPath "$@")"
[ -n "$DIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $?
rm -fr "$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $?
}
@@ -245,7 +262,7 @@ if [ "$*" == "help" ]; then
fi
case $# in
- 1) PARENT=$(dirname "$1") ;;
+ 1) PARENT="$(dirname "$1")" ;;
2) PARENT="$1 $(dirname "/$2")" ;;
3) PARENT="$1 $2 $(dirname "/$3")" ;;
*) ogRaiseError $OG_ERR_FORMAT
@@ -282,13 +299,13 @@ fi
ARGS="$@"
case "$1" in
/*) # Camino completo. */ (Comentrio Doxygen)
- SOURCE=$(ogGetPath "$1")
+ SOURCE="$(ogGetPath "$1")"
shift ;;
[1-9]*) # ndisco npartición.
- SOURCE=$(ogGetPath "$1" "$2" "$3")
+ SOURCE="$(ogGetPath "$1" "$2" "$3")"
shift 3 ;;
*) # Otros: repo, cache, cdrom (no se permiten caminos relativos).
- SOURCE=$(ogGetPath "$1" "$2")
+ SOURCE="$(ogGetPath "$1" "$2")"
shift 2 ;;
esac
# Comprobar que existen los ficheros origen y destino.
@@ -312,7 +329,7 @@ test "$SOURCE" -nt "$TARGET"
function ogMakeChecksumFile ()
{
# Variables locales.
-local FILE DATA
+local FILE
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_filepath" \
"$FUNCNAME REPO ubuntu.img"
@@ -320,7 +337,7 @@ if [ "$*" == "help" ]; then
fi
# Comprobar que existe el fichero y guardar su checksum.
-FILE=$(ogGetPath "$@")
+FILE="$(ogGetPath "$@")"
[ -n "$FILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $?
ogCalculateChecksum "$FILE" > "$FILE.sum"
}
@@ -342,7 +359,13 @@ ogCalculateChecksum "$FILE" > "$FILE.sum"
function ogMakeDir ()
{
local PARENT DIR
-PARENT=$(ogGetParentPath "$@") || return $?
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_dir" \
+ "$FUNCNAME 1 2 /tmp/newdir"
+ return
+fi
+
+PARENT="$(ogGetParentPath "$@")" || return $?
DIR="$(basename "${!#}")"
mkdir -p "$PARENT/$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $?
}
diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib
index ca4486b0..5c69e089 100755
--- a/client/engine/FileSystem.lib
+++ b/client/engine/FileSystem.lib
@@ -21,34 +21,44 @@
#@note Requisitos: *fsck*
#@warning No se comprueban sistemas de archivos montados o bloqueados.
#@todo Definir salidas.
-#@version 0.9 - Primera adaptación para OpenGNSys.
+#@version 0.9 - Primera adaptación para OpenGnSys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009-10-07
+#@version 1.0.2 - Ignorar códigos de salida de comprobación (no erróneos).
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2011-09-23
#*/
function ogCheckFs ()
{
# Variables locales.
-local PART TYPE PROG PARAMS
+local PART TYPE PROG PARAMS CODES ERRCODE
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1"
+ return
+fi
-#/// Error si no se reciben 2 parámetros.
+# Error si no se reciben 2 parámetros.
[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
-#/// Obtener partición.
+# Obtener partición.
PART="$(ogDiskToDev $1 $2)" || return $?
TYPE=$(ogGetFsType $1 $2)
case "$TYPE" in
- EXT[234]) PROG="e2fsck" ;;
- REISERFS) PROG="reiserfsck"; PARAMS="<<<\"Yes\"" ;;
- JFS) PROG="fsck.jfs" ;;
+ EXT[234]) PROG="e2fsck"; PARAMS="-y"; CODES=(1 2) ;;
+ REISERFS) PROG="fsck.reiserfs"; PARAMS="<<<\"Yes\""; CODES=(1 2) ;;
+ REISER4) PROG="fsck.reiser4"; PARAMS="-ay" ;;
+ JFS) PROG="fsck.jfs"; CODES=(1 2) ;;
XFS) PROG="fsck.xfs" ;;
NTFS|HNTFS) PROG="ntfsfix" ;;
- FAT32|HFAT32) PROG="dosfsck"; PARAMS="-a" ;;
- FAT16|HFAT16) PROG="dosfsck"; PARAMS="-a" ;;
- FAT12|HFAT12) PROG="dosfsck"; PARAMS="-a" ;;
+ FAT32|HFAT32) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;;
+ FAT16|HFAT16) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;;
+ FAT12|HFAT12) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;;
*) ogRaiseError $OG_ERR_PARTITION "$1, $2, $TYPE"
- return $? ;;
+ return $? ;;
esac
-#/// Error si el sistema de archivos esta montado o bloqueado.
+# Error si el sistema de archivos esta montado o bloqueado.
if ogIsMounted $1 $2; then
ogRaiseError $OG_ERR_PARTITION "$1 $2" # Indicar nuevo error
return $?
@@ -57,14 +67,17 @@ if ogIsLocked $1 $2; then
ogRaiseError $OG_ERR_LOCKED "$1 $2"
return $?
fi
-#/// Comprobar en modo uso exclusivo.
+# Comprobar en modo uso exclusivo.
ogLock $1 $2
eval $PROG $PARAMS $PART
ERRCODE=$?
case $ERRCODE in
- 0) ;;
- 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG" ;;
- *) ogRaiseError $OG_ERR_PARTITION "$1 $2" ;;
+ 0|${CODES[*]})
+ ERRCODE=0 ;;
+ 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG"
+ ERRCODE=$OG_ERR_NOTEXEC ;;
+ *) ogRaiseError $OG_ERR_PARTITION "$1 $2"
+ ERRCODE=$OG_ERR_PARTITION ;;
esac
ogUnlock $1 $2
return $ERRCODE
@@ -91,22 +104,22 @@ return $ERRCODE
function ogExtendFs ()
{
# Variables locales.
-local PART PROG PARAMS
+local PART TYPE PROG PARAMS ERRCODE
-#/// Si se solicita, mostrar ayuda.
+# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
"$FUNCNAME 1 1"
return
fi
-#/// Error si no se reciben 2 parámetros.
+# Error si no se reciben 2 parámetros.
[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
-#/// Obtener partición.
+# Obtener partición.
PART="$(ogDiskToDev $1 $2)" || return $?
ogUnmount $1 $2 2>/dev/null
-#/// Redimensionar al tamano máximo según el tipo de partición.
+# Redimensionar al tamano máximo según el tipo de partición.
TYPE=$(ogGetFsType $1 $2)
case "$TYPE" in
EXT[234]) PROG="resize2fs"; PARAMS="-f" ;;
@@ -115,7 +128,7 @@ case "$TYPE" in
*) ogRaiseError $OG_ERR_PARTITION "$1 $2 $TYPE"
return $? ;;
esac
-#/// Error si el sistema de archivos está montado o bloqueado.
+# Error si el sistema de archivos está montado o bloqueado.
if ogIsMounted $1 $2; then
ogRaiseError $OG_ERR_PARTITION "$1 $2" # Indicar nuevo error
return $?
@@ -124,14 +137,16 @@ if ogIsLocked $1 $2; then
ogRaiseError $OG_ERR_LOCKED "$1 $2"
return $?
fi
-#/// Redimensionar en modo uso exclusivo.
+# Redimensionar en modo uso exclusivo.
ogLock $1 $2
eval $PROG $PARAMS $PART &>/dev/null
ERRCODE=$?
case $ERRCODE in
0) ;;
- 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG" ;;
- *) ogRaiseError $OG_ERR_PARTITION "$1 $2" ;;
+ 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG"
+ ERRCODE=$OG_ERR_NOTEXEC ;;
+ *) ogRaiseError $OG_ERR_PARTITION "$1 $2"
+ ERRCODE=$OG_ERR_PARTITION ;;
esac
ogUnlock $1 $2
return $ERRCODE
@@ -217,7 +232,8 @@ if [ -z "$PROG" ]; then
REISERFS) PROG="mkfs.reiserfs"; PARAMS="-f" ;;
REISER4) PROG="mkfs.reiser4";;
XFS) PROG="mkfs.xfs"; PARAMS="-f" ;;
- JFS) PROG="mkfs.jfs"; PARAMS="<<<\"y\"";;
+ JFS) PROG="mkfs.jfs"; PARAMS="<<<\"y\"" ;;
+ LINUX-SWAP) PROG="mkswap" ;;
NTFS|HNTFS) PROG="mkntfs"; PARAMS="-f" ;;
FAT32|HFAT32) PROG="mkdosfs"; PARAMS="-F 32" ;;
FAT16|HFAT16) PROG="mkdosfs"; PARAMS="-F 16" ;;
@@ -278,11 +294,10 @@ return $ERRCODE
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009-07-21
#*/ ##
-function ogGetFsType () {
-
+function ogGetFsType ()
+{
# Variables locales.
-local ID TYPE
-
+local DISK ID TYPE
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
@@ -326,7 +341,7 @@ case "$ID" in
fd) TYPE="LINUX-RAID" ;;
*) TYPE="UNKNOWN" ;;
esac
-echo $TYPE
+echo "$TYPE"
}
@@ -591,13 +606,8 @@ if [ -z "$MNTDIR" ]; then
$MOUNT $PARAMS $PART $MNTDIR 2>/dev/null || \
$MOUNT $PARAMS $PART $MNTDIR -o force,remove_hiberfile 2>/dev/null || \
ogRaiseError $OG_ERR_PARTITION "$1, $2, $TYPE" || return $?
- # linea temporal durante desarrollo para poder usar el cliente completo nfs y testeas nuevas herramientas.
- if grep -q nfsroot /proc/cmdline; then
- echo "$PART $MNTDIR" >> /etc/mtab
- fi
- # fin linea temporal.
fi
-echo $MNTDIR
+echo "$MNTDIR"
}
@@ -688,8 +698,6 @@ case "$(ogGetFsType $1 $2)" in
*) ogRaiseError $OG_ERR_PARTITION "$1,$2"
return $? ;;
esac
-#/// Mostrar nuevo tamaño en KB.
-#echo $[SIZE*1024]
ogGetFsSize $1 $2
}
@@ -847,11 +855,6 @@ if [ -n "$MNTDIR" ]; then
# Desmontar y borrar punto de montaje.
umount $PART 2>/dev/null || ogEcho warning "$FUNCNAME: $MSG_DONTUNMOUNT: \"$1, $2\""
rmdir $MNTDIR 2>/dev/null || rm -f $MNTDIR 2>/dev/null
- # linea temporal durante desarrollo para testear nuevas herramientas con el cliente completo nfs
- if grep -q nfsroot /proc/cmdline; then
- grep -v $PART /etc/mtab > /var/tmp/mtab.temporal && cp /var/tmp/mtab.temporal /var/tmp/mtab && rm /var/tmp/mtab.temporal
- fi
- # fin linea temporal.
else
ogEcho warning "$MSG_DONTMOUNT: \"$1,$2\""
fi
diff --git a/client/engine/Image.lib b/client/engine/Image.lib
index a4b82b02..0a0867f2 100755
--- a/client/engine/Image.lib
+++ b/client/engine/Image.lib
@@ -14,7 +14,7 @@ function ogPartcloneSyntax ()
{
#TODO: comprobar como unico parametro particion /dev/sda1
#COMPAR="partclone.$FS --clone --force --source $PART"
-COMPAR="-F -c -s "
+COMPAR=" -d0 -F -c -s "
TYPE="$(ogGetFsType `ogDevToDisk $1`)"
case "$TYPE" in
EXT[234])
@@ -210,7 +210,7 @@ if [ "$#" -eq 4 ]; then
;;
"partclone" | "PARTCLONE")
# -C para que no compruebe tamaños
- TOOL="| partclone.restore -o $PART"
+ TOOL="| partclone.restore -d0 -C -I -o $PART"
;;
*)
ogRaiseError $OG_ERR_NOTFOUND "Tools imaging no valid $TOOL" || return $?
@@ -382,6 +382,7 @@ IMGFILE="$IMGDIR/$(basename "$3").mbr"
dd if="$DISK" of="$IMGFILE" bs=446 count=1 || ogRaiseError $OG_ERR_IMAGE "$1 $IMGFILE" || return $?
}
+
#/**
# ogIsImageLocked [str_repo] path_image
#@brief Comprueba si una imagen está bloqueada para uso exclusivo.
@@ -481,7 +482,7 @@ touch $IMGDIR/$(basename "${!#}").lock
function ogRestoreImage ()
{
# Variables locales
-local PART PARTSIZE IMGFILE IMGTYPE IMGSIZE FSTYPE
+local PART PARTSIZE IMGFILE IMGTYPE IMGSIZE FSTYPE PROGRAM ERRCODE
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -662,7 +663,8 @@ rm -f $(ogGetPath $@.lock)
#@date 2010/02/08
#*/ ##
-function ogGetImageInfo () {
+function ogGetImageInfo ()
+{
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME filename " \
diff --git a/client/engine/Inventory.lib b/client/engine/Inventory.lib
index 47ffd83d..b610639e 100755
--- a/client/engine/Inventory.lib
+++ b/client/engine/Inventory.lib
@@ -17,8 +17,14 @@
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2010-07-17
#*/
-function ogGetArch () {
-[ -d /lib64 ] && echo x86_64 || echo i386
+function ogGetArch ()
+{
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => x86_64"
+ return
+fi
+
+[ -d /lib64 ] && echo "x86_64" || echo "i386"
}
@@ -41,10 +47,10 @@ function ogGetOsVersion ()
{
# Variables locales.
local MNTDIR TYPE DISTRIB VERSION FILE
-
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
- ogHelp "$FUNCNAME" "$FUNCNAME"
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 2 => Linux:Ubuntu 11.04 64 bits"
return
fi
# Error si no se reciben 2 parametros.
@@ -72,7 +78,7 @@ case "$(ogGetFsType $1 $2)" in
fi
[ -e $MNTDIR/lib64 ] && VERSION="$VERSION 64 bits"
;;
- NTFS | HTNFS | FAT32 | HFAT32)
+ NTFS | HNTFS | FAT32 | HFAT32)
TYPE="Windows"
# Para Windows: leer la version del registro.
VERSION=$(ogGetRegistryValue $MNTDIR software '\Microsoft\Windows NT\CurrentVersion\ProductName')
@@ -96,6 +102,12 @@ return 0
#*/ ##
function ogGetOsType ()
{
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 2 => Linux"
+ return
+fi
ogGetOsVersion "$@" | cut -sf1 -d:
}
@@ -168,7 +180,7 @@ lshw | awk 'BEGIN {type="mod";}
function ogListSoftware ()
{
# Variables locales.
-local MNTDIR TYPE DPKGDIR RPMDIR KEYS k PROG VERS
+local MNTDIR TYPE DPKGDIR RPMDIR PACMANDIR KEYS KEYS32 k PROG VERS
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -228,6 +240,7 @@ case "$TYPE" in
NTFS|HNTFS|FAT32|HFAT32)
# Claves de registro para programas instalados: formato "{clave}".
KEYS=$(ogListRegistryKeys $MNTDIR software '\Microsoft\Windows\CurrentVersion\Uninstall')
+ KEYS32=$(ogListRegistryKeys $MNTDIR software '\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall')
# Mostrar los valores "DisplayName" y "DisplayVersion" para cada clave.
(for k in $KEYS; do
PROG=$(ogGetRegistryValue $MNTDIR software "\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$k\\DisplayName")
@@ -235,6 +248,13 @@ case "$TYPE" in
VERS=$(ogGetRegistryValue $MNTDIR software "\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$k\\DisplayVersion")
echo "$PROG $VERS"
fi
+ done
+ for k in $KEYS32; do
+ PROG=$(ogGetRegistryValue $MNTDIR software "\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$k\\DisplayName")
+ if [ -n "$PROG" ]; then
+ VERS=$(ogGetRegistryValue $MNTDIR software "\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$k\\DisplayVersion")
+ echo "$PROG $VERS"
+ fi
done) | sort | uniq
;;
*) ogRaiseError $OG_ERR_PARTITION "$1, $2"
@@ -250,7 +270,9 @@ esac
#@attention
#@version 0.1 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga
#*/
-function ogInfoCache () {
+function ogInfoCache ()
+{
+local info infoFilesystem infoSize infoUsed infoUsedPorcet infoMountedOn content
if ogMountCache
then
info=`df -h | grep $OGCAC`
@@ -282,3 +304,4 @@ else
fi
}
+
diff --git a/client/engine/Net.lib b/client/engine/Net.lib
index 6ac5a94a..b7534e20 100755
--- a/client/engine/Net.lib
+++ b/client/engine/Net.lib
@@ -4,12 +4,65 @@
#@brief Librería o clase Net
#@class Net
#@brief Funciones básicas de red.
-#@version 0.10
+#@version 1.0.2
#@warning License: GNU GPLv3+
#*/
#/**
+# ogGetGroupDir [ str_repo ]
+#@brief Devuelve el cmaino del directorio para el grupo del cliente.
+#@param str_repo repositorio de imágenes (opcional)
+#@return path_dir - Camino al directorio del grupo.
+#@note repo = { REPO, CACHE } REPO por defecto
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@version 1.0.2 - Primera versión para OpenGnSys.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2011-10-03
+#*/
+function ogGetGroupDir ()
+{
+local REPO DIR GROUP
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME str_repo" \
+ "$FUNCNAME REPO ==> /opt/opengnsys/images/groups/Grupo1"
+ return
+fi
+# Error si se recibe más de 1 parámetro.
+case $# in
+ 0) REPO="REPO" ;;
+ 1) REPO="$1" ;;
+ *) ogRaiseError $OG_ERR_FORMAT "$*"
+ return $? ;;
+esac
+
+GROUP="$(ogGetGroupName)"
+if [ -n "$GROUP" ]; then
+ DIR=$(ogGetPath "$REPO" "/groups/$GROUP" 2>/dev/null)
+ [ -d "$DIR" ] && echo "$DIR"
+fi
+}
+
+
+#/**
+# ogGetGroupName
+#@brief Devuelve el nombre del grupo al que pertenece el cliente.
+#@return str_group - Nombre de grupo.
+#@version 1.0.2 - Primera versión para OpenGnSys.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2011-10-03
+#*/
+function ogGetGroupName ()
+{
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => Grupo1"
+ return
+fi
+[ -n "$group" ] && echo "$group"
+}
+
+
+#/**
# ogGetHostname
#@brief Muestra el nombre del cliente.
#@return str_host - nombre de máquina
@@ -20,6 +73,10 @@
function ogGetHostname ()
{
local HOST
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => pc1"
+ return
+fi
# Tomar nombre de la variable HOSTNAME
HOST="$HOSTNAME"
# Si no, tomar del DHCP, opción host-name /* (comentario para Doxygen)
@@ -30,14 +87,14 @@ HOST="$HOSTNAME"
[ -z "$HOST" ] && HOST=$(awk 'BEGIN {RS=""; FS="="}
$1~/hostname/ {print $2}' /proc/cmdline)
[ "$HOSTNAME" != "$HOST" ] && export HOSTNAME="$HOST"
-echo $HOST
+[ -n "$HOST" ] && echo $HOST
}
#/**
# ogGetNetInterface
#@brief Muestra la interfaz de red del sistema
-#@return str_interfaz - interfaz de red
+#@return str_interface - interfaz de red
#@version 1.0 - Integración OpenGnSys 0.10 Opengnsys 0.10-testing
#@note Usa las variables utilizadas por el initrd "/etc/net-ethX.conf
#@author Antonio J. Doblas Viso. Universidad de Malaga.
@@ -45,13 +102,14 @@ echo $HOST
#*/ ##
function ogGetNetInterface ()
{
- echo $DEVICE
-
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => eth0"
+ return
+fi
+[ -n "$DEVICE" ] && echo "$DEVICE"
}
-
-
#/**
# ogGetIpAddress
#@brief Muestra la dirección IP del sistema
@@ -63,19 +121,29 @@ function ogGetNetInterface ()
#@note Usa las variables utilizadas por el initrd "/etc/net-ethX.conf
#@author Antonio J. Doblas Viso. Universidad de Malaga.
#@date 2011-02-24
+#@version 1.0.2 - Soporte para varias tarjetas de red
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2011-06-17
#*/ ##
function ogGetIpAddress ()
{
local IP
-if [ -n $IPV4ADDR ]
-then
- echo $IPV4ADDR
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.10"
+ return
+fi
+if [ -n $IPV4ADDR ]; then
+ IP=$IPV4ADDR
else
- # Obtener direcciones IP. /* (comentario para Doxygen)
- IP=$(ip address show | awk '$2!~/lo/ { readline; if ($1~/inet$/) {sub (/\/.*/, ""); printf ("%s ", $2)}}')
- # Mostrar sólo la primera. (comentario para Doxygen) */
- echo ${IP%% *}
+ # Obtener direcciones IP.
+ if [ -n "$DEVICE" ]; then
+ IP=$(ip -o address show up dev "$DEVICE" 2>/dev/null | awk '{if ($3~/inet$/) {printf ("%s ", $4)}}')
+ else
+ IP=$(ip -o address show up | awk '$2!~/lo/ {if ($3~/inet$/) {printf ("%s ", $4)}}')
+ fi
fi
+# Mostrar solo la primera.
+echo ${IP%%/*} # (comentario para Doxygen) */
}
@@ -86,12 +154,23 @@ fi
#@version 0.10 - Integración en OpenGnSys 0.10
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2010-02-11
+#@version 1.0.2 - Soporte para varias tarjetas de red
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2011-06-17
#*/ ##
function ogGetMacAddress ()
{
local MAC
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 00:11:22:33:44:55"
+ return
+fi
# Obtener direcciones Ethernet.
-MAC=$(ip address show | awk '$2!~/lo/ {readline; if ($1~/ether/) printf ("%s ", toupper($2));}')
+if [ -n "$DEVICE" ]; then
+ MAC=$(ip -o address show up dev "$DEVICE" 2>/dev/null | awk '{sub (/.*\\/, ""); if ($1~/ether/) printf ("%s ", toupper($2));}')
+else
+ MAC=$(ip -o address show up | awk '$2!~/lo/ {sub (/.*\\/, ""); if ($1~/ether/) printf ("%s ", toupper($2));}')
+fi
# Mostrar sólo la primera.
echo ${MAC%% *}
}
@@ -111,6 +190,10 @@ echo ${MAC%% *}
#*/ ##
function ogGetRepoIp ()
{
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.2"
+ return
+fi
# Obtener direcciones IP, segun el protocolo de montaje
if [ -n "$OGIMG" ]; then
case "$ogprotocol" in
@@ -135,8 +218,12 @@ fi
#*/ ##
function ogGetServerIp ()
{
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.2"
+ return
+fi
# Obtener direcciones IP.
-if [ -n "$PENGNSYS" ]; then
+if [ -n "$OPENGNSYS" ]; then
case "$ogprotocol" in
nfs) mount | grep " on $OPENGNSYS " | cut -f1 -d: ;;
smb) mount | grep " on $OPENGNSYS " | cut -f3 -d/ ;;
diff --git a/client/engine/PostConfEAC.lib b/client/engine/PostConfEAC.lib
index 642b9118..f2487919 100755
--- a/client/engine/PostConfEAC.lib
+++ b/client/engine/PostConfEAC.lib
@@ -573,3 +573,144 @@ schroot -c linux
schroot -end-sessiona --all-sessions
}
+####################################################################################
+################### Funciones para postconfiguracion windows #######################
+############# 2011 Jonathan Alonso Martinez jonathan.alonso@uab.cat ###############
+#################### Universidad Autonoma de Barcelona (Spain)######################
+####################################################################################
+
+#/**
+# ogInstallMiniSetup path_mountpoint str_filename
+#@brief Crea unas claves del registro y el archivo cmd que se ejecutara en el primer arranque estando la maquina en un estado bloqueado
+#@param path_mountpoint directorio donde está montado el sistema Windows
+#@param str_filename nombre del archivo .cmd a ejecutar en el arranque (estara en system32 y sera visible por el sistema)
+#@return (nada)
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@version 1.0.2 - Nueva función
+#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
+#@date 2011-06-29
+#*/ ##
+function ogInstallMiniSetup ()
+{
+local CMDDIR CMDFILE
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_filename" \
+ "$FUNCNAME /mnt/sda1 filename.cmd"
+ return
+fi
+# Error si no se reciben 2 parámetros.
+[ $# == 2 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
+# Comprobar que existe el directorio del fichero de comandos.
+CMDDIR=$(ogGetPath "$1/windows/system32")
+[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $?
+CMDFILE="$CMDDIR/$2"
+
+# Creamos el archivo cmd y creamos un par de comandos para que una vez acabe la
+# postconfiguracion resetee el mini setup, sino lo haria en cada arranque.
+cat > "$CMDFILE" << EOF
+REG ADD HKLM\System\Setup /v SystemSetupInProgress /t REG_DWORD /d 0 /f
+REG ADD HKLM\System\Setup /v CmdLine /t REG_SZ /d "" /f
+EOF
+
+#Creamos las claves de registro necesarias para que se haga la ejecucion del .cmd al aranque
+ogSetRegistryValue "$1" SYSTEM "\Setup\SystemSetupInProgress" 1
+ogSetRegistryValue "$1" SYSTEM "\Setup\SetupType" 4
+ogSetRegistryValue "$1" SYSTEM "\Setup\CmdLine" "cmd.exe /c $2"
+}
+
+
+# ogAddCmd path_mountpoint str_filename str_commands
+#@brief Añade comandos al cmd creado por ogInstalMiniSetup
+#@param path_mountpoint directorio donde está montado el sistema Windows
+#@param str_filename nombre del fichero cmd (siempre se guardara en windows\system32\para que sea visible por el sistema
+#@param str_commands comando o comandos que se añadiran al fichero
+#@return
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
+#@version 1.0.2 - Nueva función
+#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
+#@date 2011-06-29
+#*/ ##
+
+function ogAddCmd ()
+{
+local CMDFILE
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_filename str_commands" \
+ "$FUNCNAME /mnt/sda1 filename.cmd command"
+ return
+fi
+# Error si no se reciben 3 parámetros.
+[ $# == 3 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
+# Comprobar que existe el fichero de comandos.
+CMDFILE=$(ogGetPath "$1/windows/system32/$2")
+[ -n "$CMDFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32/$2" || return $?
+
+cat >> "$CMDFILE" << EOF
+$3
+EOF
+}
+
+# ogDomainScript path_mountpoint str_domain str_user str_password
+#@brief Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup
+#@param path_mountpoint directorio donde está montado el sistema Windows
+#@param str_filename nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
+#@param str_domain Dominio donde se quiere conectar
+#@param str_user Usuario con privilegios para unir al dominio
+#@param str_password Password del usuario con privilegios
+#@return
+#@exception OG_ERR_FORMAT Formato incorrecto.
+#@version 1.0.2 - Nueva función
+#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
+#@date 2011-06-29
+#*/ ##
+
+function ogDomainScript ()
+{
+local CMDDIR
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_filename str_domain str_user str_password" \
+ "$FUNCNAME /mnt/sda1 filename.cmd domain user password_user"
+ return
+fi
+# Error si no se reciben 4 parámetros.
+[ $# == 5 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
+# Comprobar que existe el directorio de comandos.
+CMDDIR=$(ogGetPath "$1/windows/system32")
+[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $?
+
+# Añadimos en el cmd que se ejecutara al arranque, el comando de ejecutar el script que añade al dominio.
+ogAddCmd $1 "$2" "CSCRIPT joindomain.vbs"
+# Eliminamos el script porque tiene el usuario de administrador de dominio en claro
+ogAddCmd $1 "$2" "del /Q C:\Windows\System32\joindomain.vbs"
+
+# Creamos el archivo joindomain.vbs que nos introduce la maquina en el dominio
+cat > "$CMDDIR/joindomain.vbs" << EOF
+Const JOIN_DOMAIN = 1
+Const ACCT_CREATE = 2
+Const ACCT_DELETE = 4
+Const WIN9X_UPGRADE = 16
+Const DOMAIN_JOIN_IF_JOINED = 32
+Const JOIN_UNSECURE = 64
+Const MACHINE_PASSWORD_PASSED = 128
+Const DEFERRED_SPN_SET = 256
+Const INSTALL_INVOCATION = 262144
+
+strDomain = "$3"
+strUser = "$4"
+strPassword = "$5"
+
+Set objNetwork = CreateObject("WScript.Network")
+strComputer = objNetwork.ComputerName
+
+Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\\" & _
+ strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
+
+ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, _
+ strDomain & "\" & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE)
+EOF
+}
+
diff --git a/client/engine/Protocol.lib b/client/engine/Protocol.lib
index ecc0d43b..5fe2bc74 100755
--- a/client/engine/Protocol.lib
+++ b/client/engine/Protocol.lib
@@ -29,14 +29,10 @@
#@date 2011/03/09
#*/ ##
-
-
-
function ogUcastSyntax ()
{
-local PARM SESSION SESSIONPARM MODE PORTBASE PERROR
-local ADDRESS
+local PARM SESSION SESSIONPARM MODE PORTBASE PERROR ADDRESS
local TOOL LEVEL DEVICE MBUFFER SYNTAXSERVER SYNTAXCLIENT
# Si se solicita, mostrar ayuda.
@@ -159,7 +155,7 @@ function ogUcastSendPartition ()
{
# Variables locales
-local PART COMMAND RETVAL
+local PART COMMAND RETVAL
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -175,7 +171,6 @@ PART=$(ogDiskToDev "$1" "$2") || return $?
#ogIsLocked $1 $2 || ogRaiseError $OG_ERR_LOCKED "$1,$2" || return $?
ogUnmount $1 $2
-
#generamos la instrucción a ejecutar.
COMMAND=`ogUcastSyntax SENDPARTITION "$3" $PART $4 $5`
RETVAL=$?
@@ -190,6 +185,7 @@ fi
}
+
#/**
# ogUcastReceiverPartition
#@brief Función para recibir directamente en la partición el contenido de un fichero imagen remoto enviado por UNICAST.
@@ -208,7 +204,7 @@ fi
function ogUcastReceiverPartition ()
{
# Variables locales
-local PART COMMAND RETVAL
+local PART COMMAND RETVAL
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -224,7 +220,6 @@ PART=$(ogDiskToDev "$1" "$2") || return $?
#ogIsLocked $1 $2 || ogRaiseError $OG_ERR_LOCKED "$1,$2" || return $?
ogUnmount $1 $2
-
#generamos la instrucción a ejecutar.
COMMAND=`ogUcastSyntax RECEIVERPARTITION "$3" $PART $4 $5`
RETVAL=$?
@@ -260,7 +255,7 @@ fi
function ogUcastSendFile ()
{
# Variables locales.
-local ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE
+local ARG ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE
#ARGS usado para controlar ubicación de la sesion multicast
@@ -301,7 +296,6 @@ esac
ogGetPath $SOURCE &> /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file $DEVICE not found" || return $?
-
SESSION=${!ARG}
#generamos la instrucción a ejecutar.
@@ -340,7 +334,6 @@ fi
#*/ ##
#
-
function ogMcastSyntax ()
{
@@ -478,7 +471,7 @@ esac
function ogMcastSendFile ()
{
# Variables locales.
-local ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE
+local ARGS ARG SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE
#LOGFILE="/tmp/mcast.log"
@@ -525,7 +518,6 @@ ogGetPath $SOURCE &> /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file
SESSION=${!ARG}
-
#generamos la instrucción a ejecutar.
COMMAND=`ogMcastSyntax "SENDFILE" "$SESSION" "$SOURCE"`
RETVAL=$?
@@ -611,6 +603,7 @@ else
fi
}
+
#/**
# ogMcastSendPartition
#@brief Función para enviar el contenido de una partición a multiples particiones remotas.
@@ -633,7 +626,7 @@ function ogMcastSendPartition ()
{
# Variables locales
-local PART COMMAND RETVAL
+local PART COMMAND RETVAL
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -683,7 +676,7 @@ fi
function ogMcastReceiverPartition ()
{
# Variables locales
-local PART COMMAND RETVAL
+local PART COMMAND RETVAL
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -926,7 +919,7 @@ esac
# Error si no existe la imagen
-[ $SOURCE ] || ogRaiseError $OG_ERR_NOTFOUND || return $?
+[ $SOURCE ] || ogRaiseError $OG_ERR_NOTFOUND || return $?
[ -r $SOURCE.torrent ] && mv "$SOURCE.torrent" "$SOURCE.torrent.ant" && echo "Esperamos que se refresque el servidor" && sleep 20
@@ -957,7 +950,7 @@ function ogUpdateCacheIsNecesary ()
{
# Variables locales.
-local ERROR SOURCE CACHE FILESOURCE MD5SOURCE FILETARGET MD5TARGET
+local ERROR SOURCE CACHE FILESOURCE MD5SOURCE FILETARGET MD5TARGET
ERROR=0
# Si se solicita, mostrar ayuda.
@@ -986,8 +979,8 @@ FILETARGET=`ogGetPath CACHE $2`
if [ -z $FILETARGET ]
then
# borramos el fichero bf del torrent, en el caso de que se hubiese quedado de algun proceso fallido
- ogDeleteFile CACHE /$2.torrent.bf &> /dev/null
- ogDeleteFile CACHE /$2.sum &> /dev/null
+ ogDeleteFile CACHE "/$2.torrent.bf" &> /dev/null
+ ogDeleteFile CACHE "/$2.sum" &> /dev/null
echo "TRUE=0, es necesario actualizar. Paso 1, la cache no contiene esa imagen "
return 0
fi
@@ -1029,7 +1022,7 @@ then
return 1
else
echo "TRUE=0, Si es necesario actualizar. paso 5.b la imagen en cache es distinta, borramos la imagen anterior y devolvemos 0 para confirmar la actualizacion"
- rm $FILETARGET
+ rm -f $FILETARGET
return 0
fi
diff --git a/client/engine/Registry.lib b/client/engine/Registry.lib
index 9ca6a0e4..6423f43a 100755
--- a/client/engine/Registry.lib
+++ b/client/engine/Registry.lib
@@ -60,8 +60,8 @@ EOT
#@return (nada)
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_NOTFOUND Fichero de registro no encontrado.
-#@note hive = { default, sam, security, software, system, components }
-#@note valuetype = { string, binary, dword }, por defecto: string
+#@note hive = { DEFAULT, SAM, SECURITY, SOFTWARE, SYSTEM, COMPONENTS }
+#@note valuetype = { STRING, BINARY, DWORD }, por defecto: STRING
#@warning Requisitos: chntpw
#@warning El sistema de archivos de Windows debe estar montada previamente.
#@version 1.0.1 - Nueva función
@@ -146,6 +146,7 @@ y
EOT
}
+
#/**
# ogDeleteRegistryValue path_mountpoint str_hive str_valuename
#@brief Elimina un valor del registro de Windows.
@@ -198,7 +199,7 @@ EOT
#@return str_path - camino del fichero de registro
#@exception OG_ERR_FORMAT Formato incorrecto.
#@exception OG_ERR_NOTFOUND Fichero de registro no encontrado.
-#@note hive = { default, sam, security, software, system, components }
+#@note hive = { DEFAULT, SAM, SECURITY, SOFTWARE, SYSTEM, COMPONENTS }
#@warning El sistema de archivos de Windows debe estar montada previamente.
#@version 1.0.1 - Nueva función
#@author Ramon Gomez, ETSII Universidad de Sevilla
@@ -212,7 +213,7 @@ local FILE FILENT FILEXP
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_hive"
- "$FUNCNAME /mnt/sda1 SOFTWARE"
+ "$FUNCNAME /mnt/sda1 SOFTWARE => /mnt/sda1/WINDOWS/System32/config/SOFTWARE"
return
fi
# Error si no se reciben 2 parámetros.
diff --git a/client/engine/System.lib b/client/engine/System.lib
index 020692d5..0d060f29 100755
--- a/client/engine/System.lib
+++ b/client/engine/System.lib
@@ -15,6 +15,7 @@
#@param str_loglevel nivel de registro de incidencias.
#@param str_message mensaje (puede recibir más de 1 parámetro.
#@return Mensaje mostrado.
+#@warning Si no se indica nivel de registro, solo muestra mensaje en pantalla.
#@note El nivel de ayuda \c (help) no se registra en el fichero de incidencias.
#@version 0.9 - Primera versión para OpenGnSys
#@author Ramon Gomez, ETSII Universidad de Sevilla
@@ -28,16 +29,17 @@ local LOGLEVEL LOGFILE DATETIME
# Selección del nivel de registro (opcional).
case "$1" in
help) shift ;;
- info) LOGLEVEL=$1; shift ;;
- warning) LOGLEVEL=$1; shift ;;
- error) LOGLEVEL=$1; shift ;;
+ info) LOGLEVEL="$1"; shift ;;
+ warning) LOGLEVEL="$1"; shift ;;
+ error) LOGLEVEL="$1"; shift ;;
*) ;;
esac
-# Pendiente en cliente Initrd.
-#DATETIME=$(date +"%F %T")
+DATETIME=$(date +"%F %T")
if [ -n "$LOGLEVEL" ]; then
- logger -s -t "OpenGnSys $LOGLEVEL" $LOGFILE "$DATETIME $*"
+ logger -s -t "OpenGnSys $LOGLEVEL" -f $LOGFILE "$DATETIME $*"
+ logger -t "OpenGnSys $LOGLEVEL" -f $OGLOGCOMMAND "$DATETIME $*"
+ logger -t "OpenGnSys $LOGLEVEL" -f $OGLOGSESSION "$DATETIME $*"
else
echo "$*"
fi
@@ -91,7 +93,7 @@ case "$CODE" in
$OG_ERR_MCASTSENDPARTITION) MSG="$MSG_ERR_MCASTSENDPARTITION \"$2\"" ;;
$OG_ERR_MCASTRECEIVERPARTITION) MSG="$MSG_ERR_MCASTRECEIVERPARTITION \"$2\"" ;;
$OG_ERR_PROTOCOLJOINMASTER) MSG="$MSG_ERR_PROTOCOLJOINMASTER \"$2\"" ;;
- *) MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;;
+ *) MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;;
esac
# Mostrar mensaje de error y salir con el código indicado.
@@ -177,19 +179,20 @@ while [ $# -gt 0 ]; do
done
}
-ogCheckProgram ()
+
+function ogCheckProgram ()
{
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
- ogHelp "$FUNCNAME \"str_program1 program2 programN\" " \
- "$FUNCNAME \"partimage partclone mbuffer\" "
+ ogHelp "$FUNCNAME \"str_program ...\"" \
+ "$FUNCNAME \"partimage partclone mbuffer\""
return
fi
# Error si no se recibe 1 parámetro.
[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $?
-local PERROR PLOG
+local PERROR PLOG i
PERROR=0
PLOG=" "
for i in `echo $1`
@@ -207,3 +210,4 @@ else
return 0
fi
}
+
diff --git a/client/engine/correspondencia-api.txt b/client/engine/correspondencia-api.txt
deleted file mode 100644
index e3cff0f5..00000000
--- a/client/engine/correspondencia-api.txt
+++ /dev/null
@@ -1,227 +0,0 @@
-
-OpenGNSys Client Cloning Engine API
-===================================
-
-La API está dividida en librerías de funciones C/BASH o clases C++/PHP.
-La columna de la izquierda es la propuesta de nombre para función/método y la de la derecha es la equivalencia con las actuales en UMA/US/UNIZAR.
-
-En el resto del fichero están las funciones originales que aún no he revisado.
-
-Entre el nombre de la función y sus equivalentes, se añade estado de la migración.
- version 0.1 incorporada desde hidra, brutalix, EAC, o interfaz hidra-eac pero no compatible.
- version 0.x proceso de migración
- version 0.9 totalmente funcional con la estructura definida en las primeras funciones insertadas por Ramón. Un ejemplo es ogPartitionActive de la libreria Disk.lib
-
-
-PROPUESTA
----------
-
-Librería o clase Install:
-- ogConfigureServer 0.1 (CustomEACServer, InterfazCustomEACServer)
-- ogLoadConfig (scirpt_uso)
-
-Librería o clase System:
-- ogEcho 0.9 (Msg)
-- ogRaiseError (?)
-
-Librería o clase Disk:
-- ogUpdatePartitionTable 0.1 (UpdateDisk)
-- ogDeletePartitionTable 0.1 (DeletePartitionTable, hidraDeletePartitionTable)
-- ogDevToDisk (Disk, IdPartition, hidraDisk)
-- ogDiskToDev 0.9 (DiskEAC)
- ogDiskToRelativeDev 0.1 (IdPartition)
-- ogCreatePartitions (CreatePartitions, hidraCreatePrimaryPartitions, hidraCreateLogicalPartitions)
-- ogListPartitions (ListPartitions, hidraListPartitions, hidraListPrimaryPartitions, hidraListLogicalPartitions)
-- ogGetPartitionActive (hidraGetPartitionActive)
-- ogSetPartitionActive (SetPartitionActive, hidraSetPartitionActive)
-- ogGetPartitionId 0.9 (?)
-- ogSetPartitionId 0.1 (SetPartitionType)
-- ogGetPartitionSize 0.9 (SizePartition, hidraGetPartitionSize)
-- ogSetPartitionSize (hidraSetPartitionSize)
- ogGetPartitionsNumber 0.1 (DetectNumberPartition)
- ogDeletePartitionsLabels 0.1 (DeleteLABELS)
-
-
-Librería o clase FileSystem:
-- ogFormat, ogFormatFs (FormatPartition, hidraFormat)
-- ogFormatCache 0.1 (FormatCACHE, hidraFormatCache)
-- ogExtend, ogExtendFs (EnlargeFileSystem, hidraFSExtend)
-- ogReduce, ogReduceFs (ReduceFileSystem, hidraFSReduce)
-- ogGetFsType (TypeFS, hidraTypeFS)
-- ogSetFsType (SetPartitionType, hidraSetPartitionType)
-- ogFindCache 0.1 (FindCache, hidraFindCache)
-- ogIsLocked, ogIsFsLocked (hidraIsLocked)
-- ogLock, ogLockFs (hidraLock)
-- ogUnlock, ogUnlockFs (hidraUnlock)
-- ogMountFs, ogMount (MountPartition, hidraMount)
-- ogUnmountFs, ogUnmount (UmountPartition, hidraUnmount)
-- ogMountAllFs, ogMountAll (hidraMountAll)
-- ogUnmountAllFs, ogUnmountAll (hidraUnmmountAll)
-- ogMountRepo, ogMount (MountRepo, hidraMountRepo)
-- ogUnmountRepo, ogUnmount (UmountRepo, hidraUnmountRepo)
-- ogMountCache, ogMount 0.1 (MountCache, hidraMountCache)
-- ogUnmountCache, ogUnmount 0.1 (UmountCache, hidraUnmountCache)
-
-Librería o clase Image:
-- ogCreateImage (CreateImageFromPartition, hidraCreateImageFromPartition)
-- ogRestoreImage (RestorePartitionFromImage, RestorePartitionFromPartition, hidraRestorePartitionFromImage)
-- ogGetImageSize (hidraImageSize)
-- ogCreateTorrent (CreateTorrentFromImage)
-
-
-Librería o clase Boot:
-- ogBoot (HDBoot, BootLinuxEX, hidraBoot)
-- ogLinuxBootParameters (hidraLinuxBootParameters)
-- ogInstallGrub (InstallGrub)
-- ogConfigureGrub (ConfGrub)
-- ogListRegistryKeys (hidraListRegistryKeys)
-- ogGetRegistryValue (hidraGetRegistryKey)
-- ogSetRegistryValue (hidraSetRegistryKey)
-- ogGetWindowsName (hidraGetWindowsName)
-- ogSetWindowsName (hidraSetWindowsName)
- ogNewMbrXP v0.1 (NewMbrXP)
-
-Librería o clase Inventory:
-- ogListHardwareInfo (InfoHardware, DetectDevices, hidraHardwareInfo)
-- ogGetOsVersion (hidraOSVersion)
-- ogListSoftware
-- ogListLinuxSoftware (hidraLinuxSoftware)
-- ogListWindowsSoftware (idraWindowsSoftware)
- ogInfoCache v.0.1 (infoCache)
-
-Librería o clase File:
-- ogGetPath (ConnectToRepo, hidraPath)
-- ogIsFile (IfFileExist, IfFileNotExist)
- ogNewPath
-
-Librería o clase String:
-
-Librería o clase ToolsGNU
-
-
-===================
-
-Funciones EAC:
-
-Referencia del Archivo ATA.lib
-
-DetectNumberPartition -> GetPartitionNumber
-NewMbrXP
-DeleteLABELS
-IsFSequalPartition -> CompareSizeFSPartition
-AmpliarFileSystemNT -> desaparece (la anterior detecta el tipo de FS)
-CrearSistemaArchivos
-ELIMINARReducirFileSystemNT
-
-Referencia del Archivo Boot.lib
-
-SetDefaultBoot
-ConvertToGrub
-InstalaGrub4dos
-moddhcpdconf
-
-Referencia del Archivo Deploy.lib
-
-SetDefaultStartpage
-DetectMethodTransfer
-GetImageFile
-UpdateCache
-CheckImage
-DetectInfoImage -> GetImageInfo
-DetectaProgramaImagen -> GetImageProgram
-DetectaFSImagen -> GetImageFS
-DetectCompresionImage -> GetImageCompression
-DeployPartitionFromImage
-OpenArchiveZIP
-OpenArchiveNT
-Synchronize
-MakeOffline
-MountChrootEACclient
-UmountChrootEACclient
-MakePhotoConsole
-BORRARCheckImageTORRENT
-
-Referencia del Archivo EACInstall.lib
-
-BuildEACOSBase
-BuildEACBootAgenPXE
-BuildEACServer
-TestPxe
-
-Referencia del Archivo FileSystem.lib
-
-SizeFileSystem
-InfoCache
-FormatToLower
-FormatToUpper
-FormatSintaxDev
-FormatSintaxSpacePath
-FormatSintaxBackSlashPath
-GetPath
-GetLastStr
-GetFirstStr
-MkdirPath
-DetectaEtiquetas
-WhatsTime
-HowLongHasWorked
-NumberRound
-
-Referencia del Archivo PostConf.lib
-
-CrearPatron
-ParseaSysprep
-NTDetect
-LoadRegistrySystem
-LoadRegistryUsers
-UpdateRegistry
-NTChangeName
-NTDrivers
-NTDrivers2
-NTSetGroupName
-NTSetOwner
-NTAutoLogon
-NTStatusRatonTeclado
-NTRunOnceMachine
-NTRunMachine
-NTRunUser
-NTPolUserOn
-NTPolUserOFF
-NTStatusBootChk
-NTNoMsgNewHardware
-ChangeName
-
-Referencia del Archivo Settings.lib
-
-IPservidor
-IfacesEACclient
-ExportEACconf
-clean
-
-Referencia del Archivo DBProcess.php
-
- RegistryHost ($mac, $ip)
- SetHostName ()
- BootServer ($boot, $ip)
- Logger ()
- InsertClassrom ($descripcion, $subred, $netmask, $broadcast, $gateway, $repo_image, $repo_client)
- InsertItemtoMenu ($menu, $item)
-
-
-Funciones Hidra:
-
-HIDRA (* a las que llama la web de hidra,las demás desaparecen salvo algunas que no existe en EAC)
-
-hidraClientIP
-hidraClientMAC
-hidraDeleteFile
-hidraEACServer
-hidraFSCheck
-hidraPoweroff
-hidraReboot
-hidraUpdateCache
-
-
-Funciones de configuracion Unizar
-
-eac_config_server
-opengnsys_installer