v_list_dns_domain 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #!/bin/bash
  2. # info: list dns domain
  3. # options: user domain [format]
  4. #
  5. # The function for getting all DNS domain's parameters.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument defenition
  10. user=$1
  11. domain=$2
  12. format=${3-shell}
  13. # Importing variables
  14. source $VESTA/conf/vars.conf
  15. source $V_FUNC/shared.func
  16. source $V_FUNC/domain.func
  17. # Json func
  18. json_list_dns() {
  19. # Print top bracket
  20. echo '{'
  21. # Count fields
  22. fileds_count=$(echo $fields| wc -w )
  23. # Reading file line by line
  24. while read line; do
  25. # New delimeter
  26. IFS=$'\n'
  27. # Assing key=value pair
  28. eval $line
  29. # Closing bracket if there already was output
  30. if [ -n "$data" ]; then
  31. echo -e ' },'
  32. fi
  33. i=1
  34. IFS=' '
  35. for field in $fields; do
  36. eval value=\"$field\"
  37. value=$(echo "$value" | sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
  38. if [ $i -eq 1 ]; then
  39. # Printing parrent
  40. (( ++i))
  41. echo -e "\t\"$value\": {"
  42. else
  43. # Printing child
  44. if [ $i -lt $fileds_count ]; then
  45. (( ++i))
  46. echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
  47. else
  48. echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
  49. data=1
  50. fi
  51. fi
  52. done
  53. done < $conf
  54. # Closing bracket if there was output
  55. if [ -n "$data" ]; then
  56. echo -e ' }'
  57. fi
  58. # Printing bottom bracket
  59. echo -e '}'
  60. }
  61. # Shell function
  62. shell_list_dns() {
  63. if [ -z "$nohead" ] ; then
  64. # Print brief info
  65. echo "${fields//$/}"
  66. for a in $fields; do
  67. echo -e "------ \c"
  68. done
  69. echo
  70. fi
  71. # Reading file line by line
  72. while read line ; do
  73. # New delimeter
  74. IFS=$'\n'
  75. # Assing key=value pair
  76. eval $line
  77. # Print result
  78. eval echo "$fields" | sed -e "s/%quote%/'/g"
  79. done < $conf
  80. }
  81. #----------------------------------------------------------#
  82. # Verifications #
  83. #----------------------------------------------------------#
  84. # Checking args
  85. check_args '2' "$#" 'user domain [format]'
  86. # Checking argument format
  87. format_validation 'user' 'domain'
  88. # Checking user
  89. is_user_valid
  90. # Checking domain exist
  91. is_dns_domain_valid
  92. #----------------------------------------------------------#
  93. # Action #
  94. #----------------------------------------------------------#
  95. # Defining config
  96. conf=$V_USERS/$user/dns/$domain
  97. # Defining fileds to select
  98. fields='$ID $RECORD $TYPE $VALUE $SUSPEND $DATE'
  99. # Listing domains
  100. case $format in
  101. json) json_list_dns ;;
  102. plain) nohead=1; shell_list_dns ;;
  103. shell) fields='$ID $RECORD $TYPE $VALUE';
  104. shell_list_dns | column -t ;;
  105. *) check_args '2' '0' 'user domain [format]'
  106. esac
  107. #----------------------------------------------------------#
  108. # Vesta #
  109. #----------------------------------------------------------#
  110. exit