version 1.419, 2009/07/31 02:20:12
|
version 1.429, 2009/10/19 23:16:36
|
Line 1815 sub change_password_handler {
|
Line 1815 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 1826 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 1846 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 1871 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 3693 sub put_course_id_hash_handler {
|
Line 3704 sub put_course_id_hash_handler {
|
# caller - if set to 'coursecatalog', courses set to be hidden |
# caller - if set to 'coursecatalog', courses set to be hidden |
# from course catalog will be excluded from results (unless |
# from course catalog will be excluded from results (unless |
# overridden by "showhidden". |
# overridden by "showhidden". |
# cloner - escaped username:domain of course cloner (if picking course to# |
# cloner - escaped username:domain of course cloner (if picking course to |
# clone). |
# clone). |
# cc_clone_list - escaped comma separated list of courses for which |
# cc_clone_list - escaped comma separated list of courses for which |
# course cloner has active CC role (and so can clone |
# course cloner has active CC role (and so can clone |
# automatically). |
# automatically). |
# cloneonly - filter by courses for which cloner has rights to clone. |
# cloneonly - filter by courses for which cloner has rights to clone. |
|
# createdbefore - include courses for which creation date preceeded this date. |
|
# createdafter - include courses for which creation date followed this date. |
|
# creationcontext - include courses created in specified context |
# |
# |
# $client - The socket open on the client. |
# $client - The socket open on the client. |
# Returns: |
# Returns: |
Line 3711 sub dump_course_id_handler {
|
Line 3725 sub dump_course_id_handler {
|
|
|
my ($udom,$since,$description,$instcodefilter,$ownerfilter,$coursefilter, |
my ($udom,$since,$description,$instcodefilter,$ownerfilter,$coursefilter, |
$typefilter,$regexp_ok,$rtn_as_hash,$selfenrollonly,$catfilter,$showhidden, |
$typefilter,$regexp_ok,$rtn_as_hash,$selfenrollonly,$catfilter,$showhidden, |
$caller,$cloner,$cc_clone_list,$cloneonly) =split(/:/,$tail); |
$caller,$cloner,$cc_clone_list,$cloneonly,$createdbefore,$createdafter, |
|
$creationcontext) =split(/:/,$tail); |
my $now = time; |
my $now = time; |
my ($cloneruname,$clonerudom,%cc_clone); |
my ($cloneruname,$clonerudom,%cc_clone); |
if (defined($description)) { |
if (defined($description)) { |
Line 3769 sub dump_course_id_handler {
|
Line 3784 sub dump_course_id_handler {
|
$cc_clone{$clonedom.'_'.$clonenum} = 1; |
$cc_clone{$clonedom.'_'.$clonenum} = 1; |
} |
} |
} |
} |
|
if (defined($createdbefore)) { |
|
$createdbefore = &unescape($createdbefore); |
|
} else { |
|
$createdbefore = 0; |
|
} |
|
if (defined($createdafter)) { |
|
$createdafter = &unescape($createdafter); |
|
} else { |
|
$createdafter = 0; |
|
} |
|
if (defined($creationcontext)) { |
|
$creationcontext = &unescape($creationcontext); |
|
} else { |
|
$creationcontext = '.'; |
|
} |
|
|
my $unpack = 1; |
my $unpack = 1; |
if ($description eq '.' && $instcodefilter eq '.' && $coursefilter eq '.' && |
if ($description eq '.' && $instcodefilter eq '.' && $coursefilter eq '.' && |
Line 3781 sub dump_course_id_handler {
|
Line 3811 sub dump_course_id_handler {
|
if ($hashref) { |
if ($hashref) { |
while (my ($key,$value) = each(%$hashref)) { |
while (my ($key,$value) = each(%$hashref)) { |
my ($unesc_key,$lasttime_key,$lasttime,$is_hash,%val, |
my ($unesc_key,$lasttime_key,$lasttime,$is_hash,%val, |
%unesc_val,$selfenroll_end,$selfenroll_types); |
%unesc_val,$selfenroll_end,$selfenroll_types,$created, |
|
$context); |
$unesc_key = &unescape($key); |
$unesc_key = &unescape($key); |
if ($unesc_key =~ /^lasttime:/) { |
if ($unesc_key =~ /^lasttime:/) { |
next; |
next; |
Line 3795 sub dump_course_id_handler {
|
Line 3826 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 > 0); |
|
} |
$is_hash = 1; |
$is_hash = 1; |
if (defined($clonerudom)) { |
if (defined($clonerudom)) { |
if ($items->{'cloners'}) { |
if ($items->{'cloners'}) { |
Line 3832 sub dump_course_id_handler {
|
Line 3866 sub dump_course_id_handler {
|
$unesc_val{'owner'} = $items->{'owner'}; |
$unesc_val{'owner'} = $items->{'owner'}; |
$unesc_val{'type'} = $items->{'type'}; |
$unesc_val{'type'} = $items->{'type'}; |
$unesc_val{'cloners'} = $items->{'cloners'}; |
$unesc_val{'cloners'} = $items->{'cloners'}; |
|
$unesc_val{'created'} = $items->{'created'}; |
|
$unesc_val{'context'} = $items->{'context'}; |
} |
} |
$selfenroll_types = $items->{'selfenroll_types'}; |
$selfenroll_types = $items->{'selfenroll_types'}; |
$selfenroll_end = $items->{'selfenroll_end_date'}; |
$selfenroll_end = $items->{'selfenroll_end_date'}; |
|
$created = $items->{'created'}; |
|
$context = $items->{'context'}; |
if ($selfenrollonly) { |
if ($selfenrollonly) { |
next if (!$selfenroll_types); |
next if (!$selfenroll_types); |
if (($selfenroll_end > 0) && ($selfenroll_end <= $now)) { |
if (($selfenroll_end > 0) && ($selfenroll_end <= $now)) { |
next; |
next; |
} |
} |
} |
} |
|
if ($creationcontext ne '.') { |
|
next if (($context ne '') && ($context ne $creationcontext)); |
|
} |
|
if ($createdbefore > 0) { |
|
next if (($created eq '') || ($created > $createdbefore)); |
|
} |
|
if ($createdafter > 0) { |
|
next if (($created eq '') || ($created <= $createdafter)); |
|
} |
if ($catfilter ne '') { |
if ($catfilter ne '') { |
next if ($items->{'categories'} eq ''); |
next if ($items->{'categories'} eq ''); |
my @categories = split('&',$items->{'categories'}); |
my @categories = split('&',$items->{'categories'}); |
Line 3863 sub dump_course_id_handler {
|
Line 3910 sub dump_course_id_handler {
|
} else { |
} else { |
next if ($catfilter ne ''); |
next if ($catfilter ne ''); |
next if ($selfenrollonly); |
next if ($selfenrollonly); |
|
next if ($createdbefore || $createdafter); |
|
next if ($creationcontext ne '.'); |
if ((defined($clonerudom)) && (defined($cloneruname))) { |
if ((defined($clonerudom)) && (defined($cloneruname))) { |
if ($cc_clone{$unesc_key}) { |
if ($cc_clone{$unesc_key}) { |
$canclone = 1; |
$canclone = 1; |
Line 4101 sub get_domain_handler {
|
Line 4150 sub get_domain_handler {
|
} |
} |
®ister_handler("getdom", \&get_domain_handler, 0, 1, 0); |
®ister_handler("getdom", \&get_domain_handler, 0, 1, 0); |
|
|
|
|
# |
# |
# Puts an id to a domains id database. |
# Puts an id to a domains id database. |
# |
# |
Line 4408 sub dump_domainroles_handler {
|
Line 4456 sub dump_domainroles_handler {
|
$rolesfilter=&unescape($rolesfilter); |
$rolesfilter=&unescape($rolesfilter); |
@roles = split(/\&/,$rolesfilter); |
@roles = split(/\&/,$rolesfilter); |
} |
} |
|
|
my $hashref = &tie_domain_hash($udom, "nohist_domainroles", &GDBM_WRCREAT()); |
my $hashref = &tie_domain_hash($udom, "nohist_domainroles", &GDBM_WRCREAT()); |
if ($hashref) { |
if ($hashref) { |
my $qresult = ''; |
my $qresult = ''; |
while (my ($key,$value) = each(%$hashref)) { |
while (my ($key,$value) = each(%$hashref)) { |
my $match = 1; |
my $match = 1; |
my ($start,$end) = split(/:/,&unescape($value)); |
my ($end,$start) = split(/:/,&unescape($value)); |
my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,&unescape($key)); |
my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,&unescape($key)); |
unless ($startfilter eq '.' || !defined($startfilter)) { |
unless (@roles < 1) { |
if ((defined($start)) && ($start >= $startfilter)) { |
unless (grep/^\Q$trole\E$/,@roles) { |
$match = 0; |
$match = 0; |
|
next; |
} |
} |
} |
} |
unless ($endfilter eq '.' || !defined($endfilter)) { |
unless ($startfilter eq '.' || !defined($startfilter)) { |
if ((defined($end)) && ($end <= $endfilter)) { |
if ((defined($start)) && ($start >= $startfilter)) { |
$match = 0; |
$match = 0; |
|
next; |
} |
} |
} |
} |
unless (@roles < 1) { |
unless ($endfilter eq '.' || !defined($endfilter)) { |
unless (grep/^\Q$trole\E$/,@roles) { |
if ((defined($end)) && (($end > 0) && ($end <= $endfilter))) { |
$match = 0; |
$match = 0; |
|
next; |
} |
} |
} |
} |
if ($match == 1) { |
if ($match == 1) { |
Line 4716 sub enrollment_enabled_handler {
|
Line 4767 sub enrollment_enabled_handler {
|
®ister_handler("autorun", \&enrollment_enabled_handler, 0, 1, 0); |
®ister_handler("autorun", \&enrollment_enabled_handler, 0, 1, 0); |
|
|
# |
# |
# Validate an institutional code use for a LON-CAPA course. |
# Validate an institutional code used for a LON-CAPA course. |
# |
# |
# Formal Parameters: |
# Formal Parameters: |
# $cmd - The command request that got us dispatched. |
# $cmd - The command request that got us dispatched. |
# $tail - The tail of the command. In this case, |
# $tail - The tail of the command. In this case, |
# this is a colon separated set of words that will be split |
# this is a colon separated set of words that will be split |
# into: |
# into: |
# $inst_course_id - The institutional cod3 from the |
# $dom - The domain for which the check of |
# institutions point of view. |
# institutional course code will occur. |
# $cdom - The domain from the institutions |
# |
# point of view. |
# $instcode - The institutional code for the course |
|
# being requested, or validated for rights |
|
# to request. |
|
# |
|
# $owner - The course requestor (who will be the |
|
# course owner, in the form username:domain |
|
# |
# $client - Socket open on the client. |
# $client - Socket open on the client. |
# Returns: |
# Returns: |
# 1 - Indicating processing should continue. |
# 1 - Indicating processing should continue. |
Line 4735 sub validate_instcode_handler {
|
Line 4792 sub validate_instcode_handler {
|
my ($cmd, $tail, $client) = @_; |
my ($cmd, $tail, $client) = @_; |
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
my ($dom,$instcode,$owner) = split(/:/, $tail); |
my ($dom,$instcode,$owner) = split(/:/, $tail); |
my $outcome=&localenroll::validate_instcode($dom,$instcode,$owner); |
$instcode = &unescape($instcode); |
&Reply($client, \$outcome, $userinput); |
$owner = &unescape($owner); |
|
my ($outcome,$description) = |
|
&localenroll::validate_instcode($dom,$instcode,$owner); |
|
my $result = &escape($outcome).'&'.&escape($description); |
|
&Reply($client, \$result, $userinput); |
|
|
return 1; |
return 1; |
} |
} |
Line 4945 sub retrieve_auto_file_handler {
|
Line 5006 sub retrieve_auto_file_handler {
|
} |
} |
®ister_handler("autoretrieve", \&retrieve_auto_file_handler, 0,1,0); |
®ister_handler("autoretrieve", \&retrieve_auto_file_handler, 0,1,0); |
|
|
|
sub crsreq_checks_handler { |
|
my ($cmd, $tail, $client) = @_; |
|
my $userinput = "$cmd:$tail"; |
|
my $dom = $tail; |
|
my $result; |
|
my @reqtypes = ('official','unofficial','community'); |
|
eval { |
|
local($SIG{__DIE__})='DEFAULT'; |
|
my %validations; |
|
my $response = &localenroll::crsreq_checks($dom,\@reqtypes, |
|
\%validations); |
|
if ($response eq 'ok') { |
|
foreach my $key (keys(%validations)) { |
|
$result .= &escape($key).'='.&Apache::lonnet::freeze_escape($validations{$key}).'&'; |
|
} |
|
$result =~ s/\&$//; |
|
} else { |
|
$result = 'error'; |
|
} |
|
}; |
|
if (!$@) { |
|
&Reply($client, \$result, $userinput); |
|
} else { |
|
&Failure($client,"unknown_cmd\n",$userinput); |
|
} |
|
return 1; |
|
} |
|
®ister_handler("autocrsreqchecks", \&crsreq_checks_handler, 0, 1, 0); |
|
|
|
sub validate_crsreq_handler { |
|
my ($cmd, $tail, $client) = @_; |
|
my $userinput = "$cmd:$tail"; |
|
my ($dom,$owner,$crstype,$inststatuslist,$instcode,$instseclist) = split(/:/, $tail); |
|
$instcode = &unescape($instcode); |
|
$owner = &unescape($owner); |
|
$crstype = &unescape($crstype); |
|
$inststatuslist = &unescape($inststatuslist); |
|
$instcode = &unescape($instcode); |
|
$instseclist = &unescape($instseclist); |
|
my $outcome; |
|
eval { |
|
local($SIG{__DIE__})='DEFAULT'; |
|
$outcome = &localenroll::validate_crsreq($dom,$owner,$crstype, |
|
$inststatuslist,$instcode, |
|
$instseclist); |
|
}; |
|
if (!$@) { |
|
&Reply($client, \$outcome, $userinput); |
|
} else { |
|
&Failure($client,"unknown_cmd\n",$userinput); |
|
} |
|
return 1; |
|
} |
|
®ister_handler("autocrsreqvalidation", \&validate_crsreq_handler, 0, 1, 0); |
|
|
# |
# |
# Read and retrieve institutional code format (for support form). |
# Read and retrieve institutional code format (for support form). |
# Formal Parameters: |
# Formal Parameters: |