webinoly/weby
Cristhian Martínez Ochoa d553fa0daf installer fixed
Now we can only install previous versions from v1.8.1 or newer.
Fixed error during re-installation in verify process.
2019-08-08 15:31:03 -06:00

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