#!/usr/bin/perl

$cmd='/sbin/iptables -t mangle -vnL';
$cmd_f='/sbin/iptables -t mangle -Z';
$par=$ARGV[0];
$snmp=0;

if($par eq '-r'){
	print "Nuluji pocitadla\n";
	system("$cmd_f");
}elsif($par eq '-s'){
        list(); 
	#system("$cmd_f");
}elsif($par eq '-i'){
	$cmd='/sbin/iptables -t mangle -vnL COUNT_IN';
	$snmp="i";
	list();
}elsif($par eq '-o'){
	$cmd='/sbin/iptables -t mangle -vnL COUNT_OUT';
	$snmp="o";
	list();
}elsif($par eq '-h' || $par eq '--help'){
	print "$0: options
\t-r\treset counters
\t-o\tsnmpd frendly output
\t-i\tsnmpd frendly input
\t-s\tsumary output and reset
";
	exit 1;
}else{
	list();
}



sub list{
  open(LIST, "$cmd|") || die "Nepovedlo se spustit prikaz $cmd\n";

format STDOUT =
@<<<<<<<< @<<<<<<<< @<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<
$_[0] $_[1] $_[2] $_[3]
.
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
print "-----------------------------------------
$mday.$mon.$year
-----------------------------------------\n" if($par eq '-s');
  while(<LIST>){
	if(/Chain\s+COUNT_IN/){
		$chain='IN';
		print "\t\tPrichozi\n";
		print "pakety    byte      IP               IP\n";
	}elsif(/Chain\s+COUNT_OUT/){
		$chain='OUT';
		print "\n";
		print "\t\tOdchozi\n";
		print "pakety    byte      IP               IP\n";
	}elsif($chain && /(\d+\w?)\s+(\d+\w?)\s+RETURN\s+all\s+--\s+\*\s+\*\s+(\d+\.\d+\.\d+\.\d+)[\/\d]*\s+(\d+\.\d+\.\d+\.\d+)[\/\d]*/){
		printl($1, $2, $3, $4);
	}elsif(/Chain/){
		$chain='';
	}
  }
print "\n\n" if($par eq '-s');
}


sub printl{

  if($snmp eq "o"){
	print "$_[0]\n$_[2]\n";

  }elsif($snmp eq "i"){
	print "$_[0]\n$_[3]\n";

  }else{
	write
#print "$_[0]\t$_[1]\t$_[2]\t$_[3]\n";
  }

}


