Diff for /loncom/interface/loncommon.pm between versions 1.681 and 1.682

version 1.681, 2008/09/05 19:20:39 version 1.682, 2008/09/08 19:39:26
Line 3747  sub blocking_status { Line 3747  sub blocking_status {
   
 ###############################################  ###############################################
   
   sub check_ip_acc {
       my ($acc)=@_;
       &Apache::lonxml::debug("acc is $acc");
       if (!defined($acc) || $acc =~ /^\s*$/ || $acc =~/^\s*no\s*$/i) {
           return 1;
       }
       my $allowed=0;
       my $ip=$env{'request.host'} || $ENV{'REMOTE_ADDR'};
   
       my $name;
       foreach my $pattern (split(',',$acc)) {
           $pattern =~ s/^\s*//;
           $pattern =~ s/\s*$//;
           if ($pattern =~ /\*$/) {
               #35.8.*
               $pattern=~s/\*//;
               if ($ip =~ /^\Q$pattern\E/) { $allowed=1; }
           } elsif ($pattern =~ /(\d+\.\d+\.\d+)\.\[(\d+)-(\d+)\]$/) {
               #35.8.3.[34-56]
               my $low=$2;
               my $high=$3;
               $pattern=$1;
               if ($ip =~ /^\Q$pattern\E/) {
                   my $last=(split(/\./,$ip))[3];
                   if ($last <=$high && $last >=$low) { $allowed=1; }
               }
           } elsif ($pattern =~ /^\*/) {
               #*.msu.edu
               $pattern=~s/\*//;
               if (!defined($name)) {
                   use Socket;
                   my $netaddr=inet_aton($ip);
                   ($name)=gethostbyaddr($netaddr,AF_INET);
               }
               if ($name =~ /\Q$pattern\E$/i) { $allowed=1; }
           } elsif ($pattern =~ /\d+\.\d+\.\d+\.\d+/) {
               #127.0.0.1
               if ($ip =~ /^\Q$pattern\E/) { $allowed=1; }
           } else {
               #some.name.com
               if (!defined($name)) {
                   use Socket;
                   my $netaddr=inet_aton($ip);
                   ($name)=gethostbyaddr($netaddr,AF_INET);
               }
               if ($name =~ /\Q$pattern\E$/i) { $allowed=1; }
           }
           if ($allowed) { last; }
       }
       return $allowed;
   }
   
   ###############################################
   
 =pod  =pod
   
 =head1 Domain Template Functions  =head1 Domain Template Functions

Removed from v.1.681  
changed lines
  Added in v.1.682


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>