version 1.280, 2005/03/03 23:21:51
|
version 1.286, 2005/06/24 18:00:55
|
Line 472 sub CopyFile {
|
Line 472 sub CopyFile {
|
|
|
my ($oldfile, $newfile) = @_; |
my ($oldfile, $newfile) = @_; |
|
|
# The file must exist: |
if (! copy($oldfile,$newfile)) { |
|
return 0; |
if(-e $oldfile) { |
|
|
|
# Read the old file. |
|
|
|
my $oldfh = IO::File->new("< $oldfile"); |
|
if(!$oldfh) { |
|
return 0; |
|
} |
|
my @contents = <$oldfh>; # Suck in the entire file. |
|
|
|
# write the backup file: |
|
|
|
my $newfh = IO::File->new("> $newfile"); |
|
if(!(defined $newfh)){ |
|
return 0; |
|
} |
|
my $lines = scalar @contents; |
|
for (my $i =0; $i < $lines; $i++) { |
|
print $newfh ($contents[$i]); |
|
} |
|
|
|
$oldfh->close; |
|
$newfh->close; |
|
|
|
chmod(0660, $newfile); |
|
|
|
return 1; |
|
|
|
} else { |
|
return 0; |
|
} |
} |
|
chmod(0660, $newfile); |
|
return 1; |
} |
} |
# |
# |
# Host files are passed out with externally visible host IPs. |
# Host files are passed out with externally visible host IPs. |
Line 2388 sub put_user_profile_entry {
|
Line 2360 sub put_user_profile_entry {
|
} |
} |
®ister_handler("put", \&put_user_profile_entry, 0, 1, 0); |
®ister_handler("put", \&put_user_profile_entry, 0, 1, 0); |
|
|
|
# Put a piece of new data in hash, returns error if entry already exists |
|
# Parameters: |
|
# $cmd - The command that got us here. |
|
# $tail - Tail of the command (remaining parameters). |
|
# $client - File descriptor connected to client. |
|
# Returns |
|
# 0 - Requested to exit, caller should shut down. |
|
# 1 - Continue processing. |
|
# |
|
sub newput_user_profile_entry { |
|
my ($cmd, $tail, $client) = @_; |
|
|
|
my $userinput = "$cmd:$tail"; |
|
|
|
my ($udom,$uname,$namespace,$what) =split(/:/,$tail,4); |
|
if ($namespace eq 'roles') { |
|
&Failure( $client, "refused\n", $userinput); |
|
return 1; |
|
} |
|
|
|
chomp($what); |
|
|
|
my $hashref = &tie_user_hash($udom, $uname, $namespace, |
|
&GDBM_WRCREAT(),"N",$what); |
|
if(!$hashref) { |
|
&Failure( $client, "error: ".($!)." tie(GDBM) Failed ". |
|
"while attempting put\n", $userinput); |
|
return 1; |
|
} |
|
|
|
my @pairs=split(/\&/,$what); |
|
foreach my $pair (@pairs) { |
|
my ($key,$value)=split(/=/,$pair); |
|
if (exists($hashref->{$key})) { |
|
&Failure($client, "key_exists: ".$key."\n",$userinput); |
|
return 1; |
|
} |
|
} |
|
|
|
foreach my $pair (@pairs) { |
|
my ($key,$value)=split(/=/,$pair); |
|
$hashref->{$key}=$value; |
|
} |
|
|
|
if (untie(%$hashref)) { |
|
&Reply( $client, "ok\n", $userinput); |
|
} else { |
|
&Failure($client, "error: ".($!+0)." untie(GDBM) failed ". |
|
"while attempting put\n", |
|
$userinput); |
|
} |
|
return 1; |
|
} |
|
®ister_handler("newput", \&newput_user_profile_entry, 0, 1, 0); |
|
|
# |
# |
# Increment a profile entry in the user history file. |
# Increment a profile entry in the user history file. |
# The history contains keyword value pairs. In this case, |
# The history contains keyword value pairs. In this case, |
Line 2418 sub increment_user_value_handler {
|
Line 2445 sub increment_user_value_handler {
|
my @pairs=split(/\&/,$what); |
my @pairs=split(/\&/,$what); |
foreach my $pair (@pairs) { |
foreach my $pair (@pairs) { |
my ($key,$value)=split(/=/,$pair); |
my ($key,$value)=split(/=/,$pair); |
|
$value = &unescape($value); |
# We could check that we have a number... |
# We could check that we have a number... |
if (! defined($value) || $value eq '') { |
if (! defined($value) || $value eq '') { |
$value = 1; |
$value = 1; |
} |
} |
$hashref->{$key}+=$value; |
$hashref->{$key}+=$value; |
|
if ($namespace eq 'nohist_resourcetracker') { |
|
if ($hashref->{$key} < 0) { |
|
$hashref->{$key} = 0; |
|
} |
|
} |
} |
} |
if (untie(%$hashref)) { |
if (untie(%$hashref)) { |
&Reply( $client, "ok\n", $userinput); |
&Reply( $client, "ok\n", $userinput); |
Line 3280 sub dump_course_id_handler {
|
Line 3313 sub dump_course_id_handler {
|
|
|
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
|
|
my ($udom,$since,$description,$instcodefilter,$ownerfilter) =split(/:/,$tail); |
my ($udom,$since,$description,$instcodefilter,$ownerfilter,$coursefilter) =split(/:/,$tail); |
if (defined($description)) { |
if (defined($description)) { |
$description=&unescape($description); |
$description=&unescape($description); |
} else { |
} else { |
Line 3296 sub dump_course_id_handler {
|
Line 3329 sub dump_course_id_handler {
|
} else { |
} else { |
$ownerfilter='.'; |
$ownerfilter='.'; |
} |
} |
|
if (defined($coursefilter)) { |
|
$coursefilter=&unescape($coursefilter); |
|
} else { |
|
$coursefilter='.'; |
|
} |
|
|
unless (defined($since)) { $since=0; } |
unless (defined($since)) { $since=0; } |
my $qresult=''; |
my $qresult=''; |
Line 3326 sub dump_course_id_handler {
|
Line 3364 sub dump_course_id_handler {
|
$match = 0; |
$match = 0; |
} |
} |
} |
} |
|
unless ($coursefilter eq '.' || !defined($coursefilter)) { |
|
my $unescapeCourse = &unescape($key); |
|
unless (eval('$unescapeCourse=~/^$udom(_)\Q$coursefilter\E$/')) { |
|
$match = 0; |
|
} |
|
} |
if ($match == 1) { |
if ($match == 1) { |
$qresult.=$key.'='.$descr.':'.$inst_code.':'.$owner.'&'; |
$qresult.=$key.'='.$descr.':'.$inst_code.':'.$owner.'&'; |
} |
} |
Line 4497 sub Reply {
|
Line 4541 sub Reply {
|
Debug("Request was $request Reply was $reply"); |
Debug("Request was $request Reply was $reply"); |
|
|
$Transactions++; |
$Transactions++; |
|
|
|
|
} |
} |
|
|
|
|
Line 4726 $SIG{USR2} = \&UpdateHosts;
|
Line 4768 $SIG{USR2} = \&UpdateHosts;
|
|
|
ReadHostTable; |
ReadHostTable; |
|
|
|
my $dist=`$perlvar{'lonDaemons'}/distprobe`; |
|
|
# -------------------------------------------------------------- |
# -------------------------------------------------------------- |
# Accept connections. When a connection comes in, it is validated |
# Accept connections. When a connection comes in, it is validated |
# and if good, a child process is created to process transactions |
# and if good, a child process is created to process transactions |
Line 4801 sub make_new_child {
|
Line 4845 sub make_new_child {
|
# my $tmpsnum=0; # Now global |
# my $tmpsnum=0; # Now global |
#---------------------------------------------------- kerberos 5 initialization |
#---------------------------------------------------- kerberos 5 initialization |
&Authen::Krb5::init_context(); |
&Authen::Krb5::init_context(); |
&Authen::Krb5::init_ets(); |
if ($dist ne 'fedora4') { |
|
&Authen::Krb5::init_ets(); |
|
} |
|
|
&status('Accepted connection'); |
&status('Accepted connection'); |
# ============================================================================= |
# ============================================================================= |
Line 5516 sub make_passwd_file {
|
Line 5562 sub make_passwd_file {
|
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. |
} |
} |
my $error = IO::File->new("< $lc_error_file"); |
if (-r $lc_error_file) { |
my $useraddok = <$error>; |
&Debug("Opening error file: $lc_error_file"); |
$error->close; |
my $error = IO::File->new("< $lc_error_file"); |
unlink($lc_error_file); |
my $useraddok = <$error>; |
|
$error->close; |
chomp $useraddok; |
unlink($lc_error_file); |
|
|
if($useraddok > 0) { |
chomp $useraddok; |
my $error_text = &lcuseraddstrerror($useraddok); |
|
&logthis("Failed lcuseradd: $error_text"); |
if($useraddok > 0) { |
$result = "lcuseradd_failed:$error_text\n"; |
my $error_text = &lcuseraddstrerror($useraddok); |
} else { |
&logthis("Failed lcuseradd: $error_text"); |
my $pf = IO::File->new(">$passfilename"); |
$result = "lcuseradd_failed:$error_text\n"; |
if($pf) { |
} else { |
print $pf "unix:\n"; |
my $pf = IO::File->new(">$passfilename"); |
} else { |
if($pf) { |
$result = "pass_file_failed_error"; |
print $pf "unix:\n"; |
|
} else { |
|
$result = "pass_file_failed_error"; |
|
} |
} |
} |
|
} else { |
|
&Debug("Could not locate lcuseradd error: $lc_error_file"); |
|
$result="bug_lcuseradd_no_output_file"; |
} |
} |
} |
} |
} elsif ($umode eq 'none') { |
} elsif ($umode eq 'none') { |