#!/usr/bin/env bash

# Bash3lper.sh - Linux server tools
# Date: 2.2.2020
# Author : Erreur32
#  - inspired by grabsysinfo.sh from Vivek Gite
version="2.1.32"
# echo -e "\n Bash3lper Version: $version"

# Define variables
LSB=/usr/bin/lsb_release

readonly PROGNAME=$(basename $0)
readonly PROGDIR=$(readlink -m $(dirname $0))
readonly PROGDIRSCRIPT="$(readlink -m $(dirname $0))/scripts"
readonly ARGS="$@"

## debug
set -e -u -o pipefail
IFS=$'\n\t'
on_error() { echo "Error on or near line $1; exiting with status $2"; exit "$2"; }
#trap 'on_error ${LINENO} $?' ERR


############
Bash3lper="$(cd "$(dirname "$0")" && pwd)"
Bscripts="$Bash3lper/scripts"
Bscript=$(realpath "$0")

On_Red=$(tput setab 124)
On_Green=$(tput setab 28) # ou 40
#CALERT="${CNoir}${On_Red}" # Bold White on red background
#CAlert="${CBlanc}${On_Red}"
#Cokvb="${CBlanc}${On_Green}"
#Cokv="${CNoir}${On_Green}"
#Cokvo="${CBlanc}${On_Green} OK ${NC}"
#Cko="${CRouge}X${NC}"
#Cok="${CVert}✔${NC}"

####  Color definition
GREEN="$(tput setaf 2)"
PINK="$(tput setaf 5)"
BLUE="$(tput setaf 6)"
RED="$(tput setaf 1)"
YELLOW="$(tput setaf 3)"
ORANGE="\e[38;5;202m"
ORANGE1="$(tput setaf 166)"
GRIS="\e[38;5;8m"
#GRIS="$(tput setaf 246)"
NOC="$(tput sgr0)"
NC="$(tput sgr0)"
# tmp dir
#[ -f tmp ] &&  echo "Dir tmp not found! let me create it." && mkdir tmp

# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
	echo "This script must be run as root" 1>&2
	exit 1
fi

####################################
# Purpose - Display header message
#write_header(){
#  local h="$@"
#        echo -e " ${GREEN}    ${h}   \e[38;5;8m "
#        echo -e "${NOC}"
#}
####################################
# Purpose: Display pause prompt # $1-> Message (optional)
# Quit
pause_quit() {
	echo -e "$(tput setaf 3)"
	local message="$@"
	[ -z "$message" ] && message=" Press [Enter] to quit..."
	read -r -p "$message" readEnterKey
	exit 0
	echo -e "$(tput sgr0)"
	clear
	#       exit 0
}
# Return
pause() {
	echo -e "$(tput setaf 3)"
	local message="$@"
	[ -z "$message" ] && message=" Press [Enter] key to continue..."
	read -r -p "$message" readEnterKey
	echo -e "$(tput sgr0)"
	clear
	#       exit 0
}

check_root() {
	if [[ $EUID -ne 0 ]]; then
		echo -e "\n   ${RED}This script must be run as root${NOC}\n\n"
		exit 1
	fi
}

###############
## Header ascii
write_header_acsii() {
	cat <<-"EOFB"

		         ____            _     ____  _
		        |  _ \          | |   |___ \| |
		        | |_) | __ _ ___| |__   __) | |_ __   ___ _ __
		        |  _ < / _` / __| '_ \ |__ <| | '_ \ / _ \ '__|
		        | |_) | (_| \__ \ | | |___) | | |_) |  __/ |
		        |____/ \__,_|___/_| |_|____/|_| .__/ \___|_|
		                                      | |
		                                      |_|
	EOFB
}

##### Header
write_header() {
	tput clear
	local h="$@"
	# Move cursor to screen location Y,X (top left is 0,0)
	tput cup 0 16
	tput setaf 6
	write_header_acsii
	tput sgr0
	tput cup 7 12
	# Set a foreground colour using ANSI escape
	tput setaf 3
	echo " Ｂａｓｈ３ｌｐｅｒ"
	tput sgr0
	tput cup 7 42
	# Set a foreground colour using ANSI escape
	tput setaf 3
	echo " V0.32"
	tput sgr0
	# Set reverse video mode
	tput cup 11 9
	tput rev
	echo -e "${h}"
	tput sgr0
	# rc   revenir position initial
	#tput rc
	#tput cup 13 16
}


# Main menu
main_menu() {
	write_header
	write_header " M A I N - M E N U "
	echo -e "${NOC}\n"
    echo -e "${GRIS}|${NOC}  1  ${GRIS}|${NOC}  Info    - System   ${GRIS}(Some info about your system)"
    echo -e "${GRIS}|${NOC}  2  ${GRIS}|${NOC}  Tools   - System   ${GRIS}(Tools list system)"
	echo -e "${GRIS}|${NOC}  3  ${GRIS}|${NOC}  Upgrade - System   ${GRIS}(Check missing packages system)${NOC}"
    echo -e "${GRIS}|${NOC}  4  ${GRIS}|${NOC}  Misc    - Tools    ${GRIS}(...) "
    echo -e "${GRIS}|${NOC}  5  ${GRIS}|${NOC}  Scripts - Tools    ${GRIS}(Scripts list) "
    echo ""
    echo -e "${GRIS}|${NOC}  b  ${GRIS}|${NOC}  Browser terminal"
	echo -e "\n\n${GRIS} ------------ ${NOC}</>${GRIS} -------------"
	echo -e "${GRIS}|  ${NOC}d${GRIS}  |  Bash3lper mode dialog |"
	echo -e " ----- ------------------------ "
	echo -e "${GRIS}|  ${NOC}i${GRIS}  |  Bash3lper info        |"
	echo -e " ----- ------------------------ "
	echo -e "${GRIS}|    (${YELLOW}0${GRIS} or ${YELLOW}Enter${GRIS}) to ${NOC}exit${GRIS}      |"
	echo -e "${GRIS} ------------ ${NOC}</>${GRIS} -------------${NOC}\n"
}

# Purpose - Get input via the keyboard and make a decision using case..esac

read_input() {
	echo -e "\e[38;5;202m "
	local c
	read -r -p "  Enter your choice ${NOC} -> " c
	case $c in
	1) system_menu ;;
	2) tools_menu ;;
        3) maj_system ;;
	4) misc_menu ;;
	5) clear
#	   $dirnamescript/scripts/bashelper_list-script.sh
           $Bash3lper/scripts/bashelper_list-script.sh
	   ;;
	b) sensible-browser https://git.echosystem.fr/Erreur32/Bash3lper ;;
	i) show_info_bash3lper
	   pause
	   ;;
	d) /bin/sh ./Bash3lper-dial.sh
	   exit 0
	   ;;
	0) echo -e "\n   Thanks to using \e[38;5;184mBash3lper ${NOC} "
	   exit 0
	   ;;
	"") echo -e "\n   Thanks to using \e[38;5;184mBash3lper ${NOC} "
	    exit 0
	    ;;
	*) echo -e "\e[38;5;202m  Please select between 0 to 9. ${NOC}"
	   pause
	   ;;
	esac
}

#################   system menu   ##########################
system_menu() {
	option=0
	until [ "$option" = "q" ]; do
		write_header
		write_header " I N F O - S Y S T E M "
		echo -e "${NOC}\n"
		echo -e "|  1  |  Operating system info"
		echo -e "|  2  |  Network info"
		echo -e "|  3  |  Who is online"
		echo -e "|  4  |  Last logged in users"
		echo -e "|  5  |  Check big file"
                echo -e "|  6  |  All USer Crontab (root)"
                echo -e "|  7  |  All (quick) stat"
		echo -e "\n\n --------- </> ----------"
		echo -e "|  0  | Return Main Menu ${NOC}"
		echo -e "|  q  |${RED} Exit ${NOC}"
		echo -e "\e[38;5;202m "
		local option
		read -r -p "  Enter your choice ${NOC} -> " option
		echo -e "\n\n"
		case $option in
		1) os_info
		   ;;
		2) net_info
		   ;;
		3) user_info "who"
		   ;;
		4) user_info "last"
		   ;;
		5) clear
		   /usr/bin/duf ; echo -e "/n"
		   show_check_file
		   ;;
        6) clear
		   $Bash3lper/scripts/bashelper_show-crontab.sh
#                   $Bscripts/bashelper_show-crontab.sh
		   pause
           ;;
        7) clear
	       $Bash3lper/scripts/bashelper_Monitor32.sh -a
#                    $dirnamescript/scripts/bashelper_Monitor32.sh -a
            pause
           ;;
		0) clear
		   break
		   ;;
		q) clear
		   exit 0
		   ;;
		"")
		    clear
		    break
		    ;;
		*)
		    echo -e "\n \e[38;5;202m  Please select valid value. ${NOC}"
		    pause
		    ;;
		esac
	done
}

#################   TOOLS MENU   ##########################

tools_menu() {
	option=0
	until [ "$option" = "q" ]; do
		write_header
		write_header " T O O L - S Y S T E M "
		echo -e "${NOC}"
		echo -e "         ${GRIS}MONITORING SYSTEM${NC}"
		echo -e "|  1   |  Bashtop     "
		echo -e "|  2   |  Glances"
		echo -e "|  3   |  Htop"
		echo -e "|  4   |  gtop"
		echo -e "|  5   |  watch Sensors"
		echo -e "|  6   |  s-tui"
		echo -e "|  7   |  Vtop"
		echo -e "\n         ${GRIS}Network${NOC}"
		echo -e "|  14  |  nload eth0"
		echo -e "|  15  |  iftop"
		echo -e "|  16  |  nethogs eth0"
		echo -e "|  17  |  bmon"
		echo -e "|  18  |  speedometer eth0"
		echo -e "|  19  |  vnstat "
		echo -e "|  10  |  netwatch eth0"
		echo -e "| 666  |  More info "

		echo -e "\n  (press q to return here)"
		echo -e "|  11  |  ttyload"
		echo -e "|  12  |  netload eth0"
		echo -e "\n --------- </> ----------"
		echo -e "|  0   |  Return Main Menu ${NOC}"
		echo -e "|  q   | ${RED} Exit ${NOC}"
		echo -e "\e[38;5;202m "
		local option
		read -r -p "  Enter your choice ${NOC} -> " option
		echo -e "\n"
		case $option in
		1)	clear
			scripts/bashelper_bashtop.sh
			;;
		2)	clear
			glances
			;;
		3)	clear
			htop
			Bash3lper.sh
			;;
		4)	clear
			show_gtop
			;;
		5)	clear
			watch -n 1 -d /usr/bin/sensors
			trap ''
			;;
		6)	clear
			s-tui
			;;
		7)	clear
			show_vtop
			;;
			#     6) clear ; $Bscripts/nmon.sh ;;
		14)	clear
			nload eth0
			;;
		15)	clear
			iftop
			;;
		16)	clear
			nethogs -p eth0
			;;
		17)	clear
			show_bmon
			;;
		18)	clear
			speedometer -r eth0 -t eth0
			;;
		19)     clear
			write_header
			vnstat -s
			vnstat -t
			vnstat -m
			pause
			;;
		10)	clear
			netwatch -e eth0
			;;
		11)	clear
			ttyload
			trap 'break' EXIT
			;;
		12)	clear
			netload eth0
			;;
		0)      break
                        ;;
		q)	clear
			exit 0
			;;
		*)	echo -e "\n \e[38;5;202m  Please select valid value. ${NOC}"
			unset REPLY
			;;
		esac
	done
}

#########################################
misc_menu() {
	option=0
	until [ "$option" = "q" ]; do
		write_header
		write_header " MISC - tool "
		echo -e "${NOC}\n"
		echo -e "|  1   |  ${ORANGE}HACK${NOC}"
		echo -e "|  2   |  ${YELLOW}MOTDs32${NOC}"
		echo -e "|  22  |  Find top 10 big file /log"
                echo -e "|  3   |  Find Big File"
		echo -e "|  33  |  Clock - time"
		echo -e "| cro  |  All USer Crontab (root)"
		echo -e "\n\n --------- </> -----------"
		echo -e "|  0   | Return Main Menu ${NOC}"
		echo -e "|  q   |${RED} Exit ${NOC}"
		echo -e "\e[38;5;202m "
		local option
		read -r -p "  Enter your choice ${NOC} -> " option
		echo -e "\n"
		case $option in
		1)	clear
			$Bscripts/bashelper_redhawk.sh
			misc_menu
			;;
		2)	check_motds32
			;;
                22)      echo "todo!"
                        ;;
                3)      clear
	                show_check_file
	                ;;
		33)	clear
			$Bscripts/bashelper_clock.sh
			misc_menu
			;;
		0)	clear
			break
			;;
		q)	clear
			exit 0
			;;
		*)	clear
			echo -e "\e[38;5;202m  Please select valid value.${NOC}"
			;;
		esac
	done
}

############################################
maj_system() {
	option=0
	until [ "$option" = "q" ]; do
		write_header
		write_header " M A J - S Y S T E M "
		echo -e "${NOC} \n "
		echo -e "|  1  | APT update only"
		echo -e "|  2  | ${ORANGE}APT Installation ${NOC}"
		echo -e "|  3  | Install all essential"
		echo -e "|  4  | List package installed"
		echo -e "|  5  | Updatedb"
		echo -e "\n --------- </> -----------\n"
		echo -e "|  10 | Add .bashrc path"
		echo -e "|  11 | Del .bashrc path"
		echo -e "|  20 | FIX file (root right)"
		echo -e "\n\n --------- </> -----------\n"
                echo -e "|  00 | Check bashrc ${NOC}"
		echo -e "|  0  | Return Main Menu ${NOC}"
		echo -e "|  q  |${RED} Exit ${NOC}"
		echo -e "\e[38;5;202m "
		local option
		read -r -p "  Enter your choice ${NOC} -> " option
		echo -e "\n"
		case $option in
		1)	check_root
			$Bscripts/bashelper_apt-update.sh
#			show_info_Aide
			;;
		2)	check_root
			$Bscripts/bashelper_apt-upgrade.sh
#			show_info_Aide
			;;
		3)	check_root
			$Bscripts/bashelper_apt-dependencies.sh
#			show_info_Aide
			;;
		4)      $Bscripts/bashelper_apt-check-installed.sh
			;;
		5)      updatedb_do
			;;
	   10)	add_path
			echo " Put manually in your .bashrc (after path line) :  export PATH=/usr/local/bin:/usr/bin:/bin:$Bash3lper "
#			show_info_Aide
			;;
       00)     check_bashrc
			;;
		11)	$Bscripts/bashelper_del_path.sh
#			show_info_Aide
			;;
		20)	$Bscripts/bashelper_fix_owner.sh
#			show_info_Aide
			;;
		0)	clear
			break
			;;
		q)	clear
			exit 0
			;;
		*) echo -e "\e[38;5;202m  Please select valid value. ${NOC}" ;;
		esac
	done
}

updatedb_do() {
	write_header
	write_header " updatedb  - UPDATE "
	echo -e "\n updated is dependant to locate function, eg: locate Bash3lper\n\n"
	echo -e "updatdb inprogress ... please wait!" && updatedb
	echo -e " ${GREEN} OK"
	pause
}

check_bashrc() {
write_header
write_header " P A T H - A L I A S "

if [ $(grep -c "Bash3lper.sh" ~/.bashrc) == 0 ]; then
        #   echo -e "${RED}   Code bash not found"
        echo -e "alias bashelper=\"$Bash3lper/Bash3lper.sh\"" >> ~/.bashrc
	echo -e "\n\n  Check PATH:  $PROGDIRSCRIPT"
        echo -e "export PATH=\$PATH:$PROGDIRSCRIPT" >> ~/.bashrc
        echo -e "\n  \e[0m >>\e[50;3m  alias=\"$Bash3lper/Bash3lper.sh\" \e[0m\n"
        echo -e "  ${NOC}[\e[32m✔${NOC}] \e[1;30m Code added in bashrc OK!\n"
        source ~/.bashrc && export PATH
	pause
else

        echo -e "\n\n Check PATH:  $PROGDIRSCRIPT\n"
        echo -e "  PATH bashelper ok!  [\e[32m✔${NOC}]"
	pause
fi
}



add_path() {
write_header
write_header " P A T H - S Y S T E M "

echo -e "\n \e[48;3m  -Script path: ${NOC}$Bash3lper\n"
# if no path - add this
#if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin:$Bash3lper; fi

if  grep -qinE "Bash3lper" ~/.bashrc  ; then
#          echo -e "\n  \e[0m >>\e[50;3m export PATH=$PATH$Bash3lper \e[0m\n${NOC}"
#          if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin:$Bash3lper; fi
#          echo -e "  \e[0m >>\e[50;3m  alias=\"$Bash3lper/Bash3lper.sh\" \e[0m\n"
#          echo -e "  ${NOC}[\e[32m✔${NOC}] \e[1;30m Code added in bashrc OK!\n"
           echo -e "✅ Code .bashrc OK"
           echo $PROGDIR
        else
          echo -e "alias bashelper=\"$Bash3lper/Bash3lper.sh\"" >> ~/.bashrc
          echo -e "\n  \e[0m >>\e[50;3m export PATH=$PATH$Bash3lper \e[0m\n${NOC}"
          if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin:$Bash3lper; fi
          echo -e "export PATH=\$PATH:$Bash3lper" >> ~/.bashrc
          echo -e "  \e[0m >>\e[50;3m  alias=\"$Bash3lper/Bash3lper.sh\" \e[0m\n"
          echo -e "  ${NOC}[\e[32m✔${NOC}] \e[1;30m Code added in bashrc OK!\n"

#          echo -e "export PATH=\$PATH:$Bash3lper" >> ~/.bashrc
#          echo -e "  \e[0m >>\e[50;3m  alias=\"$Bash3lper/Bash3lper.sh\" \e[0m\n"
#          echo -e "  alias bashelper=\"$Bash3lper/Bash3lper.sh\"" >> ~/.bashrc
#          echo -e "  ${NOC} [\e[32m✔${NOC}]  -->\e[34m Path added in .bashrc: \e[38;5;2mOK\e[0m \n"
#          echo -e "\n\e[48;3m  Your new path is: ${NOC}"
#          echo -e "  $PATH"
fi
#source  ~/.bashrc
#echo -e "\n  add path to your .bashrc $GREEN OK ${NOC}"

  pause && source  ~/.bashrc && export PATH
}


remove_path (){
write_header
write_header " P A T H - S Y S T E M "

if (whiptail --title " Yes / No" --yesno "Remove path in your .bashrc ?" 10 60) then
# make backup of your .bashrc
cp  ~/.bashrc  ~/.bashrc_backup
 echo -e "\n ${YELLOW}  backup of your .bashrc  DONE! \n"


  echo -e "\n${GRIS} --------- </> ---------- ${NOC}\n"
  echo -e "\n    -  remove path in your .bashrc \n"
  echo -e "${GRIS} --------- </> ---------- ${NOC}\n"

  if [ `grep -c Bash3lper ~/.bashrc` == 0 ]
     then
      echo -e "\n ${RED}   Code bash not found - or already removed!\n   ${GREEN}    All GOOD !\n\n"
        pause
     else
      sed -i '/Bash3lper/d' ~/.bashrc
      echo -e "\e[92m Code .bashrc removed.\n\e[0m"
      echo -e " ${GREEN} all GOOD !"
      echo -e "${YELLOW}To reload your bash now type: ${GRIS} source  ~/.bashrc${NOC}"
      pause
 #    source  ~/.bashrc
     echo -e "\e[1;30m Check\n  \e[0m>>\e[50;3m export PATH=$PATH \e[0m<<\n\n"
   # relaod bashrc
   # grep -n  'Bash3lper' ~/.bashrc
     fi
#    echo -e "\n${RED}  Already removed! ${NOC}- ${GREEN} all GOOD !${NOC}2"
  else
   echo -e "\n ${RED} No change ! quit"
 pause
  fi

}



################################
# System menu
show_check_file() {
	write_header
	write_header " DUF + FIND top 10 big file - /var/log   "
	echo -e "\n\n${GRIS} --------- </> ---------- ${NOC}\n"
	# duf
# Vérifier si la commande 'curl' est installée
if ! which duf > /dev/null; then
    echo "La dépendance curl n'est pas installée."
    read -p "Voulez-vous l'installer maintenant? (y/n) " choice
    if [ "$choice" = "y" ]; then
        sudo apt-get install duf
    else
        echo "Installation annulée."
    #    exit 1
    fi
fi

	/usr/bin/duf
	echo ""
	echo -e " Check Big file ... please wait"
	echo ""
	find /var/log/ -type f -exec du -s {} \; | sort -n | tail -n 10
	pause
}

#################################
# TOOLS menu

check_motds32() {
#        write_header
#        write_header " MOTDs32   "
	if [ -f /usr/bin/motds32 ]; then
		/usr/bin/motds32 -s
pause
	else
		echo "MOTDS32 not installed , installation in progress... please wait!"
#		cd /tmp
#		git clone https://git.echosystem.fr/Erreur32/MOTDs32.git
#		cd /tmp/MOTDs32 && ./install.sh
pause
	fi
}

show_check_bmon() {
	dpkg-query -l bmon | grep bmon
}

show_bmon() {
	if [ -n show_check_bmon ]; then
		#    echo "ok bmon is installed"
		/usr/bin/bmon
	else
		echo "bmon not installed , installation in progress... please wait!"
		echo "apt-get install bmon"
		apt-get install bmon
	fi
}
#######
show_check_glances() {
	dpkg-query -l glances | grep glances
}

show_glances() {
	if [ -n show_check_glances ]; then
		#    echo "ok bmon is installed"
		/usr/bin/bmon
	else
		echo "Glances not installed , installation in progress... please wait!"
		echo "curl -L https://bit.ly/glances | /bin/bash"
		curl -L https://bit.ly/glances | /bin/bash
	fi
}

######
show_check_vtop() {
	if [ -f /usr/bin/vtop ]; then
		/usr/bin/vtop
	else
		echo "$FILE not installed , installation in progress... please wait!"
		npm install -g vtop || echo "npm need to be installed"
	fi
}

show_vtop() {
	if [ -f /usr/local/bin/vtop ]; then
		#    echo "wheris vtop is installed"
		#whereis vtop
		/usr/local/bin/vtop
	else
		echo "Vtop not installed , installation in progress... please wait!"
		echo "npm install -g vtop"
		npm install -g vtop || echo "npm need to be installed"
	fi
}
#######
show_check_gtop() {
	dpkg-query -l bmon | grep gtop
}

show_gtop() {
	if [ -n show_check_gtop ]; then
		#    echo "ok bmon is installed"
		/usr/bin/gtop
	else
		echo "gtop not installed , installation in progress... please wait!"
		echo "npm install gtop -g"
		npm install gtop -g
	fi
}

# Purpose - Get info about your operating system
os_info() {
	clear
	write_header
	write_header " System information "
	echo -e "\n\n"
	echo -e " Operating system :$GREEN $(uname) ${NOC}"
	[ -x $LSB ] && $LSB -a || echo " $LSB command is not insalled (set \$LSB variable)"
	echo ""
        #	pause
# host_info ()
	local dnsips=$(sed -e '/^$/d' /etc/resolv.conf | awk '{if (tolower($1)=="nameserver") print $2}')
        echo -e "\n Hostname :$GREEN $(hostname -s)${NOC}"
        echo -e " DNS domain :$GREEN $(hostname -d)${NOC}"
        echo -e " Fully qualified domain name :$GREEN $(hostname -f)${NOC}"
        echo -e " Network address (IP) :$GREEN  $(hostname -i)${NOC}"
        echo -e " DNS name servers (DNS IP) :$GREEN ${dnsips}${NOC}"
       #       pause
# meminfo ()
        echo -e "\n\n  $GREEN Free memory ${NOC}"
        free -m
        echo -e "\n  $GREEN Virtual memory statistics  ${NOC}"
        vmstat
        echo -e "\n  $GREEN Top 5 memory eating process ${NOC}"
        ps auxf | sort -nr -k 4 | head -5 && pause
        echo ""
        pause
}

# Purpose - Get info about host such as dns, IP, and hostname
host_info() {
	write_header
	local dnsips=$(sed -e '/^$/d' /etc/resolv.conf | awk '{if (tolower($1)=="nameserver") print $2}')
	write_header " Hostname and DNS information ${NOC}"
	echo -e "\n\n Hostname :$GREEN $(hostname -s)${NOC}"
	echo -e " DNS domain :$GREEN $(hostname -d)${NOC}"
	echo -e " Fully qualified domain name :$GREEN $(hostname -f)${NOC}"
	echo -e " Network address (IP) :$GREEN  $(hostname -i)${NOC}"
	echo -e " DNS name servers (DNS IP) :$GREEN ${dnsips}${NOC}"
	pause
}

# Purpose - Network inferface and routing info
net_info() {
#	{
#		for ((i = 0; i <= 100; i += 20)); do
#			sleep 0.5s
#			echo $i
#		done
#	} | whiptail --gauge "Veuillez patienter ... Scan en cours" 6 60 0
	clear
	write_header
	devices=$(netstat -i | cut -d" " -f1 | egrep -v "^Kernel|Iface|lo")
	write_header " Network information "
	echo -e " \n\n"
	echo -e "  Total network interfaces found :\e[38;5;11m $(wc -w <<<${devices}) ${NOC}"
	echo -e ""
	echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
	echo -e "$GREEN IP Addresses ${NOC} Information ${NOC}"
	echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
	ip -4 address show
	echo ""
	echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
	echo -e "$GREEN Network routing ${NOC}"
	echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
	netstat -nr
	echo ""
	echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
	echo -e "$GREEN Interface traffic information ${NOC}"
	echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
	netstat -i
	echo ""
	pause
}

# Purpose - Display a list of users currently logged on
#           display a list of receltly loggged in users
user_info() {
	echo -e " \n\n"
	{
		for ((i = 0; i <= 100; i += 25)); do
			sleep 0.4
			echo $i
		done
	} | whiptail --gauge "Veuillez patienter ... Scan en cours" 6 60 0

	local cmd="$1"
	case "$cmd" in
	who)
		write_header " Who is online "
		who -H
		pause
		;;
	last)
		write_header " List of last logged in users "
		last
		pause
		;;
	esac
}

# Purpose - Display used and free memory info
mem_info() {
	write_header " Free and used memory "
	echo -e " \n\n"
	free -m
	echo ""
	echo -e "*** $GREEN Virtual memory statistics  ${NOC}"
	vmstat
	echo ""
	echo -e "*** $GREEN Top 5 memory eating process ${NOC}"
	ps auxf | sort -nr -k 4 | head -5
	echo ""
	pause
}

show_info_bash3lper() {
	write_header
	write_header " S C R I P T -  I N F O "
	echo -e "\n${GRIS} --------- </> ---------- ${NOC}\n"
	echo -e "     Ｂａｓｈ３ｌｐｅｒ \n"
	echo -e "  Path script : $Bash3lper/ \n  Script Name : $0 \n    - Version : $version \n    - Author  : Erreur32 \n"
	echo -e "${GRIS} --------- </> ---------- ${NOC}\n"
	echo -e "  Bash3lper CLI"
#        echo -e "  cli enable: ./bash3lper -h (help) \n"
	echo -e "  ${GRIS} Usage:\n ${NOC}   bash3lper  --help (-h)${GRIS} :Display help message ${NOC}\n"
	echo -e "${GRIS} --------- </> ---------- ${NOC}\n"
	echo -e "  Kernel Info: $(uname -smr)"
	echo -e "  Shell: $SHELL ${NC}\n"

}

########################  - CLI    ###################################
show_cli() {
	write_header
	write_header "  C L I - info "
	echo -e "\n Bash3lper CLI"
	echo -e "$GRIS Usage:\n \$ bash3lper [arguments] ${NOC}\n"
	echo -e "Arguments:"
	echo -e "--help   (-h): Display this help message"
	echo -e "--update (-U): Update Bash3lper script"
	echo -e "--stat32 (-s): Stat32 show system stat"
	echo -e "--motds32(-m): show MOTD\n"
	echo -e "--info   (-i): Info script"
	echo -e "--version(-v): Show version\n"
}


################################################################
## CLI
read_cli() {
case "$@" in

-h | --help)
	show_cli
	exit 0
	;;
-i | --info)
	show_info_bash3lper
	exit 0
	;;
-U | --update)
	write_header
	write_header "  UPDATE  "
	echo -e "\n"
	exit 0
	;;
-v | --version)
	show_info_bash3lper
	exit 0
	;;
-m | --motds32)
	echo "Read motds32 file"
	cat /etc/motd
	exit 0
	;;
-s | --stat32)
	echo "Read motds32 file"
	/etc/motds32/Stats32
	exit 0
	;;
*)
	main_menu
	;;
   esac

}

################################################################
# ignore CTRL+C, CTRL+Z and quit singles using the trap
# trap '' SIGINT SIGQUIT SIGTSTP
trap "clear; exit" SIGHUP SIGINT SIGTERM
###############################
#function finish {
  # Your cleanup code here
#}
#trap finish EXIT
###############################
## main_menu logic
while true; do
	read_cli $ARGS
	clear
	main_menu  # display memu
	read_input # wait for user input
done


## EOF
