@@ -149,6 +149,26 @@ set_default_port() {
149149 fi
150150}
151151
152+ # Write configuration KEY/VALUE pair to $HESTIA/conf/hestia.conf
153+ write_config_value () {
154+ local key=" $1 "
155+ local value=" $2 "
156+ echo " $key ='$value '" >> $HESTIA /conf/hestia.conf
157+ }
158+
159+ # Sort configuration file values
160+ # Write final copy to $HESTIA/conf/hestia.conf for active usage
161+ # Duplicate file to $HESTIA/conf/defaults/hestia.conf to restore known good installation values
162+ sort_config_file (){
163+ sort $HESTIA /conf/hestia.conf -o /tmp/updconf
164+ mv $HESTIA /conf/hestia.conf $HESTIA /conf/hestia.conf.bak
165+ mv /tmp/updconf $HESTIA /conf/hestia.conf
166+ rm -f $HESTIA /conf/hestia.conf.bak
167+ if [ ! -d " $HESTIA /conf/defaults/" ]; then
168+ mkdir -p " $HESTIA /conf/defaults/"
169+ fi
170+ cp $HESTIA /conf/hestia.conf $HESTIA /conf/defaults/hestia.conf
171+ }
152172
153173# ----------------------------------------------------------#
154174# Verifications #
@@ -981,39 +1001,39 @@ chmod 660 $HESTIA/conf/hestia.conf
9811001
9821002# Web stack
9831003if [ " $apache " = ' yes' ] && [ " $nginx " = ' no' ] ; then
984- echo " WEB_SYSTEM='apache2' " >> $HESTIA /conf/hestia.conf
985- echo " WEB_RGROUPS=' www-data' " >> $HESTIA /conf/hestia.conf
986- echo " WEB_PORT='80' " >> $HESTIA /conf/hestia.conf
987- echo " WEB_SSL_PORT='443' " >> $HESTIA /conf/hestia.conf
988- echo " WEB_SSL='mod_ssl' " >> $HESTIA /conf/hestia.conf
989- echo " STATS_SYSTEM='awstats' " >> $HESTIA /conf/hestia.conf
1004+ write_config_value " WEB_SYSTEM" " apache2 "
1005+ write_config_value " WEB_RGROUPS" " www-data"
1006+ write_config_value " WEB_PORT" " 80 "
1007+ write_config_value " WEB_SSL_PORT" " 443 "
1008+ write_config_value " WEB_SSL" " mod_ssl "
1009+ write_config_value " STATS_SYSTEM" " awstats "
9901010fi
9911011if [ " $apache " = ' yes' ] && [ " $nginx " = ' yes' ] ; then
992- echo " WEB_SYSTEM='apache2' " >> $HESTIA /conf/hestia.conf
993- echo " WEB_RGROUPS=' www-data' " >> $HESTIA /conf/hestia.conf
994- echo " WEB_PORT='8080' " >> $HESTIA /conf/hestia.conf
995- echo " WEB_SSL_PORT='8443' " >> $HESTIA /conf/hestia.conf
996- echo " WEB_SSL='mod_ssl' " >> $HESTIA /conf/hestia.conf
997- echo " PROXY_SYSTEM='nginx' " >> $HESTIA /conf/hestia.conf
998- echo " PROXY_PORT='80' " >> $HESTIA /conf/hestia.conf
999- echo " PROXY_SSL_PORT='443' " >> $HESTIA /conf/hestia.conf
1000- echo " STATS_SYSTEM='awstats' " >> $HESTIA /conf/hestia.conf
1012+ write_config_value " WEB_SYSTEM" " apache2 "
1013+ write_config_value " WEB_RGROUPS" " www-data"
1014+ write_config_value " WEB_PORT" " 8080 "
1015+ write_config_value " WEB_SSL_PORT" " 8443 "
1016+ write_config_value " WEB_SSL" " mod_ssl "
1017+ write_config_value " PROXY_SYSTEM" " nginx "
1018+ write_config_value " PROXY_PORT" " 80 "
1019+ write_config_value " PROXY_SSL_PORT" " 443 "
1020+ write_config_value " STATS_SYSTEM" " awstats "
10011021fi
10021022if [ " $apache " = ' no' ] && [ " $nginx " = ' yes' ]; then
1003- echo " WEB_SYSTEM='nginx' " >> $HESTIA /conf/hestia.conf
1004- echo " WEB_PORT='80' " >> $HESTIA /conf/hestia.conf
1005- echo " WEB_SSL_PORT='443' " >> $HESTIA /conf/hestia.conf
1006- echo " WEB_SSL='openssl' " >> $HESTIA /conf/hestia.conf
1007- echo " STATS_SYSTEM='awstats' " >> $HESTIA /conf/hestia.conf
1023+ write_config_value " WEB_SYSTEM" " nginx "
1024+ write_config_value " WEB_PORT" " 80 "
1025+ write_config_value " WEB_SSL_PORT" " 443 "
1026+ write_config_value " WEB_SSL" " openssl "
1027+ write_config_value " STATS_SYSTEM" " awstats "
10081028fi
10091029
10101030if [ " $release " -ge 9 ] || [ " $multiphp " = ' yes' ]; then
10111031 if [ " $phpfpm " = ' yes' ]; then
1012- echo " WEB_BACKEND=' php-fpm' " >> $HESTIA /conf/hestia.conf
1032+ write_config_value " WEB_BACKEND" " php-fpm"
10131033 fi
10141034else
10151035 if [ " $phpfpm " = ' yes' ]; then
1016- echo " WEB_BACKEND=' php5-fpm' " >> $HESTIA /conf/hestia.conf
1036+ write_config_value " WEB_BACKEND" " php5-fpm"
10171037 fi
10181038fi
10191039
@@ -1032,81 +1052,81 @@ if [ ! -z "$installed_db_types" ]; then
10321052 sort -r -u | \
10331053 sed " /^$/d" | \
10341054 sed ' :a;N;$!ba;s/\n/,/g' )
1035- echo " DB_SYSTEM=' $db ' " >> $HESTIA /conf/hestia.conf
1055+ write_config_value " DB_SYSTEM" " $db "
10361056fi
10371057
10381058# FTP stack
10391059if [ " $vsftpd " = ' yes' ]; then
1040- echo " FTP_SYSTEM='vsftpd' " >> $HESTIA /conf/hestia.conf
1060+ write_config_value " FTP_SYSTEM" " vsftpd "
10411061fi
10421062if [ " $proftpd " = ' yes' ]; then
1043- echo " FTP_SYSTEM='proftpd' " >> $HESTIA /conf/hestia.conf
1063+ write_config_value " FTP_SYSTEM" " proftpd "
10441064fi
10451065
10461066# DNS stack
10471067if [ " $named " = ' yes' ]; then
1048- echo " DNS_SYSTEM='bind9' " >> $HESTIA /conf/hestia.conf
1068+ write_config_value " DNS_SYSTEM" " bind9 "
10491069fi
10501070
10511071# Mail stack
10521072if [ " $exim " = ' yes' ]; then
1053- echo " MAIL_SYSTEM='exim4' " >> $HESTIA /conf/hestia.conf
1073+ write_config_value " MAIL_SYSTEM" " exim4 "
10541074 if [ " $clamd " = ' yes' ]; then
1055- echo " ANTIVIRUS_SYSTEM=' clamav-daemon' " >> $HESTIA /conf/hestia.conf
1075+ write_config_value " ANTIVIRUS_SYSTEM" " clamav-daemon"
10561076 fi
10571077 if [ " $spamd " = ' yes' ]; then
1058- echo " ANTISPAM_SYSTEM='spamassassin' " >> $HESTIA /conf/hestia.conf
1078+ write_config_value " ANTISPAM_SYSTEM" " spamassassin "
10591079 fi
10601080 if [ " $dovecot " = ' yes' ]; then
1061- echo " IMAP_SYSTEM='dovecot' " >> $HESTIA /conf/hestia.conf
1081+ write_config_value " IMAP_SYSTEM" " dovecot "
10621082 fi
10631083fi
10641084
10651085# Cron daemon
1066- echo " CRON_SYSTEM='cron' " >> $HESTIA /conf/hestia.conf
1086+ write_config_value " CRON_SYSTEM" " cron "
10671087
10681088# Firewall stack
10691089if [ " $iptables " = ' yes' ]; then
1070- echo " FIREWALL_SYSTEM='iptables' " >> $HESTIA /conf/hestia.conf
1090+ write_config_value " FIREWALL_SYSTEM" " iptables "
10711091fi
10721092if [ " $iptables " = ' yes' ] && [ " $fail2ban " = ' yes' ]; then
1073- echo " FIREWALL_EXTENSION='fail2ban' " >> $HESTIA /conf/hestia.conf
1093+ write_config_value " FIREWALL_EXTENSION" " fail2ban "
10741094fi
10751095
10761096# Disk quota
10771097if [ " $quota " = ' yes' ]; then
1078- echo " DISK_QUOTA='yes' " >> $HESTIA /conf/hestia.conf
1098+ write_config_value " DISK_QUOTA" " yes "
10791099else
1080- echo " DISK_QUOTA='no' " >> $HESTIA /conf/hestia.conf
1100+ write_config_value " DISK_QUOTA" " no "
10811101fi
10821102
10831103# Backups
1084- echo " BACKUP_SYSTEM='local' " >> $HESTIA /conf/hestia.conf
1085- echo " BACKUP_GZIP='4' " >> $HESTIA /conf/hestia.conf
1086- echo " BACKUP_MODE='zstd' " >> $HESTIA /conf/hestia.conf
1104+ write_config_value " BACKUP_SYSTEM" " local "
1105+ write_config_value " BACKUP_GZIP" " 4 "
1106+ write_config_value " BACKUP_MODE" " zstd "
10871107
10881108# Language
1089- echo " LANGUAGE=' $lang ' " >> $HESTIA /conf/hestia.conf
1109+ write_config_value " LANGUAGE" " $lang "
10901110
10911111# Login in screen
1092- echo " LOGIN_STYLE='default' " >> $HESTIA /conf/hestia.conf
1112+ write_config_value " LOGIN_STYLE" " default "
10931113
10941114# Theme
1095- echo " THEME='dark' " >> $HESTIA /conf/hestia.conf
1115+ write_config_value " THEME" " dark "
10961116
10971117# Inactive session timeout
1098- echo " INACTIVE_SESSION_TIMEOUT='60' " >> $HESTIA /conf/hestia.conf
1118+ write_config_value " INACTIVE_SESSION_TIMEOUT" " 60 "
10991119
11001120# Do not allow users to create subdomains when they don't own the domain
1101- echo " ENFORCE_SUBDOMAIN_OWNERSHIP='yes' " >> $HESTIA /conf/hestia.conf
1121+ write_config_value " ENFORCE_SUBDOMAIN_OWNERSHIP" " yes "
11021122
11031123# Version & Release Branch
1104- echo " VERSION=' ${HESTIA_INSTALL_VER} ' " >> $HESTIA /conf/hestia.conf
1105- echo " RELEASE_BRANCH='release' " >> $HESTIA /conf/hestia.conf
1124+ write_config_value " VERSION" " ${HESTIA_INSTALL_VER} "
1125+ write_config_value " RELEASE_BRANCH" " release "
11061126
11071127# Email notifications after upgrade
1108- echo " UPGRADE_SEND_EMAIL='false' " >> $HESTIA /conf/hestia.conf
1109- echo " UPGRADE_SEND_EMAIL_LOG='true' " >> $HESTIA /conf/hestia.conf
1128+ write_config_value " UPGRADE_SEND_EMAIL" " true "
1129+ write_config_value " UPGRADE_SEND_EMAIL_LOG" " false "
11101130
11111131# Installing hosting packages
11121132cp -rf $HESTIA_INSTALL_DIR /packages $HESTIA /data/
@@ -1419,7 +1439,7 @@ if [ "$mysql" = 'yes' ]; then
14191439 rm -fr phpMyAdmin-$pma_v -all-languages
14201440 rm -f phpMyAdmin-$pma_v -all-languages.tar.gz
14211441
1422- echo " DB_PMA_ALIAS='phpmyadmin' " >> $HESTIA /conf/hestia.conf
1442+ write_config_value " DB_PMA_ALIAS" " phpmyadmin "
14231443 $HESTIA /bin/v-change-sys-db-alias ' pma' " phpmyadmin"
14241444
14251445 # Special thanks to Pavel Galkin (https://skurudo.ru)
@@ -1445,7 +1465,7 @@ if [ "$postgresql" = 'yes' ]; then
14451465 fi
14461466 cp -f $HESTIA_INSTALL_DIR /pga/config.inc.php /etc/phppgadmin/
14471467
1448- echo " DB_PGA_ALIAS='phppgadmin' " >> $HESTIA /conf/hestia.conf
1468+ write_config_value " DB_PGA_ALIAS" " phppgadmin "
14491469 $HESTIA /bin/v-change-sys-db-alias ' pga' " phppgadmin"
14501470fi
14511471
@@ -1637,16 +1657,16 @@ echo "[ * ] Install Roundcube..."
16371657
16381658if [ " $mysql " == ' yes' ] && [ " $dovecot " == " yes" ]; then
16391659 $HESTIA /bin/v-add-sys-roundcube
1640- echo " WEBMAIL_ALIAS='webmail' " >> $HESTIA /conf/hestia.conf
1660+ write_config_value " WEBMAIL_ALIAS" " webmail "
16411661fi
16421662
16431663# ----------------------------------------------------------#
16441664# Configure API #
16451665# ----------------------------------------------------------#
16461666
16471667if [ " $api " = " yes" ]; then
1648- echo " API='yes' " >> $HESTIA /conf/hestia.conf
1649- echo " API_ALLOWED_IP='' " >> $HESTIA /conf/hestia.conf
1668+ write_config_value " API" " yes "
1669+ write_config_value " API_ALLOWED_IP" " "
16501670else
16511671 $HESTIA /bin/v-change-sys-api disable
16521672fi
@@ -1869,4 +1889,8 @@ if [ "$interactive" = 'yes' ]; then
18691889 fi
18701890fi
18711891
1892+ # Clean-up
1893+ # Sort final configuration file
1894+ sort_config_file
1895+
18721896# EOF
0 commit comments