#!/bin/bash # info: list backup exclusions # options: USER [FORMAT] # # example: v-list-user-backup-exclusions admin # # This function for obtaining the backup exclusion list #----------------------------------------------------------# # Variables & Functions # #----------------------------------------------------------# # Argument definition user=$1 format=${2-shell} # Includes # shellcheck source=/etc/hestiacp/hestia.conf source /etc/hestiacp/hestia.conf # shellcheck source=/usr/local/hestia/func/main.sh source $HESTIA/func/main.sh # load config file source_conf "$HESTIA/conf/hestia.conf" # JSON list function json_list() { set -f i=1 echo '{' echo ' "WEB": {' objects=$(echo "${WEB//,/ }" | wc -w) for object in $(echo "${WEB//,/ }"); do j=1 object_keys=$(echo ${object//:/ } | wc -w) for key in $(echo "${object/:/ }"); do if [ "$j" -eq 1 ]; then echo -n " \"${key}\": " if [ "$object_keys" -eq 1 ]; then echo -n '""' fi else echo -n "\"${key//:/,}\"" fi ((j++)) done if [ "$i" -lt "$objects" ]; then echo ',' else echo fi ((i++)) done echo ' },' i=1 echo ' "MAIL": {' objects=$(echo "${MAIL//,/ }" | wc -w) for object in $(echo "${MAIL//,/ }"); do j=1 object_keys=$(echo ${object//:/ } | wc -w) for key in $(echo "${object/:/ }"); do if [ "$j" -eq 1 ]; then echo -n " \"$key\": " if [ "$object_keys" -eq 1 ]; then echo -n '""' fi else echo -n "\"${key//:/,}\"" fi ((j++)) done if [ "$i" -lt "$objects" ]; then echo ',' else echo fi ((i++)) done echo ' },' i=1 echo ' "DB": {' objects=$(echo "${DB//,/ }" | wc -w) for object in $(echo "${DB//,/ }"); do j=1 object_keys=$(echo ${object//:/ } | wc -w) for key in $(echo "${object/:/ }"); do if [ "$j" -eq 1 ]; then echo -n " \"$key\": " if [ "$object_keys" -eq 1 ]; then echo -n '""' fi else echo -n "\"${key//:/,}\"" fi ((j++)) done if [ "$i" -lt "$objects" ]; then echo ',' else echo fi ((i++)) done echo ' },' i=1 echo ' "USER": {' objects=$(echo "${USER//,/ }" | wc -w) for object in $(echo "${USER//,/ }"); do j=1 object_keys=$(echo ${object//:/ } | wc -w) for key in $(echo "${object/:/ }"); do if [ "$j" -eq 1 ]; then echo -n " \"$key\": " if [ "$object_keys" -eq 1 ]; then echo -n '""' fi else echo -n "\"${key//:/,}\"" fi ((j++)) done if [ "$i" -lt "$objects" ]; then echo ',' else echo fi ((i++)) done echo ' }' echo '}' } # SHELL list function shell_list() { echo "WEB: $WEB" echo "MAIL: $MAIL" echo "DB: $DB" echo "USER DIRS: $USER" } # PLAIN list function plain_list() { echo "$WEB\t$MAIL\t$DB\t$USER" } # CSV list function csv_list() { echo "WEB,MAIL,DB,USER" echo "\"$WEB\",\"$MAIL\",\"$DB\",\"$USER\"" } #----------------------------------------------------------# # Verifications # #----------------------------------------------------------# check_args '1' "$#" 'USER [FORMAT]' is_format_valid 'user' is_object_valid 'user' 'USER' "$user" #----------------------------------------------------------# # Action # #----------------------------------------------------------# # Flushing variables WEB='' MAIL='' DB='' USER='' # Parsing backup exclusion list if [ -e "$USER_DATA/backup-excludes.conf" ]; then source_conf "$USER_DATA/backup-excludes.conf" fi # Listing data case $format in json) json_list ;; plain) plain_list ;; csv) csv_list ;; shell) shell_list ;; esac #----------------------------------------------------------# # Hestia # #----------------------------------------------------------# exit