#!/bin/sh
#-------------------------------------------------------------------------------
# charon_showhostinfo
#-------------------------------------------------------------------------------
# Copyright (C) 2013-2022 STROMASYS.
# All rights reserved.
#
#set -x
VERSION=1.44
#TODO (med): update the tables with HTML5 / CSS code (same as class=cfglog)

for P in `ls /etc/profile.d/charon* 2>/dev/null`;do . $P;done
if test -e `dirname $0`/charon_common
then
  . `dirname $0`/charon_common
  OUTOFLTK=0
else
  CHARONDIR=/opt/charon
  OUTOFLTK=1
fi
MAILFRFILE="${CHARONDIR}/utils/charon_check.mailfrom"

get_preferences 2>/dev/null

HL=""
IS_HTML=0
test "$1" = "-html" && IS_HTML=1

function Echo
{
  if test ${IS_HTML} = 0
  then
    echo "$1" "$2"
  else
    echo "$1 $2" >>/tmp/charon_showhostinfo.htm
  fi
}

function Usage
{
  cat <<EOF

`tput bold``basename $0``tput sgr0` (version ${VERSION})
    This script collects information on the CHARON server running on Linux
    `tput smul`Note`tput rmul`: must be root to execute the script

`tput bold`Parameters`tput sgr0`
    none           - Standard mode with enhanced display (full)
    -lite          - Lite mode, pure text (full)
    -html          - HTML mode. It is recommended then to route the display
                     to a file for reading with a browser (full)
    -mail=<to>     - creates an HTML file then send it to the mail recipient
                     Name and Company are then requested (full)
    -hostos        - displays only Hostname and Operating System information
    -hardware      - displays only Hardware information
    -processes     - displays only processes information & OOM settings
    -storage       - displays only Storage information
    -network       - displays only Network information
    -charonversion - displays only CHARON programs and packages information
    -charontoolkit - displays only CHARON utilies and services information

`tput bold`Example`tput sgr0`
    # $0 -mailto=spock@uss-enterprise.fed

EOF
}

function Title
{
  # $1 = Original $1
  # $2 = Level, 1 or 2
  # $3 = Title
  # $4 = Message to display on screen during execution
  if test "$1" != "-html"
  then
    Echo
    ${BOLD}
    TLV=$2
    TIT=$3
    if test -z "$3"
    then
      TLV=$1
      TIT=$2
      test "${TLV}" = "2" && Echo -e "${FGBLUE}"
    fi      
    Echo "${TIT}"
    if test "$1" = "-lite" -a "${TLV}" = "2"
    then
      TLN=`echo ${TIT} | wc -c`
      Echo "-------------------------------------------------------------------------------" | cut -c2-${TLN}
    fi
    ${SGR0}
  else
    echo
    Echo "<br>"
    if test "$2" = "1"
    then
      Echo "<a name='$3'></a><table border='1' width='100%'>"
      Echo "<tr><td align=left bgcolor=#3AAADC>"
      Echo "<font color='#FFFFFF'><b>$3</b></font>"
      Echo "</td></tr>"
      Echo "</table>"
      tput bold
    else
      Echo "<a name='$3'></a><table border='0' width='100%'>"
      Echo "<tr><td align=left bgcolor=#00A096>"
      Echo "<font color='#FFFFFF'>$3</font>"
      Echo "</td></tr>"
      Echo "</table>"
      echo -n "  "
    fi
    Echo "</font></font>"
    if test -z "$4"
    then
      echo -n "- $3"
    else
      echo -n "- $3 : $4"
    fi
    tput sgr0
  fi
}


function collect_hostos
{
  #-----------------------------------------------------------------------------
  # Hostname and Operating system
  #-----------------------------------------------------------------------------
  Title $1 1 "Hostname"

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)
  test "$1" = "-html" && Echo "<font style='font-family:monospace;'><br>"
  Echo `hostname`
  test "$1" = "-html" && Echo "</font><br>"
  Echo 
  test "$1" = "-html" && Echo "<br>"
  
  Title $1 1 "Operating system"

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)
  test "$1" = "-html" && Echo "<font style='font-family:monospace;'><br>"
  OSR=`cat ${OS_RELEASE}`
  Echo "${OSR}"
  test "$1" = "-html" && Echo "<br>"
  SR="`uname -s` `uname -r`"
  Echo "${SR}"
  test "$1" = "-html" && Echo "<br>"
  Echo "Uptime: `uptime`"
  test "$1" = "-html" && Echo "</font><br>"
  Echo
  test "$1" = "-html" && Echo "<br>"
}

function collect_hardware
{
  #-----------------------------------------------------------------------------
  # Hardware
  #-----------------------------------------------------------------------------
  Title $1 1 "Hardware"

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Memory"

  test "$1" = "-html" && Echo "<br><font style='font-family:monospace;'>"
  if test "$1" = "-html"
  then
    /usr/bin/free | sed "s= =\&nbsp;=g" | while read LINE
    do
      Echo "${LINE}<br>"
    done
    Echo
    Echo "</font><br>"  
    Echo "<br>"
  else
    Echo ""
    /usr/bin/free
  fi

  Title $1 2 "CPU"

  test "$1" = "-html" && Echo "<font style='font-family:monospace;'>"
  grep -e ^processor -e "^model name" /proc/cpuinfo | awk -F: '{print $2}' | while read LINE
  do
    P=`printf "%2d" ${LINE}`
    read LINE
    Echo "Processor ${P}: ${LINE}"
    test "$1" = "-html" && Echo "<br>"
  done
  test "$1" = "-html" && Echo "</font><br>"

  Title $1 2 "USB devices"

  test "$1" = "-html" && Echo "<br><font style='font-family:monospace;'>"
  /usr/bin/lsusb | while read LINE
  do
    Echo "${LINE}"
    test "$1" = "-html" && Echo "<br>"
  done
  test "$1" = "-html" && Echo "</font><br>"

  Title $1 2 "HASP USB devices"

  if test "$1" = "-html"
  then
    Echo "<br><font style='font-family:monospace;'>"
    /usr/bin/lsusb -d 0529:0001 -v | grep -e ^Bus -e id*Product | sed -e "s= =\&nbsp;=g" | while read LINE
    do
      Echo "${LINE}"
      Echo "<br>"
    done
    Echo "</font><br>"
  else
    /usr/bin/lsusb -d 0529:0001 -v | grep -e ^Bus -e id*Product
  fi
  Echo
}

function collect_storage
{
  #-----------------------------------------------------------------------------
  # Storage
  #-----------------------------------------------------------------------------
  Title $1 1 "Storage"

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)

  Title $1 2 "Block devices (lsblk)"
  if test "$1" = "-html"
  then
    Echo "<br>"
    Echo "<font style='font-family:monospace;'>"
    Echo "<font color='#3aaadc'><b>"
    Echo `lsblk -i | head -1 | sed -e "s= =\&nbsp;=g"`
    Echo "</b></font><br>"
    lsblk -i | grep -v "$NAME.*MOUNTPOINT$" | sed -e "s= =\&nbsp;=g" | sed -e "s=|-=\&#9500;\&#9472;=g" -e "s=\`-=\&#9492;\&#9472;=g" | sed "s=$=<br>=g" | while read LSB
    do
      Echo "${LSB}"
    done
    Echo "</font><br>"
  else
    if test "$1" = "-lite"
    then
      lsblk -i
    else
      lsblk
    fi
  fi
  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "SCSI devices (lsscsi)"
  if test "$1" = "-html"
  then
    Echo "<br>"
    Echo "<font style='font-family:monospace;'>"
    lsscsi -g | sed -e "s= =\&nbsp;=g" | sed "s=$=<br>=g" | while read LSB
    do
      Echo "${LSB}"
    done
    Echo "</font><br>"
  else
    lsscsi -g
  fi
  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "File systems"
  if test "$1" = "-html"
  then
    Echo "<br>"
    typeset -i I=0
    df -h | sed "s= =\&nbsp;=g" | while read LINE
    do
      I=I+1
      test ${I} -eq 1 && Echo "<font color='#3aaadc'><b>"
      Echo "<font style='font-family:monospace;'>"
      Echo "${LINE}"
      Echo "</font><br>"
      test ${I} -eq 1 && Echo "</b></font>"
    done
  else
    df -h
  fi
  Echo
  test "$1" = "-html" && Echo "<br>"
}

function collect_network
{
  #-----------------------------------------------------------------------------
  # Network
  #-----------------------------------------------------------------------------
  Title $1 1 "Network"

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)

  Title $1 2 "ip"

  if test "$1" = "-html"
  then
    Echo "<br><font style='font-family:monospace;'>"
    ip a | while read LINE
    do
      echo ${LINE} | grep -q -E "^[0-9]{1,}:"
      if test $? = 0
      then
        Echo "${LINE}"
      else
        Echo "&nbsp;&nbsp;<font color='#3aaadc'>${LINE}</font>"
      fi
      Echo "<br>"
    done
    Echo "</font>"
  else
    ip a
  fi
  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Network interfaces configuration files"

  grep ':' /proc/net/dev | while read LINE
  do
    NETINT=`echo ${LINE} | awk -F ':' '{print $1}' | tr -d ' '`
    IFCFGFILE=/etc/sysconfig/network-scripts/ifcfg-${NETINT}
    if test -e ${IFCFGFILE}
    then
      if test "$1" = "-html"
      then
        Echo "<br><table border='1'>"
        Echo "<tr><td bgcolor='#3aaadc'>${IFCFGFILE}</font>"
        Echo "</td></tr>"
        Echo "<tr><td>"
        cat ${IFCFGFILE} | sed -e "s= =\&nbsp=g" -e "s=$=<br>=g" | while read LC
        do
          test "`echo ${LC} | cut -c1`" = "#" && Echo "<font color=#a0a0a0>"
          Echo "<font style='font-family:monospace;'>${LC}</font>"
          test "`echo ${LC} | cut -c1`" = "#" && Echo "</font>"
        done
        Echo "</td></tr>"
        Echo "</table><br>"
      else
        ${BOLD}
        Echo "- ${IFCFGFILE}"
        ${SGR0}
        cat ${IFCFGFILE}
        Echo
      fi
    fi
  done
  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "netstat -r"

  if test "$1" = "-html"
  then
    Echo "</a><br>"
    Echo "<font style='font-family:monospace;'>"
    netstat -r | sed "s= =\&nbsp;=g" | while read N
    do
      Echo "${N}<br>"
    done
    Echo "</font>"
  else
    netstat -r
  fi
  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "ncu configuration"

  if test "$1" = "-html"
  then
    Echo "</a><br>"
    Echo "<font style='font-family:monospace;'>"
    Echo "<b>ncu -l</b><br>"
    which ncu >/dev/null 2>&1
    if test $? = 0
    then
      ncu -l | sed -e "s= =\&nbsp;=g" | while read N
      do
        Echo "${N}<br>"
      done
    else
      Echo "ncu is not installed."
    fi
    Echo "</font><br>"
    Echo "<font style='font-family:monospace;'>"
    Echo "<b>chkconfig --list ncusrv</b><br>"
    chkconfig --list ncusrv 2>/dev/null | while read N
    do
      Echo "${N}<br>"
    done
    test $? != 0 && Echo "Failed."
    Echo "</font><br>"
    Echo "<font style='font-family:monospace;'>"
    Echo "<b>Content of: /usr/lib/systemd/system/ncu.service</b><br>"
    if test -s /usr/lib/systemd/system/ncu.service
    then 
      cat /usr/lib/systemd/system/ncu.service | while read N
      do
        Echo "${N}<br>"
      done
    else
      Echo "File not found. Service definition problem. Please check.<br>"
    fi
    Echo "</font><br>"
  else
    Echo "ncu -l"
    which ncu 2>/dev/null
    if test $? = 0
    then
      ncu -l
    else
      Echo "ncu is not installed."
    fi
    Echo
    Echo "chkconfig --list ncusrv"
    chkconfig --list ncusrv
    test $? != 0 && Echo "Failed."
    Echo
    Echo "Content of: /usr/lib/systemd/system/ncu.service"
    if test -s /usr/lib/systemd/system/ncu.service
    then 
      cat /usr/lib/systemd/system/ncu.service
    else
      Echo "File not found. Service definition problem. Please check."
    fi
    Echo
  fi
  Echo 
  test "$1" = "-html" && Echo "<br>"
}

function collect_processes
{
  #-----------------------------------------------------------------------------
  # Processes
  #-----------------------------------------------------------------------------
  Title $1 1 "Processes"

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Top processes"

  if test "$1" = "-html"
  then
    Echo "<br><font style='font-family:monospace;'>"
    /usr/bin/top -b -n 1 | sed "s= =\&nbsp;=g" | while read LINE
    do
      Echo "${LINE}<br>"
    done
    Echo
    Echo "</font><br>"  
    Echo "<br>"
  else
    /usr/bin/top -b -n 1
  fi

  Title $1 2 "Top memory consumers"

  if test "$1" = "-html"
  then
    Echo "<br><font style='font-family:monospace;'>"
    Echo "<font color='#3aaadc'><b>"
    Echo `/bin/ps aux | head -1 | sed -e "s= =\&nbsp;=g"`
    Echo "</b></font><br>"
    /bin/ps aux | sort -n -k 5,6 | tail -20 | sort -nr -k 5,6 | sed "s= =\&nbsp;=g" | while read LINE
    do
      Echo "${LINE}<br>"
    done
    Echo
    Echo "</font><br>"  
    Echo "<br>"
  else
    /bin/ps aux | head -1
    /bin/ps aux | sort -n -k 5,6 | tail -20 | sort -nr -k 5,6
  fi

  Title $1 2 "OOM Killer settings"

  if test "$1" = "-html"
  then
    Echo "<br><font style='font-family:monospace;'>"
    Echo "Charon VM process killing prevention settings (from preferences):<br><b>"
    if test "${OOMPRVPIDKILL}" = "enabled"
    then
      Echo "<font color='#3ea650'>"
    else
      Echo "<font color='#e95f40'>"
    fi
    Echo "${OOMPRVPIDKILL}</font></b><br></font><br>"
    Echo "<font style='font-family:monospace;'>"
    Echo "<b>vm.overcommit_memory values</b>:<br>"
    Echo "<li>0 = Heuristic overcommit handling</li>"
    Echo "<li>1 = Always overcommit</li>"
    Echo "<li>2 = Don't overcommit</li>"
    Echo "<font color='#3aaadc'><b>"
    Echo "`/sbin/sysctl -q vm.overcommit_memory`"
    Echo "</b></font></font><br>"
    Echo "<br>"
    Echo "<font style='font-family:monospace;'>"
    Echo "<b>vm.panic_on_oom values</b>:<br>"
    Echo "<li>0 = Disabled</li>"
    Echo "<li>1 = Enabled</li>"
    Echo "<font color='#3aaadc'><b>"
    Echo "`/sbin/sysctl -q vm.panic_on_oom`"
    Echo "</b></font></font><br>"
  else
    Echo "Charon VM process killing prevention settings (from preferences): ${OOMPRVPIDKILL}"
    Echo
    Echo "vm.overcommit_memory values:"
    Echo "0 = Heuristic overcommit handling"
    Echo "1 = Always overcommit"
    Echo "2 = Don't overcommit"
    Echo
    /sbin/sysctl -q vm.overcommit_memory
    Echo
    Echo "vm.panic_on_oom values:"
    Echo "0 = Disabled"
    Echo "1 = Enabled"
    Echo 
    Echo "`/sbin/sysctl -q vm.panic_on_oom`"
    Echo
  fi
}

function collect_charonversion
{
  #-----------------------------------------------------------------------------
  # Charon Product
  #-----------------------------------------------------------------------------
  Title $1 1 "Charon Product"

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)
  
  #--- For Exe, look inside directory as there can be saved files with other versions
  #--- than the one installed
  test "$1" = "-html" && Echo "<br>"

  #--- For aksusb, python and Django, use 'rpm -q -a'
  Title $1 2 "Packages installed"

  test "$1" = "-html" && Echo "<br><font color=#3e3e40 style='font-family:monospace;'>"
  typeset -i N=0
  rm /tmp/charon_showhostinfo.rpm.$$ 2>/dev/null
  rpm -q -a | grep -e aksusb -e Django -e python-psutil -e ^charon -e ^hppa -e ^charon-par | sort | while read LINE
  do
    touch /tmp/charon_showhostinfo.rpm.$$
    Echo "${LINE}"
    test "$1" = "-html" && Echo "<br>"
  done
  if test -e /tmp/charon_showhostinfo.rpm.$$
  then
    rm /tmp/charon_showhostinfo.rpm.$$ 2>/dev/null
  else
    ${SGR0}
    test "$1" = "-html" && Echo "<font style='font-family:monospace;'>"
    Echo "There is no Charon package installed."
    test "$1" = "-html" && Echo "</font><br>"
  fi
  test "$1" = "-html" && Echo "</font>"

  #--- Display aksusb daemons status
  Title $1 2 "AKSUSB daemons status"

  test "$1" = "-html" && Echo "<br><font style='font-family:monospace;'><font color=#3e3e40>"

  if test "$1" = "-html"
  then
    systemctl -l --lines=20 status aksusbd.service 2>&1 | sed -e "s=├─=\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&#9500;\&#9472;=g" -e "s=└─=\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&#9492;\&#9472;=g" -e "s=●=\&diams;=g" | while read LINE
    do
      Echo "${LINE}<br>"
    done
  else
    systemctl -l --lines=20 status aksusbd.service 2>&1
  fi
  test "$1" = "-html" && Echo "</font>"

  #--- Display PATH
  Title $1 2 "PATH"

  test "$1" = "-html" && Echo "<br><font color=#3e3e40><font style='font-family:monospace;'>"
  Echo "PATH=${PATH}"
  test "$1" = "-html" && Echo "</font><br>"

  Echo
  test "$1" = "-html" && Echo "<br>"

  #--- Display license contents
  Title $1 2 "License contents"

  test "$1" = "-html" && Echo "<br><font color=#3e3e40><font style='font-family:monospace;'>"
  OPTHASP=""
  HASPEXE=`which hasp_srm_view 2>/dev/null`
  if test -z "${HASPEXE}"
  then
    Echo "Cannot find 'hasp_srm_view' executable file."
    test "$1" = "-html" && Echo "<br>"
    Echo "Please verify CHARON is installed and PATH is correctly set."
    test "$1" = "-html" && Echo "<br>"
  else
    test -n "`strings ${HASPEXE} | grep ^-all`" && OPTHASP="-all"

    OUTVIEW="/tmp/`basename $0`_`date +%Y%m%d_%H%M%S`.view"
    touch ${OUTVIEW}
    hasp_srm_view ${OPTHASP} >${OUTVIEW} 2>&1
    # if test -n "`grep 'key not found' ${OUTVIEW}`"
    if test -z "`grep 'License type:' ${OUTVIEW}`"
    then
      echo "hasp_srm_view ${OPTHASP} >${OUTVIEW} 2>&1" | at now >${OUTVIEW}.tmp 2>&1
      ATNUM=`grep ^job ${OUTVIEW}.tmp | awk '{print $2}'`
      rm -f ${OUTVIEW}.tmp
      typeset -i N=0
      while test 1
      do
        N=N+1
        sleep 2
        test -z "`at -l | grep -w ^${ATNUM}`" && break
        if test $N -gt 30
        then
          >${OUTVIEW}
          break
        fi
      done
    fi

    if test "$1" = "-html"
    then
      cat ${OUTVIEW} | sed "s=\r==g" | while read LO
      do
        CHKLIC=`echo ${LO} | grep "^The License Number"`
        test -n "${CHKLIC}" && Echo "<b>"
        Echo "${LO}<br>"
        test -n "${CHKLIC}" && Echo "</b>"
      done
    else
      cat ${OUTVIEW} | sed "s=\r==g"
    fi
  fi
  test "$1" = "-html" && Echo "</font><br>"

  Echo
  test "$1" = "-html" && Echo "<br>"
}

function collect_charontoolkit
{
  #-----------------------------------------------------------------------------
  # Toolkit version and settings
  #-----------------------------------------------------------------------------
  Title $1 1 "Toolkit"

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)

  Echo
  test "$1" = "-html" && Echo "<br>"
  ${BOLD}

  if test ${OUTOFLTK} = 1
  then
    ${SGR0}
    test "$1" = "-html" && Echo "<font style='font-family:monospace;'>"
    Echo "Not applicable, kit not installed."
    test "$1" = "-html" && Echo "</font><br>"
    return
  fi

  KITV=`cat ${CHARONDIR}/utils/kit.version 2>/dev/null` 
  test -n "${KITV}" && KITV=`echo ${KITV}|sed "s=\(^.*\);\(.*$\)=\1 (\2)=g"`

  Title $1 2 "Kit contents and versions"

  test "$1" = "-html" && Echo "<font style='font-family:monospace;'>"
  Echo "Version: ${KITV:-UNKNOWN}"

  if test "$1" = "-html"
  then
    Echo "<br><br><table border='1' style='font-family:monospace;'>"
    Echo "<tr>"
    Echo "<td bgcolor='#3aaadc'>Script</font></td>"
    Echo "<td bgcolor='#3aaadc'>Version</font></td>"
    Echo "</tr>"
  fi
  grep ^VERSION= ${CHARONDIR}/utils/* 2>/dev/null | grep :VERSION= | grep -v "~:" | sort | while read LINE
  do
    if test "$1" = "-html"
    then
      Echo "<tr><td>"
      V=`echo ${LINE} | cut -f1 -d':'`
      Echo "${V}"
      Echo "</td><td>"
      V=`echo ${LINE} | cut -f2 -d'='`
      Echo "${V}"
      INITFIL=`echo ${LINE} | cut -f1 -d':'`
      Echo "</td></tr>"
    else
      printf "`echo ${LINE} | cut -f1 -d':'` - `echo ${LINE} | cut -f2 -d':'`"
      INITFIL=`echo ${LINE} | cut -f1 -d':'`
      INITFIL="/etc/init.d/`basename ${INITFIL}`"
      if test -e ${INITFIL}
      then
        INITVER=`grep ^VERSION= ${INITFIL} | cut -f2 -d'='`
        Echo " (/etc/init.d version is ${INITVER})"
      else
        Echo
      fi
    fi
  done

  if test -e ${CHARONDIR}/utils/menu_mod.pl
  then
    if test -x ${CHARONDIR}/utils/menu_mod.pl
    then
      if test "$1" = "-html"
      then
        Echo "<tr><td>"
        Echo "${CHARONDIR}/utils/menu_mod.pl"
        Echo "</td><td>"
        Echo `${CHARONDIR}/utils/menu_mod.pl -v | head -1 | cut -f2 -d '='`
        Echo "</td></tr>"
      else
        printf "${CHARONDIR}/utils/menu_mod.pl - "
        ${CHARONDIR}/utils/menu_mod.pl -v | head -1
      fi
    else
      if test "$1" = "-html"
      then
        Echo "<tr><td>${CHARONDIR}/utils/menu_mod.pl</td>"
        Echo "<td>not executable!</td></tr>"
      else
        Echo "${CHARONDIR}/utils/menu_mod.pl - not executable!"
      fi
    fi
  else
    if test "$1" = "-html"
    then
      Echo "<tr><td>${CHARONDIR}/utils/menu_mod.pl</td>"
      Echo "<td>not found!</td></tr>"
    else
      Echo "${CHARONDIR}/utils/enu_mod.pl - not found"
    fi
  fi
  test "$1" = "-html" && Echo "<br>"

  if test -e ${CHARONDIR}/utils/guest_shutdown.exp
  then
    if test -x ${CHARONDIR}/utils/guest_shutdown.exp
    then
      INITVER=`grep ^#VERSION= ${CHARONDIR}/utils/guest_shutdown.exp|tr -d '#'`
      if test "$1" = "-html"
      then
        Echo "<tr><td>"
        Echo "${CHARONDIR}/utils/guest_shutdown.exp"
        Echo "</td><td>"
        Echo ${INITVER:-version not found} | cut -f2 -d'='
        Echo "</td></tr>"
      else
        printf "${CHARONDIR}/utils/guest_shutdown.exp - "
        Echo ${INITVER:-1=version not found}
      fi
    else
      if test "$1" = "-html"
      then
        Echo "<tr><td>"
        Echo "${CHARONDIR}/utils/guest_shutdown.exp"
        Echo "</td><td>"
        Echo "not executable!"
        Echo "</td></tr>"
      else
        Echo "${CHARONDIR}/utils/guest_shutdown.exp - not executable!"
      fi
    fi
  else
    if test "$1" = "-html"
    then
      Echo "<tr><td>"
      Echo "${CHARONDIR}/utils/guest_shutdown.exp"
      Echo "</td><td>"
      Echo "not found!"
      Echo "</td></tr>"
    else
      Echo "${CHARONDIR}/utils/guest_shutdown.exp - not found"
    fi
  fi
  test "$1" = "-html" && Echo "</table><br>"

  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Virtual machines list and status"

  if test "$1" = "-html"
  then
    Echo "<br><br><font style='font-family:monospace;'>"
    /opt/charon/utils/charon_cmdline vmlist | sed -e "s=\[m=</b>=g" -e "s=\[0m=</b>=g" -e "s=\[1m=<b>=g" -e "s=\[31m=<b>=g" -e "s=\[.m==g" -e "s=\[..m==g" -e "s=(0l(B=\&#9484=g" -e "s=(0x(B=\&#9474=g" -e "s=(0m(B=\&#9492=g" -e "s=(0==g" -e "s=(B==g" -e "s=\[..G= =g" -e "s=\[K==g" -e "s=$=<br>=g" -e "s=qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqq qqqqqq qqqqqqqqqqqqqqqqqqqqqqqq<br>=<hr>=g" -e "s= =\&nbsp;=g" | while read N
    do
      Echo "${N}"
    done
    Echo "</font>"
  else
    if test "$1" = "-lite"
    then
      /opt/charon/utils/charon_cmdline vmlist | sed -e "s=\[m==g" -e "s=\[0m==g" -e "s=\[1m==g" -e "s=\[31m==g" -e "s=\[.m==g" -e "s=\[..m==g" -e "s=(0l(B=+=g" -e "s=(0x(B=|=g" -e "s=(0m(B=+=g" -e "s=(0==g" -e "s=(B==g" -e "s=\[..G= =g" -e "s=\[K==g" -e "s=qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqq qqqqqq qqqqqqqqqqqqqqqqqqqqqqqq==g"
    else
      /opt/charon/utils/charon_cmdline vmlist
    fi
  fi
  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Configuration files"

  test "$1" = "-html" && Echo "<br><br>"

  cat <<EOF | while read F
/opt/charon/utils/charon_gstart.boot;Managed CHARON virtual machines: emulator exe, configuration file, start at boot Y/N
/opt/charon/utils/charon_gstart.stop;Clean shutdown script executed at service stop
/opt/charon/utils/charon_gstart.chkrun;Optional script executed when displaying running virtual machines to gather information from the Tru64 or OpenVMS system
/opt/charon/utils/charon_gstart.prestart;Optional script executed before the virtual machine starts
/opt/charon/utils/charon_logchk.list;Monitored CHARON virtual machines log files
/opt/charon/utils/charon_check.mailto;Recipients list for email alerts
/opt/charon/utils/charon_check.mailfooter;Mail footer added to email alerts
/opt/charon/utils/charon.preferences;File containing the preferences (optional)
/root/.charonmailmode;Mode used to send alert emails, TEXT or HTML (default)
/root/.charonwalloff;Exists if the wall messages are disabled
/root/.charon.expchk.nodongle;Exists if nodongle is detected to prevent from sending license expiration alerts
/root/.charon.expiration.alertsfromlog;If exists sends expiration alerts from the log file too and not only from the license expiration check utility running once (by default) a day
/root/.charonlogevent;Log message level generating an alert: 0 = None, 1 = INFORMATION + WARNING + ERROR, 2 = WARNING + ERROR, 3 = ERROR
/root/.charoncronNOcheck;File that can be created manually to prevent from checks in the crontab entries when using the Manage recursive jobs option
/root/.charonlicfolder;File containing the folder name used to contain the license files (.v2c)
/root/.charonkitfolder;File containing the folder name used to store the CHARON installation kits (with Install/Upgrade/Remove CHARON menu option)
/root/.charonsoftlicfolder;File containing the folder name used to store the software license kit (optional)
/root/.charon.hwspecwarning.ignore;Hardware specifications warning messages ignored (yes if file exists)
/root/.charon.less.warn.on.dongle.removal;Reduces the number of warning messages sent on dongle removal for V4.9 and above (yes if file exists)
/root/.charon.disable.monusb.immediate.alert;Disable the immediate alerts from the AKSUSB monitoring (yes if file exists)
/root/.telnetrc;telnet configuration file
EOF
  do
    FDESC=`echo $F | cut -f2 -d';'`
    F=`echo $F | cut -f1 -d';'`

    if test "$1" = "-html"
    then
      Echo "<b><font color=#0a71b4>File:</font></b> <font color=#0062ab>${F}</font><br>"
      Echo "<b><font color=#0a71b4>Description:</font></b> <font color=#0062ab>${FDESC}</font><br>"
      Echo "<table border='1'><tr><td>"
    else
      Echo "File: ${F}"
      Echo "Description: ${FDESC}"
    fi

    #test -z "`echo ${F} | grep '/root/'`" && F="${CHARONDIR}/utils/${F}"
    if test -e ${F}
    then
      if test -s ${F}
      then
        if test "$1" = "-html"
        then
          cat ${F} | sed -e "s= =\&nbsp=g" -e "s=$=</font><br>=g" -e "s=;=\&#59;=g" | while read LF
          do
            Echo "<font style='font-family:monospace;'>"
            test "`echo ${LF} | cut -c1`" = "#" && Echo "<font color=#a0a0a0>"
            Echo ${LF}
            Echo "</font>"
          done
        else
          cat ${F}
        fi
      else
        test "$1" = "-html" && Echo "<font style='font-family:monospace;'><font color=#a0a0a0>"
        Echo "Empty."
        test "$1" = "-html" && Echo "</font><br>"
      fi
    else
      test "$1" = "-html" && Echo "<font style='font-family:monospace;'><font color=#a0a0a0>"
      Echo "Does not exist."
      test "$1" = "-html" && Echo "</font><br>"
    fi
    test "$1" = "-html" && Echo "</font></td></tr></table>"
    Echo
    test "$1" = "-html" && Echo "<br>"
  done

  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Services"

  test "$1" = "-html" && Echo "<br>"
  
  if test -s ${CHARONDIR}/utils/charon_gstart.boot
  then
    cat ${CHARONDIR}/utils/charon_gstart.boot | while read L
    do
      LEXE=`echo ${L} | cut -f1 -d';'`
      LCFG=`echo ${L} | cut -f2 -d';'`
      LCFGBAS=`basename ${LCFG}|sed "s=\.cfg==g"`
      if test -s /etc/systemd/system/charon_${LCFGBAS}.service
      then
        if test "$1" = "-html"
        then
          Echo "<br>"
          Echo "<b>Executable:</b> ${LEXE}<br>"
          Echo "<b>Config file:</b> ${LCFG}<br>"
          Echo "<br><table border='1'>"
          Echo "<tr>"
          Echo "<td bgcolor='#3aaadc'>charon_${LCFGBAS}.service</td>"
          Echo "<td bgcolor='#3aaadc'>charon_logmon_${LCFGBAS}.service</td>"
          Echo "</tr>"
          Echo "<tr valign='top'>"
          Echo "<td><font style='font-family:monospace;'>"
          Echo "<b>File:</b><br>"
          cat /etc/systemd/system/charon_${LCFGBAS}.service | while read N
          do
            Echo "${N}<br>"
          done
          Echo "</font></td>"
          Echo "<td bgcolor='#f0f0f0'><font style='font-family:monospace;'>"
          if test -s /etc/systemd/system/charon_logmon_${LCFGBAS}.service
          then
            Echo "<b>File:</b><br>"
            cat /etc/systemd/system/charon_logmon_${LCFGBAS}.service | while read N
            do
              Echo "${N}<br>"
            done
          else
            Echo "Not defined"
          fi
          Echo "</font></td>"
          Echo "</tr>"
          Echo "<tr valign='top'>"
          Echo "<td><font style='font-family:monospace;'>"
          Echo "<b>Status:</b><br>"
          systemctl -l --lines=20 status charon_${LCFGBAS}.service 2>&1 | sed -e "s=├─=\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&#9500;\&#9472;=g" -e "s=└─=\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&#9492;\&#9472;=g" -e "s=$=<br>=g" -e "s=●=\&diams;=g"| while read N
          do
            Echo "${N}"
          done
          Echo "</font></td>"
          Echo "<td bgcolor='#f0f0f0'><font style='font-family:monospace;'>"
          Echo "<b>Status:</b><br>"
          systemctl -l --lines=20 status charon_logmon_${LCFGBAS}.service 2>&1 | sed -e "s=├─=\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&#9500;\&#9472;=g" -e "s=└─=\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&nbsp;\&#9492;\&#9472;=g" -e "s=$=<br>=g" -e "s=●=\&diams;=g"| while read N
          do
            Echo "${N}"
          done
          Echo "</font></td>"
          Echo "</tr>"
          Echo "</table>"
        else
          Echo
          Echo "Executable:  ${LEXE}"
          Echo "Config file: ${LCFG}"
          ${BOLD}
          Echo "Service file:"
          ${SGR0}
          cat /etc/systemd/system/charon_${LCFGBAS}.service
          ${BOLD}
          Echo "Service status:"
          ${SGR0}
          systemctl -l --lines=20 status charon_${LCFGBAS}.service 2>&1
          Echo
          ${BOLD}
          Echo "Log monitoring service file:"
          ${SGR0}
          if test -s /etc/systemd/system/charon_logmon_${LCFGBAS}.service
          then
            cat /etc/systemd/system/charon_logmon_${LCFGBAS}.service
          else
            Echo "Not defined"
          fi
          ${BOLD}
          Echo "Log monitoring service status:"
          ${SGR0}
          systemctl -l --lines=20 status charon_logmon_${LCFGBAS}.service 2>&1
          Echo
        fi
      else
        if test "$1" = "-html"
        then
          Echo "<b><font color='#FF0000'>Service not defined</font></b><br>"
        else
          Echo "Service not defined"
        fi
      fi
    done
  else
    Echo "No guest managed"
    test "$1" = "-html" && Echo "<br>"
  fi

  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Scheduled jobs (cron)"

  test "$1" = "-html" && Echo "<br>"
  if test -n "`crontab -l 2>/dev/null | grep charon`"
  then
    crontab -l | grep charon | while read LINE
    do
      if test "$1" = "-html"
      then
        if test "`echo ${LINE}|cut -c1`" = "#"
        then
          Echo "<font color='#8F8F8F' style='font-family:monospace;'>"
        else
          Echo "<font style='font-family:monospace;'>"
        fi
      fi
      Echo "${LINE}"
      test "$1" = "-html" && Echo "</font><br>"
    done
  else
    Echo "No scheduled job found for CHARON."
    test "$1" = "-html" && Echo "<br>"
  fi
  test "$1" = "-html" && Echo "</font>"

  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Running processes (grep charon)"

  test "$1" = "-html" && Echo "<br>"
  if test -n "`ps -ef | grep [c]haron`"
  then
    ps -ef | grep [c]haron | while read LINE
    do
      test "$1" = "-html" && Echo "<font style='font-family:monospace;'>"
      Echo "${LINE}"
      test "$1" = "-html" && Echo "</font><br>"
    done
  else
    Echo "No processes found for charon."
    test "$1" = "-html" && Echo "<br>"
  fi
  test "$1" = "-html" && Echo "</font>"

  Echo
  test "$1" = "-html" && Echo "<br>"

  Title $1 2 "Files list in ${CHARONDIR}/utils"

  test "$1" = "-html" && Echo "<br>"
  ls -lR ${CHARONDIR}/utils | while read LINE
  do
    test "$1" = "-html" && Echo "<font style='font-family:monospace;'>"
    Echo "${LINE}"
    test "$1" = "-html" && Echo "</font><br>"
  done
  test "$1" = "-html" && Echo "</font>"
}

function collect_collectlogscfg
{
  #-----------------------------------------------------------------------------
  # Collect logs and configuration files
  #-----------------------------------------------------------------------------
  Title $1 1 "Log and configuration files"

  if test ${OUTOFLTK} = 1
  then
    ${SGR0}
    test "$1" = "-html" && Echo "<br><font style='font-family:monospace;'>"
    Echo "Not applicable, kit not installed."
    test "$1" = "-html" && Echo "</font><br>"
    return
  fi

  test -n "${HL}" && (tput smacs;Echo ${HL};tput rmacs)

  Echo
  test "$1" = "-html" && Echo "<br>"
  if test -s ${CHARONDIR}/utils/charon_gstart.boot
  then
    typeset -i I=0
    if test "$1" = "-html"
    then
      Echo "<a name='LOGCFGLIST'><b>Configuration and log files:</a></b><br><br>"

      Echo "<table class=cfglog>"
      Echo "<tr>"
      Echo "<th class=cfglog rowspan=2 bgcolor=#0A71B4 align=left><font color=#FFFFFF>Configuration file</font></th>"
      Echo "<th class=cfglog colspan=3 bgcolor=#0A71B4 align=center><font color=#FFFFFF>Log file</font></th>"
      Echo "    <tr>"
      Echo "    <th class=cfglog bgcolor=#3AAADC align=center>Name</th>"
      Echo "    <th class=cfglog bgcolor=#3AAADC align=center>Size</th>"
      Echo "    <th class=cfglog bgcolor=#3AAADC align=center>Lines</th>"
      Echo "    </tr>"
      Echo "</tr>"

      cat ${CHARONDIR}/utils/charon_gstart.boot | while read L
      do
        LEXE=`echo ${L} | cut -f1 -d';'`
        LCFG=`echo ${L} | cut -f2 -d';'`
        get_logfile ${LCFG}
        I=I+1
        Echo "<tr>"
        Echo "<td class=cfglog align=left><a href='#LOGCFGC${I}'>${LCFG} (`basename ${LEXE}`)</a></td>"
        LOGFSIZ=`du -hL ${LOGF} 2>/dev/null | awk '{print $1}'`
        if test -z "${LOGFSIZ}"
        then
          LOGFSIZ="&rarr;File not found"
          LOGFLIN="NA"
        else
          LOGFLIN=`wc -l ${LOGF} 2>/dev/null | awk '{print $1}'`
        fi
        Echo "<td class=cfglog align=left><a href='#LOGCFGL${I}'>${LOGF}</a></td>"
        Echo "<td class=cfglog align=right>${LOGFSIZ}</td>"
        Echo "<td class=cfglog align=right>${LOGFLIN}</td>"
        Echo "</tr>"
      done
      Echo "</table><br>"      
    fi
    typeset -i I=0
    cat ${CHARONDIR}/utils/charon_gstart.boot | while read L
    do
      LEXE=`echo ${L} | cut -f1 -d';'`
      LCFG=`echo ${L} | cut -f2 -d';'`
      get_logfile ${LCFG}
      I=I+1
      if test "$1" = "-html"
      then
        Echo "<a name=LOGCFGC${I}></a>"
        Title $1 2 "${LCFG} (`basename ${LEXE}`)"

        Echo "<font style='font-family:monospace;'>"
        cat ${LCFG} 2>&1 | while read LINE
        do
          if test "`echo ${LINE} | cut -c1`" = "#"
          then
            if test "`echo ${LINE} | cut -c1-6`" = "#INFO:"
            then
              Echo "<font color='#0a71b4'>"
            else
              Echo "<font color='#a0a0a0'>"
            fi
          fi
          Echo "${LINE}"
          Echo "<br>"
          test "`echo ${LINE} | cut -c1`" = "#" && Echo "</font>"
        done
        Echo "</font>"

        Echo "<a name=LOGCFGL${I}></a>"
        LOGFSIZ=`du -hL ${LOGF} 2>/dev/null | awk '{print $1}'`
        if test -z "${LOGFSIZ}"
        then
          LOGFINF="File not found"
        else
          LOGFLIN=`wc -l ${LOGF} 2>/dev/null | awk '{print $1}'`
          LOGFINF="${LOGFSIZ} and ${LOGFLIN:-0} lines"
        fi

        Title $1 2 "${LOGF}" "${LOGFINF}"

        cat ${LOGF} 2>&1 | while read LINE
        do
          Echo "<font style='font-family:monospace;'>"
          case "`echo ${LINE} | cut -f3 -d:`"
          in
            "warn")
              Echo "<font style='background-color:#00ffff'>"
              ;;
            "err"|"ERR")
              Echo "<font color=#f0f0f0 style='background-color:#f70808'>"
              ;;
            "Charon-PAR"|"Charon-HPA")
              Echo "<font style='background-color:#00ff00'>"
              ;;
            "log file"|"config load")
              Echo "<font color='#0062ab'>"
              ;;
            "System model"|"RAM size"|"Host CPU freq")
              Echo "<font color='#0062ab'>"
              ;;
            "Found license key"|"License number")
              Echo "<font style='background-color:#00ff00'>"
              ;;
            "emulator is about to exit")
              Echo "<font color=#ff2020>"
              ;;
            "starting the emulator")
              Echo "<font style='background-color:#00ff00'>"
              ;;
            "run cpu loop")
              #--- Up to Version 3.0.0
              Echo "<font style='background-color:#00ff00'>"
              ;;
            cpu*)
              #--- Starting with Version 3.0.1
              if test -n "`echo ${LINE} | grep 'run cpu loop'`"
              then
                Echo "<font style='background-color:#00ff00'>"
              fi
              ;;
            "exit")
              Echo "<font color=#ffffff style='background-color:#ff2020'>"
              ;;
            *)
              if test -n "`echo ${LINE} | grep 'Got connection from'`"
              then
                Echo "<font color=#ffffff style='background-color:#404040'>"
              fi
              ;;
          esac
          Echo "${LINE}"
          Echo "</font></font><br>"
        done
        Echo "<table border='0' width='100%'>"
        Echo "<tr><td align=right>"
        Echo "<a href='#LOGCFGLIST'>Back to Configuration and log files list</a></td></tr></table>"
        Echo "<br>"
      else
        Echo "Executable:  ${LEXE}"
        Echo "Config file: ${LCFG}"
        ${BOLD}
        Echo "${LCFG}:"
        ${SGR0}
        cat ${LCFG} 2>&1 
        ${BOLD}
        Echo "${LOGF}:"
        ${SGR0}
        cat ${LOGF} 2>&1 
        Echo
      fi
    done
  else
    Echo "No guest service defined"
    test "$1" = "-html" && Echo "<br>"
  fi
}


if test `id -u` -ne 0
then
  Echo "Must be root !"
  Echo
  Echo "For help, run: $0 -h"
  Echo
  exit 1
fi

if test -e /etc/redhat-release
then
  OS_RELEASE=/etc/redhat-release
else
  OS_RELEASE=/etc/system-release
fi

BOLD="tput bold"
BOLDC="printf [1m${FGBLUE}"
SGR0="tput sgr0"
HL="qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"

case "$1"
in
  -h)
    Usage
    exit 0
    ;;
  -lite)
    BOLD=""
    BOLDC=""
    SGR0=""
    HL="--------------------------------------------------------------------------"
    ;;
  -html)
    BOLD="Echo <b>"
    BOLDC="Echo <b><font color=#0000FF>"
    SGR0="Echo </b></font>"
    HL=""
    ;;
  -mail=*)
    tput bold
    printf "Name (empty one to exit): "
    tput sgr0
    read CS_NAME
    test -z "${CS_NAME}" && exit 0

    tput bold
    printf "Company (empty one to exit): "
    tput sgr0
    read CS_COMP
    test -z "${CS_COMP}" && exit 0

    $0 -html

    cat <<EOF >/tmp/charon_showhostinfo.htm.tmp
<b>Customer</b><br><hr>
Name: <font color="#2020FF">${CS_NAME}</font><br>
Company: <font color="#2020FF">${CS_COMP}</font><br>
<br>
`cat /tmp/charon_showhostinfo.htm`
EOF
    mv -f /tmp/charon_showhostinfo.htm.tmp /tmp/charon_showhostinfo.htm
    MAILTO=`echo $1 | cut -f2 -d'='`

    echo "Sending mail..."
    TMPMAIL=/tmp/charon_showhostinfo.htm.$$
    BOUNDARY="$$CHARONSENDMAIL`basename $0`$$"

    MAILFROM=`cat ${MAILFRFILE} 2>/dev/null`
    if test -z "${MAILFROM}"
    then
      echo "From: `whoami`@`hostname`" >${TMPMAIL}
    else
      if test -n "`echo ${MAILFROM} | grep '@'`"
      then
        echo "From: ${MAILFROM}" >${TMPMAIL}
      else
        echo "From: ${MAILFROM}<`whoami`@`hostname`>" >${TMPMAIL}
      fi
    fi

    echo "To: ${MAILTO}" >>${TMPMAIL}
    echo "Subject: [CHARON] Show Host Information from `hostname -s`" >>${TMPMAIL}
    echo "Mime-Version: 1.0;" >>${TMPMAIL}
    echo "Content-Type: multipart/mixed; boundary=${BOUNDARY}" >>${TMPMAIL}
    echo "" >>${TMPMAIL}
    echo "Please find attached show host information html file" >>${TMPMAIL}
    echo "" >>${TMPMAIL}

    echo "--${BOUNDARY}" >>${TMPMAIL}
    echo "Content-Type: text/html; charset=\"ISO-8859-1\";" >>${TMPMAIL}
    echo "Content-Disposition: inline;" >>${TMPMAIL}
    echo "" >>${TMPMAIL}
    echo "<html>" >>${TMPMAIL}
    if test "`cat ${OS_RELEASE} | awk '{print $1}'`" = "Red" -o "`cat ${OS_RELEASE} | awk '{print $1}'`" = "CentOS"
    then
      if test `du -k /tmp/charon_showhostinfo.htm | awk '{print $1}'` -le 500
      then
        #--- With Red Hat, sendmail allows log and config files in the message body, Fedora does not (v17)
        cat /tmp/charon_showhostinfo.htm >>${TMPMAIL}
      else
        echo "Please find attached the host information html file.<br>" >>${TMPMAIL}
      fi
    else
      echo "Please find attached the host information html file.<br>" >>${TMPMAIL}
    fi
    echo "</html>" >>${TMPMAIL}
    echo "" >>${TMPMAIL}

    echo "--${BOUNDARY}" >>${TMPMAIL}
    rm -f /tmp/charon_showhostinfo.htm.zip 2>/dev/null
    zip -j /tmp/charon_showhostinfo.htm.zip /tmp/charon_showhostinfo.htm >/dev/null 2>&1
    if test $? = 0
    then
      # Joins the /opt/charon/log folder in the zipped file
      zip /tmp/charon_showhostinfo.htm.zip /opt/charon/log/* >/dev/null 2>&1
      echo "Content-Type: application/octet-stream; name=Charon_ShowHostInfo_`hostname -s`.htm.zip;" >>${TMPMAIL}
      echo "Content-Transfer-Encoding: base64;" >>${TMPMAIL}
      echo "Content-Disposition: Attachment; filename=Charon_ShowHostInfo_`hostname -s`.htm.zip" >>${TMPMAIL}
      echo "" >>${TMPMAIL}
      base64 /tmp/charon_showhostinfo.htm.zip >>${TMPMAIL}
    else
      echo "Content-Type: application/octet-stream; name=Charon_ShowHostInfo_`hostname -s`.htm;" >>${TMPMAIL}
      echo "Content-Transfer-Encoding: base64;" >>${TMPMAIL}
      echo "Content-Disposition: Attachment; filename=Charon_ShowHostInfo_`hostname -s`.htm" >>${TMPMAIL}
      echo "" >>${TMPMAIL}
      base64 /tmp/charon_showhostinfo.htm >>${TMPMAIL}
    fi
    echo "" >>${TMPMAIL}

    echo "--${BOUNDARY}--" >>${TMPMAIL}

    sendmail -t -i <${TMPMAIL}
    if test $? = 0
    then
      echo "Done."
      rm -f ${TMPMAIL}
    else
      echo "Failed!"
    fi

    exit 0
    ;;
  -hostos)
    collect_`echo $1  | tr -d "-"`
    exit 0
    ;;
  -hardware)
    collect_`echo $1  | tr -d "-"`
    exit 0
    ;;
  -processes)
    collect_`echo $1  | tr -d "-"`
    exit 0
    ;;
  -storage)
    collect_`echo $1  | tr -d "-"`
    exit 0
    ;;
  -network)
    collect_`echo $1  | tr -d "-"`
    exit 0
    ;;
  -charonversion)
    collect_`echo $1  | tr -d "-"`
    exit 0
    ;;
  -charontoolkit)
    collect_`echo $1  | tr -d "-"`
    exit 0
    ;;
esac

if test "$1" = "-html"
then
  rm -f /tmp/charon_showhostinfo.htm 2>/dev/null
  tput smso
  echo "Generating output to /tmp/charon_showhostinfo.htm ..."
  tput rmso

  Echo "<style type='text/css'>"
  Echo "table.cfglog {"
  Echo "  border: 2px solid #0A71B4;"
  Echo "  width: 100%"
  Echo "}"
  Echo "th.cfglog, td.cfglog {"
  Echo "  padding: 5px;"
  Echo "  border: 1px solid #0062AB;"
  Echo "}"
  Echo "table.logo {"
  Echo "  border: 0;"
  Echo "  width: 100%;"
  Echo "}"
  Echo "</style>"

  Echo "<html>"
  Echo "<a name='top'></a>"

  Echo "<table class=logo>"
  Echo "<tr class=logo><td class=logo align=center>"
  Echo "<img src='data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAtCAYAAADr0SSvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5QUUCTcYEXxsxAAAAAd0R"
  Echo "Vh0QXV0aG9yAKmuzEgAAAAMdEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRFWHRDcmVhdGlvbiB0aW1lADX3DwkAAAA"
  Echo "JdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVYdERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3VyY2UA9f+D6wAAAAh0RVh0Q"
  Echo "29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tInAAAgAElEQVR4nO2deXwWRbb3f1W9PHuerEDCDiIKorgg4oxCwhKWEEhIIIRAEDE4o3KZAbluaBjvjDr"
  Echo "XUQfHBVS2sMRECJDEBIEkIDOiICqLgsi+BLInz95L1ftHBEO2Jywz99558/18+o90nTp1+uk+3VWnTlUI5xw3i7QtX5t2VAVsP3XwwoPM6QAE6r8SBwSTB"
  Echo "SFGtvzSnyIfvWnGtNPOTaANT3DbWPLpMfnvWvgWQ5eIB7v078ioQBl01nolDlAKZhFUKJJtVvjzxX+9Wfa0087N4KY5yFKvaZVusY/QqithDg6g4Xf1AAg"
  Echo "YWAtfKA5QAmYxyaCUgHsd8AjWueHPF71ws2xqp50b5aY4yJ0bz76rW4KSmKMKAKCrGgI6BdJOA7pzMMbQuBvHARAws1mCIBDKOQDOAMUFDzW/3PX54t/cD"
  Echo "LvaaedGuWEHuWvD2f9SzMG/YY5qNHQETdEQ2CVECLu9M6DpDA19hHBmNkkQBYFe5TtMBzQFThje7fFc0dQbta2ddm4UciOD9IHZp/7Dawl6i3mc9Q93Mwi"
  Echo "yiLIfL+hVRy8IkEQAgNkkMlkSaYttizII54pN8Mac+a9R267bwHbauUGu20EGbTqd4hCsGVxTwDUFAGm+AUJABMoufX+W1lz0wGQ1wmiQ0Gq7nAOSCfA5E"
  Echo "CyrY46/OLTwuoxsp50b5LocZNCGEzF1ojUHnItc9aIl57jSiCACogTHgWMZstdXCkIJg58IFwBIJoOZamd+F2b865w592nXbOg/kZiYmHvq6pwvdevWZc6"
  Echo "aNWsu/k/b084/B/FaKwz65PSQOtG6HoSI3OcBSOvOAUJALAGQPHV/vvDCg/95vYb+b0PTtM4AYimlCwC0O8i/Kdc0SI/acqafQzBsgiBYudft3zkA0IAQi"
  Echo "K7qlQcnRvzbOAcAUEpVXdfBOW/Dp7Cd/6u0+QsyMvdC11JdzOOysQN31bbZOQRn1ZZD8V3/r8yQSykpKSFutxuvvfZaVZ8+fZSWBM1ms7O21oHevXvX/RP"
  Echo "todOnTw/xer3SoEGD6hYuXOi8UYUpKSmdHA6dbN68vgKA2lrbU6dO7QgA69f7lW3C7Nmzg2pra002m01Zvnx5xbXUzcrKMubk5ARxzvXMzMwKoC398RuCT"
  Echo "J48s4Mg+OjUqVNrYmNjPVcK2jIGid56NuiMWyhiRutA7qhug3NwUFsIiLt25+hwNvrNIV29jSXe3jNm2qDw8slm3asrvC0fMgJR4GKY7DjWOeLk/DZUaDN"
  Echo "jx8b1cblqXwR4JGMsAAChlDgBslcU5SU7dmzdflk2OjpmEKA9rShKJ0VRHzIY5AJCiINzTgVBQLduXZ//6KOPfgSATz/9VP7LX95cajZbNuTmbsqbO3euf"
  Echo "PTosac8Hs9kSmlIz563TF+xYtkXje2Jjh43zOfzPs45e5BzbuecUUKolxBy0mAwrO/SJeKD5cuXt+gsCQlJv66qqvjt/fff9/irr75aN2/ePPsPPxxd6PP"
  Echo "5EhjTgxkDFQTqJYR8FhRkfyEnJ+f85bqpqakRZ8+ee07X2TjGmI0QQiilHs6xLTQ06KUNGzacaand+Pj4u2tq6tI0TRsB8FDOuQgQTqlQIcvS+gcffOBPi"
  Echo "xcvdrVUf9y4cfe7XJ7nOWf3M8atAEAprQHI5wEBljdyc3P3AUBaWlrAkSM/rpAkecWOHZ/l+bm9AICxY8eOczo9s+644/ZH33333RoASEpK6nDpUsULjOm"
  Echo "xjLHg+uaoGyCHDAbx3dmzZ2/06yDpX18wfXyaF3CzfShzVMLfgBycg9iCIHidByLAI7fHda5qLPK3PTHjVcmzqaNdp3fbqiAJDDprTS+BzgnCjDUIs9eiq"
  Echo "tz4bnDYxSf8/ShtISYmZlBdnWsHITghScI7ZrP5sCAIYk2Noz/ApgLkIVkWZ2zdujUDAMaMGTNQ0/THVVXrrqrqaEmSPyYENZxzQRQFdO4c8cqqVatOAEB"
  Echo "GRoZ5+fKVLrPZ8tSgQb0yiou/+ztjrLcgiJsEgZ7p2bP7ig8//PDIZVvS0p4JOHZs3zLG9Cmc892CIGQHBdkPqqrq4Zx3d7ncwzVNTyKEuCwW02MFBQXNP"
  Echo "hzx8Ykza2trVuzYsU2KjIy8hzFs4BwXRFH8QNeVfYAEk0kc7HJ50yklSseOYfdnZWVdGj169Fi327eGUnJcEIT3dV3dJwgCFQRpiNfrfZEQonfv3vWB1at"
  Echo "Xn23c5vDho2bpuvYRY+yoKIrZAQH2L30+d7koGoMcjtphmqbNF0XhUFhYaFR2dnZ14/ojRoyIVxR9A4AiWZZXiqJ8zGg0mJ3OunsURUklhNxhs1keysvL2"
  Echo "w0ADz8cuZNz3uXzz0t6t+U+P/TQsOOEkPO7dhU/DADjx4/vWlfn/JxzRo1G05sWi+lrAHpdnauvpilxhNAYWRZ/56+LRT45zdZxS9BQVtc256AWO6jXdbK"
  Echo "bicYWju7UxDne/SLuYSZ7MgXK6elLFM5qG7snqAYCYVTnzevXOEWwXMtEUoPqckqDg3y/rbjYuTq00/kbSkuJj4+ntbWOjwghP+zcWTK4UfEuAO+NGzdhr"
  Echo "CSRw5dPFhQUfAvg8bi4uF+VlVWMHj9+7BPz58+vbE6/3W7nAMrNZgPfsePbjYJAnb169ei9atWqC41l582bZ//xx4Mluq71sFhM0YWFhZ81EtkD4OM5c+Y"
  Echo "8++OPx99wu325UVEjZhQVbc9opmmFMb0iJSVllM+nbjCZTK/s2LHtD41kvp08efKm0tJLp6qqap6aOHFitsvlzpdlw0vNyH7z6KOP5hw79tPxc+fO/wnA9"
  Echo "MYNmkzyl5wbJ+fnb8luxp7CSZOSV5SVnT9UVlb5GoC0hoXTpj1l8/nUFaIorSsu3j6tUd0iAK+PHz9+giAI318+GRISuKC6uvar2NjYEVu2bNmOVhg7NnY"
  Echo "EpaRXcHBo0uVzDofrLcaYfPvtfW9btmxZw27y3wEsHzduwjBRxIVW+zYDNp5bplmCJtY7hx84BzFZQRRveSB3jy8c3el0Y5G3v4y/U5VqN1KRmxUPg0wZK"
  Echo "hUDPVgTAACMNuMfOhcQKDpZmKmGck6ozoCaGiAoyP18+YWI//BvWMt06NChEyFkQHBwyNstyeTnb/5006ZNTa7F5/PZAODbb78N9NNMXXV1zRzOWXhMzNi"
  Echo "o5pyjXs93q3Vdu7VDh9B7mnGOKyxdurSyuHh7KiH4m67rq2NjEwY0luGcM8a4ePbs+VWyLL/ezAMPAMjKyrokSdL7iqKkVlXVbJYk+dWWZD/66KNSSZLfU"
  Echo "xQ1btmydFPj8ry8vMMtOAcAYMOGdUclSfqjrmup6enptoZlDsfpAZTSgNDQDm+1VD83N3fzpk2brrxwc3Jy9jLG99bU1C1qqc4v+ute4Jzvy8nJ3vvzKVF"
  Echo "V1VEmk2llI+e4Qn7+5pLNmzf/2KKDDNh45jXVHDj7cn5Vq3AOYjQDTHfaocT9I7734cYi7++Z2F0nNbmigYR4XezKMEamDBd9Jnq4NgAUDKRBTorOKayii"
  Echo "3UwV4NzAg4CAkDTAJcLsAV43ior7dbkbdZWOOc+xhicTlff69XhD0IIURR1gM1mX7hgwQJ3czKxsbGRAIm1Wm3TNmzYcLItektKip5ijJ+oqSlvkgEtipJ"
  Echo "KCA1kjJ0qKSlq9QEyGIy7BUHowjmvKyra/mxrsoIgfi4IgmX//urObbGxMTab5VNRFOQDB37o2fA8pdRFCIHL5bjlWvQFBFheJoQ8nJDQ9CVxmSlTpvSnl"
  Echo "Ay12SwvXz5XXFzMCSEuTdP8ttesg9ydc+4/VXPQQuaqRZNEwyZwENkIAq4Fc+/UPXHd/t5YIuO734QpoiNXttBuHofeZIwvU4azHjM96rAxkXAQ1DuHRfT"
  Echo "qncxVAAHlDbp3hACKUu8oFrNzecXFPjH+LrQ5li5dWilJ0nJVVV4YMyYm4Xp0+IMxZmFMP1NQkPtpSzJ1dY45us7OFBTkbboW3Uaj8c+E0MikpJndG54XB"
  Echo "E4oJbBYrH6XD9jt1jpCCKxW63v+ZGVZqAY4zpw5ZmyLfS+99JJh+vTpYdOmTes2c+bj3WXZ3JExjrq6SnNDuYEDBx5iTN/tdDqWjRs37qG26AaAvLy8PMb"
  Echo "YqYqK6hanEC5dKn9G19mZ/Pz83MvnIiMjdVk2vMk5TxwxYtRTrbXRxEHu2nB6lluyvMrcDoD5m7zmgCCDCCJMPu+sLyZ2azJozPguxVzpO5YjWcgAT63WY"
  Echo "gBMogwnXVZ6wmVlkgiYBB86mioIJZzyZsYmhABeL0AIF42Gysyysr5D/BjbLAMHjn2CEL7W43FnDx0auXv06HFJL730kuV6dLWAURDEnWglVKlpbLAkSTu"
  Echo "vVXFERMfPOeeoqysb2PC8rnNB0zTYbMFNImSNUVWV6LoOm83ypT9ZQRAY5wCltMW3ZnR09LjIyKjlw4ZFfV1SsvOnM2fOHT537sL+kyeP7r10qTSDMQZJk"
  Echo "q56sNLT0/WIiPBJlNKvnE7PrmHDIvPGjIkZk52dLfkxiZvN5td0XZv26KOPhjcuTEtL68QYSzGbza8CV6XLoqho22uEkNc1TVsydOiwQyNHjp7z3HPPhTb"
  Echo "WcZWD3L/x1ESvYPwAmg/QVfgdlFMR1GSBSXHM/yaxWzODxSxa4S3NNNrwK3eN1qo6AkAgDD/5AugFt8HXK7ACImWUtTBwB+qdxO0GJJlbTHJ5zsWLt/dr3"
  Echo "eCmvPnmfG9JSXGKzWYfBXCny+VcXVRUcjYyMmpZbGxsi5/utkIIgSAIP7ZUvm/fPhFAgK5r5dequ2vXrnWccwiCENTwvK4zAYBis0m1/nQwxihjjFVVVTW"
  Echo "JLDUj2+LNGDMmdvDQocMOejy+TF3nHSRJ+liSDI/b7bbxt9/eN6pfv9siO3UKf5wQAl3Xm7yYMzMzy0pKioZLkjSFcx7ocjnz3n77nbPDh498bdKkad1aa"
  Echo "nfIkMGrOOeO48dPz21cdvz4yacY48477+y/qrm6RUXbnw4NDR5MqXDY6/W8uXv3P04PGxaZOXZs7IOXZa4YOnjj8cg6wbwOhFCu+ODXOQgFtdhh9FT/6Zt"
  Echo "JPd5oTuStPR+uMNnJeFeN/zQqzgGTVQB0fqnU1/nXhJHMoBD/8yOEAA4HYDLwjha5PK+0dEiLP2Zr5ObmbNu5s2R0587hvYxG4x91nUXV1DgODB8+stlB6"
  Echo "zXALBZLi3MW9913n0YIaikVOl6r4vPnzwdSSsEYazJQpJTy4OBgv7O5nPMbyugGgIkTE+9wOut2EiKc6tatz227dhXHbNu29c/bt2/N37Jly5fvv//+gff"
  Echo "ee++woug/UErBm+sS/Mz27Vuzdu4s+XWXLj36iaL4oaIos8rLzx8bOXL0nObk09PTPbIsL9F19ckFCxZc6botWLDA7PMpcw0Gecnrr7/e7NgPAD755JOvi"
  Echo "ot3TOnTp3c3k8nwH5yjr9vt/Htk5PAPARAKAIM3nryzhlg+4VQwtSm/CgTUFgTRVf3et/Hdn29O4q0vot80BvIZ7jY4BzhgMFHoChwB1D7xkbtz99Uqk2b"
  Echo "VVAs7Q4L9D4MIAWpqAYtV72mSjuWePz8i2H+jzZOZmXlu27atf9m1q6SPLBue1nW2aPjwUU83Mfnnm2wymfw+XYy1PhEsCMKXmqY+fK22nj9/8SHOOUJCQ"
  Echo "r651ro3k5qaij9SSi6VlOwYv2bNB+dbkvP5HHcRQiCKYvNrIxqwbt3Ko0VF21+IihrWQxTFpaqqvD9q1JiJzcnefnvftwFYDxw4nHr53KFDh6YTAmvv3j1"
  Echo "bjFA2ZPny5RVbt279cOfO4ruNRtN0XdcfHTFi1F9o7Ge8h4MEbKGyLRgeBZTIoJBaOWRQYwAEV23moUldf9tcY3/9cvSzBrs+z12rtWWMD9FAwABFV42Jc"
  Echo "+7P2QMAERHLPC5fz/gaJ9lrDtTApdYPyBoqnRrsocqdJvveDRcQHtKWH6Y1y7ZvL3ydEL7e5/MubNwf1nXqFEURLpfL1pKCtmI2W5cJgtB17NixE66lnsf"
  Echo "jWQCgqLmJu38hRNP0B0VRzPEn6PH4Eq/1a7V48WJXUdH2uQDf7/N5mh2Mv/POO5copas9HveVcpfL84woChnLli275kTSwsL8NbIsP6tp2u/EQ47P39ECQ"
  Echo "ruzqrL6D4o/+yUJVGGlq+791czmipfsGfO4aFb/5HUx8JbWozdAkAgEkYK5TY/8fkje1oZlnTvvrao6MnQW9V7cZ9a4wd8eEADg5EBwF3GY8wd5PgbhOf8"
  Echo "1WkeS5MOKoibY7XYJDfKR+vTp8eOBA4dw8WLZUADf3Ugbn366pTgyMqrA6XSvTE1N7d/SXElDhg8f8WdKSS+r1R5/I23fJFTGeIfWBCZOnDhU1/UYzrmqK"
  Echo "K2mTTSLIAjHVFW9r6Xy8PCOr5SWXpoxbtyEh2SZMkppj86dI8ZeazuXsVpth2pqqkEZ+f5Zd90XFR7jaXjYD/DwI60fykG4hGMdkveueL2x0iVfjUskBuU"
  Echo "9TWFgqn/noAKBbBLAPca5c4fkrWtczj9dItv2Sq8YDnWX5IPdYDzcynGo/rCd7gl9e/dvhL23veuv/ZEjo2dGRY1Ylpqaam+ufMmSJbLX631EEMTdo0aNu"
  Echo "qofW//WEnIURfmvRx55pIvfi/VDly6dUwBSdvLk6a/HjRt3f0ty6enppqioEUsYw9NGo/xYfv6mG3LOmwCXZXmDrmtT4+On3NmcQExMfP/y8socq9WyjhC"
  Echo "4CdGFhuXDh49cNHz4yNd+Dlg04dFHHw1XFDWWEHFrc+UAkJmZeYRzvt3lcr5YU1P7Eue8aM2aNT80JztmzPiRw4ePWJOamhrRkr6amqqnAH5CPBX/+IHbP"
  Echo "lmTUKmTAm6wmuDz+R+DKBA0q/XJ7tmrnacTZzwLAH/9x/goyJ4McEBTeFvG+DBZRXjrSPq8B/Kb7SdqtblrJTuJUeoUwG/AD5AtAjRVP6EGd5xgSl19zk8"
  Echo "NEMIdmqYlHz9+etLDDw9bHhgYsNVsNp8QRYtYXl56r8fjfp5zhAQHB4xvrr7VGvKkw1FRcvz4ycNDh0a+FRgYdKBDh5AfPvjgg+8BoLa2lnDObQCR/dmSk"
  Echo "ZFRlZCQ8KuKiqq1Tqf7y2HDojYKgrguPLzL9x5PrRdAl+rq2uGapqdxzmxmsyV569ZP1zenizEmUUoNsiy3ZZAuCoJANU3zGxEhhAiCIIBSepXswIF3vrh"
  Echo "//7cPVlRc2jt8+MhFQUH2vIqKisrg4OCOlZXVkwAsoJQu7d271/JDh75PblyfMebSdf0P8+cvSBJF6cOgIHsx5/y82Ww2l5aWPeTzeV+mlJ4JCAhb3Jp9w"
  Echo "cGBiysrqz8nhCAkJGhoK9fsURQ96sSJUyeGDo1aYbWackNCQo55PB5WU+PopyjK7znnwywW0wMUAI4kpOy0czaVADpkf08iAM7BXW64zYZngrI2z9l5ZOw"
  Echo "dkFyfUBEGxcv8OgcIYLZL8Dnp3+Y98FmzF61kjnpXMvMEta4NWdYckE0Uqo+XMSFwvGl82/rkn3322YaIiE69TCbD+4SQuJqaus3nz5ceOnPmxLder+c9Q"
  Echo "RCOdOgQMmjz5s3Nvony87MvBARY7pdl+R0AiXV1jr+VlVVccSZd13VJErdJEj3VFns++eSTipKSomiDwZjIOQtRVfXDM2dOfl1WVnG4vLyyQNP0GbIsrw4"
  Echo "LC+nTknMAgChKFwghxZzzFtP1L0OpXA7gc0mSWoz0XIYQUs05380Yuyoq98Ybb1T373/7w0aj8S+apj1VVlbxD03j31dWVhcDiBdFKe3zz3f+vqqqyksI+"
  Echo "Xt9hu4vFBfveCMiotutgiDmq6o6p6ys8rOysorDp06d2auqyh9lWdp42223/io3N7OsNfs2bdq0mxBylHN+MCcnZ1dLcoWFebv79Ol5qywbFgH81w6HK+v"
  Echo "kydMHLl4sO+jzKWsJ4cxiCXigoKDgy6tCfD2yM2Y6DeIKKCqg+ws0cOjUCMKcamrHPEe/oJrgWhdtyzIRWIIkeGqR+bvB25rduURZF/1H2aI/pzm1FrfVu"
  Echo "mIFBwxGCl2HgzHLKCk5d49/C5rnkUce6VJVVRXKuaQ/+OB9Z5955pka/7V+YcuWLSabzaZERkb6jdK0hfT09KADBw5EcM4NZnNwxdq1H7WYav6/CDExMbG"
  Echo "X1+sNCAgIq1y7dnmbUmcaQKdPn97N6XQG67rgjY6OPP3EE0+0mCLfkNTU1IgTJ06dsFrNjxYUFKxta4NpaWmdLlyo6CAIOu3Tp8/5119//cqcVJMYeM/sj"
  Echo "KedZuOfudsNtBKeZFyESLwswnKAmiQXHjaUsq5GJ/VxocU6AGAJFOGt4wW/FibH3nffnCYxYN+6cQsMZt9/624dehsG+bJEoQOaxq0TDUlb8v1WaOfflqi"
  Echo "o4W+pqpr85pvTIpp7tq6HJv3Ok4nT/9vk8bwGi7nFsQiHAEpUFm48ABOphU8RUOIMR5lqYgbS/MuTc8BsF+F18K9C0W9KcxfgXRc90yB7/5t52uYcokgAS"
  Echo "qAww8x25/j/m3nz5tlVVXvcaDS9frOcA2ghWfFMwoxnDG7PB7BZm5RxUACMhRsPcbNYS3UuQSQMChdoUW1nVGsGJhP9qmgx54A5QIDqxhETDZ+QMvhtR2O"
  Echo "9vvWjx4uC+iHXGTS9DeFhSkANAnw+cZ5pats/p+38e3Lw4PdpAEifPr2X3Uy9LUYuzifMmGNwezYi4Jd5MA4CzgnrZPgeVrFc0PkvA3qJMDi5SHfUdYZLl"
  Echo "5hM6rtnnANGqwDVh7OCGhQz576mW+Ron0wcKlE1UyQQVKUN4WFCIFgEKD7pZUPK1uve8Pr555/vNH36Yz2ut3479UyfPuvOrKz4Fp+lhpOsSUlJtz355JP"
  Echo "XnenQHEuWLJEVxbtQFMX3Ly+nvVm0FtrjI4K7JEtud3H9l4SAcQEdjEd5gFRKdd40cikThmrdQHfURUBhlIlgMJgpdJXXCIp9whNDso83rqN8HHMn9LoNV"
  Echo "OBmn89/BIwQQLQKUDzCO3JSwYvXeL1X4XL5unk8jtsu//3EE09YEhMTb20ok56eLkyYkHjrwoV/vvI5jY+Pp0lJSb1mzpx5Vf7UwoULrcnJyX1TUupzgl5"
  Echo "66aWGIUGSnp7eZICWkJAQOmnSpJ6E/NKfTUpK6jJ58uSuDeWys7Ol2bNnB2VlZV11zxq2kZSU1CcxMTGgYfkzzzwT0DBHqSFJSUm9pk+fHtbw3MqVKw3Jy"
  Echo "cm3AEBiYmLApEnTGq7dIIsWLSIAkJWVRRctWkQIIcTrdT1w+PAAAQBSU1PtcXFxty1dulQEgLS0NNOuXbvSMjIywgDAarVWGY3GK3sUpKSkdJ427ao2AAC"
  Echo "zZs0KTUpK6tWc3Y0pLCycQggN7dixa7M5gTdCq7HvVZGRvt5GMV7weL/hgYHoYD+NkIBSgRvNoCap2cNkJigX7XSn2o0KAQYQxn0ysyU8OWRjk3whb9b0H"
  Echo "pR7togiCVE8rE0RMMkqwufCx3LS1iev/7LrEUVogsBVAJg8eXLXixfL4szmgL6xsXFJiYmJ0gMPPGDct2/fDJNJvvfkyb1Pz549eygAmEym7oIg3OF2u8f"
  Echo "Gxsb2A4CYmJhbjh79aYYgyPdqWukIAPjpp59GTZtWn4k6derU+OPHj181IZmUNOM2g8EQJ0nSwLi4uI4/6xlKqXS/LMsPTJgw4SEAeOqpp36dmZn1B12nP"
  Echo "fLz8zslJyePqa+fNPTEiRO3pqWlibGxsYkGg+E2QkjcxIlJXQBg5MiRs48dO57GGLtq1WN8fDyNi4sbJ0mmfl6vN3rs2Il3AEBq6qxJW7ZseVwUxXvGj58"
  Echo "wD6BjJAmRsbHxkQAwe/bs+zweTz8AKCkpefjIkSO9OOecEOIrLS3lAEAIGWg2m28vLCycMnfuXLlv375mVdX6X7xY2RsAPB61n6o6QgAgOjo6WlGUUYyRB"
  Echo "8eMGTNl0aJFJDs7W5o4MX6h0+mMBoThCQkJUf7uo9PpfpEQkpOZubLJys8bxe/k0O5xyTWhLHBCiO/01jB6ag/30C+Il39BvKyFg39hUtQvztZZ9nxTG/q"
  Echo "FQZWm/WbQ5h2N9bqyZ3YU2cU80YDuilv3P3cCQLZJUD1kmxwYO+P6LrdlXC5PjMlkNhiNYrnJZLw1NDQ08K677upvt9vLMjPXrpck02cGg8EOAMHBwRVGo"
  Echo "7HMag0wWCyW/gBgNlsjGVM/zshYuS4zc+0WAPB4PKfcbt/A5OTkQEXRrRkZGVdl3RoMRHI6PUaPx7Nn48aNF2fNmmWVZXmM1WqrMhjMLkky3A8ApaWXwn0"
  Echo "+5esVK5Z9c/DgwTKfz9dl2rRpNk1jvcrLy49duHDhbkky3GG1Bl0SBMliMol3AwBjCAdY1htvvHFV6oosyz0kyfCQ3W6psFgsMBjEQQDgdrs6uN3uXatXr"
  Echo "86SJMlaVnaxcMaMaWuMRkMEAGiaZvZ6qREACCEmRVGudCPCw8MJANTW1p612WxVAQGBferq9KD58+dXEiLsfPrpeXsAgHM1mDFZGD8+OcRqtXfLyspasX7"
  Echo "9mrUWi40dOXKkf8+ePbmmaeasrKy1UVFD11gsAa1mZ48cGb2QEHpLx46tTyJeL23aF+tw4vizAEbfrEbLsp+wBKpnN4lm0l9xtME5OCBbRShu9pUU2G8SG"
  Echo "TPX7wRYW2CMCZoGHQAopay2tu7YwYM/Hg8P7/zuxx+/V/HYY7/pxVh9xrPBIDBKqQYApaWXkp1OX7HdbjzNOf25P02o3W73NNS/cePGw5MmJfZnjMUbDGK"
  Echo "TlZarVq06OHp0fLkgsNgpU1K+s9vNBxhjtUePHj5GCNHCwsJ2A0B4eEdHRUXdeQDYv3+/NmnSlMOKoj0mivRgYWGhMnFigkFVfef27//ypMFgOB0aenctA"
  Echo "IiieDw6OrrJOhNKqaQo3vJ9+/adMBqNJ8PCwpwA0KVLREV5ub0UAIKCgk7k5GyoGzJkiI1zzfvz7yWKItcA4Pz50q6qSs4C9ZnNixcvVqdNm3YH53zwqd3"
  Echo "VWTUAAAVbSURBVFNl+QEB4oNGoy4DgK7rV7qnhBCuqiq3WJigKL9suscYVynl4s6dO0W73fY9ABiNikmSpCszxSkpKZ0uXLj0piRJOVar6VxlZXUiIWQep"
  Echo "eTlrKysf0rKzU37BzptprhYCNKPfixbyAOKs/VFVAB+SSHx8qOyGBJLxjSNgF0v5eXlVZSyXosWLSKybNkhirTv4MED7w0MNNyXlpYmHj16+FuXyxU0ZUp"
  Echo "yvMvlGaWq9QlmjHFf586h3X0+34DLM9AuV90eh8M987HHHo+NjY2LGz16tFwvizNer9J33bp1Rxu3P2nSpFs6dLDfHxwc6NE0j2nZsmUeTdO+DQ/v8qtev"
  Echo "W69W5blWwDAYDD4zGbxysN0xx23fa0oShez2fwNAOi672vGiDZgwIB7u3XrNpix8kAAkCTBV1dX1+QXPnfu3E8ej3Lu1ltvf6Bnz56DJMkaDgCUUsVgqE9"
  Echo "PEUVJAUCNRiOXZZMXADwez4WLF8//OiVl5lgAvQMCjI76eoI8f/78LrquuwVBoJ07h/UTBCkwMDDQAwBVVeWuadNSR9frFT2UUpqZmVnmdrurkpOnJ8+cO"
  Echo "TNe07SAEydOHCovL5cprV9xWFGhcEmiV146oihyXdctHo/n/YqKqnzG+ASDwfB4cfGOGxqLtsa/3EHUi6+skkwYpzratk5ENgvQFJTq5vBYJGZdupm2ZGR"
  Echo "kHLfbI/IAYMOGdT9ZreYNjKmVRqP0zbJly7Rdu3b5OnUK29SzZ++fAHJSVdVqAAgNDVqj63rlLbfcsmLt2tWbACA/P/87m828kXOt1Go17SosLFTmzp0rE"
  Echo "4JgQoRm52jKy8tPShI9LgjCVxs2bCgBgLy8vAKbzfwN5+oln8/3PQAMHjx4d0pKypX9sxYvXuyLi5vw7OUdC3Nzcz2yLKxSVVxiTDoCuMsAICEhIa+5jSJ"
  Echo "27dqlFxTkfSzLwklNoyePHPnuFAAMGDCg8KOP/nYRAJKSEnM557qu686RI6O2A0B2dvYPBoNUQIhwetOmjc9nZmaeAYAOHULWy7LszMzMPBEWFpavad7yV"
  Echo "17544tLliypBADGWJbZLB8BgHvvnVI0bNiw0wBQWJifI4pkPyAd37IlZ/X+/fs1SZIcw4cPyweA6urqmsGDB1/57VauXHlp586i2LFjo3v173/PgF27ins"
  Echo "XFn669Pruftu4vtVkrz4b6Cg9+qRMCFM0xvy6GaOgGtWF26vuMfZEkurQ27RORDZS6JxUM24eJU2p31XvX83MmTOjPB6ls6p6a3JyThVwvr/Nk1AzZsx62"
  Echo "OGo63H69Il1+/e3vV47/3u4PgdJTxecFd++YDUK6VB1/0v+GAEMTsDggCdCYkKoRKG19v9BAFmm0AGvqptjjMl5TQb57bTzr+CG1iPXPRX/cgDVX3D5NLC"
  Echo "W9HAKLrsYNTkoGAEHmNjHCCFQbNFJRJGACBRe3TzFlJSbdd0GttPODXJDY5CAtzcucjLynsUgNj/W5hSQPDoxOQBOAAIQDqr/5AVz6Axi01qCQEBlCp8iP"
  Echo "dHuHO38T3PDg3Tr25t+69L4equx0ToSTsFFL4OplpCG7VAAOqfaT14wt84g/OIklBIIJgE+r/i8cVqh3xWB7bTzz+amRLEsd46b4dD4NttlJ+EUXPAxYq4"
  Echo "FIaBovMuLQACFUe2YF1xhDEL9lqI/p5C8ZUje+qebYVc77dwoNyfMO2eOpnXrl+BR+V6bJIFThRFzDQjhTZ3jMgIBPIyqP3nBNQ4pQITPSTLkqVt/d1Nsa"
  Echo "qedm8ANbxrWkNr03wdJFUeLJEvVQB9T0aJzNETjMHeUofWwfiJP/SzxphnTTjs3gf8HzsLXzi9zeaUAAAAASUVORK5CYII=' alt='Base64 encoded image'/>"
  Echo "</td></tr>"
  Echo "</table><br>"

  Echo "<table border='2' width='100%'>"
  Echo "<tr><td align=center bgcolor=#0A71B4><br>"
  if test ${OUTOFLTK} = 0
  then
    Echo "<strong><font color='#FFFFFF'>CHARON Linux Toolkit - Show Host Information</font></strong>"
  else
    Echo "<strong><font color='#FFFFFF'>CHARON - Show Host Information</font></strong>"
  fi
  Echo "<br><br></td></tr>"
  Echo "</table><br>"

  ${BOLDC}
  D=`date +"%d-%b-%Y %H:%M:%S"`
  Echo "Started on ${D}"
  Echo "<br>"
  ${SGR0}

  Title $1 1 "Table of contents"

  Echo "<br><font style='font-family:monospace;'>"
  grep 'Title \$1' $0 | grep -v grep | grep -v "Table of contents" | while read LINE
  do
    CLVL=`echo ${LINE} | awk '{print $3}'`
    CHAP=`echo ${LINE} | sed 's=\(^.*"\)\(.*\)\(".*$\)=\2=g'`
    if test "${CLVL}" = "1"
    then
      # Parent chapter
      Echo "</ul><a href='#${CHAP}'>${CHAP}</a><br><ul>"
    else
      # Child chapter
      if test -z "`echo ${CHAP} | grep '\${'`"
      then
        Echo "<li><a href='#${CHAP}'>${CHAP}</a></li>"
      fi
    fi
  done
  Echo "</ul></font><br><br>"
fi

for FUNC in `grep "^function collect_" $0 | awk '{print $2}'`
do
  ${FUNC} $1
  if test "$1" = "-html"
  then
    Echo "<br>"
    Echo "<table border='0' width='100%'>"
    Echo "<tr><td align=right>"
    Echo "<a href='#top'>Back to top &uarr;</a></td></tr></table>"
    Echo "<br>"
   fi
done

Echo 
test "$1" = "-html" && Echo "<br><hr>"
${BOLDC}
D=`date +"%d-%b-%Y %H:%M:%S"`
Echo "Completed on ${D}"
test "$1" = "-html" && Echo "<br></html>"
${SGR0}

if test "$1" = "-html"
then
  echo
  tput smso
  echo "Report completed. Output file is: /tmp/charon_showhostinfo.htm"
  tput rmso
fi

exit
