v-list-database-hosts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #!/bin/bash
  2. # info: list database hosts
  3. # options: [FORMAT]
  4. # labels: panel
  5. #
  6. # example: v-list-database-hosts json
  7. #
  8. # The function for obtaining the list of all configured database hosts.
  9. #----------------------------------------------------------#
  10. # Variable&Function #
  11. #----------------------------------------------------------#
  12. # Argument definition
  13. format=${1-shell}
  14. # Includes
  15. # shellcheck source=/usr/local/hestia/func/main.sh
  16. source $HESTIA/func/main.sh
  17. # shellcheck source=/usr/local/hestia/func/db.sh
  18. source $HESTIA/func/db.sh
  19. # shellcheck source=/usr/local/hestia/conf/hestia.conf
  20. source $HESTIA/conf/hestia.conf
  21. # JSON list function
  22. json_list() {
  23. IFS=$'\n'
  24. i=1
  25. objects=0
  26. for type in $(echo $DB_SYSTEM |sed -e 's/,/\n/'); do
  27. if [ -e "$HESTIA/conf/$type.conf" ]; then
  28. # Set default port values if they don't exist in database configuration file.
  29. database_set_default_ports
  30. db_hosts=$(grep HOST $HESTIA/conf/$type.conf |wc -l)
  31. objects=$((objects + db_hosts))
  32. fi
  33. done
  34. echo "["
  35. for type in $(echo $DB_SYSTEM |sed -e 's/,/\n/'); do
  36. if [ -e "$HESTIA/conf/$type.conf" ]; then
  37. for str in $(cat $HESTIA/conf/$type.conf); do
  38. parse_object_kv_list "$str"
  39. echo -n ' {
  40. "HOST": "'$HOST'",
  41. "PORT": "'$PORT'",
  42. "TYPE": "'$type'",
  43. "CHARSETS": "'$CHARSETS'",
  44. "MAX_DB": "'$MAX_DB'",
  45. "U_SYS_USERS": "'$U_SYS_USERS'",
  46. "U_DB_BASES": "'$U_DB_BASES'",
  47. "TPL": "'$TPL'",
  48. "SUSPENDED": "'$SUSPENDED'",
  49. "TIME": "'$TIME'",
  50. "DATE": "'$DATE'"
  51. }'
  52. if [ "$i" -lt "$objects" ]; then
  53. echo ','
  54. else
  55. echo
  56. fi
  57. ((i++))
  58. done
  59. fi
  60. done
  61. echo ']'
  62. }
  63. # SHELL list function
  64. shell_list() {
  65. IFS=$'\n'
  66. echo "HOST PORT TYPE MAX_DB DB_USED SPND TIME DATE"
  67. echo "---- ---- ---- ------ ------- ---- ---- ----"
  68. for type in $(echo $DB_SYSTEM |sed -e 's/,/\n/'); do
  69. if [ -e "$HESTIA/conf/$type.conf" ]; then
  70. # Set default port values if they don't exist in database configuration file.
  71. database_set_default_ports
  72. for str in $(cat $HESTIA/conf/$type.conf); do
  73. parse_object_kv_list "$str"
  74. echo "$HOST $PORT $type $MAX_DB $U_DB_BASES $SUSPENDED $TIME $DATE"
  75. done
  76. fi
  77. done
  78. }
  79. # PLAIN list function
  80. plain_list() {
  81. IFS=$'\n'
  82. for type in $(echo $DB_SYSTEM |sed -e 's/,/\n/'); do
  83. if [ -e "$HESTIA/conf/$type.conf" ]; then
  84. # Set default port values if they don't exist in database configuration file.
  85. database_set_default_ports
  86. for str in $(cat $HESTIA/conf/$type.conf); do
  87. parse_object_kv_list "$str"
  88. echo -ne "$HOST\t$PORT\t$type\t$CHARSETS\t$MAX_DB\t$U_SYS_USERS\t"
  89. echo -e "$U_DB_BASES\t$TPL\t$SUSPENDED\t$TIME\t$DATE"
  90. done
  91. fi
  92. done
  93. }
  94. # CSV list function
  95. csv_list() {
  96. IFS=$'\n'
  97. echo -n "HOST,PORT,TYPE,CHARSETS,MAX_DB,U_SYS_USERS,"
  98. echo "U_DB_BASES,TPL,SUSPENDED,TIME,DATE"
  99. for type in $(echo $DB_SYSTEM |sed -e 's/,/\n/'); do
  100. if [ -e "$HESTIA/conf/$type.conf" ]; then
  101. # Set default port values if they don't exist in database configuration file.
  102. database_set_default_ports
  103. for str in $(cat $HESTIA/conf/$type.conf); do
  104. parse_object_kv_list "$str"
  105. echo -n "$HOST,$PORT,$type,\"$CHARSETS\",$MAX_DB,\"$U_SYS_USERS\","
  106. echo "$U_DB_BASES,$TPL,$SUSPENDED,$TIME,$DATE"
  107. done
  108. fi
  109. done
  110. }
  111. # Type format validator
  112. is_type_format_valid() {
  113. exclude="[!|#|$|^|&|(|)|+|=|{|}|:|@|<|>|?|/|\|\"|'|;|%|\`| ]|\."
  114. if [[ "$1" =~ $exclude ]]; then
  115. check_result $E_INVALID "invalid type extention format :: $1"
  116. fi
  117. }
  118. #----------------------------------------------------------#
  119. # Verifications #
  120. #----------------------------------------------------------#
  121. #----------------------------------------------------------#
  122. # Action #
  123. #----------------------------------------------------------#
  124. # Listing data
  125. case $format in
  126. json) json_list ;;
  127. plain) plain_list ;;
  128. csv) csv_list ;;
  129. shell) shell_list |column -t ;;
  130. esac
  131. #----------------------------------------------------------#
  132. # Hestia #
  133. #----------------------------------------------------------#
  134. exit