# HG changeset patch
# User devi
# Date 1133014552 -7200
# Node ID 568bab7090fc349ce2e9c4bb67d809e8a18e810f
# Parent fcd63bc2bfa0341321454368f4bdfc9f4ed7353d
l3-cgi:
Журналы могут быть сохранены в файл,
l3:
Отправка файлов журналов по электронной почте.
l3 do send-logs
Новые параметры:
cgi2file - имя файла, в который будет выполняться запись
cgi_path_info - путь к странице, которая должна быть записана в файл
(то что вводится в браузер после l3/location)
diff -r fcd63bc2bfa0 -r 568bab7090fc l3-cgi
--- a/l3-cgi Wed Nov 23 00:18:36 2005 +0200
+++ b/l3-cgi Sat Nov 26 16:15:52 2005 +0200
@@ -8,6 +8,7 @@
BEGIN {
chdir("/home/devi/cvs/lilalo");
require l3config;
+ l3config::init_config();
};
my %filter;
@@ -22,23 +23,29 @@
my %Machines;
my $print = "";
+$l3config::Config{cgi2file} = $ENV{cgi2file} if defined($ENV{cgi2file});
+$ENV{PATH_INFO} = $l3config::Config{cgi_path_info} if $l3config::Config{cgi_path_info};
+
my $is_not_cgi="";
-$is_not_cgi = "1" if defined($ENV{l3_to_file});
+$is_not_cgi = "1" if $l3config::Config{cgi2file};
# Пока что мы считаем, что вызов выполняется через CGI,
-# если не установлена переменная l3_to_file
+# если не установлена переменная cgi2file
+# и не передан такой аргумент командной строки.
# Это неверно, но как временное решение - пойдёт
+my $to_file = $l3config::Config{cgi2file};
$l3config::Config{frontend_css} =~ s@^/@@ if $is_not_cgi;
sub load_training
{
- my $classfile =
- $_[0]||
- $l3config::Config{"classfile"} ||
- $l3config::Config{"path_classes"}."/".$l3config::Config{"class"}.$l3config::Config{"class_suffix"};
+ my $training_file;
+
+ $training_file = $l3config::Config{"path_classes"}.$_[0].$l3config::Config{"class_suffix"} if $_[0];
+ $training_file ||= $l3config::Config{"classfile"} ||
+ $l3config::Config{"path_classes"}.$l3config::Config{"class"}.$l3config::Config{"class_suffix"};
- my $XMLTraining = XMLin($classfile , ForceArray => [ 'student' ] )
- or die "Can't open file of the training ",$classfile,"\n";
+ my $XMLTraining = XMLin($training_file , ForceArray => [ 'student' ] )
+ or die "Can't open file of the training ",$training_file,"\n";
for my $student (@{$XMLTraining->{"student"}}) {
$XMLTraining->{host}->{$student->{"host"}}=$student;
@@ -53,6 +60,8 @@
my @training_files = glob($l3config::Config{"path_classes"}."/*".$l3config::Config{"class_suffix"});
if (@training_files) {
for my $training_file (@training_files) {
+ $training_file =~ s@.*/@@;
+ $training_file =~ s@$l3config::Config{"class_suffix"}$@@;
my $training = load_training($training_file);
$Trainings{$training->{"date"}}=$training;
}
@@ -91,54 +100,9 @@
$print .= "Template to load files: ".$l3config::Config{"path_classes"}."*".$l3config::Config{"class_suffix"}."\n"
}
}
-elsif ($ENV{PATH_INFO} eq "/current/index" || $ENV{PATH_INFO} eq "") {
- my $t = load_training();
-
- $print .= "\n";
- $print .= "
\n";
+
+ if ($is_not_cgi) {
+ # Это грязный хак
+ # Если мы чувствуем, что нас вызывают для генерения индексного файла,
+ # нам нужно создать и файлы, на которые он указывает
+ # Лучше было бы это сделать хотя бы через вызов функций
+ my $path = $to_file;
+ $path = "" unless $path =~ s@/[^/]*$@@;
+ mkdir("$path/$host");
+ system("$0 --cgi2file $path/$prefix$host/root$suffix ".
+ "--cgi_path_info ".$training."/".$host."/root ".
+ "--frontend_css ../$l3config::Config{frontend_css}");
+ system("$0 --cgi2file $path/$prefix$host/".$h->{user}."$suffix ".
+ "--cgi_path_info ".$training."/".$host."/".$h->{user}." ".
+ "--frontend_css ../$l3config::Config{frontend_css}");
+ }
+
+ }
+ $print .= "
+ Для того чтобы изменить файл в соответствии с показанными в диффшоте
+ изменениями, можно воспользоваться командой patch.
+ Нужно скопировать изменения, запустить программу patch, указав в
+ качестве её аргумента файл, к которому применяются изменения,
+ и всавить скопированный текст:
+
+
+
+
+\$ patch ~/.bashrc
+
+
+
+ В данном случае изменения применяются к файлу ~/.bashrc
+
+
Для того чтобы получить краткую справочную информацию о команде,
нужно подвести к ней мышь. Во всплывающей подсказке появится краткое
описание команды.
diff -r fcd63bc2bfa0 -r 568bab7090fc l3config.pm
--- a/l3config.pm Wed Nov 23 00:18:36 2005 +0200
+++ b/l3config.pm Sat Nov 26 16:15:52 2005 +0200
@@ -127,6 +127,9 @@
"l3scripts" => "l3scripts",
+
+ "cgi_path_info" => "",
+ "cgi2file" => "",
);
sub read_config_file
diff -r fcd63bc2bfa0 -r 568bab7090fc l3scripts
--- a/l3scripts Wed Nov 23 00:18:36 2005 +0200
+++ b/l3scripts Sat Nov 26 16:15:52 2005 +0200
@@ -64,8 +64,7 @@
rm -rf /tmp/lilalo-$course-$date 2> /dev/null
mkdir -p /tmp/lilalo-$course-$date/l3
cp /var/www/l3/* /tmp/lilalo-$course-$date/l3
-export l3_to_file=/tmp/lilalo-$course-$date/index.html
-./l3-cgi
+./l3-cgi --cgi2file /tmp/lilalo-$course-$date/index.html --cgi_path_info $date
cd /tmp
rm -rf lilalo-$course-$date.zip 2> /dev/null
zip -r lilalo-$course-$date.zip lilalo-$course-$date
@@ -77,13 +76,13 @@
$firstname,
высылаю вам журналы лабораторных работ по курсу $course,
-который проходил на этой неделе (начался $date).
+который проходил начиная с $date в УЦ Сетевые Технологии (Киев).
Файл с архивом прикреплен к письму.
Пишите, если у вас будут любые замечания/советы/вопросы
по методическому пособию или системе ведения журналов.
Если нужна будет помощь по курсу или темам,
-связанным с ним -- спрашивайте.
+связанным с ним -- обязательно спрашивайте.
Надеюсь, что смогу вам помочь.
Пожалуйста, напишите ответ, если вы получили это письмо,