v-list-firewall-rule 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/bin/bash
  2. # info: list firewall rule
  3. # options: RULE [FORMAT]
  4. #
  5. # The function of obtaining firewall rule parameters.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. rule=$1
  11. format=${2-shell}
  12. # Includes
  13. source $VESTA/func/main.sh
  14. json_list() {
  15. echo '{'
  16. echo ' "'$RULE'": {
  17. "ACTION": "'$ACTION'",
  18. "PROTOCOL": "'$PROTOCOL'",
  19. "PORT": "'$PORT'",
  20. "IP": "'$IP'",
  21. "COMMENT": "'$COMMENT'",
  22. "SUSPENDED": "'$SUSPENDED'",
  23. "TIME": "'$TIME'",
  24. "DATE": "'$DATE'"
  25. }'
  26. echo '}'
  27. }
  28. # SHELL list function
  29. shell_list() {
  30. echo "ACTION: $ACTION"
  31. echo "PROTOCOL: $PROTOCOL"
  32. echo "PORT: $PORT"
  33. echo "IP: $IP"
  34. echo "COMMENT: $COMMENT"
  35. echo "SUSPENDED: $SUSPENDED"
  36. echo "TIME: $TIME"
  37. echo "DATE: $DATE"
  38. }
  39. # PLAIN list function
  40. plain_list() {
  41. echo -ne "$RULE\t$ACTION\t$PROTOCOL\t$PORT\t$IP\t$COMMENT\t"
  42. echo -e "$SUSPENDED\t$TIME\t$DATE"
  43. }
  44. # CSV list function
  45. csv_list() {
  46. echo "RULE,ACTION,PROTOCOL,PORT,IP,COMMENT,SUSPENDED,TIME,DATE"
  47. echo "$RULE,$ACTION,$PROTOCOL,$PORT,$IP,$COMMENT,$SUSPENDED,$TIME,$DATE"
  48. }
  49. #----------------------------------------------------------#
  50. # Verifications #
  51. #----------------------------------------------------------#
  52. check_args '1' "$#" 'RULE [FORMAT]'
  53. is_number_format_valid "$rule" "rule id"
  54. is_object_valid '../../data/firewall/rules' 'RULE' "$rule"
  55. #----------------------------------------------------------#
  56. # Action #
  57. #----------------------------------------------------------#
  58. # Parsing rules
  59. eval $(grep "RULE='$rule'" $VESTA/data/firewall/rules.conf)
  60. # Listing data
  61. case $format in
  62. json) json_list ;;
  63. plain) plain_list ;;
  64. csv) csv_list ;;
  65. shell) shell_list ;;
  66. esac
  67. #----------------------------------------------------------#
  68. # Vesta #
  69. #----------------------------------------------------------#
  70. exit