version 1.478, 2011/08/01 20:13:01
|
version 1.487, 2012/03/26 11:03:34
|
Line 92 my %managers; # Ip -> manager names
|
Line 92 my %managers; # Ip -> manager names
|
|
|
my %perlvar; # Will have the apache conf defined perl vars. |
my %perlvar; # Will have the apache conf defined perl vars. |
|
|
|
my $dist; |
|
|
# |
# |
# The hash below is used for command dispatching, and is therefore keyed on the request keyword. |
# The hash below is used for command dispatching, and is therefore keyed on the request keyword. |
# Each element of the hash contains a reference to an array that contains: |
# Each element of the hash contains a reference to an array that contains: |
Line 1646 sub read_lonnet_global {
|
Line 1648 sub read_lonnet_global {
|
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
my $requested = &Apache::lonnet::thaw_unescape($tail); |
my $requested = &Apache::lonnet::thaw_unescape($tail); |
my $result; |
my $result; |
|
my %packagevars = ( |
|
spareid => \%Apache::lonnet::spareid, |
|
perlvar => \%Apache::lonnet::perlvar, |
|
); |
|
my %limit_to = ( |
|
perlvar => { |
|
lonOtherAuthen => 1, |
|
lonBalancer => 1, |
|
lonVersion => 1, |
|
lonSysEMail => 1, |
|
lonHostID => 1, |
|
lonRole => 1, |
|
lonDefDomain => 1, |
|
lonLoadLim => 1, |
|
lonUserLoadLim => 1, |
|
} |
|
); |
if (ref($requested) eq 'HASH') { |
if (ref($requested) eq 'HASH') { |
foreach my $what (keys(%{$requested})) { |
foreach my $what (keys(%{$requested})) { |
my $type = $requested->{$what}; |
|
my $lonnetglobal = 'Apache::lonnet::'.$what; |
|
my $response; |
my $response; |
if ($type eq 'HASH') { |
my $items = {}; |
if (defined(%{$lonnetglobal})) { |
if (exists($packagevars{$what})) { |
my $hashref = \%{$lonnetglobal}; |
if (ref($limit_to{$what}) eq 'HASH') { |
$response = &Apache::lonnet::freeze_escape($hashref); |
foreach my $varname (keys(%{$packagevars{$what}})) { |
|
if ($limit_to{$what}{$varname}) { |
|
$items->{$varname} = $packagevars{$what}{$varname}; |
|
} |
|
} |
|
} else { |
|
$items = $packagevars{$what}; |
} |
} |
} else { |
if ($what eq 'perlvar') { |
if (defined(${$lonnetglobal})) { |
if (!exists($packagevars{$what}{'lonBalancer'})) { |
$response = &escape(${$lonnetglobal}); |
if ($dist =~ /^(centos|rhes|fedora|scientific)/) { |
|
my $othervarref=LONCAPA::Configuration::read_conf('httpd.conf'); |
|
if (ref($othervarref) eq 'HASH') { |
|
$items->{'lonBalancer'} = $othervarref->{'lonBalancer'}; |
|
} |
|
} |
|
} |
} |
} |
|
$response = &Apache::lonnet::freeze_escape($items); |
} |
} |
$result .= &escape($what).'='.$response.'&'; |
$result .= &escape($what).'='.$response.'&'; |
} |
} |
Line 1670 sub read_lonnet_global {
|
Line 1700 sub read_lonnet_global {
|
} |
} |
®ister_handler("readlonnetglobal", \&read_lonnet_global, 0, 1, 0); |
®ister_handler("readlonnetglobal", \&read_lonnet_global, 0, 1, 0); |
|
|
|
sub server_devalidatecache_handler { |
|
my ($cmd,$tail,$client) = @_; |
|
my $userinput = "$cmd:$tail"; |
|
my ($name,$id) = map { &unescape($_); } split(/:/,$tail); |
|
&Apache::lonnet::devalidate_cache_new($name,$id); |
|
my $result = 'ok'; |
|
&Reply($client,\$result,$userinput); |
|
return 1; |
|
} |
|
®ister_handler("devalidatecache", \&server_devalidatecache_handler, 0, 1, 0); |
|
|
sub server_timezone_handler { |
sub server_timezone_handler { |
my ($cmd,$tail,$client) = @_; |
my ($cmd,$tail,$client) = @_; |
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
Line 2032 sub add_user_handler {
|
Line 2073 sub add_user_handler {
|
."makeuser"; |
."makeuser"; |
} |
} |
unless ($fperror) { |
unless ($fperror) { |
my $result=&make_passwd_file($uname, $umode,$npass, $passfilename); |
my $result=&make_passwd_file($uname,$udom,$umode,$npass, $passfilename); |
&Reply($client,\$result, $userinput); #BUGBUG - could be fail |
&Reply($client,\$result, $userinput); #BUGBUG - could be fail |
} else { |
} else { |
&Failure($client, \$fperror, $userinput); |
&Failure($client, \$fperror, $userinput); |
Line 2107 sub change_authentication_handler {
|
Line 2148 sub change_authentication_handler {
|
&Failure($client, \$result); |
&Failure($client, \$result); |
} |
} |
} else { |
} else { |
my $result=&make_passwd_file($uname, $umode,$npass,$passfilename); |
my $result=&make_passwd_file($uname,$udom,$umode,$npass,$passfilename); |
# |
# |
# If the current auth mode is internal, and the old auth mode was |
# If the current auth mode is internal, and the old auth mode was |
# unix, or krb*, and the user is an author for this domain, |
# unix, or krb*, and the user is an author for this domain, |
Line 2309 sub fetch_user_file_handler {
|
Line 2350 sub fetch_user_file_handler {
|
my $transname=$udir.'/'.$ufile.'.in.transit'; |
my $transname=$udir.'/'.$ufile.'.in.transit'; |
my $clientprotocol=$Apache::lonnet::protocol{$clientname}; |
my $clientprotocol=$Apache::lonnet::protocol{$clientname}; |
$clientprotocol = 'http' if ($clientprotocol ne 'https'); |
$clientprotocol = 'http' if ($clientprotocol ne 'https'); |
my $remoteurl=$clientprotocol.'://'.$clientip.'/userfiles/'.$fname; |
my $clienthost = &Apache::lonnet::hostname($clientname); |
|
my $remoteurl=$clientprotocol.'://'.$clienthost.'/userfiles/'.$fname; |
my $response; |
my $response; |
Debug("Remote URL : $remoteurl Transfername $transname Destname: $destname"); |
Debug("Remote URL : $remoteurl Transfername $transname Destname: $destname"); |
alarm(120); |
alarm(120); |
Line 3956 sub dump_course_id_handler {
|
Line 3998 sub dump_course_id_handler {
|
$creationcontext = '.'; |
$creationcontext = '.'; |
} |
} |
my $unpack = 1; |
my $unpack = 1; |
if ($description eq '.' && $instcodefilter eq '.' && $coursefilter eq '.' && |
if ($description eq '.' && $instcodefilter eq '.' && $ownerfilter eq '.' && |
$typefilter eq '.') { |
$typefilter eq '.') { |
$unpack = 0; |
$unpack = 0; |
} |
} |
Line 6393 $SIG{USR2} = \&UpdateHosts;
|
Line 6435 $SIG{USR2} = \&UpdateHosts;
|
&Apache::lonnet::load_hosts_tab(); |
&Apache::lonnet::load_hosts_tab(); |
my %iphost = &Apache::lonnet::get_iphost(1); |
my %iphost = &Apache::lonnet::get_iphost(1); |
|
|
my $dist=`$perlvar{'lonDaemons'}/distprobe`; |
$dist=`$perlvar{'lonDaemons'}/distprobe`; |
|
|
my $arch = `uname -i`; |
my $arch = `uname -i`; |
chomp($arch); |
chomp($arch); |
Line 6675 sub is_author {
|
Line 6717 sub is_author {
|
|
|
# Author role should show up as a key /domain/_au |
# Author role should show up as a key /domain/_au |
|
|
my $key = "/$domain/_au"; |
|
my $value; |
my $value; |
if (defined($hashref)) { |
if ($hashref) { |
$value = $hashref->{$key}; |
|
} |
|
|
|
if(defined($value)) { |
my $key = "/$domain/_au"; |
&Debug("$user @ $domain is an author"); |
if (defined($hashref)) { |
|
$value = $hashref->{$key}; |
|
if(!untie_user_hash($hashref)) { |
|
return 'error: ' . ($!+0)." untie (GDBM) Failed"; |
|
} |
|
} |
|
|
|
if(defined($value)) { |
|
&Debug("$user @ $domain is an author"); |
|
} |
|
} else { |
|
return 'error: '.($!+0)." tie (GDBM) Failed"; |
} |
} |
|
|
return defined($value); |
return defined($value); |
} |
} |
# |
# |
# Checks to see if the input roleput request was to set |
# Checks to see if the input roleput request was to set |
# an author role. If so, invokes the lchtmldir script to set |
# an author role. If so, creates construction space |
# up a correct public_html |
|
# Parameters: |
# Parameters: |
# request - The request sent to the rolesput subchunk. |
# request - The request sent to the rolesput subchunk. |
# We're looking for /domain/_au |
# We're looking for /domain/_au |
Line 6700 sub is_author {
|
Line 6749 sub is_author {
|
# |
# |
sub manage_permissions { |
sub manage_permissions { |
my ($request, $domain, $user, $authtype) = @_; |
my ($request, $domain, $user, $authtype) = @_; |
|
|
&Debug("manage_permissions: $request $domain $user $authtype"); |
|
|
|
# See if the request is of the form /$domain/_au |
# See if the request is of the form /$domain/_au |
if($request =~ /^(\/\Q$domain\E\/_au)$/) { # It's an author rolesput... |
if($request =~ /^(\/\Q$domain\E\/_au)$/) { # It's an author rolesput... |
my $execdir = $perlvar{'lonDaemons'}; |
my $path=$perlvar{'lonDocRoot'}."/priv/$domain"; |
my $userhome= "/home/$user" ; |
unless (-e $path) { |
&logthis("system $execdir/lchtmldir $userhome $user $authtype"); |
mkdir($path); |
&Debug("Setting homedir permissions for $userhome"); |
} |
system("$execdir/lchtmldir $userhome $user $authtype"); |
unless (-e $path.'/'.$user) { |
|
mkdir($path.'/'.$user); |
|
} |
} |
} |
} |
} |
|
|
Line 7242 sub change_unix_password {
|
Line 7290 sub change_unix_password {
|
|
|
|
|
sub make_passwd_file { |
sub make_passwd_file { |
my ($uname, $umode,$npass,$passfilename)=@_; |
my ($uname,$udom,$umode,$npass,$passfilename)=@_; |
my $result="ok"; |
my $result="ok"; |
if ($umode eq 'krb4' or $umode eq 'krb5') { |
if ($umode eq 'krb4' or $umode eq 'krb5') { |
{ |
{ |
Line 7283 sub make_passwd_file {
|
Line 7331 sub make_passwd_file {
|
# |
# |
my $uid = getpwnam($uname); |
my $uid = getpwnam($uname); |
if((defined $uid) && ($uid == 0)) { |
if((defined $uid) && ($uid == 0)) { |
&logthis(">>>Attempted to create privilged account blocked"); |
&logthis(">>>Attempt to create privileged account blocked"); |
return "no_priv_account_error\n"; |
return "no_priv_account_error\n"; |
} |
} |
|
|
Line 7295 sub make_passwd_file {
|
Line 7343 sub make_passwd_file {
|
&Debug("user = ".$uname.", Password =". $npass); |
&Debug("user = ".$uname.", Password =". $npass); |
my $se = IO::File->new("|$execpath > $perlvar{'lonDaemons'}/logs/lcuseradd.log"); |
my $se = IO::File->new("|$execpath > $perlvar{'lonDaemons'}/logs/lcuseradd.log"); |
print $se "$uname\n"; |
print $se "$uname\n"; |
|
print $se "$udom\n"; |
print $se "$npass\n"; |
print $se "$npass\n"; |
print $se "$npass\n"; |
print $se "$npass\n"; |
print $se "$lc_error_file\n"; # Status -> unique file. |
print $se "$lc_error_file\n"; # Status -> unique file. |