minor tweaks here and there

This commit is contained in:
ronivay
2020-05-28 12:16:51 +03:00
parent f52b98475d
commit 345f28aadb

View File

@@ -10,7 +10,7 @@ SAMPLE_CONFIG_FILE="$(dirname $0)/sample.xo-install.cfg"
CONFIG_FILE="$(dirname $0)/xo-install.cfg" CONFIG_FILE="$(dirname $0)/xo-install.cfg"
# Deploy default configuration file if the user doesn't have their own yet. # Deploy default configuration file if the user doesn't have their own yet.
if [[ ! -e "$CONFIG_FILE" ]]; then if [[ ! -s "$CONFIG_FILE" ]]; then
cp $SAMPLE_CONFIG_FILE $CONFIG_FILE cp $SAMPLE_CONFIG_FILE $CONFIG_FILE
fi fi
@@ -43,8 +43,13 @@ PROGRESS="[${COLOR_BLUE}..${COLOR_N}]"
# Protocol to use for webserver. If both of the X.509 certificate files exist, # Protocol to use for webserver. If both of the X.509 certificate files exist,
# then assume that we want to enable HTTPS for the server. # then assume that we want to enable HTTPS for the server.
if [[ -e $PATH_TO_HTTPS_CERT ]] && [[ -e $PATH_TO_HTTPS_KEY ]]; then if [[ $PATH_TO_HTTPS_CERT ]] || [[ $PATH_TO_HTTPS_KEY ]]; then
if [[ -s $PATH_TO_HTTPS_CERT ]] && [[ -s $PATH_TO_HTTPS_KEY ]]; then
HTTPS=true HTTPS=true
else
HTTPS=false
HTTPSFAIL="- certificate or Key doesn't exist or file is empty"
fi
else else
HTTPS=false HTTPS=false
fi fi
@@ -78,8 +83,21 @@ function InstallDependenciesCentOS {
# Install necessary dependencies for XO build # Install necessary dependencies for XO build
# only run automated node install if package not found #determine which python package is needed. CentOS 7 requires python, 8 is python3
if [[ -z $(rpm -qa | grep ^node) ]]; then if [[ $OSVERSION == "8" ]]; then
PYTHON="python3"
else
PYTHON="python"
fi
# install packages
echo
echo -ne "${PROGRESS} Installing build dependencies, redis server, python, git, nfs-utils, cifs-utils"
yum -y install gcc gcc-c++ make openssl-devel redis libpng-devel $PYTHON git nfs-utils cifs-utils lvm2 >/dev/null
echo -e "\r${OK} Installing build dependencies, redis server, python, git, nfs-utils, cifs-utils"
# only run automated node install if executable not found
if [[ -z $(which node) ]]; then
echo echo
echo -ne "${PROGRESS} Installing node.js" echo -ne "${PROGRESS} Installing node.js"
curl -s -L https://rpm.nodesource.com/setup_12.x | bash - >/dev/null curl -s -L https://rpm.nodesource.com/setup_12.x | bash - >/dev/null
@@ -87,7 +105,7 @@ function InstallDependenciesCentOS {
fi fi
# only install yarn repo and package if not found # only install yarn repo and package if not found
if [[ -z $(rpm -qa | grep yarn) ]]; then if [[ -z $(which yarn) ]] ; then
echo echo
echo -ne "${PROGRESS} Installing yarn" echo -ne "${PROGRESS} Installing yarn"
curl -s -o /etc/yum.repos.d/yarn.repo https://dl.yarnpkg.com/rpm/yarn.repo >/dev/null && \ curl -s -o /etc/yum.repos.d/yarn.repo https://dl.yarnpkg.com/rpm/yarn.repo >/dev/null && \
@@ -96,7 +114,7 @@ function InstallDependenciesCentOS {
fi fi
# only install epel-release if doesn't exist # only install epel-release if doesn't exist
if [[ -z $(rpm -qa | grep epel-release) ]]; then if [[ -z $(rpm -q epel-release) ]] ; then
echo echo
echo -ne "${PROGRESS} Installing epel-repo" echo -ne "${PROGRESS} Installing epel-repo"
yum -y install epel-release >/dev/null yum -y install epel-release >/dev/null
@@ -118,19 +136,6 @@ function InstallDependenciesCentOS {
echo -e "\r${OK} Installing libvhdi-tools from forensics repository" echo -e "\r${OK} Installing libvhdi-tools from forensics repository"
fi fi
#determine which python package is needed. CentOS 7 requires python, 8 is python3
if [[ $OSVERSION == "8" ]]; then
PYTHON="python3"
else
PYTHON="python"
fi
# install packages
echo
echo -ne "${PROGRESS} Installing build dependencies, redis server, python, git, nfs-utils, cifs-utils"
yum -y install gcc gcc-c++ make openssl-devel redis libpng-devel $PYTHON git nfs-utils cifs-utils lvm2 >/dev/null
echo -e "\r${OK} Installing build dependencies, redis server, python, git, nfs-utils, cifs-utils"
echo echo
echo -ne "${PROGRESS} Enabling and starting redis service" echo -ne "${PROGRESS} Enabling and starting redis service"
/bin/systemctl enable redis >/dev/null && /bin/systemctl start redis >/dev/null /bin/systemctl enable redis >/dev/null && /bin/systemctl start redis >/dev/null
@@ -163,6 +168,19 @@ function InstallDependenciesDebian {
apt-get update >/dev/null apt-get update >/dev/null
echo -e "\r${OK} Running apt-get update" echo -e "\r${OK} Running apt-get update"
#determine which python package is needed. Ubuntu 20 requires python2-minimal, 16 and 18 are python-minimal
if [[ $OSVERSION == "20" ]]; then
PYTHON="python2-minimal"
else
PYTHON="python-minimal"
fi
# install packages
echo
echo -ne "${PROGRESS} Installing build dependencies, redis server, git, libvhdi-utils, python-minimal, lvm2, nfs-common, cifs-utils, curl"
apt-get install -y build-essential redis-server libpng-dev git libvhdi-utils $PYTHON lvm2 nfs-common cifs-utils curl >/dev/null
echo -e "\r${OK} Installing build dependencies, redis server, python, git, libvhdi-utils, lvm2, nfs-common, cifs-utils, curl"
# Install apt-transport-https and ca-certificates because of yarn https repo url # Install apt-transport-https and ca-certificates because of yarn https repo url
echo echo
echo -ne "${PROGRESS} Installing apt-transport-https and ca-certificates packages to support https repos" echo -ne "${PROGRESS} Installing apt-transport-https and ca-certificates packages to support https repos"
@@ -176,14 +194,6 @@ function InstallDependenciesDebian {
echo -e "\r${OK} Debian 10, so installing gnupg also" echo -e "\r${OK} Debian 10, so installing gnupg also"
fi fi
# install curl for later tasks if missing
if [[ -z $(which curl) ]]; then
echo
echo -ne "${PROGRESS} Installing curl"
apt-get install -y curl >/dev/null
echo -e "\r${OK} Installing curl"
fi
# install setcap for non-root port binding if missing # install setcap for non-root port binding if missing
if [[ -z $(which setcap) ]]; then if [[ -z $(which setcap) ]]; then
echo echo
@@ -193,7 +203,7 @@ function InstallDependenciesDebian {
fi fi
# only install yarn repo and package if not found # only install yarn repo and package if not found
if [[ -z $(dpkg -l | grep yarn) ]]; then if [[ -z $(which yarn) ]]; then
echo echo
echo -ne "${PROGRESS} Installing yarn" echo -ne "${PROGRESS} Installing yarn"
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - >/dev/null curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - >/dev/null
@@ -204,8 +214,8 @@ function InstallDependenciesDebian {
fi fi
# only run automated node install if package not found # only run automated node install if executable not found
if [[ -z $(dpkg -l | grep node) ]] || [[ -z $(which npm) ]]; then if [[ -z $(which node) ]] || [[ -z $(which npm) ]]; then
echo echo
echo -ne "${PROGRESS} Installing node.js" echo -ne "${PROGRESS} Installing node.js"
curl -sL https://deb.nodesource.com/setup_12.x | bash - >/dev/null curl -sL https://deb.nodesource.com/setup_12.x | bash - >/dev/null
@@ -216,7 +226,7 @@ function InstallDependenciesDebian {
# if we run Debian 10 and have default nodejs v10 installed, then replace it with node 12.x # if we run Debian 10 and have default nodejs v10 installed, then replace it with node 12.x
if [[ $OSVERSION == "10" ]]; then if [[ $OSVERSION == "10" ]]; then
NODEV=$(node -v 2>/dev/null| grep -Eo '[0-9.]+' | cut -d'.' -f1) NODEV=$(node -v 2>/dev/null| grep -Eo '[0-9.]+' | cut -d'.' -f1)
if [[ ! -z $NODEV ]] &&[[ $NODEV < 12 ]]; then if [[ -n $NODEV ]] && [[ $NODEV < 12 ]]; then
echo echo
echo -ne "${PROGRESS} Installing node.js" echo -ne "${PROGRESS} Installing node.js"
curl -sL https://deb.nodesource.com/setup_12.x | bash - >/dev/null curl -sL https://deb.nodesource.com/setup_12.x | bash - >/dev/null
@@ -225,19 +235,6 @@ function InstallDependenciesDebian {
fi fi
fi fi
#determine which python package is needed. Ubuntu 20 requires python2-minimal, 16 and 18 are python-minimal
if [[ $OSVERSION == "20" ]]; then
PYTHON="python2-minimal"
else
PYTHON="python-minimal"
fi
# install packages
echo
echo -ne "${PROGRESS} Installing build dependencies, redis server, git, libvhdi-utils, python-minimal, lvm2, nfs-common, cifs-utils"
apt-get install -y build-essential redis-server libpng-dev git libvhdi-utils $PYTHON lvm2 nfs-common cifs-utils >/dev/null
echo -e "\r${OK} Installing build dependencies, redis server, python, git, libvhdi-utils, lvm2, nfs-common, cifs-utils"
echo echo
echo -ne "${PROGRESS} Enabling and starting redis service" echo -ne "${PROGRESS} Enabling and starting redis service"
/bin/systemctl enable redis-server >/dev/null && /bin/systemctl start redis-server >/dev/null /bin/systemctl enable redis-server >/dev/null && /bin/systemctl start redis-server >/dev/null
@@ -275,7 +272,7 @@ function InstallXOPlugins {
trap ErrorHandling ERR INT trap ErrorHandling ERR INT
if [[ "$PLUGINS" ]] && [[ ! -z "$PLUGINS" ]]; then if [[ "$PLUGINS" ]] && [[ -n "$PLUGINS" ]]; then
if [[ "$PLUGINS" == "all" ]]; then if [[ "$PLUGINS" == "all" ]]; then
echo echo
@@ -382,7 +379,7 @@ function InstallXO {
# Get the commit ID of the currently-installed xen-orchestra (if one # Get the commit ID of the currently-installed xen-orchestra (if one
# exists). # exists).
if [[ -L $INSTALLDIR/xo-server ]] && [[ ! -z $(readlink -e $INSTALLDIR/xo-server) ]]; then if [[ -L $INSTALLDIR/xo-server ]] && [[ -n $(readlink -e $INSTALLDIR/xo-server) ]]; then
cd $INSTALLDIR/xo-server cd $INSTALLDIR/xo-server
OLD_REPO_HASH=$(git rev-parse HEAD) OLD_REPO_HASH=$(git rev-parse HEAD)
OLD_REPO_HASH_SHORT=$(git rev-parse --short HEAD) OLD_REPO_HASH_SHORT=$(git rev-parse --short HEAD)
@@ -406,7 +403,7 @@ function InstallXO {
# Now that we know we're going to be building a new xen-orchestra, make # Now that we know we're going to be building a new xen-orchestra, make
# sure there's no already-running xo-server process. # sure there's no already-running xo-server process.
if [[ $(ps aux | grep xo-server | grep -v grep) ]]; then if [[ $(pgrep -f xo-server) ]]; then
echo echo
echo -ne "${PROGRESS} Shutting down xo-server" echo -ne "${PROGRESS} Shutting down xo-server"
/bin/systemctl stop xo-server || { echo -e "${FAIL} failed to stop service, exiting..." ; exit 1; } /bin/systemctl stop xo-server || { echo -e "${FAIL} failed to stop service, exiting..." ; exit 1; }
@@ -414,7 +411,7 @@ function InstallXO {
fi fi
# If this isn't a fresh install, then list the upgrade the user is making. # If this isn't a fresh install, then list the upgrade the user is making.
if [[ ! -z "$OLD_REPO_HASH" ]]; then if [[ -n "$OLD_REPO_HASH" ]]; then
echo echo
echo -e "${INFO} Updating xen-orchestra from '$OLD_REPO_HASH_SHORT' to '$NEW_REPO_HASH_SHORT'" echo -e "${INFO} Updating xen-orchestra from '$OLD_REPO_HASH_SHORT' to '$NEW_REPO_HASH_SHORT'"
fi fi
@@ -446,7 +443,7 @@ function InstallXO {
NODEBINARY="$(readlink -e $NODEBINARY)" NODEBINARY="$(readlink -e $NODEBINARY)"
fi fi
if [[ ! -z $NODEBINARY ]]; then if [[ -n $NODEBINARY ]]; then
echo -ne "${PROGRESS} Attempting to set cap_net_bind_service permission for $NODEBINARY" echo -ne "${PROGRESS} Attempting to set cap_net_bind_service permission for $NODEBINARY"
setcap 'cap_net_bind_service=+ep' $NODEBINARY >/dev/null \ setcap 'cap_net_bind_service=+ep' $NODEBINARY >/dev/null \
&& echo -e "\r${OK} Attempting to set cap_net_bind_service permission for $NODEBINARY" || { echo -e "\r${FAIL} Attempting to set cap_net_bind_service permission for $NODEBINARY" ; echo " Non-privileged user might not be able to bind to <1024 port. xo-server won't start most likely" ; } && echo -e "\r${OK} Attempting to set cap_net_bind_service permission for $NODEBINARY" || { echo -e "\r${FAIL} Attempting to set cap_net_bind_service permission for $NODEBINARY" ; echo " Non-privileged user might not be able to bind to <1024 port. xo-server won't start most likely" ; }
@@ -667,7 +664,7 @@ function CheckOS {
function CheckSystemd { function CheckSystemd {
if [ -z $(which systemctl) ]; then if [[ -z $(which systemctl) ]]; then
echo -e "${FAIL} This tool is designed to work with systemd enabled systems only" echo -e "${FAIL} This tool is designed to work with systemd enabled systems only"
exit 0 exit 0
fi fi
@@ -675,7 +672,7 @@ function CheckSystemd {
function CheckDocker { function CheckDocker {
if [ -z $(which docker) ]; then if [[ -z $(which docker) ]]; then
echo echo
echo -e "${FAIL} Docker needs to be installed for this to work" echo -e "${FAIL} Docker needs to be installed for this to work"
exit 0 exit 0
@@ -685,6 +682,15 @@ function CheckDocker {
function CheckCertificate { function CheckCertificate {
if [[ "$HTTPS" == "true" ]]; then if [[ "$HTTPS" == "true" ]]; then
if [[ -z $(file -s $PATH_TO_HTTPS_CERT | grep "PEM certificate") ]]; then
echo -e "${FAIL} $PATH_TO_HTTPS_CERT doesn't look like PEM certificate file. Please check file or remove HTTPS settings from $CONFIG_FILE and try again"
exit 1
fi
if [[ -z $(file -s $PATH_TO_HTTPS_KEY | grep "PEM RSA private key") ]]; then
echo -e "${FAIL} $PATH_TO_HTTPS_KEY doesn't look like PEM RSA private key file. Please check file or remove HTTPS settings from $CONFIG_FILE and try again"
exit 1
fi
local CERT="$(openssl x509 -modulus -noout -in "$PATH_TO_HTTPS_CERT" | openssl md5)" local CERT="$(openssl x509 -modulus -noout -in "$PATH_TO_HTTPS_CERT" | openssl md5)"
local KEY="$(openssl rsa -modulus -noout -in "$PATH_TO_HTTPS_KEY" | openssl md5)" local KEY="$(openssl rsa -modulus -noout -in "$PATH_TO_HTTPS_KEY" | openssl md5)"
if [[ "$CERT" != "$KEY" ]]; then if [[ "$CERT" != "$KEY" ]]; then
@@ -744,6 +750,7 @@ else
fi fi
echo -e "Port: ${COLOR_WHITE}$PORT${COLOR_N}" echo -e "Port: ${COLOR_WHITE}$PORT${COLOR_N}"
echo -e "HTTPS: ${COLOR_WHITE}${HTTPS}${COLOR_N} ${COLOR_RED}${HTTPSFAIL}${COLOR_N}"
echo -e "Git Branch for source: ${COLOR_WHITE}$BRANCH${COLOR_N}" echo -e "Git Branch for source: ${COLOR_WHITE}$BRANCH${COLOR_N}"
echo -e "Following plugins will be installed: ${COLOR_WHITE}"$PLUGINS"${COLOR_N}" echo -e "Following plugins will be installed: ${COLOR_WHITE}"$PLUGINS"${COLOR_N}"
echo -e "Number of previous installations to preserve: ${COLOR_WHITE}$PRESERVE${COLOR_N}" echo -e "Number of previous installations to preserve: ${COLOR_WHITE}$PRESERVE${COLOR_N}"
@@ -764,7 +771,7 @@ read -p ": " option
case $option in case $option in
1) 1)
if [[ $(ps aux | grep xo-server | grep -v grep) ]]; then if [[ $(pgrep -f xo-server) ]]; then
echo "Looks like xo-server process is already running, consider running update instead. Continue anyway?" echo "Looks like xo-server process is already running, consider running update instead. Continue anyway?"
read -p "[y/N]: " answer read -p "[y/N]: " answer
case $answer in case $answer in