Diff for /loncom/lonnet/perl/lonnet.pm between versions 1.98 and 1.109

version 1.98, 2001/01/19 17:21:15 version 1.109, 2001/03/19 22:27:06
Line 3 Line 3
 #  #
 # Functions for use by content handlers:  # Functions for use by content handlers:
 #  #
   # metadata_query(sql-query-string) : returns file handle of where sql
   #                                    results will be stored for query
 # plaintext(short)   : plain text explanation of short term  # plaintext(short)   : plain text explanation of short term
 # fileembstyle(ext)  : embed style in page for file extension  # fileembstyle(ext)  : embed style in page for file extension
 # filedescription(ext) : descriptor text for file extension  # filedescription(ext) : descriptor text for file extension
Line 13 Line 15
 #                      1: user needs to choose course  #                      1: user needs to choose course
 #                      2: browse allowed  #                      2: browse allowed
 # definerole(rolename,sys,dom,cou) : define a custom role rolename  # definerole(rolename,sys,dom,cou) : define a custom role rolename
 #                      set priviledges in format of lonTabs/roles.tab for  #                      set privileges in format of lonTabs/roles.tab for
 #                      system, domain and course level,   #                      system, domain and course level, 
 # assignrole(udom,uname,url,role,end,start) : give a role to a user for the  # assignrole(udom,uname,url,role,end,start) : give a role to a user for the
 #                      level given by url. Optional start and end dates  #                      level given by url. Optional start and end dates
Line 86 Line 88
 # 05/01,06/01,09/01 Gerd Kortemeyer  # 05/01,06/01,09/01 Gerd Kortemeyer
 # 09/01 Guy Albertelli  # 09/01 Guy Albertelli
 # 09/01,10/01,11/01 Gerd Kortemeyer  # 09/01,10/01,11/01 Gerd Kortemeyer
   # 02/27/01 Scott Harrison
   # 3/2 Gerd Kortemeyer
   # 3/15 Scott Harrison
   # 3/19 Gerd Kortemeyer
   
 package Apache::lonnet;  package Apache::lonnet;
   
Line 622  sub log { Line 628  sub log {
     return critical("log:$dom:$nam:$what",$hom);      return critical("log:$dom:$nam:$what",$hom);
 }  }
   
   # ----------------------------------------------------- Devalidate Spreadsheets
   
   sub devalidate {
       my $symb=shift;
       my $cid=$ENV{'request.course.id'}; 
       if ($cid) {
    my $key=$ENV{'user.name'}.':'.$ENV{'user.domain'}.':';
           my $status=
             &reply('del:'.$ENV{'course.'.$cid.'.domain'}.':'.
                           $ENV{'course.'.$cid.'.num'}.
                   ':nohist_calculatedsheets:'.
                           &escape($key.'studentcalc:'),
                           $ENV{'course.'.$cid.'.home'})
             .' '.
             &reply('del:'.$ENV{'user.domain'}.':'.
                           $ENV{'user.name'}.
           ':nohist_calculatedsheets_'.$cid.':'.
                           &escape($key.'assesscalc:'.$symb),
                           $ENV{'user.home'});
           unless ($status eq 'ok ok') {
              &logthis('Could not devalidate spreadsheet '.
                       $ENV{'user.name'}.' at '.$ENV{'user.domain'}.' for '.
       $symb.': '.$status);
           } 
       }
   }
   
 # ----------------------------------------------------------------------- Store  # ----------------------------------------------------------------------- Store
   
 sub store {  sub store {
     my %storehash=@_;      my %storehash=@_;
     my $symb;      my $symb;
     unless ($symb=escape(&symbread())) { return ''; }      unless ($symb=&symbread()) { return ''; }
   
       &devalidate($symb);
   
       $symb=escape($symb);
     my $namespace;      my $namespace;
     unless ($namespace=$ENV{'request.course.id'}) { return ''; }      unless ($namespace=$ENV{'request.course.id'}) { return ''; }
     my $namevalue='';      my $namevalue='';
Line 645  sub store { Line 682  sub store {
 sub cstore {  sub cstore {
     my %storehash=@_;      my %storehash=@_;
     my $symb;      my $symb;
     unless ($symb=escape(&symbread())) { return ''; }      unless ($symb=&symbread()) { return ''; }
   
       &devalidate($symb);
   
       $symb=escape($symb);
     my $namespace;      my $namespace;
     unless ($namespace=$ENV{'request.course.id'}) { return ''; }      unless ($namespace=$ENV{'request.course.id'}) { return ''; }
     my $namevalue='';      my $namevalue='';
Line 719  sub coursedescription { Line 760  sub coursedescription {
     return ();      return ();
 }  }
   
 # -------------------------------------------------------- Get user priviledges  # -------------------------------------------------------- Get user privileges
   
 sub rolesinit {  sub rolesinit {
     my ($domain,$username,$authhost)=@_;      my ($domain,$username,$authhost)=@_;
Line 793  sub rolesinit { Line 834  sub rolesinit {
             %thesepriv=();              %thesepriv=();
             map {              map {
                 if ($_ ne '') {                  if ($_ ne '') {
     my ($priviledge,$restrictions)=split(/&/,$_);      my ($privilege,$restrictions)=split(/&/,$_);
                     if ($restrictions eq '') {                      if ($restrictions eq '') {
  $thesepriv{$priviledge}='F';   $thesepriv{$privilege}='F';
                     } else {                      } else {
                         if ($thesepriv{$priviledge} ne 'F') {                          if ($thesepriv{$privilege} ne 'F') {
     $thesepriv{$priviledge}.=$restrictions;      $thesepriv{$privilege}.=$restrictions;
                         }                          }
                     }                      }
                 }                  }
Line 908  sub eget { Line 949  sub eget {
    return %returnhash;     return %returnhash;
 }  }
   
 # ------------------------------------------------- Check for a user priviledge  # ------------------------------------------------- Check for a user privilege
   
 sub allowed {  sub allowed {
     my ($priv,$uri)=@_;      my ($priv,$uri)=@_;
Line 959  sub allowed { Line 1000  sub allowed {
  return $thisallowed;   return $thisallowed;
     }      }
 #  #
 # Gathered so far: system, domain and course wide priviledges  # Gathered so far: system, domain and course wide privileges
 #  #
 # Course: See if uri or referer is an individual resource that is part of   # Course: See if uri or referer is an individual resource that is part of 
 # the course  # the course
Line 1010  sub allowed { Line 1051  sub allowed {
    }     }
   
 #  #
 # Gathered now: all priviledges that could apply, and condition number  # Gathered now: all privileges that could apply, and condition number
 #   # 
 #  #
 # Full or no access?  # Full or no access?
Line 1180  sub definerole { Line 1221  sub definerole {
   }    }
 }  }
   
   # ---------------- Make a metadata query against the network of library servers
   
   sub metadata_query {
       my ($query)=@_;
       my $reply=&reply("querysend:".&escape($query),'msul3');
   }
   
 # ------------------------------------------------------------------ Plain Text  # ------------------------------------------------------------------ Plain Text
   
 sub plaintext {  sub plaintext {
Line 1207  sub assignrole { Line 1255  sub assignrole {
     my ($udom,$uname,$url,$role,$end,$start)=@_;      my ($udom,$uname,$url,$role,$end,$start)=@_;
     my $mrole;      my $mrole;
     if ($role =~ /^cr\//) {      if ($role =~ /^cr\//) {
  unless (&allowed('ccr',$url)) { return 'refused'; }   unless (&allowed('ccr',$url)) {
              &logthis('Refused custom assignrole: '.
                $udom.' '.$uname.' '.$url.' '.$role.' '.$end.' '.$start.' by '.
       $ENV{'user.name'}.' at '.$ENV{'user.domain'});
              return 'refused'; 
           }
         $mrole='cr';          $mrole='cr';
     } else {      } else {
         my $cwosec=$url;          my $cwosec=$url;
         $cwosec=~s/^\/(\w+)\/(\w+)\/.*/$1\/$2/;          $cwosec=~s/^\/(\w+)\/(\w+)\/.*/$1\/$2/;
         unless (&allowed('c'.$role,$cwosec)) { return 'refused'; }          unless (&allowed('c'.$role,$cwosec)) { 
              &logthis('Refused assignrole: '.
                $udom.' '.$uname.' '.$url.' '.$role.' '.$end.' '.$start.' by '.
       $ENV{'user.name'}.' at '.$ENV{'user.domain'});
              return 'refused'; 
           }
         $mrole=$role;          $mrole=$role;
     }      }
     my $command="encrypt:rolesput:$ENV{'user.domain'}:$ENV{'user.name'}:".      my $command="encrypt:rolesput:$ENV{'user.domain'}:$ENV{'user.name'}:".
Line 1846  sub rndseed { Line 1904  sub rndseed {
     {       { 
       use integer;        use integer;
       my $symbchck=unpack("%32C*",$symb) << 27;        my $symbchck=unpack("%32C*",$symb) << 27;
       my $symbseed=numval($symb)%$symbchck << 22;        my $symbseed=numval($symb) << 22;
       my $namechck=unpack("%32C*",$ENV{'user.name'}) << 17;        my $namechck=unpack("%32C*",$ENV{'user.name'}) << 17;
       my $nameseed=numval($ENV{'user.name'})%$namechck << 12;        my $nameseed=numval($ENV{'user.name'}) << 12;
       my $domainseed=unpack("%32C*",$ENV{'user.domain'}) << 7;        my $domainseed=unpack("%32C*",$ENV{'user.domain'}) << 7;
       my $courseseed=unpack("%32C*",$ENV{'request.course.id'});        my $courseseed=unpack("%32C*",$ENV{'request.course.id'});
       my $num=$symbseed+$nameseed+$domainseed+$courseseed+$namechck+$symbchck;        my $num=$symbseed+$nameseed+$domainseed+$courseseed+$namechck+$symbchck;
       &Apache::lonxml::debug("$symbseed:$nameseed;$domainseed|$courseseed;$namechck:$symbchck");        #uncommenting these lines can break things!
       &Apache::lonxml::debug("rndseed :$num:$symb");        #&Apache::lonxml::debug("$symbseed:$nameseed;$domainseed|$courseseed;$namechck:$symbchck");
         #&Apache::lonxml::debug("rndseed :$num:$symb");
       return $num;        return $num;
     }      }
 }  }

Removed from v.1.98  
changed lines
  Added in v.1.109


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