#!/usr/bin/perl

$file="/etc/sysconfig/addres.allow";
$dhcp="/etc/dhcpd.inc";
$debug="1";
$ver="0.1b";

$iptables="/sbin/iptables";

################
if($ARGV[0] eq -V){
  print "$ver";
  exit 0;
}


sub reinit {
  system("/etc/init.d/iptables stop");
  system("/etc/sysconfig/iptables_init.sh");
}

sub log {
  system("/root/bin/iptab2db.pl");
}


sub save {
  system("/etc/init.d/iptables save");
}


#&log;
&reinit;


open(DAT,"<$file") || die "nejde otevrit soubor $file \n$!";
 @data=<DAT>;
close DAT;

open(DHCP,">$dhcp") || die "nejde otevrit soubor $file \n$!";
 
foreach $line (@data){
  if (($mac,$host,$ip) = $line =~ /(..:..:..:..:..:..)\s+([\_\d\w\.]+)\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/){
  }elsif(($mac,$host) = $line =~ /(..:..:..:..:..:..)\s+([\_\d\w\.]+)/){
  }else{
    next();
  }
  
  print ("MAC - $mac\thost = $host\tIP - $ip\n") if($debug); 
  # prida do iptables
  $buf = "$iptables -t mangle -A MAC_CHECK -m mac --mac-source $mac ".($ip ? "-s $ip":"")." -j MARK --set-mark 1";
  print $buf."\n" if($debug);
  system("$buf");
  if($ip){  
    # generuje inc fajl pro dhcpd.conf
    print DHCP <<_EOF_
       host $host {
	   hardware ethernet $mac;
           fixed-address $ip;
	}
_EOF_
  }
  
}

&save;

1;

