##-----------------## # Fetching Vars # ##-----------------## if [ ! -f "/etc/ICTM/selopts.list" ] || [ ! -f "/etc/ICTM/mainvar.list" ] ; then echo 'This system is not yet setup, please run the main installer first' && exit ; fi if [ ! -f "/etc/ICTM/phpvar.list" ] ; then echo 'Php var list missing,Please run /Scipts/GeneratePhplist from the repo ' && exit ; fi source /etc/ICTM/selopts.list source /etc/ICTM/mainvar.list source /etc/ICTM/phpvar.list rm /tmp/pkg.list > $OUTPUT 2>&1 source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/ModulesMenu.list) #Setting Menulist to webserver declare -n CMSL="$webserv"CMSL declare -n options="$webserv"Options ##----------------## # Static-Vars # ##----------------## ignphpcms=1 ##---------------## # 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 { passdia=$(whiptail --nocancel --passwordbox "Please enter your password (Must be the same as the mysql/root password)" 11 91 --title "Config" 3>&1 1>&2 2>&3) if [ -z $passdia ]; then PasswordQuest; fi mysql -uroot -p"$passdia" -e "" > /dev/null 2>&1 if [ $? = 0 ]; then password="$passdia" unset passdia else whiptail --ok-button Done --msgbox " Password is incorrect!" 10 30 unset passdia PasswordQuest fi } function LegacyPasswordQuest { echo "Enter password (Must be the same as the mysql/root password)" read -s passdia if [ -z $passdia ]; then LegacyPasswordQuest; fi mysql -uroot -p"$passdia" -e "" > /dev/null 2>&1 if [ $? = 0 ]; then password="$passdia" unset passdia else echo "Password is incorrect!" unset passdia LegacyPasswordQuest fi } ##--------## # Menu # ##--------## if [ $IMODE = n ]; then domain=$(whiptail --nocancel --inputbox " Enter the domain without WWW " 11 82 --title "Config" 3>&1 1>&2 2>&3) [[ -d "/var/www/"$domain"/html" ]] && msg " This domain already exists on this server, Exiting" 8 78 && exit; if (whiptail --title "Config" --yesno " Does www.${domain} exist in DNS" 8 78); then domainwww=1; else domainwww=0; fi if (whiptail --title "Set sitename?" --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 78 --title "Sitename" 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 78 else break fi done fi if (whiptail --title "Config" --yesno " Enable SSL on installation?" 11 78); then sslenable=1; else sslenable=0; fi PasswordQuest CMS=$(whiptail --title "What CMS should be installed?" --radiolist "Features" 11 118 5 "${CMSL[@]}" 3>&1 1>&2 2>&3) [[ "$?" = 1 ]] && msg " Quiting installer" 8 78 && exit; fi if [ $IMODE = l ]; then echo "" >/dev/null echo "Enter the domain without WWW:" read domain [[ -d "/var/www/"$domain"/html" ]] && echo " This domain already exists on this server, Exiting" && exit; 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 of 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 read -p "Enable SSL on installation? -> yes/no?" yn case $yn in [Yy]* ) sslenable=1 break;; [Nn]* ) sslenable=0 break;; * ) echo "Choose yes of no.";; esac done LegacyPasswordQuest echo "What CMS should be installed?" #CMSPromt select CMS in "${CMSL[@]}"; do case CMS in "") echo 'Invalid choice' >&2 ;; *) break esac done fi #Cleaning options from menu CMS="${CMS//:}" && CMS="${CMS,,}" ##-----------## # AptList # ##-----------## msg " Generating apt list for 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"/"$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"-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"/"$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 ##-----------## # Preconf # ##-----------## msg " Running preconf for Webserv" if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/appendCMS-preconf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/appendCMS-preconf.sh) fi msg " Running preconf for 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 ##-------------## # Installer # ##-------------## $PKGM update sed -i 's/PHPprefix/'$phpPkgName'/g' /tmp/pkg.list cat /tmp/pkg.list | xargs $PKGI ##---------------## # Configuring # ##---------------## msg " Running conf for Webserv" if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/appendCMS-conf.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/appendCMS-conf.sh) fi if [ $sslenable = 1 ]; then msg " Setting up SSL" if [ $webserv = nginx_nonphp ]; then certwebserv=nginx else certwebserv=$webserv fi site_ext=ssl 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" else site_ext="nossl" rm -rf /etc/acmesh/certs/$domain* fi unset certsatus if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repo"/raw/"$branchtype"/"$branch"/CoreModules/"$webserv"/ssl-handler.sh; then 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 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 msg " Running conf for 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 ##--------------------------## # Backup-util Site Setup # ##--------------------------## repobckutil=https://git.ictmaatwerk.com/VPS-scripts/Backup-Util branchbckutil=master if curl --retry 2 --retry-delay 1 --output /dev/null --silent --head --fail "$repobckutil"/raw/branch/"$branchbckutil"/cms-handeler.sh; then source <(curl --retry 7 --retry-delay 5 -s "$repobckutil"/raw/branch/"$branchbckutil"/cms-handeler.sh) fi ##------------## # Services # ##------------## systemctl reload fail2ban ##-------## # Done # ##-------## msg " Added CMS!" 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