return $signal_level;
}
+
+sub get_hardware_address($) {
+ my $ip_address = shift;
+ my $ret;
+
+ open(FILE, "/proc/net/arp") or die("Could not read ARP table");
+
+ while (<FILE>) {
+ my ($ip_addr, $hwtype, $flags, $hwaddr, $mask, $device) = split(/\s+/, $_);
+ if ($ip_addr eq $ip_address) {
+ $ret = $hwaddr;
+ last;
+ }
+ }
+
+ close(FILE);
+
+ return $ret;
+}
+
1;
# Remove the next line to enable the testsuite
#Get Clients IP-Address
my $ip_address = $ENV{X_FORWARDED_FOR} || $ENV{REMOTE_ADDR} ||"";
- #Ask arp to give the corresponding MAC-Address
- my $mac_address = qx(arp -a|grep $ip_address|cut -d ' ' -f 4);
- $mac_address =~ s/\n+\z//;
+ # Retrieve the MAC address from the ARP table
+ my $mac_address = &Network::get_hardware_address($ip_address);
&General::readhasharray("$clients", \%clientshash);
my $key = &General::findhasharraykey(\%clientshash);
if ($cgiparams{'ACTION'} eq "SUBMIT") {
my $ip_address;
- my $mac_address;
my $granted=0;
#Convert voucherinput to uppercase
$cgiparams{'VOUCHER'} = uc $cgiparams{'VOUCHER'};
#Get Clients IP-Address
$ip_address = $ENV{X_FORWARDED_FOR} || $ENV{REMOTE_ADDR} ||"";
#Ask arp to give the corresponding MAC-Address
- $mac_address = qx(arp -a|grep $ip_address|cut -d ' ' -f 4);
- $mac_address =~ s/\n+\z//;
+ my $mac_address = &Network::get_hardware_address($ip_address);
#Check if voucher is valid and write client to clients file, delete voucher from voucherout
&General::readhasharray("$voucherout", \%voucherhash);
&General::readhasharray("$clients", \%clientshash);