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; |
} |
} |
} |
} |