|
|
@@ -1,10 +1,166 @@
|
|
|
#!/bin/bash
|
|
|
|
|
|
-# Hestia Control Panel - System Health Check Function Library
|
|
|
+# Hestia Control Panel - System Health Check and Repair Function Library
|
|
|
+
|
|
|
+# Read known configuration keys from $HESTIA/conf/defaults/$system.conf
|
|
|
+function read_kv_config_file() {
|
|
|
+ local system=$1
|
|
|
+ while read -r str; do
|
|
|
+ echo "$str"
|
|
|
+ done < <(cat $HESTIA/conf/defaults/$system.conf)
|
|
|
+ unset system
|
|
|
+}
|
|
|
+
|
|
|
+# Write known configuration keys to $HESTIA/conf/defaults/
|
|
|
+function write_kv_config_file() {
|
|
|
+ # Ensure configuration directory exists
|
|
|
+ if [ ! -d "$HESTIA/conf/defaults/" ]; then
|
|
|
+ mkdir "$HESTIA/conf/defaults/"
|
|
|
+ fi
|
|
|
+
|
|
|
+ # Remove previous known good configuration
|
|
|
+ if [ -f "$HESTIA/conf/defaults/$system.conf" ]; then
|
|
|
+ rm -f $HESTIA/conf/defaults/$system.conf
|
|
|
+ fi
|
|
|
+
|
|
|
+ touch $HESTIA/conf/defaults/$system.conf
|
|
|
+
|
|
|
+ for key in ${known_keys[@]}; do
|
|
|
+ echo $key >> $HESTIA/conf/defaults/$system.conf
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+# Sanitize configuration input
|
|
|
+function sanitize_config_file() {
|
|
|
+ local system=$1
|
|
|
+ known_keys=$(read_kv_config_file "$system")
|
|
|
+ for key in $known_keys; do
|
|
|
+ unset $key
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+# Update list of known keys for web.conf files
|
|
|
+function syshealth_update_web_config_format() {
|
|
|
+
|
|
|
+ # WEB DOMAINS
|
|
|
+ # Create array of known keys in configuration file
|
|
|
+ system="web"
|
|
|
+ known_keys=(DOMAIN IP IP6 CUSTOM_DOCROOT CUSTOM_PHPROOT FASTCGI_CACHE FASTCGI_LENGTH ALIAS TPL SSL SSL_FORCE SSL_HOME LETSENCRYPT FTP_USER FTP_MD5 FTP_PATH BACKEND PROXY PROXY_EXT STATS STATS_USER STATS_CRYPT SUSPENDED TIME DATE)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+}
|
|
|
+
|
|
|
+# Update list of known keys for dns.conf files
|
|
|
+function syshealth_update_dns_config_format() {
|
|
|
+
|
|
|
+ # DNS DOMAINS
|
|
|
+ # Create array of known keys in configuration file
|
|
|
+ system="dns"
|
|
|
+ known_keys=(DOMAIN IP TPL TTL EXP SOA SERIAL SRC RECORDS SUSPENDED TIME DATE)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+
|
|
|
+ # DNS RECORDS
|
|
|
+ system="dns_records"
|
|
|
+ known_keys=(ID RECORD TYPE PRIORITY VALUE SUSPENDED TIME DATE TTL)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+}
|
|
|
+
|
|
|
+# Update list of known keys for mail.conf files
|
|
|
+function syshealth_update_mail_config_format() {
|
|
|
+
|
|
|
+ # MAIL DOMAINS
|
|
|
+ # Create array of known keys in configuration file
|
|
|
+ system="mail"
|
|
|
+ known_keys=(DOMAIN ANTIVIRUS ANTISPAM DKIM WEBMAIL SSL LETSENCRYPT CATCHALL ACCOUNTS U_DISK SUSPENDED TIME DATE)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+
|
|
|
+ # MAIL ACCOUNTS
|
|
|
+ system="mail_accounts"
|
|
|
+ known_keys=(ACCOUNT ALIAS AUTOREPLY FWD FWD_ONLY MD5 QUOTA U_DISK SUSPENDED TIME DATE)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+}
|
|
|
+
|
|
|
+# Update list of known keys for user.conf files
|
|
|
+function syshealth_update_user_config_format() {
|
|
|
+
|
|
|
+ # USER CONFIGURATION
|
|
|
+ # Create array of known keys in configuration file
|
|
|
+ system="user"
|
|
|
+ known_keys=(NAME PACKAGE CONTACT CRON_REPORTS MD5 RKEY TWOFA QRCODE PHPCLI ROLE SUSPENDED SUSPENDED_USERS SUSPENDED_WEB SUSPENDED_DNS SUSPENDED_MAIL SUSPENDED_DB SUSPENDED_CRON IP_AVAIL IP_OWNED U_USERS U_DISK U_DISK_DIRS U_DISK_WEB U_DISK_MAIL U_DISK_DB U_BANDWIDTH U_WEB_DOMAINS U_WEB_SSL U_WEB_ALIASES U_DNS_DOMAINS U_DNS_RECORDS U_MAIL_DKIM U_MAIL_DKIM U_MAIL_ACCOUNTS U_MAIL_DOMAINS U_MAIL_SSL U_DATABASES U_CRON_JOBS U_BACKUPS LANGUAGE NOTIFICATIONS TIME DATE)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+
|
|
|
+ # CRON JOB CONFIGURATION
|
|
|
+ # Create array of known keys in configuration file
|
|
|
+ system="cron"
|
|
|
+ known_keys=(JOB MIN HOUR DAY MONTH WDAY CMD SUSPENDED TIME DATE)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+}
|
|
|
+
|
|
|
+# Update list of known keys for db.conf files
|
|
|
+function syshealth_update_db_config_format() {
|
|
|
+
|
|
|
+ # DATABASE CONFIGURATION
|
|
|
+ # Create array of known keys in configuration file
|
|
|
+ system="db"
|
|
|
+ known_keys=(DB DBUSER MD5 HOST TYPE CHARSET U_DISK SUSPENDED TIME DATE)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+}
|
|
|
+
|
|
|
+# Update list of known keys for ip.conf files
|
|
|
+function syshealth_update_ip_config_format() {
|
|
|
+
|
|
|
+ # IP ADDRESS
|
|
|
+ # Create array of known keys in configuration file
|
|
|
+ system="ip"
|
|
|
+ known_keys=(OWNER STATUS NAME U_SYS_USERS U_WEB_DOMAINS INTERFACE NETMASK NAT HELO TIME DATE)
|
|
|
+ write_kv_config_file
|
|
|
+ unset system
|
|
|
+ unset known_keys
|
|
|
+}
|
|
|
+
|
|
|
+# Repair web domain configuration
|
|
|
+function syshealth_repair_web_config() {
|
|
|
+ system="web"
|
|
|
+ sanitize_config_file "$system"
|
|
|
+ get_domain_values 'web'
|
|
|
+ prev="DOMAIN"
|
|
|
+ for key in $known_keys; do
|
|
|
+ if [ -z "${!key}" ]; then
|
|
|
+ add_object_key 'web' 'DOMAIN' "$domain" "$key" "$prev"
|
|
|
+ fi
|
|
|
+ prev=$key
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+function syshealth_restore_system_installed_config() {
|
|
|
+ if [ -f "$HESTIA/conf/defaults/hestia.conf" ]; then
|
|
|
+ mv $HESTIA/conf/hestia.conf $HESTIA/conf/hestia.conf.old
|
|
|
+ cp $HESTIA/conf/defaults/hestia.conf $HESTIA/conf/hestia.conf
|
|
|
+ rm -f $HESTIA/conf/hestia.conf.old
|
|
|
+ else
|
|
|
+ echo "ERROR: System default configuration file not found, aborting."
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+}
|
|
|
|
|
|
# Repair System Configuration
|
|
|
# Adds missing variables to $HESTIA/conf/hestia.conf with safe default values
|
|
|
-function syshealth_repair_system_config () {
|
|
|
+function syshealth_repair_system_config() {
|
|
|
# Release branch
|
|
|
if [ -z "$RELEASE_BRANCH" ]; then
|
|
|
echo "[ ! ] Adding missing variable to hestia.conf: RELEASE_BRANCH ('release')"
|
|
|
@@ -37,8 +193,8 @@ function syshealth_repair_system_config () {
|
|
|
|
|
|
# Backup compression level
|
|
|
if [ -z "$BACKUP_GZIP" ]; then
|
|
|
- echo "[ ! ] Adding missing variable to hestia.conf: BACKUP_GZIP ('9')"
|
|
|
- $BIN/v-change-sys-config-value 'BACKUP_GZIP' '9'
|
|
|
+ echo "[ ! ] Adding missing variable to hestia.conf: BACKUP_GZIP ('4')"
|
|
|
+ $BIN/v-change-sys-config-value 'BACKUP_GZIP' '4'
|
|
|
fi
|
|
|
|
|
|
# Theme
|