lilalo
changeset 30:f5f07049bd4f
l3-agent:
Исправлен баг с инициализацией session_id
l3-cgi:
* Добавлена поддержка index-страницы.
При обращении на /cgi-bin/l3/index показывается таблица
с ссылками на журналы всех тренингов
В самом журнале корректно показывается информация
о курсе.
* Поскольку термин "class" перегружен, вместо него теперь
используется термин "training".
В дальнейшем такая замена произойдёт во всём коде.
* Теперь l3-cgi использует конфигурационный модуль l3config.pm
Загрузка выполняется с помощью require на этапе исполнения
l3config.pm:
Перенесены конфигурационные параметры lm.
ОСТОРОЖНО! Сам lm ПОКА ЧТО не использует l3config.pm для конфигурирования.
Исправлен баг с инициализацией session_id
l3-cgi:
* Добавлена поддержка index-страницы.
При обращении на /cgi-bin/l3/index показывается таблица
с ссылками на журналы всех тренингов
В самом журнале корректно показывается информация
о курсе.
* Поскольку термин "class" перегружен, вместо него теперь
используется термин "training".
В дальнейшем такая замена произойдёт во всём коде.
* Теперь l3-cgi использует конфигурационный модуль l3config.pm
Загрузка выполняется с помощью require на этапе исполнения
l3config.pm:
Перенесены конфигурационные параметры lm.
ОСТОРОЖНО! Сам lm ПОКА ЧТО не использует l3config.pm для конфигурирования.
author | devi |
---|---|
date | Tue Nov 08 12:16:20 2005 +0200 (2005-11-08) |
parents | b3f5f5560802 |
children | 196c82b6e538 |
files | l3-agent l3-cgi l3config.pm |
line diff
1.1 --- a/l3-agent Mon Nov 07 13:28:15 2005 +0200 1.2 +++ b/l3-agent Tue Nov 08 12:16:20 2005 +0200 1.3 @@ -249,7 +249,7 @@ 1.4 my $local_session_id; 1.5 # Начальное значение идентификатора текущего сеанса определяем из имени скрипта 1.6 # Впоследствии оно может быть уточнено 1.7 - $file =~ /.*\/(.*)\.script$/; 1.8 + $file =~ m@.*/([^/]*)\.script$@; 1.9 $local_session_id = $1; 1.10 1.11 #Если файл только что появился, 1.12 @@ -792,7 +792,7 @@ 1.13 1.14 # Начинаем вывод команды 1.15 print OUT "<command>\n"; 1.16 - print OUT "<local_session_id>",$cl->{session_id},"</local_session_id>\n"; 1.17 + print OUT "<local_session_id>",$cl->{local_session_id},"</local_session_id>\n"; 1.18 print OUT "<time>",$cl->{time},"</time>\n"; 1.19 print OUT "<raw_start>",$cl->{raw_start},"</raw_start>\n"; 1.20 print OUT "<raw_output_start>",$cl->{raw_output_start},"</raw_output_start>\n";
2.1 --- a/l3-cgi Mon Nov 07 13:28:15 2005 +0200 2.2 +++ b/l3-cgi Tue Nov 08 12:16:20 2005 +0200 2.3 @@ -2,29 +2,98 @@ 2.4 2.5 use strict; 2.6 use CGI qw(:standard); 2.7 +use XML::Simple; 2.8 + 2.9 +BEGIN { 2.10 + chdir("/home/devi/cvs/lilalo"); 2.11 + require l3config; 2.12 +}; 2.13 2.14 my $value = param('PARAM'); 2.15 2.16 +my %Trainings; 2.17 +my $XMLTraining; 2.18 +my %Machines; 2.19 + 2.20 +sub load_training 2.21 +{ 2.22 + my $classfile = 2.23 + $_[0]|| 2.24 + $l3config::Config{"classfile"} || 2.25 + $l3config::Config{"path_classes"}."/".$l3config::Config{"class"}.$l3config::Config{"class_suffix"}; 2.26 + 2.27 + my $XMLTraining = XMLin($classfile , ForceArray => [ 'student' ] ) 2.28 + or die "Can't open file of the class ",$classfile,"\n"; 2.29 + 2.30 + for my $student (@{$XMLTraining->{"student"}}) { 2.31 + $XMLTraining->{host}->{$student->{"host"}}=$student; 2.32 + } 2.33 + return $XMLTraining; 2.34 +} 2.35 + 2.36 print header( 2.37 -charset => "utf-8", 2.38 ); 2.39 -chdir("/home/devi/cvs/lilalo"); 2.40 2.41 -# Вызов производится по URL 2.42 -my ($skip, $course, $host, $user) = split /\//,$ENV{PATH_INFO},4; 2.43 2.44 -my @args=( 2.45 - "--output" => "-", 2.46 - "--show_comments" => "no", 2.47 - "--course-center" => "\"Сетевые Технологии\"", 2.48 - "--course-trainer" => "\"Игорь Чубин\"", 2.49 - "--course-student" => "\"$user\@$host\"", 2.50 - "--course-code" => "\"$course\"", 2.51 -); 2.52 +if ($ENV{PATH_INFO} eq "/index") { 2.53 + # Показываем индекс курсов 2.54 + my @training_files = glob($l3config::Config{"path_classes"}."/*".$l3config::Config{"class_suffix"}); 2.55 + if (@training_files) { 2.56 + for my $training_file (@training_files) { 2.57 + my $training = load_training($training_file); 2.58 + $Trainings{$training->{"date"}}=$training; 2.59 + } 2.60 + print "<table>\n"; 2.61 + for my $tdate (reverse sort keys %Trainings) { 2.62 + my $t = $Trainings{$tdate}; 2.63 + print "<tr>"; 2.64 + print "<td>".$t->{date}."</td>"; 2.65 + print "<td>".$t->{course}."</td>"; 2.66 + print "</tr>\n"; 2.67 + print "<tr>"; 2.68 + print "<td/>"; 2.69 + print "<td><pre>"; 2.70 + for my $host (sort keys %{$t->{host}}) { 2.71 + my $h = $t->{host}->{$host}; 2.72 + print "$host"; 2.73 + print " ".$h->{firstname}." ".$h->{surname}." "; 2.74 + print "<a href='/cgi-bin/l3/".$tdate."/".$host."/root'>root</a> "; 2.75 + print "<a href='/cgi-bin/l3/".$tdate."/".$host."/".$h->{user}."'>".$h->{user}."</a> "; 2.76 + print "\n"; 2.77 + } 2.78 + print "</pre><td>"; 2.79 + print "</tr>\n"; 2.80 + } 2.81 + print "</table>\n"; 2.82 + } 2.83 + else { 2.84 + print "No training-files found<br/>\n"; 2.85 + print "Template to load files: ".$l3config::Config{"path_classes"}."*".$l3config::Config{"class_suffix"}."\n" 2.86 + } 2.87 +} 2.88 +else { 2.89 + # Вызов производится по URL 2.90 + my ($skip, $course, $host, $user) = split /\//,$ENV{PATH_INFO},4; 2.91 2.92 -open (FRONTEND, "./l3-frontend ".join(" ",@args)." |"); 2.93 -while (<FRONTEND>) { 2.94 - print; 2.95 + $l3config::Config{"class"}=$course; 2.96 + $XMLTraining = load_training; 2.97 + 2.98 + my @args=( 2.99 + "--output" => "-", 2.100 + "--show_comments" => "no", 2.101 + "--course-center" => $XMLTraining->{center}, 2.102 + "--course-trainer" => $XMLTraining->{instructor}->{firstname}." ".$XMLTraining->{instructor}->{surname}, 2.103 + "--course-student" => $XMLTraining->{host}->{$host}->{firstname}." ".$XMLTraining->{host}->{$host}->{surname}, 2.104 + "--course-code" => $XMLTraining->{course}, 2.105 + "--course-date" => $XMLTraining->{date}, 2.106 + "--backend_datafile" => "/var/lilalo/lablogs-xml/$course/$host/$user.xml", 2.107 + ); 2.108 + 2.109 + open (FRONTEND, "./l3-frontend ".join(" ",map("\"$_\"",@args))." |"); 2.110 + while (<FRONTEND>) { 2.111 + print; 2.112 + } 2.113 + close(FRONTEND); 2.114 } 2.115 -close(FRONTEND); 2.116
3.1 --- a/l3config.pm Mon Nov 07 13:28:15 2005 +0200 3.2 +++ b/l3config.pm Tue Nov 08 12:16:20 2005 +0200 3.3 @@ -1,6 +1,7 @@ 3.4 package l3config; 3.5 3.6 use Exporter; 3.7 +use vars qw(@ISA @EXPORT $VERSION); 3.8 use Getopt::Long; 3.9 3.10 @ISA = ('Exporter'); 3.11 @@ -82,6 +83,37 @@ 3.12 "course-center" => "", 3.13 "course-trainer" => "", 3.14 "course-student" => "", 3.15 + 3.16 + 3.17 + #lm 3.18 + "show_host" => "no", 3.19 + 3.20 + # Вспомогательные программы 3.21 + #"l3-report" => "./lm-report", 3.22 + "l3-report" => "./l3-report", 3.23 + 3.24 + # Каталоги 3.25 + "path_lilalo" => "/var/lilalo/", 3.26 + "path_classes" => "/var/lilalo/classes/", 3.27 + "path_lablogs" => "/var/lilalo/lablogs/", 3.28 + "courses_path" => "/var/lilalo/courses/", 3.29 + "outpath" => "/var/lilalo/out/", 3.30 + "path_web" => "/var/www/l3", # Путь к web-отчётам 3.31 + "path_share" => "./share/", # Путь к web-отчётам 3.32 + 3.33 + # Файлы 3.34 + "runfile" => "lm.run", 3.35 + "logfile" => "lm.log", 3.36 + 3.37 + "class" => "class", # Имя файла класса 3.38 + "class_suffix" => ".xml", # Cуффикс файла класса 3.39 + "classfile" => "", 3.40 + 3.41 + "sshkey" => "$ENV{HOME}/.ssh/id_dsa.pub", 3.42 + "lmssh" => "./lm-ssh", 3.43 + "lminstall" => "./lm-install", 3.44 + "ssh_user" => "root", 3.45 + 3.46 ); 3.47 3.48 sub read_config_file