From 0f2754d0521867030447a4628d37d6e54e71b2c9 Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Sun, 16 Jan 2011 15:19:12 +0000 Subject: added login via ip functionality --- local/db.pm | 2 +- local/user.pm | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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) { -- cgit v1.2.3