Hauk/install.sh

168 lines
4.8 KiB
Bash
Executable File

#!/bin/sh
# Hauk automatic installation script for Linux servers
# Copyright (C) 2019 Marius Lindvall under the Apache 2.0 License
# Source code available freely at https://github.com/bilde2910/Hauk
hauk_help() {
echo -e "\033[1m\033[94mHauk automatic installer\033[0m"
echo ""
echo -e "\033[1mUsage:\033[0m"
echo -e "./install.sh \033[90m[\033[0moptions\033[90m] \033[0mweb_root"
echo ""
echo -e "\033[1mDescription:\033[0m"
echo "Installs Hauk to the specified web root directory, e.g. /var/www/html"
echo ""
echo -e "\033[1mOptions:\033[0m"
echo -e "\033[91m-c\t\033[0mInstall config file to $config"
echo -e "\033[91m-f\t\033[0mOverwrite without asking"
exit 1
}
# Centralized configuration
if [ "$(uname -s)" = "FreeBSD" ]; then
confdir=/usr/local/etc/hauk
config=/usr/local/etc/hauk/config.php
else
confdir=/etc/hauk
config=/etc/hauk/config.php
fi
useconf=0
# Print help if no arguments given
if [ "$#" -eq 0 ]; then
hauk_help
fi
# Get the installation path (last argument)
for webroot; do true; done
# If a flag is the last argument, no path is given, so print help and exit
if [ "$webroot" = "-f" ] || [ "$webroot" = "-c" ]; then
hauk_help
fi
hauk_config() {
if [ -f "$config" ]; then
if [ "$1" != "-f" ] && [ "$2" != "-f" ]; then
read -p "Config file already exists! Overwrite? [y/N]: " repl
case "$repl" in
[Yy]*)
rm "$config" >/dev/null 2>&1
if [ -f "$config" ]; then
echo "You do not have permissions to install the configuration file in"
echo "${confdir}. Please run this script as root."
exit 5
fi
;;
esac
else
rm "$config" >/dev/null 2>&1
if [ -f "$config" ]; then
echo "You do not have permissions to install the configuration file in"
echo "${confdir}. Please run this script as root."
exit 5
fi
fi
fi
if ! [ -f "$config" ]; then
if ! [ -d "$confdir" ]; then
mkdir -p "$confdir" >/dev/null 2>&1
fi
cp backend-php/include/config-sample.php "$config" >/dev/null 2>&1
fi
if ! [ -f "$config" ]; then
echo "You do not have permissions to install the configuration file in"
echo "/etc/hauk. Please run this script as root."
exit 5
fi
useconf=1
}
if ! [ -d "$webroot" ]; then
if [ "$1" != "-f" ] && [ "$2" != "-f" ]; then
read -p "Target directory does not exist. Create it? [Y/n]: " empty
case "$empty" in
[Nn]*)
echo "Aborting..."
exit 2
;;
*)
mkdir -p "$webroot" >/dev/null 2>&1
;;
esac
else
mkdir -p "$webroot" >/dev/null 2>&1
fi
fi
if ! [ -d "$webroot" ] || ! [ -w "$webroot" ]; then
echo "You do not have sufficient permissions to install Hauk to this"
echo "directory. Please make sure you have write permission to the"
echo "installation directory and try again."
exit 3
fi
if [ "$(ls -A "$webroot")" ]; then
if [ "$1" != "-f" ] && [ "$2" != "-f" ]; then
echo "WARNING! Target directory is not empty. If you proceed with the"
echo "installation, all files in the directory will be deleted."
read -p "Delete files and continue install? [y/N]: " empty
case "$empty" in
[Yy]*)
rm -rf "$webroot"
mkdir "$webroot"
;;
*)
echo "Aborting..."
exit 4
;;
esac
else
rm -rf "$webroot"
mkdir "$webroot"
fi
fi
if [ "$1" != "-c" ] && [ "$2" != "-c" ]; then
read -p "Install config file to /etc/hauk? [Y/n]: " empty
case "$empty" in
[Nn]*) ;;
*) hauk_config;;
esac
else
hauk_config
fi
cp -R backend-php/* "$webroot"
cp -R frontend/* "$webroot"
# Determine the path in which config is saved
if [ "$useconf" -eq 0 ]; then
confpath="$webroot/include/config.php"
cp backend-php/include/config-sample.php "$confpath" >/dev/null 2>&1
fi
echo ""
echo -e "\033[1m\033[92mInstallation complete!\033[0m"
echo "Before you use Hauk, make sure to change Hauk's configuration."
echo "The configuration file can be found at:"
echo -e "\033[1m$confpath\033[0m"
# Try to get the user's editor
if [ "$EDITOR" ]; then
editor="$EDITOR"
elif [ "$SUDO_USER" ]; then
editor=$(su - $SUDO_USER -c '. ~/.profile; echo $EDITOR')
fi
# If found, prompt to edit the config
if [ "$editor" ]; then
echo ""
read -p "Do you wish to open this file for editing now? [Y/n]: " edit
case "$edit" in
[Nn]*) ;;
*) "$editor" "$confpath";;
esac
fi