v-list-user-packages 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #!/bin/bash
  2. # info: list user packages
  3. # options: [FORMAT]
  4. #
  5. # The function for obtaining the list of available hosting packages.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. format=${1-shell}
  11. # Includes
  12. source $VESTA/func/main.sh
  13. # JSON list function
  14. json_list() {
  15. IFS=$'\n'
  16. i=1
  17. objects=$(echo "$packages" |wc -l)
  18. echo "{"
  19. for package in $packages; do
  20. PACKAGE=${package/.pkg/}
  21. source $VESTA/data/packages/$package
  22. echo -n ' "'$PACKAGE'": {
  23. "WEB_TEMPLATE": "'$WEB_TEMPLATE'",
  24. "PROXY_TEMPLATE": "'$PROXY_TEMPLATE'",
  25. "DNS_TEMPLATE": "'$DNS_TEMPLATE'",
  26. "WEB_DOMAINS": "'$WEB_DOMAINS'",
  27. "WEB_ALIASES": "'$WEB_ALIASES'",
  28. "DNS_DOMAINS": "'$DNS_DOMAINS'",
  29. "DNS_RECORDS": "'$DNS_RECORDS'",
  30. "MAIL_DOMAINS": "'$MAIL_DOMAINS'",
  31. "MAIL_ACCOUNTS": "'$MAIL_ACCOUNTS'",
  32. "DATABASES": "'$DATABASES'",
  33. "CRON_JOBS": "'$CRON_JOBS'",
  34. "DISK_QUOTA": "'$DISK_QUOTA'",
  35. "BANDWIDTH": "'$BANDWIDTH'",
  36. "NS": "'$NS'",
  37. "SHELL": "'$SHELL'",
  38. "BACKUPS": "'$BACKUPS'",
  39. "TIME": "'$TIME'",
  40. "DATE": "'$DATE'"
  41. }'
  42. if [ "$i" -lt "$objects" ]; then
  43. echo ','
  44. else
  45. echo
  46. fi
  47. ((i++))
  48. done
  49. echo '}'
  50. }
  51. # SHELL list function
  52. shell_list() {
  53. echo "PKG TPL WEB DNS MAIL DB SHELL DISK BW"
  54. echo "--- --- --- --- ---- -- ----- ---- --"
  55. for package in $packages; do
  56. source $VESTA/data/packages/$package
  57. PACKAGE=${package/.pkg/}
  58. package_data=$(cat $VESTA/data/packages/$package)
  59. package_data=$(echo "$package_data" |sed -e 's/unlimited/unlim/g')
  60. eval $package_data
  61. echo -n "$PACKAGE $WEB_TEMPLATE $WEB_DOMAINS $DNS_DOMAINS "
  62. echo "$MAIL_DOMAINS $DATABASES $SHELL $DISK_QUOTA $BANDWIDTH"
  63. done
  64. }
  65. # PLAIN list function
  66. plain_list() {
  67. for package in $packages; do
  68. source $VESTA/data/packages/$package
  69. PACKAGE=${package/.pkg/}
  70. echo -ne "$PACKAGE\t$WEB_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
  71. echo -ne "$WEB_DOMAINS\t$WEB_ALIASES\t$DNS_DOMAINS\t$DNS_RECORDS\t"
  72. echo -ne "$MAIL_DOMAINS\t$MAIL_ACCOUNTS\t$DATABASES\t$CRON_JOBS\t"
  73. echo -e "$DISK_QUOTA\t$BANDWIDTH\t$NS\t$SHELL\t$BACKUPS\t$TIME\t$DATE"
  74. done
  75. }
  76. # CSV list function
  77. csv_list() {
  78. echo -n "PACKAGE,WEB_TEMPLATE,PROXY_TEMPLATE,DNS_TEMPLATE,"
  79. echo -n "WEB_DOMAINS,WEB_ALIASES,DNS_DOMAINS,DNS_RECORDS,"
  80. echo -n "MAIL_DOMAINS,MAIL_ACCOUNTS,DATABASES,CRON_JOBS,"
  81. echo "DISK_QUOTA,BANDWIDTH,NS,SHELL,BACKUPS,TIME,DATE"
  82. for package in $packages; do
  83. PACKAGE=${package/.pkg/}
  84. echo -n "$PACKAGE,$WEB_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,"
  85. echo -n "$WEB_DOMAINS,$WEB_ALIASES,$DNS_DOMAINS,$DNS_RECORDS,"
  86. echo -n "$MAIL_DOMAINS,$MAIL_ACCOUNTS,$DATABASES,$CRON_JOBS,"
  87. echo "$DISK_QUOTA,$BANDWIDTH,\"$NS\",$SHELL,$BACKUPS,$TIME,$DATE"
  88. done
  89. }
  90. #----------------------------------------------------------#
  91. # Action #
  92. #----------------------------------------------------------#
  93. # Parsing packages
  94. packages=$(ls --sort=time $VESTA/data/packages |grep .pkg)
  95. # Listing data
  96. case $format in
  97. json) json_list ;;
  98. plain) plain_list ;;
  99. csv) csv_list ;;
  100. shell) shell_list |column -t ;;
  101. esac
  102. #----------------------------------------------------------#
  103. # Vesta #
  104. #----------------------------------------------------------#
  105. exit