version 1.167, 2003/12/22 11:29:58
|
version 1.168, 2003/12/22 12:01:54
|
Line 476 sub ReinitProcess {
|
Line 476 sub ReinitProcess {
|
} |
} |
return 'ok'; |
return 'ok'; |
} |
} |
|
# Validate a line in a configuration file edit script: |
|
# Validation includes: |
|
# - Ensuring the command is valid. |
|
# - Ensuring the command has sufficient parameters |
|
# Parameters: |
|
# scriptline - A line to validate (\n has been stripped for what it's worth). |
|
# |
|
# Return: |
|
# 0 - Invalid scriptline. |
|
# 1 - Valid scriptline |
|
# NOTE: |
|
# Only the command syntax is checked, not the executability of the |
|
# command. |
|
# |
|
sub isValidEditCommand { |
|
my $scriptline = shift; |
|
|
|
# Line elements are pipe separated: |
|
|
|
my ($command, $key, $newline) = split(/\|/, $scriptline); |
|
&logthis('<font color="green"> isValideditCommand checking: '. |
|
"Command = '$command', Key = '$key', Newline = '$newline' </font>\n"); |
|
|
|
if ($command eq "delete") { |
|
# |
|
# key with no newline. |
|
# |
|
if( ($key eq "") || ($newline ne "")) { |
|
return 0; # Must have key but no newline. |
|
} else { |
|
return 1; # Valid syntax. |
|
} |
|
} elsif (($command eq "append") || ($command eq "replace")) { |
|
# |
|
# key and newline: |
|
# |
|
if (($key eq "") || ($newline eq "")) { |
|
return 0; |
|
} else { |
|
return 1; |
|
} |
|
} else { |
|
return 0; # Invalid command. |
|
} |
|
return 0; # Should not get here!!! |
|
} |
|
|
|
# |
# |
# |
# Called to edit a file |
# Called to edit a configuration table file |
# Parameters: |
# Parameters: |
# request - The entire command/request sent by lonc or lonManage |
# request - The entire command/request sent by lonc or lonManage |
# Return: |
# Return: |
# The reply to send to the client. |
# The reply to send to the client. |
|
# |
sub EditFile { |
sub EditFile { |
my $request = shift; |
my $request = shift; |
|
|
# Split the command into it's pieces: edit:filetype:script |
# Split the command into it's pieces: edit:filetype:script |
|
|
my ($request, $filetype, $script) = split(":", $request); |
my ($request, $filetype, $script) = split(/:/, $request,3); # : in script |
|
|
# Check the pre-coditions for success: |
# Check the pre-coditions for success: |
|
|
Line 501 sub EditFile {
|
Line 550 sub EditFile {
|
|
|
# Split the edit script and check it's validity. |
# Split the edit script and check it's validity. |
|
|
|
my @scriptlines = split(/\n/, $script); # one line per element. |
|
my $linecount = scalar(@scriptlines); |
|
for(my $i = 0; $i < $linecount; $i++) { |
|
chomp($scriptlines[$i]); |
|
if(!isValidEditCommand($scriptlines[$i])) { |
|
return "error:edit with bad script line: '$scriptlines[$i]' \n"; |
|
} |
|
} |
|
|
# Execute the edit operation. |
# Execute the edit operation. |
|
|
|
|