#!/bin/bash
set -e
Version=18.3.2
Cuda=YES
kernel_custom=YES
Miners=Yes
Webmin="webmin-2.105"
kernel_dkms="5.15.0-71-generic"
driver=NVIDIA

if (( $EUID != 0 )); then
   echo -e "$(tput setaf 11)This must be run as root. Try 'sudo $0'.$(tput sgr0)"
   exit 1
fi
clear
Cuda=${Cuda^^}
kernel_custom=${kernel_custom^^}
driver=${driver^^}
Miners=${Miners^^}

function ubuntu_version_check {
if [[ $(lsb_release -rs) == "20.04" ]]
then

      Ubuntu_version="20.04.5"

else
       echo "Non-compatible version"
       exit 0
fi
}

function print_centered {
     [[ $# == 0 ]] && return 1

     declare -i TERM_COLS="$(tput cols)"
     declare -i str_len="${#1}"
     [[ $str_len -ge $TERM_COLS ]] && {
          echo "$1";
          return 0;
     }

     declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
     [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
     filler=""
     for (( i = 0; i < filler_len; i++ )); do
          filler="${filler}${ch}"
     done

     printf "%s%s%s" "$filler" "$1" "$filler"
     [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
     printf "\n"

     return 0
}

function decompte_ {
echo -e "$(tput setaf 10)\nReboot in 10 seconds (CRTL+C to abord):$(tput sgr0)"
for i in {9..0}
do
echo -e -n "$i "
sleep 1
done
echo ""
sudo reboot
}

function intro_ {
print_centered "$(tput setaf 5)"
print_centered " ██████╗██╗   ██╗██████╗ ███████╗"
print_centered "██╔════╝██║   ██║██╔══██╗██╔════╝"
print_centered "██║     ██║   ██║██████╔╝█████╗  "
print_centered "██║     ██║   ██║██╔══██╗██╔══╝  "
print_centered "╚██████╗╚██████╔╝██████╔╝███████╗"
print_centered " ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝"
echo -n "$(tput sgr0)"
print_centered "Cube Server installation script v$Version"
print_centered "Ubuntu version 20.04"
print_centered "GA990xa-ud3"
if [ $Cuda = "YES" ]
then
print_centered "CUDA"
fi
sleep 3
}

function update_ {
if [ -f /home/wareck/.pass2 ] && [ ! -f /home/wareck/.pass3 ] && [ ! -f /home/wareck/.pass4 ]
then
echo -e "$(tput setaf 10)\nUpdate and install packages:$(tput sgr0)"
sudo apt-get update
echo -e ""
sudo apt-get install lxde lxde-icon-theme -y
echo -e ""
sudo apt-get install  samba cifs-utils mdadm git build-essential libtool pkg-config automake autoconf ethtool net-tools openvpn filezilla \
tasksel lzma-dev lzma cmake libuv1-dev libssl-dev msr-tools tightvncserver lm-sensors openssh-server xfsprogs -y
echo -e ""
sudo apt-get install pixz pbzip2 pigz btrfs-progs gparted gpart gnome-remote-desktop libcanberra-gtk-module \
ctorrent libcurl4-openssl-dev bison byacc screen libudev-dev libjansson-dev libncurses5-dev libmicrohttpd-dev curl nvme-cli -y
echo -e ""
sudo apt-get install libglib2.0-dev libgtk2.0-dev libsensors4-dev htop vlc locate cmake -y
echo -e ""
if [ $Cuda = "YES" ]
then
echo -e "$(tput setaf 10)\nInstall Cuda packages:$(tput sgr0)"
sudo apt-get install libgmp-dev libnuma-dev cmake libuv1-dev nvidia-cuda-dev libmicrohttpd-dev gcc-8 g++-8 nvidia-cuda-toolkit -y
fi
echo -e "Done."
fi
}

function kernel_check_ {
unamestr=$(uname -r)
case $kernel_custom in
NO)
        if [[ "$unamestr" == '5.15.0-69-generic' ]]
        then
        echo -e "\n$(tput setaf 10)DKMS Kernel install :$(tput sgr0)"
        sudo rm /boot/config-5.15*
        sudo rm /boot/initrd.img-5.15*
        sudo rm /boot/System.map-5.15*
        sudo rm /boot/vmlinuz-5.15*
        sudo apt-get install linux-image-5.4.0-54-generic linux-headers-5.4.0-54-generic linux-modules-extra-5.4.0-54-generic htop -y
        sudo update-grub2
        sudo apt-mark hold linux-image-5.4.0-54-generic linux-headers-5.4.0-54-generic linux-modules-extra-5.4.0-54-generic
        autoroot_
        decompte_
        fi
        if [[ "$unamestr" == '5.4.0-139-generic' ]]
        then
        sudo rm /boot/config-5.4.0-139-generic | true
        sudo rm /boot/System.map-5.4.0-139-generic | true
        sudo rm /boot/initrd.img-5.4.0-139-generic | true
        sudo rm /boot/vmlinuz-5.4.0-139-generic | true
        sudo update-grub2
        sudo apt-mark hold linux-image-$kernel_dkms linux-headers-$kernel_dkms linux-modules-extra-$kernel_dkms
        autoroot_
        decompte_
        fi
        ;;
YES)
	if [ -f /tmp/ksource.txt ]; then rm /tmp/ksource.txt;fi
        wget -c -q http://192.168.1.8:3000/wareck/custom_kernel/raw/master/ksource.txt -O /tmp/ksource.txt
        source /tmp/ksource.txt
        if ! [[ "$unamestr" == $KLversion ]]
        then
        echo -e "\n$(tput setaf 10)Custom kernel install $(tput setaf 9)$KLversion$(tput setaf 10) (fix DKMS/WOL) :$(tput sgr0)"
        cd /tmp/
	wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/custom_kernel/$kernel_version
	chmod +x $kernel_version
	sudo ./$kernel_version
        nvidia_driver_
        autoroot_
        decompte_
        fi
        ;;
esac
}

function nvidia_driver_ {
if ! [ -f /home/wareck/.pass1 ]
then
	if ! [ -f /etc/modprobe.d/blacklist-nvidia-nouveau.conf ]
	then
        echo "Blacklist nvidia-nouveau driver..."
        echo "System will reboot"
        sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
        sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
        fi
case $Cuda in
NO)
			sudo apt-get install build-essential libglvnd-dev cmake -y
			;;
YES)
			sudo apt-get install build-essential libglvnd-dev cmake libhugetlbfs-dev libc-dev libc6-dev g++ -y
	                ;;
*)
   		        ;;
esac

#sudo update-initramfs -u
touch /home/wareck/.pass1
decompte_
fi

if ! [ -f /home/wareck/.pass2 ]
then
sleep 1
case $Cuda in
NO)
	echo -e "$(tput setaf 10)\nInstall NVIDIA GTX1080 Drivers :$(tput sgr0)"
	sleep 3
	sudo apt-get install nvidia-driver-525 -y
	touch /home/wareck/.pass2
	decompte_
	;;
YES)
	echo -e "$(tput setaf 10)\nInstall CUDA Drivers :$(tput sgr0)"
	cd /home/wareck/
	echo -e "Download MegaDownload:"
	git clone https://github.com/wareck/megadown.git
	sudo cp /home/wareck/megadown/megadown /usr/local/bin/megadown
	sudo rm -r /home/wareck/megadown
	#megadown https://mega.nz/file/r0wwnZCJ#27WWRMwSsGYXiMUHf2OgcGYp2O2itChsBxcK9znmr5E
	#chmod +x cuda_11.8.0_520.61.05_linux.run
	#sudo ./cuda_11.8.0_520.61.05_linux.run
	#sudo rm cuda_11.8.0_520.61.05_linux.run
	#wget -c https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run

	#megadown https://mega.nz/file/u9h1wbYL#QuHtEpCErWXDFjjMVFTK9QzcAI5SrsgTMbx6DfFJT2k
	#wget https://developer.download.nvidia.com/compute/cuda/12.3.0/local_installers/cuda_12.3.0_545.23.06_linux.run
	wget https://developer.download.nvidia.com/compute/cuda/12.3.1/local_installers/cuda_12.3.1_545.23.08_linux.run
	chmod +x cuda_12.3.1_545.23.08_linux.run
	sudo ./cuda_12.3.1_545.23.08_linux.run --silent --driver --toolkit
	sudo rm cuda_12.3.1_545.23.08_linux.run
	touch /home/wareck/.pass2
	decompte_
	;;
esac
fi
}

function download_packs_ {
if [ ! -f /home/wareck/.pass3 ]
then
echo -e "$(tput setaf 10)\nDownload complement packs:$(tput sgr0)"
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/cgminer.conf -O /home/wareck/Build_Cube/pack/cgminer.conf
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/chia-miner.tar.xz -O /home/wareck/Build_Cube/pack/chia-miner.tar.xz
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/gerbera.tar.xz -O /home/wareck/Build_Cube/pack/gerbera.tar.xz
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/start_cgminer.tar.xz -O /home/wareck/Build_Cube/pack/start_cgminer.tar.xz
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/$Webmin.tar.xz -O /home/wareck/Build_Cube/pack/$Webmin.tar.xz
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/xmrig.tar.xz -O /home/wareck/Build_Cube/pack/xmrig.tar.xz
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/zfsmanager-0.0.4.wbm.gz -O /home/wareck/Build_Cube/pack/zfsmanager-0.0.4.wbm.gz
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/gpu-miners.tar.xz -O /home/wareck/Build_Cube/pack/gpu-miners.tar.xz

cp /home/wareck/Build_Cube/pack/gpu-miners.tar.xz /home/wareck
cp /home/wareck/Build_Cube/pack/pack1.tar.xz /home/wareck
cp /home/wareck/Build_Cube/pack/pack2.tar.xz /home/wareck
cp /home/wareck/Build_Cube/pack/pack3.tar.xz /home/wareck
cp /home/wareck/Build_Cube/pack/xmrig.tar.xz /home/wareck
cp /home/wareck/Build_Cube/pack/start_cgminer.tar.xz /home/wareck
echo "Done."
if  [ ! -d /home/wareck/$Webmin ]
then
cp /home/wareck/Build_Cube/pack/$Webmin.tar.xz /home/wareck/
cd /home/wareck/
echo -e "$(tput setaf 10)\nWebmin uncompress:$(tput sgr0)"
tar xfJ $Webmin.tar.xz
rm $Webmin.tar.xz
echo -e "Done"
fi

echo -e "$(tput setaf 10)\nDownloading miners:$(tput sgr0)"
cd /home/wareck
if ! [ -d miners ]; then mkdir -p miners;fi

cd /home/wareck/miners
if ! [ -d xmrig ]
then
git clone https://github.com/xmrig/xmrig.git
echo -e ""
fi
if ! [ -d xmr-stak ]
then
git clone https://github.com/fireice-uk/xmr-stak.git
echo -e ""
fi
if ! [ -d xmr-stak-rx ]
then
git clone https://github.com/fireice-uk/xmr-stak.git -b xmr-stak-rx xmr-stak-rx
echo -e ""
fi
if ! [ -d cgminer-gekko ]
then
git clone https://github.com/wareck/cgminer-gekko.git
echo -e ""
fi
if ! [ -d cgminer-lketc ]
then
git clone https://github.com/wareck/cgminer-lketc.git
fi

fi
echo "Done."
}

function build_miners_ {
if [ ! -f /home/wareck/.pass3 ]
then
cmake_ #check cmake version
cd /home/wareck
tar xfJ gpu-miners.tar.xz
cd /home/wareck/miners

echo -e "$(tput setaf 10)\nBuild Cgminer-gekko:$(tput sgr0)"
cd cgminer-gekko
sudo usermod -a -G dialout,plugdev wareck
sudo cp 01-cgminer.rules /etc/udev/rules.d/
CFLAGS="-O2 -march=native" ./autogen.sh
./configure --enable-gekko
make -j$((`nproc`+1))
tar xfJ /home/wareck/start_cgminer.tar.xz
rm /home/wareck/start_cgminer.tar.xz
cd ..
cat <<'EOF'>> /tmp/cgminer
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          cgminer
# Required-Start:    networking
# Default-Start:     3 4 5
# Default-Stop:      0 6
### END INIT INFO
case "$1" in
        start)
        cd /home/wareck/miners/cgminer-gekko/
        su wareck -c "screen -dmS cgminer /home/wareck/miners/cgminer-gekko/cgminer"
        ;;
        stop)
        sudo killall -9 cgminer | true
        ;;
        *)
        echo "Usage: /etc/init.d/cgminer {start|stop}"
        exit 1
        ;;
esac

exit 0
EOF
chmod +x /tmp/cgminer
sudo cp /tmp/cgminer /etc/init.d/cgminer
sudo update-rc.d cgminer defaults
if ! [ -d /home/wareck/.cgminer ]
then
mkdir /home/wareck/.cgminer
fi
cat <<'EOF'>> /tmp/cgminer.conf
{
"pools" : [
        {
                "url" : "stratum+tcp://stratum.braiins.com:3333",
                "user" : "wareck.gekko",
                "pass" : "x"
        }
]
,
"api-description" : "cgminer 4.12.0-wrk",
"api-mcast-addr" : "224.0.0.75",
"api-mcast-code" : "FTW",
"api-mcast-des" : "",
"api-mcast-port" : "4028",
"api-port" : "4028",
"api-host" : "0.0.0.0",
"gekko-lowboost" : true,
"gekko-2pac-freq" : "155.0",
"gekko-compac-freq" : "150.0",
"gekko-tune-down" : "95.0",
"gekko-tune-up" : "97.0",
"gekko-wait-factor" : "0.5",
"gekko-bauddiv" : "0",
"gekko-newpac-freq" : "100",
"gekko-start-freq" : "100",
"gekko-step-freq" : "6.2",
"gekko-step-delay" : "15",
"gekko-tune2" : "0",
"fallback-time" : "120",
"hotplug" : "5",
"log" : "5",
"shares" : "0",
"suggest-diff" : "0"
}
EOF
cp /tmp/cgminer.conf /home/wareck/.cgminer/
echo "Done."

cd /home/wareck/miners
echo -e "$(tput setaf 10)\nBuild Cgminer-lketc:$(tput sgr0)"
cd cgminer-lketc
CFLAGS="-O2 -march=native" ./autogen.sh
./configure
make -j$((`nproc`+1))
cd ..
echo "Done."

echo -e "$(tput setaf 10)\nUncompress xmr files:$(tput sgr0)"
tar xfJ /home/wareck/xmrig.tar.xz --checkpoint=.100
echo "Done."
echo -n -e "\n"
echo -e "$(tput setaf 10)\nBuild xmrig:$(tput sgr0)"
cd xmrig
git config --global --add safe.directory /home/wareck/miners/xmrig
git pull
sed -i "s/kDefaultDonateLevel = 5;/kDefaultDonateLevel = 0;/g" src/donate.h
sed -i "s/kMinimumDonateLevel = 1;/kMinimumDonateLevel = 0;/g" src/donate.h
wget -c https://download.open-mpi.org/release/hwloc/v2.7/hwloc-2.7.1.tar.bz2
tar xfj hwloc-2.7.1.tar.bz2 --checkpoint=.100
cd hwloc-2.7.1
./configure
make -j$((`nproc`+1))
sudo make install
cd ..
sudo ldconfig
cd build
cmake ..
make -j$((`nproc`+1))
cd ..
cd ..
echo "Done."

#echo -e "$(tput setaf 10)\nBuild xmrig-upx:$(tput sgr0)"
#cd xmrig-upx
#git config --global --add safe.directory /home/wareck/miners/xmrig-upx
#git pull
#sed -i "s/kDefaultDonateLevel = 5;/kDefaultDonateLevel = 0;/g" src/donate.h
#sed -i "s/kMinimumDonateLevel = 1;/kMinimumDonateLevel = 0;/g" src/donate.h
#cd build
#cmake .. -DWITH_HTTPD=OFF
#make -j$((`nproc`+1))
#cd ..
#cd ..
#echo "Done."
rm -r -f xmrig-upx

echo -e "$(tput setaf 10)\nBuild xmr-stak-rx:$(tput sgr0)"
cd xmr-stak-rx
git config --global --add safe.directory /home/wareck/miners/xmr-stak-rx
git pull
cd build
cmake ..
make -j$((`nproc`+1))
cd ..
cd ..
echo "Done."
echo -e "$(tput setaf 10)\nBuild xmr-stak:$(tput sgr0)"
cd xmr-stak
if ! [ -d build ];then mkdir build ;fi
git config --global --add safe.directory /home/wareck/miners/xmr-stak
git pull
cd build
cmake .. -DOpenCL_ENABLE=OFF -DCUDA_ENABLE=OFF
make -j$((`nproc`+1))
cd ..
cd ..
echo "Done."

if [ $Cuda = "YES" ]
then
echo -e "$(tput setaf 10)\nBuild xmrig-cuda:$(tput sgr0)"
git clone https://github.com/xmrig/xmrig-nvidia.git
cd xmrig-nvidia
mkdir build
cd build
cmake .. -DCMAKE_C_COMPILER=$(which gcc-8) -DCMAKE_CXX_COMPILER=$(which g++-8)
make -j$((`nproc`+1))
fi

echo "Done"
touch /home/wareck/.pass3
fi
sudo chmod -R 775 /home/wareck/miners
}

function configure_ {
if [ ! -f /home/wareck/.pass4 ]
then
echo -e "$(tput setaf 10)\nlxPanel sensors:$(tput sgr0)"
cd /home/wareck
if ! [ -d sensors-lxpanel-plugin ]
then
git clone https://github.com/danamlund/sensors-lxpanel-plugin.git
fi
cd /home/wareck
cd sensors-lxpanel-plugin
make
sudo make install
sudo rm -r /home/wareck/sensors-lxpanel-plugin
echo "Done."

echo -e "$(tput setaf 10)\nConfig files:$(tput sgr0)"
cd /home/wareck/
zip="['firefox.desktop', 'thunderbird.desktop', 'org.remmina.Remmina.desktop', 'filezilla.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Terminal.desktop']"
cat <<'EOF'>> zap
#!/bin/bash
gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 32
gsettings set org.gnome.desktop.background picture-uri /home/wareck/Images/mr-robot-wallpapers.jpg
gsettings set org.gnome.shell favorite-apps "XXX"
#su wareck -c 'gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false'
dconf load /org/gnome/terminal/ < /usr/local/bin/zap2
EOF
sed -i "s/XXX/$zip/g" zap

UUID=$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d \')
cat <<'EOF'>> zap2
[legacy/profiles:/:XXX]
default-size-columns=110
font='Monospace 9'
use-system-font=false
use-theme-colors=false
EOF
sed -i "s/XXX/$UUID/g" zap2
chmod +x zap
sudo cp zap /usr/local/bin
sudo cp zap2 /usr/local/bin
sudo rm zap
sudo rm zap2
sleep 1

sudo rm -r -f /etc/update-motd.d/*
tar xfJ pack1.tar.xz --checkpoint=.10
echo -n -e "\n"
sudo cp /home/wareck/pack2.tar.xz /
sudo cp /home/wareck/pack3.tar.xz /
cd /
sudo tar xfJ pack2.tar.xz --checkpoint=.10
sudo tar xfJ pack3.tar.xz --checkpoint=.10
echo -n -e "\n"
cd /home/wareck

#clear
dynmotd

sudo sed -i -e "s/# set constantshow/set constantshow/g" /etc/nanorc

if ! grep "wareck" /etc/sudoers >/dev/null
then
sudo sh -c "echo \"wareck ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers"
fi

echo -e "$(tput setaf 10)\nBuild folder and mount drives:$(tput sgr0)"
if ! [ -r /media/Cloud ];then sudo mkdir /media/Cloud && cd / & sudo ln -s /media/Cloud /Cloud ;fi
if ! [ -r /media/Store ];then sudo mkdir /media/Store && cd / & sudo ln -s /media/Store /Store;fi
if ! [ -r /media/Partage ];then sudo mkdir /media/Partage && cd / & sudo ln -s /media/Partage /Partage;fi
if ! [ -r /media/Nas ];then sudo mkdir /media/Nas && cd / & sudo ln -s /media/Nas /Nas;fi
if ! [ -r /raid ];then sudo mkdir /raid;fi
if ! [ -r /farm ];then sudo mkdir /farm;fi
if ! [ -r /farm/farm0 ];then sudo mkdir /farm/farm0;fi
if ! [ -r /farm/farm1 ];then sudo mkdir /farm/farm1;fi
if ! [ -r /farm/farm2 ];then sudo mkdir /farm/farm2;fi
if ! [ -r /farm/farm3 ];then sudo mkdir /farm/farm3;fi
if ! [ -r /farm/farm4 ];then sudo mkdir /farm/farm4;fi
if ! grep "UUID=1df72b63-fca0-45c6-992c-3e2532d5591a /media/Store ext4" /etc/fstab >/dev/null
then
cp /etc/fstab /tmp/fstab
cat <<"EOF">> /tmp/fstab
#ext4
UUID=6fc06d70-1a38-4706-ae83-0a329181b9f7 /media/Cloud ext4 auto,nofail,noatime,rw,user    0   0
UUID=a111c12b-d1b4-441a-9352-b6bbc558184e /media/Partage ext4 auto,nofail,noatime,rw,user  0   0
UUID=1df72b63-fca0-45c6-992c-3e2532d5591a /media/Store ext4 auto,nofail,noatime,rw,user    0   0
#btrfs temporary drives
/dev/md0 /raid btrfs ssd,nodatasum,nobarrier,nodatacow,discard=async,noatime 0 0
#Chia drive
UUID=77a593df-1bdb-4012-8c9e-ce50864b464d /farm/farm0 ext4 auto,nofail,noatime,nodiratime,rw,user  0   0
UUID=0d145a5a-50b0-456c-8998-549def2f9fc9 /farm/farm1 ext4 auto,nofail,noatime,nodiratime,rw,user  0   0
UUID=b99c7fa3-827c-4c09-a625-a72aec6c9395 /farm/farm2 ext4 auto,nofail,noatime,nodiratime,rw,user  0   0
UUID=e583a1e4-f8c8-4c2b-a427-cee854e0b56d /farm/farm3 ext4 auto,nofail,noatime,nodiratime,rw,user  0   0
UUID=d24c7616-91c2-434c-b21e-8dd70d794e25 /farm/farm4 ext4 auto,nofail,noatime,nodiratime,rw,user  0   0
EOF
sudo cp /tmp/fstab /etc/fstab
fi

sudo rm /etc/hosts
sudo cat <<'EOF'>> /etc/hosts
127.0.0.1       localhost
127.0.1.1       cube
192.168.1.8     miniserver miniserver gogserver.dnsalias.com
192.168.1.10    nzxt
192.168.1.11    garage
192.168.1.12	blade
192.168.1.254   mafreebox.freebox.fr
192.168.1.200   node

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF
echo "Done."

echo -e "$(tput setaf 10)\nSensors drivers:$(tput sgr0)"
if ! grep "it87" /etc/modules >/dev/null
then
cp /etc/modules /tmp/modules
cat <<"EOF">> /tmp/modules

# Chip drivers
it87
EOF
sudo cp /tmp/modules /etc/modules
fi
if [ -f /tmp/sensors3.conf ]
then
chmod 777 /tmp/sensors3.conf
rm /tmp/sensors3.conf
fi
cat <<'EOF'>> /tmp/sensors3.conf
chip "it8728-isa-0228"
label  in0  "Vcore"
label  in1  "Vdram"    # "DDR3" in BIOS
label  in2  "+3.3V"
label  in3  "+5V"      # Not in BIOS
label  in4  "+12V"
ignore in5             # -12V unused
ignore in6
label  in7  "5VSB"     # Not in BIOS
label  in8  "Vbat"     # Not in BIOS
compute  in3  @ * (6.8/10+1), @ / (6.8/10+1)
compute  in4  @ * 3.963,      @ / 3.963
compute  in7  @ * (6.8/10+1), @ / (6.8/10+1)
set in0_min  0.825 * 0.95
set in0_max  1.425 * 1.05
set in1_min  1.5   * 0.95
set in1_max  1.5   * 1.05
set in2_min  3.3   * 0.95
set in2_max  3.3   * 1.05
set in3_min  5     * 0.95
set in3_max  5     * 1.05
set in4_min 12     * 0.95
set in4_max 12     * 1.05
set in7_min  5     * 0.95
set in7_max  5     * 1.05
ignore cpu0_vid
set fan4_min 100
set fan1_min 100
ignore fan2
ignore fan3
ignore fan5
ignore in8
ignore intrusion0
label fan1 "fan1"
label fan4 "fan2"
label temp1 "MB"
label temp2 "CPU"
set temp2_min 0
set temp2_max 75
set temp1_min 0
set temp1_max 90
set temp1_beep 0.0
label temp1 "VRM Temp"
set   temp1_min 0
set   temp1_max 65
label temp2  "SB Temp"
label temp3 "CPU Temp"
set   temp3_min 0
set   temp3_max 65

chip "nvme-pci-0400"
set temp2_max 75
set temp2_min 20
set temp3_max 75
set temp3_min 20
EOF

chmod 644 /tmp/sensors3.conf
sudo cp /tmp/sensors3.conf /etc/
sudo sensors -s
sensors

sudo apt install ethtool -y
iface=$(ip link | awk -F: '$0 !~ "lo|vir|^[^0-9]"{print $2a;getline}')
sudo ethtool --change $iface wol g

cat <<'EOF'>> /tmp/wakemeup.sh
#!/bin/bash
set -e
if ! [ -x "$(command -v etherwake)" ];then sudo apt-get install etherwake -y;fi
clear
echo -e "$(tput setaf 10)Wake On Lan v1.0:$(tput sgr0)"
PS3="Select : "
items=("Nzxt" "Garage" "Blade")

select item in "${items[@]}" Quit
    do
        case $REPLY in
            1) sudo etherwake -i enp5s0 E0:D5:5E:2D:9E:CB ; break;;
            2) sudo etherwake -i enp5s0 58:11:22:CD:FC:7A ; break;;
            3) sudo etherwake -i enp5s0 78:AC:44:57:3C:50 ; break;;
            $((${#items[@]}+1))) echo "We're done!"; break 2;;
            *) echo "Ooops - unknown choice $REPLY"; break;
        esac
    done
echo -e ""
EOF
sudo chmod +x /tmp/wakemeup.sh
sudo cp /tmp/wakemeup.sh /usr/local/bin
echo "Done."

echo -e "$(tput setaf 10)\nVnc init:$(tput sgr0)"
sudo update-rc.d vncserver defaults
echo "Done."

echo -e "$(tput setaf 10)\nOpening ports:$(tput sgr0)"
sudo ufw allow 8333 >/dev/null
sudo ufw allow 22 >/dev/null
sudo ufw allow 5900 >/dev/null
sudo ufw allow 10000 >/dev/null
sudo ufw allow 139 >/dev/null
sudo ufw allow 5901 >/dev/null
sudo ufw allow 5902 >/dev/null
sudo ufw allow 445 >/dev/null
sudo ufw allow 1337 >/dev/null
sudo ufw allow 1447 >/dev/null

echo "Done."

echo -e "$(tput setaf 10)\nBashrc mod:$(tput sgr0)"
if [ $Cuda = "YES" ]
then
if ! grep "#mod for cuda" /home/wareck/.bashrc >/dev/null
then
echo '#mod for cuda' >>/home/wareck/.bashrc
echo 'export PATH=/usr/local/cuda-12.3/bin/:$PATH'>>/home/wareck/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH'>>/home/wareck/.bashrc
echo '' >>/home/wareck/.bashrc
fi
fi
if ! grep "#mod for tightvncserver" /home/wareck/.bashrc >/dev/null
then
echo '#mod for tightvncserver' >>/home/wareck/.bashrc
echo 'cd ~' >>/home/wareck/.bashrc
fi
echo "Done."

echo -e "$(tput setaf 10)\nDisable IPv6:$(tput sgr0)"
if ! grep "ipv6.disable=1" /etc/default/grub >/dev/null
then
sed -i -e "s/quiet splash/quiet splash ipv6.disable=1/g" /etc/default/grub
sed -i -e "s/GRUB_CMDLINE_LINUX=\"/GRUB_CMDLINE_LINUX=\"ipv6.disable=1 acpi_enforce_resources=lax/g" /etc/default/grub
sudo update-grub2
fi
sudo chown -R wareck:wareck /home/wareck/miners/xmr*
sudo chown -R wareck:wareck /home/wareck/miners/cgminer*
sudo apt-get remove light-locker* -y
if [ ! -d /home/wareck/.config/lxpanel/LXDE/panels ]
then
mkdir /home/wareck/.config/lxpanel
mkdir /home/wareck/.config/lxpanel/LXDE
mkdir /home/wareck/.config/lxpanel/LXDE/panels
fi
sudo cp /home/wareck/Build_Cube/pack/panel /home/wareck/.config/lxpanel/LXDE/panels/panel
sudo chmod 777 /home/wareck/.config/lxpanel/LXDE/panels/panel
if [ ! -d  /home/wareck/.config/lxterminal ]
then
mkdir /home/wareck/.config/lxterminal
fi
sudo cp /home/wareck/Build_Cube/pack/lxterminal.conf /home/wareck/.config/lxterminal/
sudo chmod 777 /home/wareck/.config/lxterminal/lxterminal.conf

echo "Done."
touch /home/wareck/.pass4
decompte_
fi
}

function printer_ {
if [ ! -f /home/wareck/.pass3 ]
then
if [ ! -d /usr/local/share/foomatic/ ]
then
if [ ! -d /tmp/foomatic-db/ ]
then
cd /tmp/
echo -e "$(tput setaf 10)\nInstall printers generic drivers:$(tput sgr0)"
git clone https://github.com/OpenPrinting/foomatic-db.git
fi
cd /tmp/foomatic-db
if [ ! -d /usr/local/share/foomatic/ ]
then
./make_configure
./configure
sudo make install
echo "Done."
fi
fi
fi
}

function mounting_drives_ {
if [ ! -f /home/wareck/.pass4 ]
then
echo -e "$(tput setaf 10)\nMounting Drives$(tput sgr0)"
if ! findmnt /media/Partage >/dev/null ; then sudo mount /media/Partage ;fi
if ! findmnt /media/Store >/dev/null ; then sudo mount /media/Store ;fi
if ! findmnt /media/Cloud >/dev/null ; then sudo mount /media/Cloud ;fi
sudo chmod 777 /media/Store
sudo chmod 777 /media/Cloud
sudo chmod 777 /media/Partage
sudo chmod 777 /media/nvme0
sudo chmod 777 /media/nvme1
sudo chmod 777 /media/Nas
echo "Done."
fi
}

function cleaning_ {
if [ -f /home/wareck/.pass4 ]
then
echo -e "$(tput setaf 10)\nCleaning install files:$(tput sgr0)"
if [ -f /pack2.tar.xz ]; then sudo rm /pack2.tar.xz ;fi
if [ -f /pack3.tar.xz ]; then sudo rm /pack3.tar.xz ;fi
if [ -f /home/wareck/pack1.tar.xz ]; then rm /home/wareck/pack1.tar.xz ;fi
if [ -f /home/wareck/pack2.tar.xz ]; then rm /home/wareck/pack2.tar.xz ;fi
if [ -f /home/wareck/pack3.tar.xz ]; then rm /home/wareck/pack3.tar.xz ;fi
if [ -f /home/wareck/xmrig.tar.xz ]; then rm /home/wareck/xmrig.tar.xz ;fi
if [ -f /home/wareck/gpu-miners.tar.xz ]; then rm /home/wareck/gpu-miners.tar.xz;fi
if [ -r /home/wareck/Music ]; then sudo rm -r -f /home/wareck/Music ;fi
if [ -r /home/wareck/Public ]; then sudo rm -r -f /home/wareck/Public ;fi
if [ -r /home/wareck/Templates ]; then sudo rm -r -f /home/wareck/Templates ;fi
if [ -r /home/wareck/Vidéos ]; then sudo rm -r -f /home/wareck/Vidéos ;fi
if [ -f /home/wareck/NVIDIA-Linux-x86_64-470.74.run ]; then rm /home/wareck/NVIDIA-Linux-x86_64-470.74.run ;fi
if [ -f /home/wareck/NVIDIA-Linux-x86_64-470.82.00.run ]; then rm /home/wareck/NVIDIA-Linux-x86_64-470.82.00.run ;fi
if [ -f /home/wareck/.pass1 ]; then rm /home/wareck/.pass1 ;fi
if [ -f /home/wareck/.pass2 ]; then rm /home/wareck/.pass2 ;fi
if [ -f /home/wareck/.pass3 ]; then rm /home/wareck/.pass3 ;fi
if [ -f /home/wareck/.pass4 ]; then rm /home/wareck/.pass4 ;fi
if [ -f /usr/local/bin/zap ]; then sudo rm /usr/local/bin/zap* ;fi
if [ -f /home/wareck/.config/autostart/install_os.desktop ];then sudo rm /home/wareck/.config/autostart/install_os.desktop;fi
if [ -f /home/wareck/.config/autostart/zappy.desktop ];then sudo rm /home/wareck/.config/autostart/zappy.desktop;fi
if [ -r /lib/modules/5.15.0-60-generic ]; then sudo rm -r /lib/modules/5.15.0-60-generic ;fi
if [ -r /lib/modules/5.15.0-46-generic ]; then sudo rm -r /lib/modules/5.15.0-46-generic ;fi
if [ -r /lib/modules/5.15.0-70-generic ]; then sudo rm -r /lib/modules/5.15.0-70-generic ;fi
cd /home/wareck/Build_Cube/pack
sudo chown -R wareck:wareck /home/wareck/miners
sudo chmod -R 775 /home/wareck/miners
./clean.sh
echo -e "Done. \n"

echo `date` "install/update" >/home/wareck/.buildcube
fi
sudo apt-get autoremove -y
sleep 1
}

function autoroot_ {
if [ ! -d /home/wareck/.config/autostart ]
then
echo -e "$(tput setaf 10)\nInit install & autostart:$(tput sgr0)"
mkdir /home/wareck/.config/autostart
echo -e "Done."
sleep 1
fi

if [ ! -f /home/wareck/.config/autostart/install_os.desktop ]
then
cat <<'EOF'>> /home/wareck/.config/autostart/install_os.desktop
[Desktop Entry]
# VERSION=3.36.2
Name=Terminal
Comment=Use the command line
Keywords=shell;prompt;command;commandline;cmd;
TryExec=gnome-terminal
Exec=gnome-terminal -- bash -c "sudo /home/wareck/Build_Cube/build_cube.sh; exec bash"
Icon=org.gnome.Terminal
Type=Application
Categories=GNOME;GTK;System;TerminalEmulator;
StartupNotify=true
X-GNOME-SingleWindow=false
OnlyShowIn=GNOME;Unity;
Actions=new-window;preferences;
X-Ubuntu-Gettext-Domain=gnome-terminal

[Desktop Action new-window]
Name=New Window
Exec=gnome-terminal --window

[Desktop Action preferences]
Name=Preferences
Exec=gnome-terminal --preferences
EOF
chmod +x /home/wareck/.config/autostart/install_os.desktop
fi

if [ ! -f /home/wareck/.config/autostart/zappy.desktop ]
then
cat <<'EOF'>> /home/wareck/.config/autostart/zappy.desktop
[Desktop Entry]
# VERSION=3.36.2
Name=Terminal
Comment=Use the command line
Keywords=shell;prompt;command;commandline;cmd;
TryExec=gnome-terminal
Exec=gnome-terminal -- bash -c "/usr/local/bin/zap"
Icon=org.gnome.Terminal
Type=Application
Categories=GNOME;GTK;System;TerminalEmulator;
StartupNotify=true
X-GNOME-SingleWindow=false
OnlyShowIn=GNOME;Unity;
Actions=new-window;preferences;
X-Ubuntu-Gettext-Domain=gnome-terminal

[Desktop Action new-window]
Name=New Window
Exec=gnome-terminal --window

[Desktop Action preferences]
Name=Preferences
Exec=gnome-terminal --preferences
EOF
chmod +x /home/wareck/.config/autostart/zappy.desktop
fi
if ! grep "wareck" /etc/sudoers >/dev/null
then
sudo sh -c "echo \"wareck ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers"
fi
echo -e "$(tput setaf 10)\nUpdate and install packages:$(tput sgr0)"
sudo apt-get update
sudo apt-get install lxde lxde-icon-theme -y
sleep 1
}

function remove_screensaver {
#remove screensaver
cat <<EOF>> autostart
@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
EOF
sudo chmod 744 autostart
sudo cp autostart /etc/xdg/lxsession/LXDE/
sudo cp autostart /home/wareck/.config/lxsession/LXDE/
sudo rm autostart
sudo apt-get remove xscreensaver xscreensaver-data -y
}

function cmake_ {
pids=""
/home/wareck/Build_Cube/options/tools/_cmake.sh rollback & pids="$pids $!"
wait $pids
sudo ldconfig
}

function watchdog_ {
pids=""
/home/wareck/Build_Cube/options/watchdog.sh ext & pids="$pids $!"
wait $pids
}

function wol_ {
iface=$(ip link | awk -F: '$0 !~ "lo|vir|^[^0-9]"{print $2a;getline}')
ether=$(which ethtool)
echo "[Unit]" >>/tmp/wol.service
echo "Description=Enable Wake On Lan" >>/tmp/wol.service
echo "" >>/tmp/wol.service
echo "[Service]" >>/tmp/wol.service
echo "Type=oneshot" >>/tmp/wol.service
echo "ExecStart = $ether --change$iface wol g" >>/tmp/wol.service
echo "" >>/tmp/wol.service
echo "[Install]" >>/tmp/wol.service
echo "WantedBy=basic.target" >>/tmp/wol.service
sudo cp /tmp/wol.service /etc/systemd/system/wol.service
sudo systemctl daemon-reload
sudo systemctl enable wol.service
sudo systemctl start wol.service
}

intro_
watchdog_
autoroot_
ubuntu_version_check
update_
kernel_check_
autoroot_
nvidia_driver_
update_
download_packs_
printer_
build_miners_
configure_
mounting_drives_
cleaning_
remove_screensaver
clear
wol_
dynmotd

echo -e "$(tput setaf 10)\nEnd of script:$(tput sgr0) \n"
echo -e "$(tput setaf 7)Need to install webmin manually (reboot required)$(tput sgr0)"
echo -e "$(tput setaf 7)after install webmin, reboot is required $(tput sgr0)"
echo -e ""

