v-list-database-hosts 4.5 KB

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