Initial commit
Benjamin Renard authored 10 years ago
|
1) #!/bin/bash
2)
3) DEBUG=0
4) ADD_COMMENT=1
5) PERMIT='ACCEPT'
6) DENY='DROP'
7)
8) IN=$1
9) [ ! -f "$IN" ] && echo "Usage : $0 [rule file] [add to iptables command] [-d]" && exit 1
10)
11) ADD_TO_IPTABLES_CMD=$2
12)
13) [ "$2" == "-d" -o "$3" == "-d" ] && DEBUG=1
14)
15) function get_word() {
16) echo "$1"|awk "{print \$$2}"
17) }
18)
19) function is_valid_ip() {
20) ip="$1"
21) if [ "$( echo "$ip"| egrep -c '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' )" == "1" ]
22) then
23) for i in $( seq 1 4 )
24) do
25) O=$( echo "$ip"|cut -d '.' -f $i )
26) [ $O -lt 0 -o $O -gt 254 ] && echo $i && return $i
27) done
28) echo 0
29) return 0
30) fi
31) echo 1
32) return 1
33) }
34)
35) function convert_mask() {
36) mask="$1"
37) if [ "$( echo "$mask"| egrep -c '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' )" == "1" ]
38) then
39) NETMASK=""
40) for i in $( seq 1 4 )
41) do
42) O=$( echo "$mask"|cut -d '.' -f $i )
43) [ $O -lt 0 -o $O -gt 255 ] && echo "" && return $i
44) let o=255-O
45) NETMASK="$NETMASK.$o"
46) done
47) echo $NETMASK|sed 's/^\.//'
48) return 0
49) fi
50) echo ""
51) return 1
52) }
53)
54) function convert_netmask_to_cidr() {
55) mask="$1"
56) if [ "$( echo "$mask"| egrep -c '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' )" == "1" ]
57) then
58) CIDR=0
59) for i in $( seq 1 4 )
60) do
61) O=$( echo "$mask"|cut -d '.' -f $i )
62) if [ "$O" == "0" ]
63) then
64) continue
65) elif [ "$O" == "128" ]
66) then
67) let CIDR=CIDR+1
68) elif [ "$O" == "192" ]
69) then
70) let CIDR=CIDR+2
71) elif [ "$O" == "224" ]
72) then
73) let CIDR=CIDR+3
74) elif [ "$O" == "240" ]
75) then
76) let CIDR=CIDR+4
77) elif [ "$O" == "248" ]
78) then
79) let CIDR=CIDR+5
80) elif [ "$O" == "252" ]
81) then
82) let CIDR=CIDR+6
83) elif [ "$O" == "254" ]
84) then
85) let CIDR=CIDR+7
86) elif [ "$O" == "255" ]
87) then
88) let CIDR=CIDR+8
89) else
90) echo ""
91) return $i
92) fi
93) done
94) echo $CIDR
95) return 0
96) fi
97) echo ""
98) return 1
99) }
100)
101) function convert_ip_mask_to_arg() {
102) IP="$1"
103) MASK="$2"
104) CIDR="$( convert_netmask_to_cidr "$MASK" )"
105) if [ "$CIDR" == "" ]
106) then
107) echo "Error converting netmask $MASK to CIDR (Result : $CIDR | Code : $?). Stop." > /dev/stderr
108) echo ""
109) return 1
110) elif [ "$CIDR" == "32" ]
111) then
112) echo "$IP"
113) elif [ "$CIDR" == "0" -a "$IP" == "0.0.0.0" ]
114) then
115) echo "0/0"
116) else
117) echo "$IP/$CIDR"
118) fi
119) }
120)
121) function print_acl_details() {
122) echo "ACL : $line
123) Action : $ACL_ACTION
124) Protocole : $ACL_PROTO
125) Groupe : $ACL_GROUP
126) Source : $ACL_SRC_NET/$ACL_SRC_MASK
127) Source services : '$ACL_SRC_PORTS'
128) Destination : $ACL_DST_NET/$ACL_DST_MASK
129) Destination services : '$ACL_DST_PORTS'"
130) }
131)
132) function convert_2_iptables_cmd() {
133) MULTIPORTS=0
|