summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@wirdorange.org>2011-01-16 15:19:12 +0000
committerOthmar Gsenger <otti@wirdorange.org>2011-01-16 15:19:12 +0000
commit0f2754d0521867030447a4628d37d6e54e71b2c9 (patch)
tree77cdb0d77e861d1cfe155456443fd0ff00097c43
parentbugfixes (diff)
added login via ip functionality
-rw-r--r--local/db.pm2
-rw-r--r--local/user.pm13
2 files changed, 14 insertions, 1 deletions
diff --git a/local/db.pm b/local/db.pm
index ca10f40..db20856 100644
--- a/local/db.pm
+++ b/local/db.pm
@@ -34,7 +34,7 @@ local::db::seen->has_a(user => 'local::db::owner');
package local::db::ip;
use base 'local::db::dbi';
-local::db::ip->table('owner');
+local::db::ip->table('ip');
local::db::ip->columns(All => qw/ip_id owner subnet mask/);
local::db::ip->has_a(owner => 'local::db::owner');
diff --git a/local/user.pm b/local/user.pm
index 3700139..a0e24fd 100644
--- a/local/user.pm
+++ b/local/user.pm
@@ -3,6 +3,7 @@ require Exporter;
use strict;
use local::db;
use base "Exporter";
+use local::netmask;
sub new
{
@@ -12,6 +13,18 @@ sub new
my $self=bless {}, $class;
my %ENV=@_;
($self->{name})=$ENV{REMOTE_USER};
+ if (not $self->{name})
+ {
+ $self->{name}=$ENV{REMOTE_ADDR};
+ my $netmask = new local::netmask();
+ for my $ip ( local::db::ip->retrieve_all())
+ {
+ if ($netmask->check_ip_in_subnet($ENV{REMOTE_ADDR},$ip->subnet,$ip->mask))
+ {
+ $self->{name}=$ip->owner->name;
+ }
+ }
+ }
my @user = local::db::owner->search(name => $self->{name});
if (not @user)
{