version 1.26, 2000/09/01 21:34:27
|
version 1.29, 2000/09/05 13:32:31
|
Line 6
|
Line 6
|
# 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 |
# allowed(short,url) : returns codes for allowed actions F,R,S,X,C |
# allowed(short,url) : returns codes for allowed actions |
|
# F: full access |
|
# U,I,K: authentication modes (cxx only) |
|
# '': forbidden |
|
# 1: user needs to choose course |
|
# 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 priviledges in format of lonTabs/roles.tab for |
# system, domain and course level, |
# system, domain and course level, |
Line 23
|
Line 28
|
# restore : returns hash for this url |
# restore : returns hash for this url |
# eget(namesp,array) : returns hash with keys from array filled in from namesp |
# eget(namesp,array) : returns hash with keys from array filled in from namesp |
# get(namesp,array) : returns hash with keys from array filled in from namesp |
# get(namesp,array) : returns hash with keys from array filled in from namesp |
|
# del(namesp,array) : deletes keys out of arry from namesp |
# put(namesp,hash) : stores hash in namesp |
# put(namesp,hash) : stores hash in namesp |
# dump(namesp) : dumps the complete namespace into a hash |
# dump(namesp) : dumps the complete namespace into a hash |
# ssi(url,hash) : does a complete request cycle on url to localhost, posts |
# ssi(url,hash) : does a complete request cycle on url to localhost, posts |
# hash |
# hash |
# repcopy(filename) : replicate file |
# repcopy(filename) : replicate file |
# dirlist(url) : gets a directory listing |
# dirlist(url) : gets a directory listing |
# condval(index) : value of condition index based on state |
# condval(index) : value of condition index based on state |
|
# varval(name) : value of a variable |
|
# refreshstate() : refresh the state information string |
# |
# |
# 6/1/99,6/2,6/10,6/11,6/12,6/14,6/26,6/28,6/29,6/30, |
# 6/1/99,6/2,6/10,6/11,6/12,6/14,6/26,6/28,6/29,6/30, |
# 7/1,7/2,7/9,7/10,7/12,7/14,7/15,7/19, |
# 7/1,7/2,7/9,7/10,7/12,7/14,7/15,7/19, |
Line 41
|
Line 49
|
# 06/26 Ben Tyszka |
# 06/26 Ben Tyszka |
# 06/30,07/15,07/17,07/18,07/20,07/21,07/22,07/25 Gerd Kortemeyer |
# 06/30,07/15,07/17,07/18,07/20,07/21,07/22,07/25 Gerd Kortemeyer |
# 08/14 Ben Tyszka |
# 08/14 Ben Tyszka |
# 08/22,08/28,08/31,09/01 Gerd Kortemeyer |
# 08/22,08/28,08/31,09/01,09/02,09/04,09/05 Gerd Kortemeyer |
|
|
package Apache::lonnet; |
package Apache::lonnet; |
|
|
Line 523 sub get {
|
Line 531 sub get {
|
my %returnhash=(); |
my %returnhash=(); |
map { |
map { |
my ($key,$value)=split(/=/,$_); |
my ($key,$value)=split(/=/,$_); |
$returnhash{unespace($key)}=unescape($value); |
$returnhash{unescape($key)}=unescape($value); |
} @pairs; |
} @pairs; |
return %returnhash; |
return %returnhash; |
} |
} |
|
|
|
# --------------------------------------------------------------- del interface |
|
|
|
sub del { |
|
my ($namespace,@storearr)=@_; |
|
my $items=''; |
|
map { |
|
$items.=escape($_).'&'; |
|
} @storearr; |
|
$items=~s/\&$//; |
|
return reply("del:$ENV{'user.domain'}:$ENV{'user.name'}:$namespace:$items", |
|
$ENV{'user.home'}); |
|
} |
|
|
# -------------------------------------------------------------- dump interface |
# -------------------------------------------------------------- dump interface |
|
|
sub dump { |
sub dump { |
Line 538 sub dump {
|
Line 559 sub dump {
|
my %returnhash=(); |
my %returnhash=(); |
map { |
map { |
my ($key,$value)=split(/=/,$_); |
my ($key,$value)=split(/=/,$_); |
$returnhash{unespace($key)}=unescape($value); |
$returnhash{unescape($key)}=unescape($value); |
} @pairs; |
} @pairs; |
return %returnhash; |
return %returnhash; |
} |
} |
Line 571 sub eget {
|
Line 592 sub eget {
|
my %returnhash=(); |
my %returnhash=(); |
map { |
map { |
my ($key,$value)=split(/=/,$_); |
my ($key,$value)=split(/=/,$_); |
$returnhash{unespace($key)}=unescape($value); |
$returnhash{unescape($key)}=unescape($value); |
} @pairs; |
} @pairs; |
return %returnhash; |
return %returnhash; |
} |
} |
Line 582 sub allowed {
|
Line 603 sub allowed {
|
my ($priv,$uri)=@_; |
my ($priv,$uri)=@_; |
$uri=~s/^\/res//; |
$uri=~s/^\/res//; |
$uri=~s/^\///; |
$uri=~s/^\///; |
if ($uri=~/^adm\//) { |
|
|
# Free bre access to adm resources |
|
|
|
if (($uri=~/^adm\//) && ($priv eq 'bre')) { |
return 'F'; |
return 'F'; |
} |
} |
|
|
|
# Gather priviledges over system and domain |
|
|
my $thisallowed=''; |
my $thisallowed=''; |
if ($ENV{'user.priv./'}=~/$priv\&([^\:]*)/) { |
if ($ENV{'user.priv./'}=~/$priv\&([^\:]*)/) { |
$thisallowed.=$1; |
$thisallowed.=$1; |
Line 592 sub allowed {
|
Line 619 sub allowed {
|
if ($ENV{'user.priv./'.(split(/\//,$uri))[0].'/'}=~/$priv\&([^\:]*)/) { |
if ($ENV{'user.priv./'.(split(/\//,$uri))[0].'/'}=~/$priv\&([^\:]*)/) { |
$thisallowed.=$1; |
$thisallowed.=$1; |
} |
} |
if ($ENV{'user.priv./'.$uri}=~/$priv\&([^\:]*)/) { |
|
$thisallowed.=$1; |
# Full access at system or domain level? Exit. |
|
|
|
if ($thisallowed=~/F/) { |
|
return 'F'; |
|
} |
|
|
|
# Course level access control |
|
|
|
# uri itself refering to a course? |
|
|
|
if ($uri=~/\.course$/) { |
|
if ($ENV{'user.priv./'.$uri}=~/$priv\&([^\:]*)/) { |
|
$thisallowed.=$1; |
|
} |
|
if ($thisallowed=~/F/) { |
|
return 'F'; |
|
} |
|
|
|
# uri is refering to an individual resource; user needs to be in a course |
|
|
|
} else { |
|
|
|
unless(defined($ENV{'request.course.uri'})) { |
|
return '1'; |
|
} |
|
|
|
# Get access priviledges for course |
|
|
|
if ($ENV{'user.priv./'.$ENV{'request.course.uri'}}=~/$priv\&([^\:]*)/) { |
|
$thisallowed.=$1; |
|
} |
|
|
|
# See if resource or referer is part of this course |
|
|
|
my @uriparts=split(/\//,$uri); |
|
my $urifile=$uriparts[$#uriparts]; |
|
$urifile=~/\.(\w+)$/; |
|
my $uritype=$1; |
|
$#uriparts--; |
|
my $uripath=join('/',@uriparts); |
|
my $uricond=-1; |
|
if ($ENV{'acc.res.'.$ENV{'request.course'}.'.'.$uripath}=~ |
|
/\&$urifile\:(\d+)\&/) { |
|
$uricond=$1; |
|
} elsif (($fe{$uritype} eq 'emb') || ($fe{$uritype} eq 'img')) { |
|
|
|
} |
|
|
} |
} |
return $thisallowed; |
return $thisallowed; |
} |
} |
|
|
|
# ---------------------------------------------------------- Refresh State Info |
|
|
|
sub refreshstate { |
|
} |
|
|
# ----------------------------------------------------------------- Define Role |
# ----------------------------------------------------------------- Define Role |
|
|
sub definerole { |
sub definerole { |
Line 666 sub filedecription {
|
Line 745 sub filedecription {
|
sub assignrole { |
sub assignrole { |
my ($udom,$uname,$url,$role,$end,$start)=@_; |
my ($udom,$uname,$url,$role,$end,$start)=@_; |
my $mrole; |
my $mrole; |
|
$url=~s/^\///; |
|
$url=~s/^res\///; |
if ($role =~ /^cr\//) { |
if ($role =~ /^cr\//) { |
unless ($url=~/\.course$/) { return 'invalid'; } |
unless ($url=~/\.course$/) { return 'invalid'; } |
unless (allowed('ccr',$url)) { return 'refused'; } |
unless (allowed('ccr',$url)) { return 'refused'; } |
Line 768 sub condval {
|
Line 849 sub condval {
|
my $condidx=shift; |
my $condidx=shift; |
my $result=0; |
my $result=0; |
if ($ENV{'request.course'}) { |
if ($ENV{'request.course'}) { |
if ($ENV{'acc.cond.'.$ENV{'request.course'}.'.'.$condidx}) { |
if (defined($ENV{'acc.cond.'.$ENV{'request.course'}.'.'.$condidx})) { |
my $operand='|'; |
my $operand='|'; |
my @stack; |
my @stack; |
map { |
map { |
Line 799 sub condval {
|
Line 880 sub condval {
|
return $result; |
return $result; |
} |
} |
|
|
|
# --------------------------------------------------------- Value of a Variable |
|
|
|
sub varval { |
|
my ($realm,$space,@components)=split(/\./,shift); |
|
my $value=''; |
|
if ($realm eq 'user') { |
|
if ($space=~/^resource/) { |
|
$space=~s/^resource\[//; |
|
$space=~s/\]$//; |
|
|
|
} else { |
|
} |
|
} elsif ($realm eq 'course') { |
|
} elsif ($realm eq 'session') { |
|
} elsif ($realm eq 'system') { |
|
} |
|
return $value; |
|
} |
|
|
# -------------------------------------------------------- Escape Special Chars |
# -------------------------------------------------------- Escape Special Chars |
|
|
sub escape { |
sub escape { |