version 1.427, 2009/09/28 19:13:32
|
version 1.435, 2010/01/02 23:56:06
|
Line 67 my $currentdomainid;
|
Line 67 my $currentdomainid;
|
my $client; |
my $client; |
my $clientip; # IP address of client. |
my $clientip; # IP address of client. |
my $clientname; # LonCAPA name of client. |
my $clientname; # LonCAPA name of client. |
|
my $clientversion; # LonCAPA version running on client |
|
|
my $server; |
my $server; |
|
|
Line 1815 sub change_password_handler {
|
Line 1816 sub change_password_handler {
|
# npass - New password. |
# npass - New password. |
# context - Context in which this was called |
# context - Context in which this was called |
# (preferences or reset_by_email). |
# (preferences or reset_by_email). |
|
# lonhost - HostID of server where request originated |
|
|
my ($udom,$uname,$upass,$npass,$context)=split(/:/,$tail); |
my ($udom,$uname,$upass,$npass,$context,$lonhost)=split(/:/,$tail); |
|
|
$upass=&unescape($upass); |
$upass=&unescape($upass); |
$npass=&unescape($npass); |
$npass=&unescape($npass); |
Line 1825 sub change_password_handler {
|
Line 1827 sub change_password_handler {
|
# First require that the user can be authenticated with their |
# First require that the user can be authenticated with their |
# old password unless context was 'reset_by_email': |
# old password unless context was 'reset_by_email': |
|
|
my $validated; |
my ($validated,$failure); |
if ($context eq 'reset_by_email') { |
if ($context eq 'reset_by_email') { |
$validated = 1; |
if ($lonhost eq '') { |
|
$failure = 'invalid_client'; |
|
} else { |
|
$validated = 1; |
|
} |
} else { |
} else { |
$validated = &validate_user($udom, $uname, $upass); |
$validated = &validate_user($udom, $uname, $upass); |
} |
} |
Line 1841 sub change_password_handler {
|
Line 1847 sub change_password_handler {
|
$salt=substr($salt,6,2); |
$salt=substr($salt,6,2); |
my $ncpass=crypt($npass,$salt); |
my $ncpass=crypt($npass,$salt); |
if(&rewrite_password_file($udom, $uname, "internal:$ncpass")) { |
if(&rewrite_password_file($udom, $uname, "internal:$ncpass")) { |
&logthis("Result of password change for " |
my $msg="Result of password change for $uname: pwchange_success"; |
."$uname: pwchange_success"); |
if ($lonhost) { |
|
$msg .= " - request originated from: $lonhost"; |
|
} |
|
&logthis($msg); |
&Reply($client, "ok\n", $userinput); |
&Reply($client, "ok\n", $userinput); |
} else { |
} else { |
&logthis("Unable to open $uname passwd " |
&logthis("Unable to open $uname passwd " |
Line 1863 sub change_password_handler {
|
Line 1872 sub change_password_handler {
|
} |
} |
|
|
} else { |
} else { |
&Failure( $client, "non_authorized\n", $userinput); |
if ($failure eq '') { |
|
$failure = 'non_authorized'; |
|
} |
|
&Failure( $client, "$failure\n", $userinput); |
} |
} |
|
|
return 1; |
return 1; |
Line 2050 sub is_home_handler {
|
Line 2062 sub is_home_handler {
|
®ister_handler("home", \&is_home_handler, 0,1,0); |
®ister_handler("home", \&is_home_handler, 0,1,0); |
|
|
# |
# |
# Process an update request for a resource?? I think what's going on here is |
# Process an update request for a resource. |
# that a resource has been modified that we hold a subscription to. |
# A resource has been modified that we hold a subscription to. |
# If the resource is not local, then we must update, or at least invalidate our |
# If the resource is not local, then we must update, or at least invalidate our |
# cached copy of the resource. |
# cached copy of the resource. |
# FUTURE WORK: |
|
# I need to look at this logic carefully. My druthers would be to follow |
|
# typical caching logic, and simple invalidate the cache, drop any subscription |
|
# an let the next fetch start the ball rolling again... however that may |
|
# actually be more difficult than it looks given the complex web of |
|
# proxy servers. |
|
# Parameters: |
# Parameters: |
# $cmd - The command that got us here. |
# $cmd - The command that got us here. |
# $tail - Tail of the command (remaining parameters). |
# $tail - Tail of the command (remaining parameters). |
Line 2083 sub update_resource_handler {
|
Line 2089 sub update_resource_handler {
|
my $ownership=ishome($fname); |
my $ownership=ishome($fname); |
if ($ownership eq 'not_owner') { |
if ($ownership eq 'not_owner') { |
if (-e $fname) { |
if (-e $fname) { |
|
# Delete preview file, if exists |
|
unlink("$fname.tmp"); |
|
# Get usage stats |
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, |
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, |
$atime,$mtime,$ctime,$blksize,$blocks)=stat($fname); |
$atime,$mtime,$ctime,$blksize,$blocks)=stat($fname); |
my $now=time; |
my $now=time; |
my $since=$now-$atime; |
my $since=$now-$atime; |
|
# If the file has not been used within lonExpire seconds, |
|
# unsubscribe from it and delete local copy |
if ($since>$perlvar{'lonExpire'}) { |
if ($since>$perlvar{'lonExpire'}) { |
my $reply=&Apache::lonnet::reply("unsub:$fname","$clientname"); |
my $reply=&Apache::lonnet::reply("unsub:$fname","$clientname"); |
&devalidate_meta_cache($fname); |
&devalidate_meta_cache($fname); |
unlink("$fname"); |
unlink("$fname"); |
unlink("$fname.meta"); |
unlink("$fname.meta"); |
} else { |
} else { |
|
# Yes, this is in active use. Get a fresh copy. Since it might be in |
|
# very active use and huge (like a movie), copy it to "in.transfer" filename first. |
my $transname="$fname.in.transfer"; |
my $transname="$fname.in.transfer"; |
my $remoteurl=&Apache::lonnet::reply("sub:$fname","$clientname"); |
my $remoteurl=&Apache::lonnet::reply("sub:$fname","$clientname"); |
my $response; |
my $response; |
Line 2120 sub update_resource_handler {
|
Line 2133 sub update_resource_handler {
|
} |
} |
alarm(0); |
alarm(0); |
} |
} |
|
# we successfully transfered, copy file over to real name |
rename($transname,$fname); |
rename($transname,$fname); |
&devalidate_meta_cache($fname); |
&devalidate_meta_cache($fname); |
} |
} |
Line 3110 sub dump_with_regexp {
|
Line 3124 sub dump_with_regexp {
|
my $qresult=''; |
my $qresult=''; |
my $count=0; |
my $count=0; |
while (my ($key,$value) = each(%$hashref)) { |
while (my ($key,$value) = each(%$hashref)) { |
|
if ($namespace eq 'roles') { |
|
if ($key =~ /^($LONCAPA::match_domain)_($LONCAPA::match_community)_(cc|co|in|ta|ep|ad|st|cr)/) { |
|
if ($clientversion =~ /^(\d+)\.(\d+)$/) { |
|
my $major = $1; |
|
my $minor = $2; |
|
next if (($major < 2) || (($major == 2) && ($minor < 9))); |
|
} |
|
} |
|
} |
if ($regexp eq '.') { |
if ($regexp eq '.') { |
$count++; |
$count++; |
if (defined($range) && $count >= $end) { last; } |
if (defined($range) && $count >= $end) { last; } |
Line 3773 sub dump_course_id_handler {
|
Line 3796 sub dump_course_id_handler {
|
$cc_clone{$clonedom.'_'.$clonenum} = 1; |
$cc_clone{$clonedom.'_'.$clonenum} = 1; |
} |
} |
} |
} |
if (defined($createdbefore)) { |
if ($createdbefore ne '') { |
$createdbefore = &unescape($createdbefore); |
$createdbefore = &unescape($createdbefore); |
} else { |
} else { |
$createdbefore = 0; |
$createdbefore = 0; |
} |
} |
if (defined($createdafter)) { |
if ($createdafter ne '') { |
$createdafter = &unescape($createdafter); |
$createdafter = &unescape($createdafter); |
} else { |
} else { |
$createdafter = 0; |
$createdafter = 0; |
} |
} |
if (defined($creationcontext)) { |
if ($creationcontext ne '') { |
$creationcontext = &unescape($creationcontext); |
$creationcontext = &unescape($creationcontext); |
} else { |
} else { |
$creationcontext = '.'; |
$creationcontext = '.'; |
Line 3815 sub dump_course_id_handler {
|
Line 3838 sub dump_course_id_handler {
|
my ($canclone,$valchange); |
my ($canclone,$valchange); |
my $items = &Apache::lonnet::thaw_unescape($value); |
my $items = &Apache::lonnet::thaw_unescape($value); |
if (ref($items) eq 'HASH') { |
if (ref($items) eq 'HASH') { |
|
if ($hashref->{$lasttime_key} eq '') { |
|
next if ($since > 1); |
|
} |
$is_hash = 1; |
$is_hash = 1; |
if (defined($clonerudom)) { |
if (defined($clonerudom)) { |
if ($items->{'cloners'}) { |
if ($items->{'cloners'}) { |
Line 6249 sub make_new_child {
|
Line 6275 sub make_new_child {
|
&ReadManagerTable(); |
&ReadManagerTable(); |
my $clientrec=defined(&Apache::lonnet::get_hosts_from_ip($outsideip)); |
my $clientrec=defined(&Apache::lonnet::get_hosts_from_ip($outsideip)); |
my $ismanager=($managers{$outsideip} ne undef); |
my $ismanager=($managers{$outsideip} ne undef); |
$clientname = "[unknonwn]"; |
$clientname = "[unknown]"; |
if($clientrec) { # Establish client type. |
if($clientrec) { # Establish client type. |
$ConnectionType = "client"; |
$ConnectionType = "client"; |
$clientname = (&Apache::lonnet::get_hosts_from_ip($outsideip))[-1]; |
$clientname = (&Apache::lonnet::get_hosts_from_ip($outsideip))[-1]; |
Line 6277 sub make_new_child {
|
Line 6303 sub make_new_child {
|
# |
# |
# If the remote is attempting a local init... give that a try: |
# If the remote is attempting a local init... give that a try: |
# |
# |
my ($i, $inittype) = split(/:/, $remotereq); |
(my $i, my $inittype, $clientversion) = split(/:/, $remotereq); |
|
|
# If the connection type is ssl, but I didn't get my |
# If the connection type is ssl, but I didn't get my |
# certificate files yet, then I'll drop back to |
# certificate files yet, then I'll drop back to |
Line 6297 sub make_new_child {
|
Line 6323 sub make_new_child {
|
} |
} |
|
|
if($inittype eq "local") { |
if($inittype eq "local") { |
|
$clientversion = $perlvar{'lonVersion'}; |
my $key = LocalConnection($client, $remotereq); |
my $key = LocalConnection($client, $remotereq); |
if($key) { |
if($key) { |
Debug("Got local key $key"); |
Debug("Got local key $key"); |