1#!/usr/bin/awk -f 2BEGIN{ 3 sid=ENVIRON["server_sid"] 4 chain=ENVIRON["CHAIN"] 5} 6{ 7# ============================ 8# ====== Default Values ====== 9# ============================ 10 11on_link = "<td class=editdelete><a href='edit?"$1"@"chain"$"sid"' style='color:red'><img src='images/editor.png$"sid"' width=20 height=20 align=top border=0></a></td>"; 12son_link = "<td class=editdelete><a href='javascript:del(\""chain"\",\""$1"\")' style='color:red'><img border=0 src='images/eraser.png$"sid"' width=20 height=20 align=top></a></td>"; 13 14kuralno = "<td align=right>"$1"</td>"; 15paketsayisi = "<td align=right>"$2"</td>"; 16paketboyutu = "<td align=right>"$3"</td>"; 17if (length($5)>4) { 18 proto = "<td>"substr($5,1,length($5)-2)"</td>"; 19 opt = "<td>"substr($5,length($5)-1,length($5))"</td>"; 20 position=5; 21} else { 22 proto = "<td>"$5"</td>"; 23 opt = "<td>"$6"</td>"; 24 position=6 25} 26 27#==================== 28#== Action Parsing == 29#==================== 30 31if ($4 == "ACCEPT") action = "<td><img src='images/action_allow.png$"sid"' width=32 height=32 align=absmiddle border=0>"$4"</td>" 32else if ($4 == "DROP") action = "<td><img src='images/action_deny.png$"sid"' width=32 height=32 align=absmiddle border=0>"$4"</td>" 33else if ($4 == "QUEUE") action = "<td><img src='images/action_pipequeue.png$"sid"' width=32 height=32 align=absmiddle border=0>"$4"</td>" 34else if ($4 == "REJECT") action = "<td><img src='images/action_unreach.png$"sid"' width=32 height=32 align=absmiddle border=0>"$4"</td>" 35else action = "<td>"$4"</td>" 36 37#===================== 38#== input interface == 39#===================== 40if ($(position+1) == "*") $(position+1) = "any" 41if_in = "<td>"$(position+1)"</td>"; 42 43#====================== 44#== output interface == 45#====================== 46 47if ($(position+2) == "*") $(position+2) = "any" 48if_out = "<td>"$(position+2)"</td>"; 49 50#================= 51#== Source Addr == 52#================= 53if ($(position+3) == "0.0.0.0/0") $(position+3)="anywhere" 54src = "<td>"$(position+3)"</td>"; 55spt = "<td> any</td>"; 56if (proto == "<td>tcp</td>" || proto == "<td>udp</td>") { 57 if ($(position+6) ~ /^spt:/ || $(position+6) ~ /^spts:/) { 58 sub(/spt:/,"",$(position+6)); 59 sub(/spts:/,"",$(position+6)); 60 spt="<td>"$(position+6)"</td>"; 61 $(position+6)=""; 62 $(position+5)=""; 63 } 64} 65 66#====================== 67#== Destination Addr == 68#====================== 69if ($(position+4) == "0.0.0.0/0") $(position+4) = "anywhere" 70dst = "<td>"$(position+4)"</td>"; 71dpt = "<td> any</td>"; 72if (proto == "<td>tcp</td>" || proto == "<td>udp</td>") { 73 if ($12 ~ /^dpt:/ || $(position+6) ~ /^dpts:/) { 74 sub(/dpt:/,"",$(position+6)); 75 sub(/dpts:/,"",$(position+6)); 76 dpt="<td>"$(position+6)"</td>"; 77 $(position+6)=""; 78 $(position+5)=""; 79 } else if ($(position+7) ~ /^dpt:/ || $(position+7) ~ /^dpts:/) { 80 sub(/dpt:/,"",$(position+7)); 81 sub(/dpts:/,"",$(position+7)); 82 dpt="<td>"$(position+7)"</td>"; 83 $(position+7)=""; 84 $(position+5)=""; 85 } 86} 87 88 89#======================= 90#== Calculate Options == 91#======================= 92eoption=""; 93for (i=(position+5); i<=NF; i++) { 94 eoption=eoption" "$i; 95} 96if (eoption=="") eoption="<td> </td>"; 97else eoption="<td>"eoption"</td>"; 98 99#=========================== 100#== Print Calculated Data == 101#=========================== 102if (NR %2 == 0) print "<tr class=a1>" 103else print "<tr class=a2>" 104print on_link,kuralno,paketsayisi,paketboyutu,proto,\ 105 opt,if_in,if_out,src,spt,action,dst,dpt,eoption,son_link"</tr>\n" 106} 107