summaryrefslogtreecommitdiff
path: root/ipmasq/rules/A80precompute_pfw.def
blob: ba8aaec1d9cc3f5dca30a37eb6432a5796f193ef (plain)
  1. # You should not edit this file. Instead, create a file with the same
  2. # name as this one, but with a .rul extension instead of .def. The
  3. # .rul file will override this one.
  4. #
  5. # However, any changes you make to this file will be preserved.
  6. # Some reused regex'es
  7. re_protos='[a-z\,]\+'
  8. re_ports='[a-z0-9\,:]\+'
  9. re_port='[a-z0-9:]\+'
  10. re_host='[a-z0-9]\+'
  11. re_pool='[a-z0-9_]\+'
  12. re_cfg="[[:space:]]*\($re_protos\)[[:space:]]\+\($re_ports\)[[:space:]]\+\($re_host\)\([[:space:]]\+\($re_port\)\)\?[[:space:]]*"
  13. re_cfgline="portfw_pool_\($re_pool\)[[:space:]]*=[[:space:]]*'$re_cfg'"
  14. # Extract portforward hosts
  15. PFW=$(set | grep '^portfw_ip_' | sed "s/^portfw_ip_\($re_host\).*/\1/")
  16. # remove hosts with no pools attached
  17. if [ -n "$PFW" ]; then
  18. for i in $PFW; do
  19. poolhits=$(set | grep '^portfw_pool_' | sed "s/$re_cfgline/\4/" | grep "^$i$")
  20. if [ -z "$poolhits" ]; then
  21. PFW=$(echo $PFW | sed "s/\( *\|^\)$i\( *\|$\)/\1/")
  22. fi
  23. done
  24. fi
  25. # Extract ips and ports
  26. if [ -n "$PFW" ]; then
  27. if [ "$SHOWRULES" = "yes" ]; then
  28. echo "#: These ports are forwarded:"
  29. fi
  30. PFWPOOLS=""
  31. for i in $PFW; do
  32. eval "ip=\"\$portfw_ip_$i\""
  33. pools=$(set | grep '^portfw_pool_' | sed "s/$re_cfgline/\1:\4/" | grep ":$i$" | sed "s/:$i$//")
  34. for pool in $pools; do
  35. PFWPOOLS="$PFWPOOLS $pool"
  36. eval "config=\"\$portfw_pool_$pool\""
  37. protos_bulk=$(echo $config | sed "s/$re_cfg/\1/")
  38. protos=$(echo $protos_bulk | sed 's/,/ /g')
  39. origports_bulk=$(echo $config | sed "s/$re_cfg/\2/")
  40. origports=$(echo $origports_bulk | sed 's/,/ /g')
  41. destport=$(echo $config | sed "s/$re_cfg/\5/")
  42. [ "$origports" = "$destport" ] && destport=""
  43. eval "PFWPROTO_$pool=\"\$protos\""
  44. eval "PFWORIGPORTS_$pool=\"$origports\""
  45. eval "PFWIP_$pool=\"$ip\""
  46. eval "PFWPORT_$pool=\"$destport\""
  47. if [ "$SHOWRULES" = "yes" ]; then
  48. /bin/echo -e "#: $protos_bulk \t$origports_bulk \t->\t $ip $destport \t($pool->$i)"
  49. fi
  50. done
  51. done
  52. fi