lilalo

diff l3-cgi @ 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 для конфигурирования.
author devi
date Tue Nov 08 12:16:20 2005 +0200 (2005-11-08)
parents b3f5f5560802
children 196c82b6e538
line diff
     1.1 --- a/l3-cgi	Mon Nov 07 13:28:15 2005 +0200
     1.2 +++ b/l3-cgi	Tue Nov 08 12:16:20 2005 +0200
     1.3 @@ -2,29 +2,98 @@
     1.4  
     1.5  use strict;
     1.6  use CGI qw(:standard);
     1.7 +use XML::Simple;
     1.8 +
     1.9 +BEGIN {
    1.10 +	chdir("/home/devi/cvs/lilalo");
    1.11 +	require l3config;
    1.12 +};
    1.13  
    1.14  my $value = param('PARAM');
    1.15  
    1.16 +my %Trainings;
    1.17 +my $XMLTraining;
    1.18 +my %Machines;
    1.19 +
    1.20 +sub load_training
    1.21 +{
    1.22 +        my $classfile = 
    1.23 +	$_[0]||
    1.24 +        $l3config::Config{"classfile"} || 
    1.25 +        $l3config::Config{"path_classes"}."/".$l3config::Config{"class"}.$l3config::Config{"class_suffix"};
    1.26 +
    1.27 +        my $XMLTraining = XMLin($classfile , ForceArray => [ 'student' ] )  
    1.28 +                or die "Can't open file of the class ",$classfile,"\n";
    1.29 +
    1.30 +        for my $student (@{$XMLTraining->{"student"}}) {
    1.31 +		$XMLTraining->{host}->{$student->{"host"}}=$student;
    1.32 +        }
    1.33 +	return $XMLTraining;
    1.34 +}
    1.35 +
    1.36  print header(
    1.37  		-charset => "utf-8", 
    1.38  		);
    1.39 -chdir("/home/devi/cvs/lilalo");
    1.40  
    1.41 -# Вызов производится по URL
    1.42 -my ($skip, $course, $host, $user) = split /\//,$ENV{PATH_INFO},4;
    1.43  
    1.44 -my @args=(
    1.45 -	"--output" 		=>	"-",
    1.46 -	"--show_comments" 	=>	"no",
    1.47 -	"--course-center"	=>	"\"Сетевые Технологии\"",
    1.48 -	"--course-trainer"	=>	"\"Игорь Чубин\"",
    1.49 -	"--course-student"	=>	"\"$user\@$host\"",
    1.50 -	"--course-code"		=>	"\"$course\"",
    1.51 -);
    1.52 +if ($ENV{PATH_INFO} eq "/index") {
    1.53 +	# Показываем индекс курсов
    1.54 +	my @training_files = glob($l3config::Config{"path_classes"}."/*".$l3config::Config{"class_suffix"});
    1.55 +	if (@training_files) {
    1.56 +		for my $training_file (@training_files) {
    1.57 +			my $training = load_training($training_file);
    1.58 +			$Trainings{$training->{"date"}}=$training;
    1.59 +		}
    1.60 +		print "<table>\n";
    1.61 +		for my $tdate (reverse sort keys %Trainings) {
    1.62 +			my $t = $Trainings{$tdate};
    1.63 +			print "<tr>";
    1.64 +			print "<td>".$t->{date}."</td>";
    1.65 +			print "<td>".$t->{course}."</td>";
    1.66 +			print "</tr>\n";
    1.67 +			print "<tr>";
    1.68 +			print "<td/>";
    1.69 +			print "<td><pre>";
    1.70 +			for my $host (sort keys %{$t->{host}}) {
    1.71 +				my $h = $t->{host}->{$host};
    1.72 +				print "$host";
    1.73 +				print " ".$h->{firstname}." ".$h->{surname}." ";
    1.74 +				print "<a href='/cgi-bin/l3/".$tdate."/".$host."/root'>root</a> ";
    1.75 +				print "<a href='/cgi-bin/l3/".$tdate."/".$host."/".$h->{user}."'>".$h->{user}."</a> ";
    1.76 +				print "\n";
    1.77 +			}
    1.78 +			print "</pre><td>";
    1.79 +			print "</tr>\n";
    1.80 +		}
    1.81 +		print "</table>\n";
    1.82 +	}
    1.83 +	else {
    1.84 +		print "No training-files found<br/>\n";
    1.85 +		print "Template to load files: ".$l3config::Config{"path_classes"}."*".$l3config::Config{"class_suffix"}."\n"
    1.86 +	}
    1.87 +}
    1.88 +else {
    1.89 +	# Вызов производится по URL
    1.90 +	my ($skip, $course, $host, $user) = split /\//,$ENV{PATH_INFO},4;
    1.91  
    1.92 -open (FRONTEND, "./l3-frontend ".join(" ",@args)." |");
    1.93 -while (<FRONTEND>) {
    1.94 -	print;
    1.95 +	$l3config::Config{"class"}=$course;
    1.96 +	$XMLTraining = load_training;
    1.97 +
    1.98 +	my @args=(
    1.99 +		"--output" 		=>	"-",
   1.100 +		"--show_comments" 	=>	"no",
   1.101 +		"--course-center"	=>	$XMLTraining->{center},
   1.102 +		"--course-trainer"	=>	$XMLTraining->{instructor}->{firstname}." ".$XMLTraining->{instructor}->{surname},
   1.103 +		"--course-student"	=>	$XMLTraining->{host}->{$host}->{firstname}." ".$XMLTraining->{host}->{$host}->{surname},
   1.104 +		"--course-code"		=>	$XMLTraining->{course},
   1.105 +		"--course-date"		=>	$XMLTraining->{date},
   1.106 +		"--backend_datafile"	=>	"/var/lilalo/lablogs-xml/$course/$host/$user.xml",
   1.107 +	);
   1.108 +
   1.109 +	open (FRONTEND, "./l3-frontend ".join(" ",map("\"$_\"",@args))." |");
   1.110 +	while (<FRONTEND>) {
   1.111 +		print;
   1.112 +	}
   1.113 +	close(FRONTEND);
   1.114  }
   1.115 -close(FRONTEND);
   1.116