#!/bin/bash ############################### # @author: Bram Prieshof # # @author: Branco van de Waal # ############################### itype=Main ##--------------------## # Legacy/Main Menu # ##--------------------## sed -i -e 's/magenta/blue/g' /etc/newt/palette if [ "$1" != "-l" ]; then APTMODE="debconf-apt-progress -- apt" OUTPUT='/dev/null' IMODE=n fi if [ "$1" = "-l" ]; then APTMODE="apt" OUTPUT='/dev/tty' IMODE=l fi ##---------------## # Static-Vars # ##---------------## #Git-repo repo=https://git.ictmaatwerk.com/VPS-scripts/Web-V2 branch=Debian11Testing branchtype=branch #=branch for branch and =tag for release CompatVer=2 #Installer-config phpver=7.4 PHPMyadmin=1 #Overwriten by cms's without php sqlver=8.0 TestMode=0 #PackageManager-config dist_ver=$(grep --color=never -Po "^VERSION_ID=\K.*" "/etc/os-release") dist=$(grep --color=never -Po "^ID=\K.*" "/etc/os-release") if [[ "${dist}" == *"ubuntu"* ]] && [[ "${dist_ver}" == *"18.04"* ]]; then PKGM="$APTMODE" PKGUC="$PKGM update" PKGUP="$PKGM upgrade -y" PKGI="${PKGM} install -y --no-install-recommends" PKGLIST="apt" shortdist=ubu1804 elif [[ "${dist}" == *"ubuntu"* ]] && [[ "${dist_ver}" == *"20.04"* ]]; then PKGM="$APTMODE" PKGUC="$PKGM update" PKGUP="$PKGM upgrade -y" PKGI="${PKGM} install -y --no-install-recommends" PKGLIST="apt" shortdist=ubu2004 elif [[ "${dist}" == *"debian"* ]] && [[ "${dist_ver}" == *"10"* ]]; then PKGM="$APTMODE" PKGUC="$PKGM update" PKGUP="$PKGM upgrade -y" PKGI="${PKGM} install -y --no-install-recommends" PKGLIST="apt" shortdist=deb10 elif [[ "${dist}" == *"debian"* ]] && [[ "${dist_ver}" == *"11"* ]]; then PKGM="$APTMODE" PKGUC="$PKGM update" PKGUP="$PKGM upgrade -y" PKGI="${PKGM} install -y --no-install-recommends" PKGLIST="apt" shortdist=deb11 elif [ "$(grep -oP '(?<=^PLATFORM_ID=).+' /etc/os-release | tr -d '"')" = "platform:el8" ]; then PKGM="dnf" PKGUC="$PKGM check-update --refresh" PKGUP="$PKGM update -y" PKGI="${PKGM} install --setopt=install_weak_deps=False --best -y" PKGLIST="dnf" shortdist=el8 else echo "This os in not supported" exit fi unset dist_ver dist APTMODE ##-------------## # Test-Vars # ##-------------## syscheckoff=0 if [ $TestMode = 1 ]; then domain=ict-dagbesteding.nl sitename=ict_DB_nl email=b.prieshof@ictmaatwerk.com password=MeiFerrieSekureTESTp@ssw0rd4213 hostname=vdh001.nxdi.nl sslenable=0 domainwww=0 fi ##---------------------## # Always-on modules # ##---------------------## aonoption="/MySQL/" aonoption="$aonoption /Unattended-Security-Updates/" aonoption="$aonoption /Backup-Util/" aonoption="$aonoption /AcmeSH/" ##---------------## # Functions # ##---------------## msg () { if [ $IMODE = n ]; then TERM=ansi whiptail --title "Info" --infobox "$1" 8 52 fi if [ $IMODE = l ]; then echo "$1" fi } function PasswordQuest { passdiaone=$(whiptail --nocancel --passwordbox "Please enter your password (Requires 8 chars, uper & lower case, special and numerical)" 11 91 --title "Config" 3>&1 1>&2 2>&3) if [ -z $passdiaone ]; then PasswordQuest; fi if [[ ${#passdiaone} -ge 8 && "$passdiaone" == *[[:lower:]]* && "$passdiaone" == *[[:upper:]]* && "$passdiaone" == *[0-9]* && "$passdiaone" == *['!'@#%^\&*()_+]* ]]; then PasswordCheck else whiptail --ok-button Done --msgbox " Password is invalid!" 10 30 unset passdiaone PasswordQuest fi } function PasswordCheck { #Checking password passdiatwo=$(whiptail --nocancel --passwordbox " Please re-enter your password" 11 82 --title "Config" 3>&1 1>&2 2>&3) if [ -z $passdiatwo ]; then PasswordCheck else if [ $passdiaone != $passdiatwo ]; then whiptail --ok-button Done --msgbox " Password does not match!" 10 30 PasswordQuest else password="$passdiaone" unset passdiaone passdiatwo fi fi } function LegacyPasswordQuest { echo "Enter password (Requires: 8 chars, 1 capital and 1 num)" read -s passdiaone if [ -z $passdiaone ]; then LegacyPasswordQuest; fi if [[ ${#passdiaone} -ge 8 && "$passdiaone" == *[[:lower:]]* && "$passdiaone" == *[[:upper:]]* && "$passdiaone" == *[0-9]* && "$passdiaone" == *['!'@#%^\&*()_+]* ]]; then LegacyPasswordCheck else echo "Password is invalid!" unset passdiaone LegacyPasswordQuest fi } function LegacyPasswordCheck { #Checking password echo "Please re-enter your password" read -s passdiatwo if [ -z $passdiatwo ]; then LegacyPasswordCheck else if [ $passdiaone != $passdiatwo ]; then echo "Password does not match!" LegacyPasswordQuest else password="$passdiaone" unset passdiaone passdiatwo fi fi } function HostnameQuest { if (whiptail --title "Config" --yesno " Hostname with nxdi.nl" 11 78); then hostname=$(whiptail --nocancel --inputbox " SystemID (eg: VCH001) without ".nxdi.nl" " 11 82 --title "Config" 3>&1 1>&2 2>&3) hostname=$hostname".nxdi.nl" else hostname=$(whiptail --nocancel --inputbox " Hostname" 11 78 --title "Config" 3>&1 1>&2 2>&3) fi } function LegacyHostnameQuest { while true; do read -p "Hostname with nxdi.nl -> yes/no?" yn case $yn in [Nn]* ) echo 'Enter full hostname:' read hostname break;; [Yy]* ) echo 'Hostname (eg: VCH001) without ".nxdi.nl":' read hostname hostname=$hostname".nxdi.nl" break;; * )echo "Choose yes or no.";; esac done } ##----------------## # System-Check # ##----------------## if [[ "$syscheckoff" -ne 1 ]] && [[ -d /etc/ICTM ]]; then msg " This system has already been installed by Web-V2" && exit; fi ##Check for pkgs, not yet setup for Centos # if [[ "$syscheckoff" -ne 1 ]] && [[ ! -z $(dpkg -l | cut -d " " -f 3 | grep "^mysql-server") || ! -z $(dpkg -l | cut -d " " -f 3 | grep "nginx") || ! -z $(dpkg -l | cut -d " " -f 3 | grep "apache") || ! -z $(dpkg -l | cut -d " " -f 3 | grep "php") ]] ; then msg " This system has installed packages, Web-V2 is designed for clean systems" && exit; fi ##--------------------------## # Installer-Requirements # ##--------------------------## msg " Starting installer" 8 78 $PKGUC > $OUTPUT 2>&1 $PKGI curl wget tar > $OUTPUT 2>&1 ##--------## # Menu # ##--------## #Fetching Menu Entries source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/ModulesMenu.list) if [ $IMODE = n ]; then if [ $TestMode = 0 ]; then domain=$(whiptail --nocancel --inputbox " Enter the domain without WWW " 11 82 --title "Config" 3>&1 1>&2 2>&3) if (whiptail --title "Config" --yesno "Does www.${domain} exist in DNS?" 11 82 ); then domainwww=1 else domainwww=0 fi if (whiptail --title "Config" --yesno "Set sitename to ${domain//./_} ?" 8 78 ); then sitename=${domain//./_} else while true; do sitename=$(whiptail --nocancel --inputbox "Enter sitename, Must NOT contain special characters, except: _" 8 66 --title "Config" 3>&1 1>&2 2>&3) if [[ $sitename == *['!'@#\$%^\&*()+,.]* ]] || [ -z "$sitename" ] then whiptail --msgbox " Site can't be empty, or contain a special character except for: _" 11 76 else break fi done fi while true; do HostnameQuest if [[ "$hostname" == "$domain" ]] || [ -z "$hostname" ] then whiptail --msgbox " Hostname can't be empty, or be the same as the domain" 11 63 else break fi done if (whiptail --title "Config" --yesno " Enable SSL on installation?" 11 78); then sslenable=1 else sslenable=0 fi PasswordQuest email=$(whiptail --nocancel --inputbox " Enter the administrator e-mail" 11 78 --title "Config" 3>&1 1>&2 2>&3) fi webserv=$(whiptail --title "Select Webserver" --radiolist "WebServer" 11 74 5 "${webservers[@]}" 3>&1 1>&2 2>&3) esws=$? [[ "$esws" = 1 ]] && msg " Quiting installer" && exit; fi if [ $IMODE = l ]; then echo "" >/dev/null if [ $TestMode = 0 ]; then echo "Enter the domain without WWW:" read domain while true; do read -p "Does www.${domain} exist in DNS -> yes/no?" yn case $yn in [Yy]* ) domainwww=1 break;; [Nn]* ) domainwww=0 break;; * ) echo "Choose yes or no.";; esac done read -p "Set sitename to ${domain//./_}? (y/n)" choice case "$choice" in y*|Y* ) sitename=${domain//./_};; n*|N* ) echo ""; while true; do echo "Please enter sitename, Must NOT contain special characters, except: _";read sitename if [[ $sitename == *['!'@#\$%^\&*()+,.]* ]] || [ -z "$sitename" ] then echo "Site can't be empty, or contain a special character except for: _" else break fi done ;; * ) echo "invalid";; esac while true; do LegacyHostnameQuest if [[ "$hostname" == "$domain" ]] || [ -z "$hostname" ] then echo "Hostname can't be empty, or be the same as the domain" else break fi done while true; do read -p "Enable SSL on installation? -> yes/no?" yn case $yn in [Yy]* ) sslenable=1 break;; [Nn]* ) sslenable=0 break;; * ) echo "Choose yes or no.";; esac done LegacyPasswordQuest echo "Administrator E-mail:" read email fi echo "Select Webserver:" select webserv in "${webservers[@]}"; do case $webserv in "Quit") exit ;; "") echo 'Invalid choice' >&2 ;; *) break esac done fi webserv="${webserv//:}" && webserv="${webserv,,}" #Setting Menulist to webserver declare -n CMSL="$webserv"CMSL declare -n options="$webserv"Options #Generating APT-List for webserver if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/generic/generic.pkg.list; then curl --silent --show-error "$repo"/raw/"$branchtype"/"$branch"/CoreModules/generic/generic.pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/generic/"$PKGLIST".pkg.list; then curl --silent --show-error "$repo"/raw/"$branchtype"/"$branch"/CoreModules/generic/"$PKGLIST".pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/generic.pkg.list; then curl --silent --show-error "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/generic.pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/"$PKGLIST".pkg.list; then curl --silent --show-error "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/"$PKGLIST".pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi ##-----------------## # Storeing vars # ##-----------------## mkdir -p /etc/ICTM/sites echo "InstDate=$(date "+%d-%B-%Y")" >> /etc/ICTM/mainvar.list for storeme in PKGM PKGI PKGUC PKGUP PKGLIST OUTPUT IMODE shortdist repo branch branchtype webserv email shortdist hostname CompatVer; do declare -p $storeme | cut -d ' ' -f 3- >> /etc/ICTM/mainvar.list done touch /etc/ICTM/sites/"$sitename" ##----------## # Addons # ##----------## ##DisableOPtionMenu if [ $IMODE = n ]; then option=$(whiptail --nocancel --title "Additional modules" --checklist "Features" 11 74 5 "${options[@]}" 3>&1 1>&2 2>&3) fi if [ $IMODE = l ]; then choice () { local choice=$1 if [[ ${opts[choice]} ]] # toggle then opts[choice]= topt=${opt//+/} topt="${topt%"${topt##*[![:space:]]}"}" topt=\"$topt\" option=${option//"$topt"/} unset topt else opts[choice]=+ opt="${opt%"${opt##*[![:space:]]}"}" option+="\"$opt\" " fi } PS3='Which addons should be installed?' while : do echo "" unset options2 unset OPTcounter for E in "${options[@]}"; do ((OPTcounter++)) options2+=("${E} ${opts["$OPTcounter"]}") done options2+=("Done") select opt in "${options2[@]}" do case $opt in "Done") break 2;; "") printf '%s\n' 'invalid option';; *) choice $REPLY break ;; esac done done option="${option%"${option##*[![:space:]]}"}" fi #saving selected modules echo 'SelectedOptions=('$option')' > /etc/ICTM/selopts.list #Cleaning options from menu option="${option,,}" && option="${option// /}" && option="${option//:/ }" && option="${option//'"'}" #enableing modules wanted by webserver if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/reqmodules.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/reqmodules.sh) fi #saving enabled Allways on modules echo 'EnabledAons=('$aonoption')' >> /etc/ICTM/selopts.list #Combining selected option with always-on options option="$option""$aonoption" #Generating APT-list options for val1 in ${option[*]}; do modListed=$(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/extModules.list|grep "$val1") #Checking if test -z "$modListed" then #Fetching from local repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/generic.pkg.list; then curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/generic.pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$webserv"-generic.pkg.list; then curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$webserv"-generic.pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$PKGLIST".pkg.list; then curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$PKGLIST".pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$webserv"-"$PKGLIST".pkg.list; then curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$webserv"-"$PKGLIST".pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi else #Fetching from remote repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed"generic.pkg.list; then curl --retry 7 --retry-delay 5 -s "$modListed"generic.pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed""$webserv"-generic.pkg.list; then curl "$modListed""$webserv"-generic.pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed""$PKGLIST".pkg.list; then curl --retry 7 --retry-delay 5 -s "$modListed""$PKGLIST".pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed""$webserv"-"$PKGLIST".pkg.list; then curl "$modListed""$webserv""$PKGLIST".pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi fi done ##-------## # CMS # ##-------## if [ $IMODE = n ]; then function CMSM { CMS=$(whiptail --nocancel --title "What CMS should be installed?" --radiolist "Features" 11 118 5 "${CMSL[@]}" 3>&1 1>&2 2>&3) if [ -z $CMS ]; then CMSM; fi } CMSM fi if [ $IMODE = l ]; then echo "What CMS should be installed?" #CMSPromt select CMS in "${CMSL[@]}"; do case CMS in "") echo 'Invalid choice' >&2 ;; *) break esac done fi CMS="${CMS//:}" && CMS="${CMS,,}" #Generating APT-List CMS if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/generic.pkg.list; then curl -s "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/generic.pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$webserv"-generic.pkg.list; then curl -s "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$webserv"-generic.pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$PKGLIST".pkg.list; then curl -s "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$PKGLIST".pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$webserv"-"$PKGLIST".pkg.list; then curl -s "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$webserv"-"$PKGLIST".pkg.list >>/tmp/pkg.list printf " " >>/tmp/pkg.list fi ##-------------------## # Pre-configuring # ##-------------------## msg " Pre-configuring" #Generic Pre-Conf source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CoreModules/generic/preconf.sh) #Generic WebServer if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/preconf.sh) fi #Preconfiguring for Modules for val1 in ${option[*]}; do msg "Pre-configuring $val1" modListed=$(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/extModules.list|grep "$val1") #Checking if test -z "$modListed" then #Fetching from local repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/preconf.sh) fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$webserv"-preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$webserv"-preconf.sh) fi else #Fetching from remote repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed"preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$modListed"preconf.sh) fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed""$webserv"-preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$modListed""$webserv"-preconf.sh) fi fi done #Preconfiguring CMS if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/preconf.sh) fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$webserv"-preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$webserv"-preconf.sh) fi #Preconfiguring module For CMS for val1 in ${option[*]}; do modListed=$(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/extModules.list|grep "$val1") #Checking if test -z "$modListed" then #Fetching from local repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/CMSHook-preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/CMSHook-preconf.sh) fi else #Fetching from remote repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed"CMSHook-preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$modListed"CMSHook-preconf.sh) fi fi done #Saving updated vars for storeme in phpver sqlver PHPMyadmin; do declare -p $storeme | cut -d ' ' -f 3- >> /etc/ICTM/mainvar.list done ##-------------## # Installer # ##-------------## $PKGM update -y sed -i 's/PHPprefix/'$phpPkgName'/g' /tmp/pkg.list cat /tmp/pkg.list | xargs $PKGI ##---------------## # Configuring # ##---------------## msg " Configuring" #Configuring Generic source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CoreModules/generic/conf.sh) #Configuring WebServer if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/conf.sh) fi #Configuring Options for val1 in ${option[*]}; do msg "Configuring $val1" modListed=$(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/extModules.list|grep "$val1") #Checking if test -z "$modListed" then #Fetching from local repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/conf.sh) fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$webserv"-conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/"$webserv"-conf.sh) fi else #Fetching from remote repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed"conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$modListed"conf.sh) fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed""$webserv"-conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$modListed""$webserv"-conf.sh) fi fi done if [ $sslenable = 1 ]; then msg " Setting up SSL" 8 78 if [ $webserv = nginx_nonphp ]; then certwebserv=nginx else certwebserv=$webserv fi if [ $domainwww = 1 ]; then /opt/acmesh/acme.sh --config-home '/etc/acmesh/data' --issue --"$certwebserv" --ocsp --keylength 'ec-384' -d "$domain" -d "www.$domain" > $OUTPUT 2>&1 certsatus=$? elif [ $domainwww = 0 ]; then /opt/acmesh/acme.sh --config-home '/etc/acmesh/data' --issue --"$certwebserv" --ocsp --keylength 'ec-384' -d "$domain" > $OUTPUT 2>&1 certsatus=$? fi if test $certsatus -eq 0 then site_ext="ssl" mkdir -p /etc/acmesh/inst/$domain /opt/acmesh/acme.sh --config-home '/etc/acmesh/data' --install-cert --ecc --domain $domain --cert-file /etc/acmesh/inst/$domain/cert.pem --key-file /etc/acmesh/inst/$domain/key.pem --ca-file /etc/acmesh/inst/$domain/ca.cer --fullchain-file /etc/acmesh/inst/$domain/fullchain.pem --reloadcmd 'systemctl reload $(cat /etc/ICTM/SslServices)' else site_ext="nossl" rm -rf /etc/acmesh/certs/$domain* fi unset certsatus /opt/acmesh/acme.sh --config-home '/etc/acmesh/data' --issue --"$certwebserv" --ocsp --keylength 'ec-384' -d "$hostname" > $OUTPUT 2>&1 certsatusBackend=$? if test $certsatusBackend -eq 0 then siteBackend_ext="ssl" mkdir -p /etc/acmesh/inst/$hostname /opt/acmesh/acme.sh --config-home '/etc/acmesh/data' --install-cert --ecc --domain $hostname --cert-file /etc/acmesh/inst/$hostname/cert.pem --key-file /etc/acmesh/inst/$hostname/key.pem --ca-file /etc/acmesh/inst/$hostname/ca.cer --fullchain-file /etc/acmesh/inst/$hostname/fullchain.pem --reloadcmd 'systemctl reload $(cat /etc/ICTM/SslServices)' else siteBackend_ext="nossl" rm -rf /etc/acmesh/certs/$hostname* fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/ssl-handler.sh; then sslfr=1 source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/ssl-handler.sh) fi elif [ $sslenable = 0 ]; then site_ext=nossl siteBackend_ext=nossl fi if [ $site_ext = nossl ]; then curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/Scripts/EnableSSL.sh -o ~/activateSSL-$domain.sh sed -i -e 's/DOMAINname/'$domain'/' -e 's/CONFname/'$sitename'/' -e 's/DomainWWW/'$domainwww'/' -e 's/Email/'$email'/' -e 's/WebServer/'$webserv'/' ~/activateSSL-$domain.sh fi if [ $siteBackend_ext = nossl ]; then if [ -z $disbackendcms ]; then curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/Scripts/EnableSSL.sh -o ~/activateSSL-Backend.sh sed -i -e 's/DOMAINname/'$hostname'/' -e 's/CONFname/'Backend'/' -e 's/DomainWWW/'0'/' -e 's/Email/'$email'/' -e 's/WebServer/'$webserv'/' ~/activateSSL-Backend.sh fi fi msg " Configuring CMS" if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/conf.sh) fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$webserv"-conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CMS/"$CMS"/"$webserv"-conf.sh) fi if [ -z $disbackendcms ]; then if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/Backend/conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CMS/Backend/conf.sh) fi if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CMS/Backend/"$webserv"-conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CMS/Backend/"$webserv"-conf.sh) fi fi #Configuring Module for CMS for val1 in ${option[*]}; do modListed=$(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/extModules.list|grep "$val1") #Checking if test -z "$modListed" then #Fetching from local repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/CMSHook-conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/SubModules/"$val1"/CMSHook-conf.sh) fi else #Fetching from remote repo if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$modListed"CMSHook-conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$modListed"CMSHook-conf.sh) fi fi done ##------------## # Services # ##------------## systemctl reload ssh fail2ban ##-------## # Done # ##-------## msg " Done installing!" if stat --printf='' /etc/update-motd.d/51* 2>/dev/null; then for f in /etc/update-motd.d/51*; do bash $f; done; fi