You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							143 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
	
	
							143 lines
						
					
					
						
							3.3 KiB
						
					
					
				#!/bin/bash
 | 
						|
# info: list backup host
 | 
						|
# options: TYPE [FORMAT]
 | 
						|
#
 | 
						|
# example: v-list-backup-host local
 | 
						|
#
 | 
						|
# This function for obtaining the list of backup host parameters.
 | 
						|
 | 
						|
#----------------------------------------------------------#
 | 
						|
#                Variables & Functions                     #
 | 
						|
#----------------------------------------------------------#
 | 
						|
 | 
						|
# Argument definition
 | 
						|
type=$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() {
 | 
						|
	case $type in
 | 
						|
		'sftp' | 'ftp' | 'rclone')
 | 
						|
			echo '{'
 | 
						|
			echo '    "'$type'": {
 | 
						|
        "HOST": "'$HOST'",
 | 
						|
        "USERNAME": "'$USERNAME'",
 | 
						|
        "PORT": "'$PORT'",
 | 
						|
        "TYPE": "'$type'",
 | 
						|
        "BPATH": "'$BPATH'",
 | 
						|
        "TIME": "'$TIME'",
 | 
						|
        "DATE": "'$DATE'"
 | 
						|
    }'
 | 
						|
			echo '}'
 | 
						|
			;;
 | 
						|
		'b2')
 | 
						|
			echo '{'
 | 
						|
			echo '    "'$type'": {
 | 
						|
         "BUCKET": "'$BUCKET'",
 | 
						|
         "TYPE": "'$type'",
 | 
						|
         "B2_KEY_ID": "'$B2_KEYID'",
 | 
						|
         "TIME": "'$TIME'",
 | 
						|
         "DATE": "'$DATE'"
 | 
						|
     }'
 | 
						|
			echo '}'
 | 
						|
			;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
# SHELL list function
 | 
						|
shell_list() {
 | 
						|
	case $type in
 | 
						|
		'sftp' | 'ftp' | 'rclone')
 | 
						|
			echo "HOST:           $HOST"
 | 
						|
			echo "USERNAME:       $USERNAME"
 | 
						|
			echo "PORT:           $PORT"
 | 
						|
			echo "TYPE:           $type"
 | 
						|
			echo "PATH:           $BPATH"
 | 
						|
			echo "TIME:           $TIME"
 | 
						|
			echo "DATE:           $DATE"
 | 
						|
			;;
 | 
						|
		'b2')
 | 
						|
			echo "BUCKET          $BUCKET"
 | 
						|
			echo "TYPE            $type"
 | 
						|
			echo "B2_KEY_ID       $B2_KEYID"
 | 
						|
			echo "TIME:           $TIME"
 | 
						|
			echo "DATE:           $DATE"
 | 
						|
			;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
# PLAIN list function
 | 
						|
plain_list() {
 | 
						|
	case $type in
 | 
						|
		'sftp' | 'ftp' | 'rclone')
 | 
						|
			echo -e "$HOST\t$USERNAME\t$PORT\t$type\t$BPATH\t$TIME\t$DATE"
 | 
						|
			;;
 | 
						|
		'b2')
 | 
						|
			echo -e "$BUCKET\t$type\t$B2_KEYID\t$TIME\t$DATE"
 | 
						|
			;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
# CSV list function
 | 
						|
csv_list() {
 | 
						|
	case $type in
 | 
						|
		'sftp' | 'ftp' | 'rclone')
 | 
						|
			echo "HOST,USERNAME,PORT,TYPE,PATH,TIME,DATE"
 | 
						|
			echo "$HOST,$USERNAME,$PORT,$type,$BPATH,$TIME,$DATE"
 | 
						|
			;;
 | 
						|
		'b2')
 | 
						|
			echo "BUCKET,TYPE,B2_KEYID,TIME,DATE"
 | 
						|
			echo "$BUCKET,$type,$B2_KEYID,$TIME,$DATE"
 | 
						|
			;;
 | 
						|
	esac
 | 
						|
}
 | 
						|
 | 
						|
# Type format validator
 | 
						|
is_type_format_valid() {
 | 
						|
	exclude="[!|#|$|^|&|(|)|+|=|{|}|:|@|<|>|?|/|\|\"|'|;|%|\`| ]|\."
 | 
						|
	if [[ "$1" =~ $exclude ]]; then
 | 
						|
		check_result "$E_INVALID" "invalid type extention format :: $1"
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
#----------------------------------------------------------#
 | 
						|
#                    Verifications                         #
 | 
						|
#----------------------------------------------------------#
 | 
						|
 | 
						|
check_args '1' "$#" 'TYPE [FORMAT]'
 | 
						|
is_common_format_valid $type "type"
 | 
						|
 | 
						|
#----------------------------------------------------------#
 | 
						|
#                       Action                             #
 | 
						|
#----------------------------------------------------------#
 | 
						|
 | 
						|
# Checking backup config
 | 
						|
if [ ! -e "$HESTIA/conf/$type.backup.conf" ]; then
 | 
						|
	exit
 | 
						|
fi
 | 
						|
 | 
						|
# Parsing backup config
 | 
						|
source_conf "$HESTIA/conf/$type.backup.conf"
 | 
						|
 | 
						|
# Listing data
 | 
						|
case $format in
 | 
						|
	json) json_list ;;
 | 
						|
	plain) plain_list ;;
 | 
						|
	csv) csv_list ;;
 | 
						|
	shell) shell_list | column -t ;;
 | 
						|
esac
 | 
						|
 | 
						|
#----------------------------------------------------------#
 | 
						|
#                       Hestia                             #
 | 
						|
#----------------------------------------------------------#
 | 
						|
 | 
						|
exit
 |