v-list-firewall 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #!/bin/bash
  2. # info: list iptables rules
  3. # options: [FORMAT]
  4. #
  5. # The function of obtaining the list of all iptables rules.
  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=$(grep RULE $VESTA/data/firewall/rules.conf |wc -l)
  18. echo "{"
  19. while read str; do
  20. eval $str
  21. echo -n ' "'$RULE'": {
  22. "ACTION": "'$ACTION'",
  23. "PROTOCOL": "'$PROTOCOL'",
  24. "PORT": "'$PORT'",
  25. "IP": "'$IP'",
  26. "COMMENT": "'$COMMENT'",
  27. "SUSPENDED": "'$SUSPENDED'",
  28. "TIME": "'$TIME'",
  29. "DATE": "'$DATE'"
  30. }'
  31. if [ "$i" -lt "$objects" ]; then
  32. echo ','
  33. else
  34. echo
  35. fi
  36. ((i++))
  37. done < <(cat $VESTA/data/firewall/rules.conf)
  38. echo '}'
  39. }
  40. # SHELL list function
  41. shell_list() {
  42. IFS=$'\n'
  43. echo "RULE^ACTION^PROTO^PORT^IP^SPND^DATE"
  44. echo "----^------^-----^----^--^----^----"
  45. while read str; do
  46. eval $str
  47. echo "$RULE^$ACTION^$PROTOCOL^$PORT^$IP^$SUSPENDED^$DATE"
  48. done < <(cat $VESTA/data/firewall/rules.conf)
  49. }
  50. # PLAIN list function
  51. plain_list() {
  52. IFS=$'\n'
  53. while read str; do
  54. eval $str
  55. echo -ne "$RULE\t$ACTION\t$PROTOCOL\t$PORT\t$IP\t$COMMENT\t"
  56. echo -e "$SUSPENDED\t$TIME\t$DATE"
  57. done < <(cat $VESTA/data/firewall/rules.conf)
  58. }
  59. # CSV list function
  60. csv_list() {
  61. IFS=$'\n'
  62. echo "RULE,ACTION,PROTOCOL,PORT,IP,COMMENT,SUSPENDED,TIME,DATE"
  63. while read str; do
  64. eval $str
  65. echo -n "$RULE,$ACTION,$PROTOCOL,$PORT,$IP,\"$COMMENT\","
  66. echo "$SUSPENDED,$TIME,$DATE"
  67. done < <(cat $VESTA/data/firewall/rules.conf)
  68. }
  69. #----------------------------------------------------------#
  70. # Action #
  71. #----------------------------------------------------------#
  72. # Listing data
  73. case $format in
  74. json) json_list ;;
  75. plain) plain_list ;;
  76. csv) csv_list ;;
  77. shell) shell_list |column -t -s '^' ;;
  78. esac
  79. #----------------------------------------------------------#
  80. # Vesta #
  81. #----------------------------------------------------------#
  82. exit