diff options
author | Othmar Gsenger <otti@wirdorange.org> | 2011-01-16 15:19:12 +0000 |
---|---|---|
committer | Othmar Gsenger <otti@wirdorange.org> | 2011-01-16 15:19:12 +0000 |
commit | 0f2754d0521867030447a4628d37d6e54e71b2c9 (patch) | |
tree | 77cdb0d77e861d1cfe155456443fd0ff00097c43 | |
parent | bugfixes (diff) |
added login via ip functionality
-rw-r--r-- | local/db.pm | 2 | ||||
-rw-r--r-- | local/user.pm | 13 |
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) { |