v-list-dns-records 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 definition
  10. user=$1
  11. domain=$2
  12. format=${3-shell}
  13. # Includes
  14. source $VESTA/func/main.sh
  15. # JSON list function
  16. json_list() {
  17. IFS=$'\n'
  18. i=1
  19. objects=$(grep ID $USER_DATA/dns/$domain.conf |wc -l)
  20. echo "{"
  21. while read str; do
  22. eval $str
  23. VALUE=$(echo "$VALUE" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
  24. echo -n ' "'$ID'": {
  25. "RECORD": "'$RECORD'",
  26. "TYPE": "'$TYPE'",
  27. "PRIORITY": "'$PRIORITY'",
  28. "VALUE": "'$VALUE'",
  29. "ID": "'$ID'",
  30. "SUSPENDED": "'$SUSPENDED'",
  31. "TIME": "'$TIME'",
  32. "DATE": "'$DATE'"
  33. }'
  34. if [ "$i" -lt "$objects" ]; then
  35. echo ','
  36. else
  37. echo
  38. fi
  39. ((i++))
  40. done < <(cat $USER_DATA/dns/$domain.conf)
  41. echo '}'
  42. }
  43. # SHELL list function
  44. shell_list() {
  45. IFS=$'\n'
  46. echo "ID^RECORD^TYPE^VALUE^DATE"
  47. echo "--^------^----^-----^----"
  48. while read str; do
  49. eval $str
  50. echo "$ID^$RECORD^$TYPE^${VALUE:0:30}^$DATE"
  51. done < <(cat $USER_DATA/dns/$domain.conf)
  52. }
  53. # PLAIN list function
  54. plain_list() {
  55. IFS=$'\n'
  56. while read str; do
  57. eval $str
  58. VALUE=$(echo "$VALUE" |sed -e "s/%quote%/\\'/g")
  59. echo -ne "$ID\t$RECORD\t$TYPE\t$PRIORITY\t$VALUE\t"
  60. echo -e "$SUSPENDED\t$TIME\t$DATE"
  61. done < <(cat $USER_DATA/dns/$domain.conf)
  62. }
  63. # CSV list function
  64. csv_list() {
  65. IFS=$'\n'
  66. echo "ID,RECORD,TYPE,PRIORITY,VALUE,SUSPENDED,TIME,DATE"
  67. while read str; do
  68. eval $str
  69. VALUE=$(echo "$VALUE" |sed -e "s/%quote%/\\'/g")
  70. echo -n "$ID,$RECORD,$TYPE,$PRIORITY,\"$VALUE\","
  71. echo "$SUSPENDED,$TIME,$DATE"
  72. done < <(cat $USER_DATA/dns/$domain.conf)
  73. }
  74. #----------------------------------------------------------#
  75. # Verifications #
  76. #----------------------------------------------------------#
  77. check_args '2' "$#" 'USER DOMAIN [FORMAT]'
  78. is_format_valid 'user' 'domain'
  79. is_object_valid 'user' 'USER' "$user"
  80. is_object_valid 'dns' 'DOMAIN' "$domain"
  81. #----------------------------------------------------------#
  82. # Action #
  83. #----------------------------------------------------------#
  84. # Listing data
  85. case $format in
  86. json) json_list ;;
  87. plain) plain_list ;;
  88. csv) csv_list ;;
  89. shell) shell_list |column -t -s '^';;
  90. esac
  91. #----------------------------------------------------------#
  92. # Vesta #
  93. #----------------------------------------------------------#
  94. exit