version 1.199, 2002/02/04 15:31:22
|
version 1.202, 2002/02/19 21:53:42
|
Line 66
|
Line 66
|
# 12/18 Scott Harrison |
# 12/18 Scott Harrison |
# 12/21,12/22,12/27,12/28 Gerd Kortemeyer |
# 12/21,12/22,12/27,12/28 Gerd Kortemeyer |
# YEAR=2002 |
# YEAR=2002 |
# 1/4,2/4 Gerd Kortemeyer |
# 1/4,2/4,2/7 Gerd Kortemeyer |
# |
# |
### |
### |
|
|
Line 80 use vars
|
Line 80 use vars
|
qw(%perlvar %hostname %homecache %hostip %spareid %hostdom |
qw(%perlvar %hostname %homecache %hostip %spareid %hostdom |
%libserv %pr %prp %metacache %packagetab |
%libserv %pr %prp %metacache %packagetab |
%courselogs %accesshash $processmarker $dumpcount |
%courselogs %accesshash $processmarker $dumpcount |
%coursedombuf %coursehombuf); |
%coursedombuf %coursehombuf %courseresdatacache); |
use IO::Socket; |
use IO::Socket; |
use GDBM_File; |
use GDBM_File; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
Line 348 sub spareserver {
|
Line 348 sub spareserver {
|
return $spareserver; |
return $spareserver; |
} |
} |
|
|
|
# --------------------------------------------- Try to change a user's password |
|
|
|
sub changepass { |
|
my ($uname,$udom,$currentpass,$newpass,$server)=@_; |
|
$currentpass = &escape($currentpass); |
|
$newpass = &escape($newpass); |
|
my $answer = reply("encrypt:passwd:$udom:$uname:$currentpass:$newpass", |
|
$server); |
|
if (! $answer) { |
|
&logthis("No reply on password change request to $server ". |
|
"by $uname in domain $udom."); |
|
} elsif ($answer =~ "^ok") { |
|
&logthis("$uname in $udom successfully changed their password ". |
|
"on $server."); |
|
} elsif ($answer =~ "^pwchange_failure") { |
|
&logthis("$uname in $udom was unable to change their password ". |
|
"on $server. The action was blocked by either lcpasswd ". |
|
"or pwchange"); |
|
} elsif ($answer =~ "^non_authorized") { |
|
&logthis("$uname in $udom did not get their password correct when ". |
|
"attempting to change it on $server."); |
|
} elsif ($answer =~ "^auth_mode_error") { |
|
&logthis("$uname in $udom attempted to change their password despite ". |
|
"not being locally or internally authenticated on $server."); |
|
} elsif ($answer =~ "^unknown_user") { |
|
&logthis("$uname in $udom attempted to change their password ". |
|
"on $server but were unable to because $server is not ". |
|
"their home server."); |
|
} elsif ($answer =~ "^refused") { |
|
&logthis("$server refused to change $uname in $udom password because ". |
|
"it was sent an unencrypted request to change the password."); |
|
} |
|
return $answer; |
|
} |
|
|
# ----------------------- Try to determine user's current authentication scheme |
# ----------------------- Try to determine user's current authentication scheme |
|
|
sub queryauthenticate { |
sub queryauthenticate { |
Line 641 sub ssi {
|
Line 676 sub ssi {
|
|
|
if (%form) { |
if (%form) { |
$request=new HTTP::Request('POST',"http://".$ENV{'HTTP_HOST'}.$fn); |
$request=new HTTP::Request('POST',"http://".$ENV{'HTTP_HOST'}.$fn); |
$request->content(join '&', map { "$_=$form{$_}" } keys %form); |
$request->content(join('&',map { &escape($_).'='.&escape($form{$_}) } keys %form)); |
} else { |
} else { |
$request=new HTTP::Request('GET',"http://".$ENV{'HTTP_HOST'}.$fn); |
$request=new HTTP::Request('GET',"http://".$ENV{'HTTP_HOST'}.$fn); |
} |
} |
Line 2024 sub condval {
|
Line 2059 sub condval {
|
return $result; |
return $result; |
} |
} |
|
|
|
# --------------------------------------------------- Course Resourcedata Query |
|
|
|
sub courseresdata { |
|
my ($coursenum,$coursedomain,@which)=@_; |
|
my $coursehom=&homeserver($coursenum,$coursedomain); |
|
my $hashid=$coursenum.':'.$coursedomain; |
|
unless (defined($courseresdatacache{$hashid.'.time'})) { |
|
unless (time-$courseresdatacache{$hashid.'.time'}<300) { |
|
my $coursehom=&homeserver($coursenum,$coursedomain); |
|
if ($coursehom) { |
|
my $dumpreply=&reply('dump:'.$coursedomain.':'.$coursenum. |
|
':resourcedata:.',$coursehom); |
|
unless ($dumpreply=~/^error\:/) { |
|
$courseresdatacache{$hashid.'.time'}=time; |
|
$courseresdatacache{$hashid}=$dumpreply; |
|
} |
|
} |
|
} |
|
} |
|
my @pairs=split(/\&/,$courseresdatacache{$hashid}); |
|
my %returnhash=(); |
|
foreach (@pairs) { |
|
my ($key,$value)=split(/=/,$_); |
|
$returnhash{unescape($key)}=unescape($value); |
|
} |
|
my $item; |
|
foreach $item (@which) { |
|
if ($returnhash{$item}) { return $returnhash{$item}; } |
|
} |
|
return ''; |
|
} |
|
|
# --------------------------------------------------------- Value of a Variable |
# --------------------------------------------------------- Value of a Variable |
|
|
sub EXT { |
sub EXT { |
Line 2144 sub EXT {
|
Line 2211 sub EXT {
|
|
|
# -------------------------------------------------------- second, check course |
# -------------------------------------------------------- second, check course |
|
|
my $reply=&reply('get:'. |
my $coursereply=&courseresdata( |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'. |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}, |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}. |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
':resourcedata:'. |
($seclevelr,$seclevelm,$seclevel, |
&escape($seclevelr).'&'.&escape($seclevelm).'&'.&escape($seclevel).'&'. |
$courselevelr,$courselevelm,$courselevel)); |
&escape($courselevelr).'&'.&escape($courselevelm).'&'.&escape($courselevel), |
if ($coursereply) { return $coursereply; } |
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
|
if ($reply!~/^error\:/) { |
|
foreach (split(/\&/,$reply)) { |
|
if ($_) { return &unescape($_); } |
|
} |
|
} |
|
if (($reply=~/^con_lost/) || ($reply=~/^error\:/)) { |
|
&logthis("<font color=blue>WARNING:". |
|
" Getting ".$reply." asking for ".$varname." for ". |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}. |
|
' at '. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}. |
|
' from '. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}. |
|
"</font>"); |
|
} |
|
# ------------------------------------------------------ third, check map parms |
# ------------------------------------------------------ third, check map parms |
my %parmhash=(); |
my %parmhash=(); |
my $thisparm=''; |
my $thisparm=''; |