v-list-dns-domain 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/bin/bash
  2. # info: list dns domain
  3. # options: user domain [format]
  4. #
  5. # The function of obtaining the list of domain parameters. This call, just as
  6. # all v_list_* calls, supports 3 formats - json, shell and plain.
  7. #----------------------------------------------------------#
  8. # Variable&Function #
  9. #----------------------------------------------------------#
  10. # Argument defenition
  11. user=$1
  12. domain=$2
  13. format=${3-shell}
  14. # Includes
  15. source $VESTA/func/main.sh
  16. # Json function
  17. json_list_domain() {
  18. i=1
  19. fileds_count=$(echo "$fields" | wc -w)
  20. line=$(grep "DOMAIN='$domain'" $conf)
  21. # Print top bracket
  22. echo '{'
  23. # Assing key=value
  24. eval $line
  25. # Starting output loop
  26. for field in $fields; do
  27. # Parsing key=value
  28. eval value=$field
  29. # Checking first field
  30. if [ "$i" -eq 1 ]; then
  31. echo -e "\t\"$value\": {"
  32. else
  33. if [ "$fileds_count" -eq "$i" ]; then
  34. echo -e "\t\t\"${field//$/}\": \"$value\""
  35. else
  36. echo -e "\t\t\"${field//$/}\": \"$value\","
  37. fi
  38. fi
  39. # Updating iterator
  40. (( ++i))
  41. done
  42. # If there was any output
  43. if [ -n "$value" ]; then
  44. echo -e ' }'
  45. fi
  46. # Printing bottom json bracket
  47. echo -e "}"
  48. }
  49. # Shell function
  50. shell_list_domain() {
  51. line=$(grep "DOMAIN='$domain'" $conf)
  52. # Parsing key=value
  53. eval $line
  54. # Print result line
  55. for field in $fields; do
  56. eval key="$field"
  57. echo "${field//$/}: $key "
  58. done
  59. }
  60. #----------------------------------------------------------#
  61. # Verifications #
  62. #----------------------------------------------------------#
  63. check_args '2' "$#" 'user domain [format]'
  64. is_object_valid 'user' 'USER' "$user"
  65. is_object_valid 'dns' 'DOMAIN' "$domain"
  66. #----------------------------------------------------------#
  67. # Action #
  68. #----------------------------------------------------------#
  69. # Defining config and fields to select
  70. conf=$USER_DATA/dns.conf
  71. fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $RECORDS $SUSPENDED $TIME $DATE'
  72. # Listing domains
  73. case $format in
  74. json) json_list_domain ;;
  75. plain) nohead=1; shell_list_domain ;;
  76. shell) shell_list_domain |column -t ;;
  77. *) check_args '2' '0' 'user domain [format]'
  78. esac
  79. #----------------------------------------------------------#
  80. # Vesta #
  81. #----------------------------------------------------------#
  82. exit