lilalo

changeset 98:4c02cf4123ee

l3-agent и l3-backend изменены так, что
все записанные команды теперь привязаны к контексту,
заданному в параметре
l3cd
агента

Их XML-представление теперь сохраняется не только в общем
файле backend.xml,
но и в файлах соответствующих контексту l3cd

$Config{backend_datadir}/$l3cd/data.xml

Параметр l3cd (пока что) меняется вручную в конфигурационном
файле агента ~/.l3rc

После того как параметр изменён необходимо перезапустить агент,
отправив ему сигнал HUP
killall -1 l3-agent




ЧТО НУЖНО СДЕЛАТЬ:

== Безопасность ==

* Сделать процедуру залогивинивания и проверки подлинности пользователя
* Ограничить доступ на запись в контекстные каталоги для пользователей

== Смена каталога ==
* Сделать команду l3, которая позволяет изменить и просмотреть
текущий l3-контекст

l3 pwd
l3 cd /devi/netflow
author devi
date Sun Jun 11 22:07:42 2006 +0300 (2006-06-11)
parents 9f64b4cfa4f6
children 05e99d32f1f5
files l3-agent l3-backend l3config.pm
line diff
     1.1 --- a/l3-agent	Sun May 28 17:46:58 2006 +0300
     1.2 +++ b/l3-agent	Sun Jun 11 22:07:42 2006 +0300
     1.3 @@ -698,6 +698,7 @@
     1.4  
     1.5          # Начинаем вывод команды
     1.6          print OUT "<command>\n";
     1.7 +        print OUT "<l3cd>$Config{l3cd}</l3cd>\n" if $Config{"l3cd"};
     1.8          for my $element (qw(
     1.9              local_session_id
    1.10              history
    1.11 @@ -755,6 +756,7 @@
    1.12      open(OUT, ">>", $output_filename)
    1.13          or die "Can't open $output_filename for writing\n";
    1.14      print OUT "<session>\n";
    1.15 +    print OUT "<l3cd>$Config{l3cd}</l3cd>\n" if $Config{"l3cd"};
    1.16      my %session = %{$Sessions{$local_session_id}};
    1.17      for my $key (keys %session) {
    1.18          print OUT "<$key>".$session{$key}."</$key>\n";
    1.19 @@ -822,6 +824,11 @@
    1.20      $Killed = 1;
    1.21  }
    1.22  
    1.23 +sub reload
    1.24 +{
    1.25 +    init_config;
    1.26 +}
    1.27 +
    1.28  sub main
    1.29  {
    1.30  
    1.31 @@ -894,7 +901,9 @@
    1.32  
    1.33              $0 = $Config{"l3-agent"};
    1.34              
    1.35 -            $SIG{INT} = $SIG{TERM} = $SIG{HUP} = \&process_was_killed;
    1.36 +            $SIG{INT} = $SIG{TERM} = \&process_was_killed;
    1.37 +            $SIG{HUP} = \&reload;
    1.38 +
    1.39          }
    1.40          while (not $Killed) {
    1.41              @Command_Lines = ();
     2.1 --- a/l3-backend	Sun May 28 17:46:58 2006 +0300
     2.2 +++ b/l3-backend	Sun Jun 11 22:07:42 2006 +0300
     2.3 @@ -91,13 +91,35 @@
     2.4  		# Это наш ответвлённый клиент
     2.5  		close($server);
     2.6  
     2.7 +        my $saved_data = "";
     2.8 +
     2.9  		# Считываем данные и передаём их в точку получения
    2.10  		open(OUT, ">>", $Config{"backend_datafile"});
    2.11  		select OUT; $|=1;
    2.12  		while(<$client>) {
    2.13  			print OUT $_;
    2.14 +            $saved_data .= $_;
    2.15  		}
    2.16  		close(OUT);
    2.17 +
    2.18 +        while ($saved_data =~ m@<(session|command)>(.*)</$1>@sg) {
    2.19 +            my $element_name = $1;
    2.20 +            my $element = $2;
    2.21 +            if ($element =~ m@<l3cd>(.*?)</l3cd>@msg) {
    2.22 +# Обнаружен элемент l3cd
    2.23 +# Информация должна быть сохранена в соответствующий каталог
    2.24 +                my $l3cd = $1;
    2.25 +# Путь l3cd должен быть не пуст, 
    2.26 +# и в нём могут быть только символы латинского алфавита, цифры и знаки _ и -
    2.27 +                if ($l3cd && $l3cd =~ /^[a-zA-Z_\/0-9-]*/) {
    2.28 +                    system("mkdir -p $Config{backend_datadir}/$l3cd");
    2.29 +                    if (open(OUT, ">>", $Config{"backend_datadir"}."/$l3cd/data.xml")) {
    2.30 +                        print OUT "<$element_name>".$element."</$element_name>";
    2.31 +                        close(OUT);
    2.32 +                    };
    2.33 +                }
    2.34 +            }
    2.35 +        }
    2.36  	} 
    2.37  	continue {
    2.38  		# Наш родитель
     3.1 --- a/l3config.pm	Sun May 28 17:46:58 2006 +0300
     3.2 +++ b/l3config.pm	Sun Jun 11 22:07:42 2006 +0300
     3.3 @@ -9,7 +9,7 @@
     3.4  @EXPORT = qw(%Config &init_config);
     3.5  
     3.6  our $System_Config_File = "/etc/lilalo.conf";
     3.7 -our $User_Config_File = "$ENV{HOME}/.lilalo.conf";
     3.8 +our $User_Config_File = "$ENV{HOME}/.l3rc";
     3.9  $ENV{HOME} ||= "/tmp";
    3.10  
    3.11  
    3.12 @@ -84,10 +84,11 @@
    3.13      "detach"            => "yes",
    3.14      "agent_pidfile"     => "$ENV{HOME}/.lilalo/l3-agent.pid",
    3.15  
    3.16 -    "backend_address"   => "192.168.15.254",
    3.17 +    "backend_address"   => "192.168.18.254",
    3.18      "backend_port"      => "18030",
    3.19      "backend_pidfile"   => "/tmp/l3-backend.pid",
    3.20      "backend_datafile"  => "/var/lilalo/lablogs-xml/backend.xml",
    3.21 +    "backend_datadir"  => "/var/lilalo/lablogs-xml/",
    3.22  
    3.23      "l3-agent"          => "l3-agent", 
    3.24      "l3-backend"        => "l3-backend", 
    3.25 @@ -103,6 +104,12 @@
    3.26  #lm
    3.27      "show_host"         => "no",
    3.28  
    3.29 +    "l3cd"              => "",          # Текущий контекст перехваченных команд
    3.30 +                                        # Возможные варианты:
    3.31 +                                        #   КУРС/ДАТА-НАЧАЛА/МАШИНА/ПОЛЬЗОВАТЕЛЬ
    3.32 +                                        #   ДАТА-НАЧАЛА/КУРС/МАШИНА/ПОЛЬЗОВАТЕЛЬ
    3.33 +                                        #   УНИКАЛЬНЫЙ_ПОЛЬЗОВАТЕЛЬ/КУРС/МАШИНА/ПОЛЬЗОВАТЕЛЬ
    3.34 +
    3.35  # Вспомогательные программы
    3.36  #"l3-report"    => "./lm-report",
    3.37      "l3-report"         => "./l3-report",
    3.38 @@ -145,6 +152,7 @@
    3.39  	open(CONFIG, "$filename")
    3.40  		or return;
    3.41  	while (<CONFIG>) {
    3.42 +        chomp;
    3.43  		s/#.*//;
    3.44  		next if /^\s*$/;
    3.45  		my ($var, $val) =  split /\s*=\s*/, $_, 2;