#!/usr/bin/perl -w
use strict;
# Make sure the output is valid
print "Content-type: text/html\n\n";
print "<html><body>\n";
my $ip = $ENV{'REMOTE_ADDR'};
my $mac = "";
# Test to make sure the client is on the known wireless net.
if ( (! defined($ENV{'REMOTE_ADDR'}) ) || ( $ENV{'REMOTE_ADDR'} !~ /10.0.1./ ) ) {
print "Sorry.. this page is only for people on my wireless net<br>\n";
} else {
#print "Your IP: $ENV{'REMOTE_ADDR'}<br>\n";
$mac = get_mac($ENV{'REMOTE_ADDR'});
#print "Your MAC: $mac<br>\n"
print_auth_form();
}
print "</body></html>\n";
# Small subroutine that takes the ip of a host, and uses arp
# to get the host's Mac addr.
sub get_mac {
my $ip = shift;
my $mac = "";
open(ARP," /sbin/arp $ip|") || die "Can't run arp";
while (<ARP>) {
if ( /$ip\s+ether\s+(.*)\s+C\s+eth2/ ) {
$mac = $1;
}
}
close(ARP);
return $mac;
}
# Print out the basic auth form and submit button.
# Nothing fancy here, no colors, styles, etc.
sub print_auth_form {
print "
<form method=post action=https://10.0.1.1/wireless_auth/auth.cgi>
<table>
<tr>
<td>
Username:
</td>
<td>
<input type=text name=user_name>
</td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<input type=password name=user_pass>
</td>
</tr>
<tr colspan=2>
<td>
<input type=submit value=Go onclick=mungeChars(this.form)>
</td>
</tr>
<input type=hidden name=rem_ip value=\"$ip\">
<input type=hidden name=rem_mac value=\"$mac\">
</table>
</form>
";
}