d553fa0daf
Now we can only install previous versions from v1.8.1 or newer. Fixed error during re-installation in verify process.
210 lines
6.9 KiB
Bash
210 lines
6.9 KiB
Bash
#!/bin/bash
|
|
# Webinoly Installation Script.
|
|
|
|
# Check OS support
|
|
distr=`echo $(lsb_release -i | cut -d':' -f 2)`
|
|
osver=`echo $(lsb_release -c | cut -d':' -f 2)`
|
|
if ! [[ $distr == "Ubuntu" && $osver =~ ^(xenial|bionic)$ ]]; then
|
|
echo "$(tput setaf 1)"
|
|
echo "****************************************************************************"
|
|
echo "**** This OS is not supported by Webinoly and could not work properly ****"
|
|
echo "****************************************************************************"
|
|
echo "$(tput sgr0)"
|
|
read -p "Press [Enter] key to Continue or [Ctrl+C] to Cancel..."
|
|
fi
|
|
# Check for sudo/root privileges
|
|
if ! $(groups $USERNAME | grep &>/dev/null '\bsudo\b' || groups $USERNAME | grep &>/dev/null '\broot\b'); then
|
|
echo "$(tput setaf 1)"
|
|
echo "**** [ERROR] sudo/root privileges are required to install Webinoly ****"
|
|
echo "$(tput sgr0)"
|
|
read -p "Press [Enter] key to Continue or [Ctrl+C] to Cancel..."
|
|
fi
|
|
|
|
# Prevent "compulsive" re-installation if you currently have the latest version installed.
|
|
checkver=$(wget --timeout=10 -t 1 -qO- https://api.webinoly.com/check?text=true)
|
|
if [[ -a /opt/webinoly/webinoly.conf && $2 != "-ver=beta" && $2 != "-ver=alpha" ]]; then
|
|
currentver=$(grep -w "^app-version:.*" /opt/webinoly/webinoly.conf | cut -f 2 -d ':')
|
|
if [[ -n $checkver && -n $currentver && ${checkver//.} -le ${currentver//.} ]]; then
|
|
echo "$(tput setaf 2)You currently have the latest version!$(tput sgr0)"
|
|
sudo rm weby
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# In case client is just Updating Webinoly and not fresh-installing we need accurate statistics.
|
|
[[ -n $1 ]] && setup=$1 || setup=9
|
|
if [[ $setup == "upd" ]]; then
|
|
setup=0
|
|
update="&update=true"
|
|
else
|
|
update=""
|
|
fi
|
|
|
|
if [[ $setup == "api="* ]]; then
|
|
api_paas=$(echo "${setup}" | cut -d'=' -f 2 -s)
|
|
api="true"
|
|
setup=3
|
|
fi
|
|
|
|
|
|
# Diplay menu to select type of server
|
|
while ! [[ $setup -ge 0 && $setup -le 3 && $setup =~ ^[0-9]+$ ]] 2>/dev/null
|
|
do
|
|
echo ""
|
|
echo " 1 - HTML Server"
|
|
echo " 2 - PHP Server"
|
|
echo " 3 - LEMP Server (Default)"
|
|
echo " 0 - Maybe later..."
|
|
echo ""
|
|
read -p "Select the desired option to configure your server: " setup
|
|
echo ""
|
|
echo "------------------------------------------------"
|
|
setup=${setup:-3}
|
|
done
|
|
|
|
|
|
# Download and install Webinoly
|
|
if [[ $2 == "-ver="* ]]; then
|
|
ver=$(echo "$2" | cut -d'=' -f 2 -s)
|
|
# Skip stadistics counters for dev and testing (custom version stats).
|
|
if [[ $(echo "${ver}" | rev | cut -c-1) == "*" || $ver == "alpha" ]]; then
|
|
ver=${ver//'*'}
|
|
statskip="true"
|
|
fi
|
|
|
|
# Be sure we have a valid server response for the requested version
|
|
code=$(wget --server-response --spider https://qrok.es/webinoly?version=$ver 2>&1 | awk '/^ HTTP/{print $2}')
|
|
# Get the last code (redirections)
|
|
code="${code##*$'\n'}"
|
|
|
|
echo "$(tput setaf 1)"
|
|
if [[ $code == 200 ]]; then
|
|
sudo wget --timeout=15 -t 1 -qrO $HOME/webinoly.tar https://qrok.es/webinoly?version=$ver
|
|
webyversion="$ver"
|
|
[[ $ver == "beta" ]] && echo "[WARNING] You are installing a BETA version of Webinoly and it's not recommended for production enviroments."
|
|
else
|
|
echo "[ERROR] Version not found or not available! ($code) $(tput sgr0)"
|
|
if [[ $1 != "api" ]]; then
|
|
sudo rm weby
|
|
exit 1
|
|
else
|
|
webyversion="$checkver"
|
|
apiskip=true
|
|
fi
|
|
fi
|
|
echo $(tput sgr0)
|
|
fi
|
|
[[ -z $webyversion || $apiskip == true ]] && sudo wget --timeout=15 -t 1 --referer="https://webinoly.com/?option=${setup}${update}" -qrO $HOME/webinoly.tar https://qrok.es/wytar
|
|
|
|
|
|
sudo mkdir -p /opt/webinoly
|
|
sudo tar -xf $HOME/webinoly.tar -C /opt/webinoly
|
|
sudo mkdir -p /opt/webinoly/templates/source
|
|
sudo find /opt/webinoly -type d -exec chmod 755 {} \;
|
|
sudo find /opt/webinoly -type f -exec chmod 644 {} \;
|
|
sudo chmod -f 744 /opt/webinoly/lib/ex-*
|
|
|
|
# Install plugins
|
|
sudo chmod 755 /opt/webinoly/plugins/*
|
|
sudo mv /opt/webinoly/plugins/* /usr/bin/
|
|
|
|
source /opt/webinoly/lib/install
|
|
|
|
# Check for uninstalled Webinoly conf file
|
|
if [[ -a $HOME/.webinoly-conf-restore_dont-remove ]]; then
|
|
echo "${gre}Seems like Webinoly was installed previously, we will try to recover your old configuration!${end}"
|
|
sudo tar -Pxf $HOME/.webinoly-conf-restore_dont-remove -C /
|
|
sudo rm -rf $HOME/.webinoly-conf-restore_dont-remove
|
|
sudo webinoly -verify
|
|
if [[ $? == 1 ]]; then
|
|
sudo rm weby
|
|
app_purge
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Check for Server Conf Updates and Save Tools Port after library is available.
|
|
if [[ -a /opt/webinoly/webinoly.conf ]]; then
|
|
echo "${gre}Webinoly Configuration file was found, so we will use it!${end}"
|
|
oldapp=$(conf_read app-version)
|
|
oldver=$(conf_read server-version)
|
|
newver=$svr_version
|
|
[[ -n $oldver && ${newver//.} -gt ${oldver//.} ]] && source /opt/webinoly/lib/update
|
|
else
|
|
[[ -n $2 && $2 != "-ver="* ]] && tools_port $2
|
|
newinst="true"
|
|
fi
|
|
|
|
|
|
# Write app version
|
|
webyversion=$app_version
|
|
[[ -z $webyversion ]] && webyversion="undetermined"
|
|
conf_write app-version $webyversion
|
|
|
|
# Ping to Webinoly Stats
|
|
opt=$setup
|
|
branch="Public"
|
|
if [[ $2 == "-ver="* && -z $apiskip ]]; then
|
|
if ! [[ $ver =~ ^[0-9]{1}\.[0-9]{1,2}\.[0-9]{1,2}$ ]]; then
|
|
branch=$ver
|
|
conf_write branch $ver
|
|
else
|
|
type="Custom"
|
|
webyversion="$checkver"
|
|
opt=$ver
|
|
fi
|
|
fi
|
|
|
|
if [[ $type != "Custom" ]]; then
|
|
if [[ -n $update && -n $oldapp ]]; then
|
|
type="Updates"
|
|
opt=$oldapp
|
|
elif [[ -z $update && -n $oldapp ]]; then
|
|
type="Reinstall"
|
|
opt=$oldapp
|
|
elif [[ $newinst == "true" ]]; then
|
|
type="New"
|
|
if [[ $api == "true" ]]; then
|
|
type="API"
|
|
opt=$api_paas
|
|
fi
|
|
else
|
|
type="Error"
|
|
fi
|
|
elif [[ $type == "Custom" && $api == "true" ]]; then
|
|
type="API"
|
|
opt=$api_paas
|
|
fi
|
|
[[ $statskip == "true" ]] || wget https://api.webinoly.com/stats/?install=${branch}:${webyversion}:${type}:${opt} --referer="Webinoly-Internal-Verified-Stats" --spider --timeout=15 -t 1 -q
|
|
|
|
|
|
# Stack installation
|
|
[[ $setup -gt 0 && $setup -le 3 ]] && stack -nginx
|
|
[[ $setup -gt 1 && $setup -le 3 ]] && stack -php
|
|
[[ $setup == 3 ]] && stack -mysql
|
|
|
|
|
|
# Message Center
|
|
if [[ $newinst == "true" && $setup == 0 ]]; then
|
|
echo "${blu}You have chosen the option '0', it means that you have to manually build your own stack."
|
|
echo "But, don't worry! With Webinoly this is an easy task, just use the stack command, i.e. 'sudo stack -lemp'"
|
|
echo "${gre}"
|
|
echo "Webinoly has been successfully installed!!!"
|
|
fi
|
|
|
|
echo "${blu}"
|
|
echo "****************************************************************************"
|
|
echo "********************** D O N A T I O N S ***************************"
|
|
echo "*** If you like Webinoly, buy me a coffee or a beer to show support. ***"
|
|
echo "****************************************************************************"
|
|
echo "********** Bitcoin: 1E3Ybo5UcvaAr1MoK4nBnMRFFY9aEMiku3 *************"
|
|
echo "************ PayPal: https://www.paypal.me/qrokes *******************"
|
|
echo "****************************************************************************"
|
|
echo "*** Your regular donations is what keep this project moving forward. ***"
|
|
echo "****************************************************************************"
|
|
echo "${end}"
|
|
|
|
|
|
# Remove Installation File
|
|
sudo rm weby
|
|
app_purge
|