v-list-user-backup-exclusions 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. #!/bin/bash
  2. # info: list backup exclusions
  3. # options: USER [FORMAT]
  4. #
  5. # The function for obtaining the backup exclusion list
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. user=$1
  11. format=${2-shell}
  12. # Includes
  13. source $VESTA/func/main.sh
  14. # JSON list function
  15. json_list() {
  16. set -f
  17. i=1
  18. echo '{'
  19. echo ' "WEB": {'
  20. objects=$(echo "${WEB//,/ }" |wc -w)
  21. for object in $(echo "${WEB//,/ }"); do
  22. j=1
  23. object_keys=$(echo ${object//:/ } |wc -w)
  24. for key in $(echo "${object/:/ }"); do
  25. if [ "$j" -eq 1 ]; then
  26. echo -n " \"${key}\": "
  27. if [ "$object_keys" -eq 1 ]; then
  28. echo -n '""'
  29. fi
  30. else
  31. echo -n "\"${key//:/,}\""
  32. fi
  33. ((j++))
  34. done
  35. if [ "$i" -lt "$objects" ]; then
  36. echo ','
  37. else
  38. echo
  39. fi
  40. ((i++))
  41. done
  42. echo ' },'
  43. i=1
  44. echo ' "MAIL": {'
  45. objects=$(echo "${MAIL//,/ }" |wc -w)
  46. for object in $(echo "${MAIL//,/ }"); do
  47. j=1
  48. object_keys=$(echo ${object//:/ } |wc -w)
  49. for key in $(echo "${object/:/ }"); do
  50. if [ "$j" -eq 1 ]; then
  51. echo -n " \"$key\": "
  52. if [ "$object_keys" -eq 1 ]; then
  53. echo -n '""'
  54. fi
  55. else
  56. echo -n "\"${key//:/,}\""
  57. fi
  58. ((j++))
  59. done
  60. if [ "$i" -lt "$objects" ]; then
  61. echo ','
  62. else
  63. echo
  64. fi
  65. ((i++))
  66. done
  67. echo ' },'
  68. i=1
  69. echo ' "DB": {'
  70. objects=$(echo "${DB//,/ }" |wc -w)
  71. for object in $(echo "${DB//,/ }"); do
  72. j=1
  73. object_keys=$(echo ${object//:/ } |wc -w)
  74. for key in $(echo "${object/:/ }"); do
  75. if [ "$j" -eq 1 ]; then
  76. echo -n " \"$key\": "
  77. if [ "$object_keys" -eq 1 ]; then
  78. echo -n '""'
  79. fi
  80. else
  81. echo -n "\"${key//:/,}\""
  82. fi
  83. ((j++))
  84. done
  85. if [ "$i" -lt "$objects" ]; then
  86. echo ','
  87. else
  88. echo
  89. fi
  90. ((i++))
  91. done
  92. echo ' },'
  93. i=1
  94. echo ' "USER": {'
  95. objects=$(echo "${USER//,/ }" |wc -w)
  96. for object in $(echo "${USER//,/ }"); do
  97. j=1
  98. object_keys=$(echo ${object//:/ } |wc -w)
  99. for key in $(echo "${object/:/ }"); do
  100. if [ "$j" -eq 1 ]; then
  101. echo -n " \"$key\": "
  102. if [ "$object_keys" -eq 1 ]; then
  103. echo -n '""'
  104. fi
  105. else
  106. echo -n "\"${key//:/,}\""
  107. fi
  108. ((j++))
  109. done
  110. if [ "$i" -lt "$objects" ]; then
  111. echo ','
  112. else
  113. echo
  114. fi
  115. ((i++))
  116. done
  117. echo ' }'
  118. echo '}'
  119. }
  120. # SHELL list function
  121. shell_list() {
  122. echo "WEB: $WEB"
  123. echo "MAIL: $MAIL"
  124. echo "DB: $DB"
  125. echo "USER DIRS: $USER"
  126. }
  127. # PLAIN list function
  128. plain_list() {
  129. echo "$WEB\t$MAIL\t$DB\t$USER"
  130. }
  131. # CSV list function
  132. csv_list() {
  133. echo "WEB,MAIL,DB,USER"
  134. echo "\"$WEB\",\"$MAIL\",\"$DB\",\"$USER\""
  135. }
  136. #----------------------------------------------------------#
  137. # Verifications #
  138. #----------------------------------------------------------#
  139. check_args '1' "$#" 'USER [FORMAT]'
  140. is_format_valid 'user'
  141. is_object_valid 'user' 'USER' "$user"
  142. #----------------------------------------------------------#
  143. # Action #
  144. #----------------------------------------------------------#
  145. # Flushing variables
  146. WEB=''
  147. MAIL=''
  148. DB=''
  149. USER=''
  150. # Parsing backup exclusion list
  151. if [ -e "$USER_DATA/backup-excludes.conf" ]; then
  152. source $USER_DATA/backup-excludes.conf
  153. fi
  154. # Listing data
  155. case $format in
  156. json) json_list ;;
  157. plain) plain_list ;;
  158. csv) csv_list ;;
  159. shell) shell_list ;;
  160. esac
  161. #----------------------------------------------------------#
  162. # Vesta #
  163. #----------------------------------------------------------#
  164. exit