#!/bin/bash

# Name:
#
# Version:
#
# Use:
#
# Description:
#
# Dependencies:
#
# TODO:
# - Aadir identificador al fichero generado
# - Parsear el /etc/passwd para obtener nicamente los UID y nombres de usuarios.
 
# Constants
FICHERO_FINAL='informe_hardware'
DIRECTORIO_FINAL=$HOME/Desktop
FICHERO_SALIDA=$(mktemp)
NOMBRE_PROGRAMA='Informe de hardware'

> $FICHERO_SALIDA

# Signal handlers

# Functions
show_file () {
  fichero_a_mostrar=$1
  echo '----------------------------------------------------------------------' >> $FICHERO_SALIDA
  echo "FICHERO: $1" >> $FICHERO_SALIDA
  echo '------------------' >> $FICHERO_SALIDA

  if [ -r $fichero_a_mostrar ]; then
    cat $fichero_a_mostrar >> $FICHERO_SALIDA
    return
  fi

  if [ ! -a $fichero_a_mostrar ]; then
    echo "ERROR: El fichero no existe" >> $FICHERO_SALIDA
    return
  fi

}


show_binary_exit () {
  binario_a_mostrar="$*"
  echo '----------------------------------------------------------------------' >> $FICHERO_SALIDA
  echo "BINARIO: $1" >> $FICHERO_SALIDA
  echo '------------------' >> $FICHERO_SALIDA

  $* >> $FICHERO_SALIDA
}

# main
Xdialog --title "$NOMBRE_PROGRAMA" --wrap --ok-label "Generar informe" --cancel-label "Salir sin generar" --yesno "Este programa generar un informe con informacin de su ordenador que puede enviar voluntariamente al Servicio de Asistencia al Usuario para ayudar a la resolucin de su problema. Este informe recoge nicamente informacin tcnica y, en ningn caso, se recopila informacin personal como contraseas, correo, etc. Una vez que se haya generado, se le dar la oportunidad de revisar su contenido.\n\nDesea generar el informe?" 15 70
if [ $? == 1 ]; then
  exit
fi

show_file /etc/guadalinex_version 
show_binary_exit 'whoami'
show_binary_exit 'date'

# show_file '/etc/passwd'
# show_binary_exit "cat /etc/passwd | awk -F \":\" \'{print \$1\":\"\$3\":\"\$4}"
show_binary_exit cat /etc/passwd | awk -F ":" '{print $1":"$3":"$4}'
show_file '/etc/group'

show_file '/etc/X11/XF86Config-4'
show_file '/etc/X11/XF86Config'

show_binary_exit 'mount'
show_binary_exit 'dmesg'
show_binary_exit 'df -h'
show_binary_exit 'ls -lR /dev'
show_binary_exit 'lsusb'
show_binary_exit 'lsusb -v'

show_binary_exit '/sbin/ifconfig'
show_binary_exit '/sbin/route -n'
show_file '/etc/network/interfaces'

show_binary_exit '/usr/bin/lspci -n'
show_binary_exit '/usr/bin/lspci -v'

show_file '/boot/grub/menu.lst'
show_file '/boot/grub/grub.conf'

show_file '/etc/fstab'
show_file '/etc/mtab'
show_file '/etc/modules'
show_binary_exit '/sbin/lsmod'

# Ficheros del /proc
for i in /proc/{apm,cmdline,cpuinfo,crypto,devices,dma,execdomains,fb,filesystems,interrupts,iomem,ioports,kcore,kmsg,ksyms,loadavg,locks,meminfo,misc,modules,mounts,mtrr,partitions,pci,slabinfo,stat,swaps,uptime,version} ; do
   show_file $i
done

Xdialog --title "$NOMBRE_PROGRAMA" --wrap --ok-label "Revisar" --cancel-label "Continuar sin revisar" --default-no --yesno "El informe se ha generado correctamente.\n\nDesea revisar el informe?" 15 70

if [ $? == 0 ]; then
  Xdialog  --title "$NOMBRE_PROGRAMA" --no-cancel --ok-label "Continuar" --textbox $FICHERO_SALIDA 20 80
fi

if [ ! -f "$DIRECTORIO_FINAL/$FICHERO_FINAL.bz2" ]; then
  mv $FICHERO_SALIDA $DIRECTORIO_FINAL/$FICHERO_FINAL
  bzip2 $DIRECTORIO_FINAL/$FICHERO_FINAL
  rm -f $DIRECTORIO_FINAL/$FICHERO_FINAL
  Xdialog --title "$NOMBRE_PROGRAMA" --wrap --ok-label "Finalizar" --msgbox "El informe se ha guardado comprimido en su escritorio con el nombre $FICHERO_FINAL.bz2" 15 70
else
  Xdialog --title "$NOMBRE_PROGRAMA" --wrap --ok-label "Sobreescribir" --cancel-label "No sobreescribir y salir" --yesno "Ya existe un informe en $DIRECTORIO_FINAL/$FICHERO_FINAL.bz2 de una ejecucin anterior.\n\nDesea sobreescribir su contenido con la nueva informacin?" 15 70
  if [ $? == 0 ]; then
    rm -f $DIRECTORIO_FINAL/$FICHERO_FINAL.bz2
    mv $FICHERO_SALIDA $DIRECTORIO_FINAL/$FICHERO_FINAL
    bzip2 $DIRECTORIO_FINAL/$FICHERO_FINAL
    rm -f $DIRECTORIO_FINAL/$FICHERO_FINAL
    Xdialog --title "$NOMBRE_PROGRAMA" --wrap --ok-label "Finalizar" --msgbox "El informe se ha guardado comprimido en su escritorio con el nombre $FICHERO_FINAL.bz2" 15 70
  fi
fi
