#!/bin/bash
##
clear
if [[ $EUID -ne 0 ]]; then
   echo "----------------------------------------------------------"
   echo "            Please run this scripts on SU !               "
   echo "----------------------------------------------------------"
   exit 1
fi
clear
echo "${hijau}                     INSTALLER                        "
echo "${hijau}<--------------------------------------------------->"
sleep 10
echo "${hijau}<====================================================>"
echo "${hijau}|      Min spec for cluster, backup, continues       |"
echo "${hijau}|       replication (DC-DR),load balancing etc,      |"
echo "${hijau}|      for XenServer/CitrixHypervisor/XCP-NG         |"
echo "${hijau}|     Like XCP, use guest tools from citrix xen      |"
echo "${hijau}|        4vCPU, 16GB RAM, NIC 10G or Bounded         |"
echo "${hijau}<====================================================>"
tuned-adm profile network-throughput
hostnamectl set-hostname XOA
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|                     Working....                   |"
echo "${hijau}|                  Please wait...                   |"
/bin/yum install epel-release curl -y > /dev/null 2>&1
#yum update -y > /dev/null 2>&1

#add repo node js
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|               add repo nodeJS v8.xx...            |"
echo "${hijau}|                                                   |"
curl -s -L https://rpm.nodesource.com/setup_8.x | bash - > /dev/null 2>&1
curl -s -o /etc/yum.repos.d/yarn.repo https://dl.yarnpkg.com/rpm/yarn.repo > /dev/null 2>&1

# Node
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|                Install nodeJS...                  |"
echo "${hijau}|                  Please wait...                   |"
sleep 1
/bin/yum install nodejs -y  > /dev/null 2>&1
# install yarn package
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|              Install yarn package....             |"
echo "${hijau}|                                                   |"
sleep 2
/bin/yum install yarn -y > /dev/null 2>&1

# install lib vhd tools
sleep 1
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|                Install vhd tools...               |"
echo "${hijau}|                                                   |"
/bin/rpm -ivh https://forensics.cert.org/cert-forensics-tools-release-el7.rpm > /dev/null 2>&1
/bin/sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/cert-forensics-tools.repo > /dev/null 2>&1
/bin/yum --enablerepo=forensics install -y libvhdi-tools > /dev/null 2>&1
echo "${hijau}|               Install tools 4 xoa...              |"
echo "${hijau} --------------------------------------------------- "
sleep 1
/bin/yum install gcc gcc-c++ make openssl-devel redis libpng-devel python36 git nfs-utils -y >> /dev/null 2>&1
echo "${hijau}|                 Install Open SSL..                |"
/bin/yum install mod_ssl -y > /dev/null 2>&1

# enable service redis etc 
echo "${hijau}|                Enable redis server                |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "
/bin/systemctl enable redis > /dev/null 2>&1
/bin/systemctl start redis > /dev/null 2>&1
/bin/systemctl enable rpcbind > /dev/null 2>&1
/bin/systemctl start rpcbind > /dev/null 2>&1
echo "${hijau}|               Tools succes install                |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "
node=$(node -v) 
npm=$(npm -v)
yarn=$(yarn --version)
echo "${hijau}|            Node js version $node                  |"
echo "${hijau}|              NPM version $npm                     |"
echo "${hijau}|          Yarn package version $yarn               |"
sleep 10
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|             Clone xoa from source...              |"
echo "${hijau}|                                                   |"
cd /opt/
/usr/bin/git clone https://github.com/vatesfr/xen-orchestra >> /dev/null 2>&1

# allow config restore
sed -i 's/< 5/> 0/g' /opt/xen-orchestra/packages/xo-web/src/xo-app/settings/config/index.js
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|                ..Build your XOA..                 |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|         4 look activity first & last XOA          |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|open new screen, & 'tail -f /opt/temp/yarn-xoa.log |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|First yarn 4 xoa please wait... "
sleep 1

cd ~
cd /opt/xen-orchestra
/usr/bin/yarn >> /opt/temp/yarn-xoa.log 
echo "${hijau}|Last yarn 4 xoa please wait..."

cd /opt/xen-orchestra
/usr/bin/yarn build >> /opt/temp/yarn-xoa.log 
cd /opt/temp
stop_spinner $?

# configure xoa
echo "${hijau}<------------------Configure XOA-------------------->"
sleep 5
cd /opt/xen-orchestra/packages/xo-server
\cp sample.config.toml .xo-server.toml
chmod a+x /opt/xen-orchestra/packages/xo-server/.xo-server.toml
/bin/sed -i "s|#'/' = '/path/to/xo-web/dist/'|'/' = '../xo-web/dist/'|" .xo-server.toml
/bin/sed -i "s|port = 80|#port = 80|" .xo-server.toml
/bin/sed -i "s|# port = 443|port = 443|" .xo-server.toml
# put certificate for xoa.
/bin/sed -i "s|# cert = './certificate.pem'|cert = '/opt/cert/cert-selfsigned.pem'|" .xo-server.toml
/bin/sed -i "s|# key = './key.pem'|key = '/opt/cert/key-selfsigned.pem'|" .xo-server.toml

# create node
echo "${hijau}|                   Create node ...                 |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "
sleep 2
mkdir -p /usr/local/lib/node_modules/
/bin/ln -s /opt/xen-orchestra/packages/xo-server-* /usr/local/lib/node_modules/
/bin/rm -rf /etc/systemd/system/xo-server.service
# Banner
echo "${hijau}|                 Attach banner ..                  |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "
sleep 2
cd /root/
/bin/git clone https://github.com/Adepurnomo/banner.git >> /dev/null 2>&1
\cp /root/banner/issue.net /etc
/bin/chmod a+x /etc/issue.net
cd /etc/ssh/ 	
/bin/sed -i "s|#Banner none|Banner /etc/issue.net|" sshd_config
/bin/chmod a+x /etc/ssh/sshd_config
/bin/rm -rf /root/banner

echo "${hijau}|            ~write service on systemd~             |"
/bin/cat << EOF >> /etc/systemd/system/xo-server.service
[Unit]
Description= XO Server
After=network-online.target

[Service]
WorkingDirectory=/opt/xen-orchestra/packages/xo-server/
ExecStart=/usr/bin/node ./bin/xo-server
Restart=on-failure
SyslogIdentifier=xo-server

[Install]
WantedBy=multi-user.target
EOF

echo "${hijau} --------------------------------------------------- "
echo "${hijau}|        ..Configure self sign ssl for xoa..        |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "
sleep 2
mkdir /opt/cert
/bin/chmod 700 /opt/cert
cd ~
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /opt/cert/key-selfsigned.pem -out /opt/cert/cert-selfsigned.pem -subj "/C=Id/ST=DKI Jakarta/L=Jakarta/O=Ade Purnomo/OU=IT Department/CN=Port of Tanjung Priok" >> /dev/null 2>&1
echo "${hijau}|Configure self sign ssl for xoa, please wait... "
sleep 1
cd ~
openssl dhparam -out /opt/cert/dhparam.pem 2048 >> /dev/null 2>&1
cd /opt/temp
stop_spinner $?
/bin/cat /opt/cert/dhparam.pem | tee -a /opt/cert/cert-selfsigned.pem >> /dev/null 2>&1
echo "${hijau}<--------------------------------------------------->"
echo "${hijau}               white list 80 on firewalld            "
/bin/firewall-cmd --zone=public --add-port=80/tcp --permanent 
echo "${hijau}               white list 443 on firewalld           "
/bin/firewall-cmd --zone=public --add-port=443/tcp --permanent
echo "${hijau}              white list 19999 on firewalld          "
/bin/firewall-cmd --zone=public --add-port=19999/tcp --permanent
echo "${hijau}<--------------------------------------------------->"
/bin/firewall-cmd --reload > /dev/null 2>&1
/bin/systemctl daemon-reload > /dev/null 2>&1
/bin/systemctl enable xo-server.service > /dev/null 2>&1
/bin/systemctl start xo-server > /dev/null 2>&1

echo "${hijau} --------------------------------------------------- "
echo "${hijau}|                Netdata Installer                  |" 
echo "${hijau}|               -------------------                 |"
echo "${hijau}|                                                   |"
echo "${hijau} --------------------------------------------------- "

yum install Judy-devel autoconf autoconf-archive autogen automake gcc libmnl-devel libuuid-devel libuv-devel lz4-devel nmap-ncat openssl-devel zlib-devel git -y >> /dev/null 2>&1
cd /opt
git clone https://github.com/netdata/netdata.git > /dev/null 2>&1
#put 0 to 1 (skip) question for installer netdata
sed -i 's/TWAIT} -eq 0 /TWAIT} -eq 1 /g' /opt/netdata/netdata-installer.sh
chmod a+x /opt/netdata/netdata-installer.sh
echo "${hijau}|Installing netdata, please wait... "
sleep 1
cd /opt/netdata/
./netdata-installer.sh > /dev/null 2>&1 

cd ~
servis=$(systemctl status netdata | grep running)
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|                   Netdata status. .               |"
echo "${hijau}|${hijau}$servis                                    |"
sleep 10

echo "${hijau} --------------------------------------------------- "
echo "${hijau}|                       DONE                        |" 
echo "${hijau} --------------------------------------------------- "
host=$(hostname -I)
echo "${hijau}|and then acces XOA https://$host                   |"
echo "${hijau}|username : admin@admin.net                         |"
echo "${hijau}|password : admin                                   |"
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|4 acces Netdata http://$host:19999                 | "
echo "${hijau} --------------------------------------------------- "
echo "${hijau}|                    Enjoy !!                       |"
echo "${hijau} --------------------------------------------------- "
/bin/systemctl restart sshd.service > /dev/null 2>&1