v-list-dns-records 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/bin/bash
  2. # info: list dns domain records
  3. # options: USER DOMAIN [FORMAT]
  4. #
  5. # The function for getting all DNS domain records.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument defenition
  10. user=$1
  11. domain=$2
  12. format=${3-shell}
  13. # Includes
  14. source $VESTA/func/main.sh
  15. # Json func
  16. json_list_dns() {
  17. echo '{'
  18. fileds_count=$(echo $fields| wc -w )
  19. while read line; do
  20. IFS=$'\n'
  21. eval $line
  22. if [ -n "$data" ]; then
  23. echo -e ' },'
  24. fi
  25. i=1
  26. IFS=' '
  27. for field in $fields; do
  28. eval value=\"$field\"
  29. value=$(echo "$value" | sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
  30. if [ $i -eq 1 ]; then
  31. (( ++i))
  32. echo -e "\t\"$value\": {"
  33. else
  34. if [ $i -lt $fileds_count ]; then
  35. (( ++i))
  36. echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
  37. else
  38. echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
  39. data=1
  40. fi
  41. fi
  42. done
  43. done < $conf
  44. if [ -n "$data" ]; then
  45. echo -e ' }'
  46. fi
  47. echo -e '}'
  48. }
  49. # Shell function
  50. shell_list_dns() {
  51. if [ -z "$nohead" ] ; then
  52. echo "${fields//$/}"
  53. for a in $fields; do
  54. echo -e "------ \c"
  55. done
  56. echo
  57. fi
  58. while read line ; do
  59. IFS=$'\n'
  60. eval $line
  61. eval echo "$fields" | sed -e "s/%quote%/'/g"
  62. done < $conf
  63. }
  64. #----------------------------------------------------------#
  65. # Verifications #
  66. #----------------------------------------------------------#
  67. check_args '2' "$#" 'USER DOMAIN [FORMAT]'
  68. validate_format 'user' 'domain'
  69. is_object_valid 'user' 'USER' "$user"
  70. is_object_valid 'dns' 'DOMAIN' "$domain"
  71. #----------------------------------------------------------#
  72. # Action #
  73. #----------------------------------------------------------#
  74. # Defining config and fields
  75. conf=$USER_DATA/dns/$domain.conf
  76. fields='$ID $RECORD $TYPE $PRIORITY $VALUE $ID $SUSPENDED $TIME $DATE'
  77. # Listing domains
  78. case $format in
  79. json) json_list_dns ;;
  80. plain) nohead=1; shell_list_dns ;;
  81. shell) fields='$ID $RECORD $TYPE $VALUE';
  82. shell_list_dns | column -t ;;
  83. *) check_args '2' '0' 'USER DOMAIN [FORMAT]'
  84. esac
  85. #----------------------------------------------------------#
  86. # Vesta #
  87. #----------------------------------------------------------#
  88. exit