# HG changeset patch # User devi # Date 1140450760 -7200 # Node ID d28dda8ea18faa7b2d0f9e400b0af223f1a003a4 # Parent 44973d76ba4d1937f6c8b581f310fd409f2f0d2e 1) Изменён формат имени diff-файлов. Теперь в имени присутствует только название сессии, время и имя файла. 2) Можно просмотреть отдельную сессию. Для этого нужно щёлкнуть по блоку сессии в журнале 3) Исправлена ошибка с таблицей новых команд в последнем дне. Раньше она просто не показывалась 4) Запись lablog-ов теперь ведётся только для интерактивных shell'ов Неинтерактивные работают как обычно. diff -r 44973d76ba4d -r d28dda8ea18f l3-agent --- a/l3-agent Sun Feb 19 16:02:42 2006 +0200 +++ b/l3-agent Mon Feb 20 17:52:40 2006 +0200 @@ -58,36 +58,36 @@ for my $file (@files) { next if defined($Diffs{$file}); - my %diff; - - $diff{"path"}=$path; - $diff{"uid"}="SET THIS"; -# Сейчас UID определяется из названия каталога -# откуда берутся diff-файлы -# Это неправильно -# -# ВАРИАНТ: -# К файлам жураналам должны прилагаться ситемны файлы, -# мз которых и будет определяться соответствие -# имён пользователей их uid'ам -# - $diff{"uid"} = 0 if $path =~ m@/root/@; - - $diff{"bind_to"}=""; - $diff{"time_range"}=-1; - - next if not $file=~m@/(D?[0-9][0-9]?[0-9]?)[^/]*?([0-9]*):([0-9]*):?([0-9]*)@; - $diff{"day"}=$1 || ""; - $diff{"hour"}=$2; - $diff{"min"}=$3; - $diff{"sec"}=$4 || 0; - - $diff{"index"}=$i; +# Старый формат имени diff-файла +# DEPRECATED + if ($file=~m@/(D?[0-9][0-9]?[0-9]?)[^/]*?([0-9]*):([0-9]*):?([0-9]*)@) { + $diff{"day"}=$1 || ""; + $diff{"hour"}=$2; + $diff{"min"}=$3; + $diff{"sec"}=$4 || 0; + + $diff{"uid"} = 0 if $path =~ m@/root/@; print "diff loaded: $diff{day} $diff{hour}:$diff{min}:$diff{sec}\n"; - + + } +# Новый формат имени diff-файла + elsif ($file =~ m@.*/([^_]*)_([0-9]+)(.*)@) { + $diff{"local_session_id"} = $1; + $diff{"time"} = $2; + $diff{"filename"} = $3; + $diff{"filename"} =~ s@_@/@g; + $diff{"filename"} =~ s@//@_@g; + + print "diff loaded: $diff{filename} (time=$diff{time},session=$diff{local_session_id})\n"; + } + else { + next; + } + +# Чтение и изменение кодировки содержимого diff-файла local $/; open (F, "$file") or return "Can't open file $file ($_[0]) for reading"; @@ -98,9 +98,12 @@ } close(F); $diff{"text"}=$text; - #print "$file loaded ($diff{day})\n"; - #push @Diffs, \%diff; + $diff{"path"}=$path; + $diff{"bind_to"}=""; + $diff{"time_range"}=-1; + $diff{"index"}=$i; + $Diffs{$file} = \%diff; $i++; } @@ -110,11 +113,6 @@ sub bind_diff { -# my $path = shift; -# my $pid = shift; -# my $day = shift; -# my $lab = shift; - print "Trying to bind diff...\n"; my $cl = shift; @@ -126,12 +124,24 @@ for my $diff_key (keys %Diffs) { my $diff = $Diffs{$diff_key}; - # Check here date, time and user + next if ($diff->{"local_session_id"} + && $cl->{"local_session_id"} + && ($cl->{"local_session_id"} ne $diff->{"local_session_id"})); + print "diff of my session found\n"; + next if ($diff->{"day"} && $cl->{"day"} && ($cl->{"day"} ne $diff->{"day"})); - #next if (!$diff->{"uid"} && $cl->{"euid"} != $diff->{"uid"}); - - my $dt=($diff->{"hour"}-$hour)*3600 +($diff->{"min"}-$min)*60 + ($diff->{"sec"}-$sec); - if ($dt >0 && $dt < $min_dt && ($diff->{"time_range"} <0 || $dt < $diff->{"time_range"})) { + + my $dt; + if ($diff->{"time"} && $cl->{"time"}) { + $dt = $diff->{"time"} - $cl->{"time"} + } + else { + $dt=($diff->{"hour"}-$hour)*3600 +($diff->{"min"}-$min)*60 + ($diff->{"sec"}-$sec); + } + if ($dt >0 + && $dt < $min_dt + && ($diff->{"time_range"} <0 + || $dt < $diff->{"time_range"})) { print "Approppriate diff found: dt=$dt\n"; if ($diff->{"bind_to"}) { undef $diff->{"bind_to"}->{"diff"}; @@ -141,7 +151,7 @@ $cl->{"diff"} = $diff_key; $min_dt = $dt; - } + } } } @@ -281,7 +291,7 @@ $file =~ m@.*/(.*?)-.*@; - print "+- processing file $file\n" if $Config{"verbose"} =~/y/; + print "\n+- processing file $file\n" if $Config{"verbose"} =~/y/; my $tty = $1; my $first_pass = 1; diff -r 44973d76ba4d -r d28dda8ea18f l3-cgi --- a/l3-cgi Sun Feb 19 16:02:42 2006 +0200 +++ b/l3-cgi Mon Feb 20 17:52:40 2006 +0200 @@ -13,7 +13,7 @@ my %filter; -for my $key (qw(login_from)) { +for my $key (qw(login_from local_session_id)) { $filter{$key} = param($key) if param($key); $filter{$key} = $ENV{$key} if defined $ENV{$key}; } diff -r 44973d76ba4d -r d28dda8ea18f l3-frontend --- a/l3-frontend Sun Feb 19 16:02:42 2006 +0200 +++ b/l3-frontend Mon Feb 20 17:52:40 2006 +0200 @@ -394,6 +394,7 @@ my $cl; my $last_tty=""; + my $last_session=""; my $last_day=q(); my $last_wday=q(); my $in_range=0; @@ -565,11 +566,20 @@ for my $entry_class (sort keys %new_entries_of) { my $new_commands_section = make_new_entries_table($entry_class=~/[0-9]+\s+(.*)/, \@known_commands); - my $table_caption = "Таблица ".$table_number++.". ".$Day_Name[$last_wday].". Новые ".$new_entries_of{$entry_class}; + my $table_caption = "Таблица " + . $table_number++ + . ". " + . $Day_Name[$last_wday] + . ". Новые " + . $new_entries_of{$entry_class}; if ($new_commands_section) { $result .= "" - . "" - . "" + . "" + . "" + . "" + . "" + . "" + . "" . $new_commands_section . "
$table_caption
КомандаОписание
$table_caption
КомандаОписание
" } @@ -637,6 +647,15 @@ $last_tty=$cl->{"tty"}; } +# Session change + if ( $last_session ne $cl->{"local_session_id"}) { + my $tty = $cl->{"tty"}; + $this_day_result .= "
" + . $Sessions{$cl->{"local_session_id"}}->{"tty"} + ."
"; + $last_session=$cl->{"local_session_id"}; + } + # TIME $this_day_result .= "
$hour:$min:$sec
" if $Config{"show_time"} =~ /^y/i; @@ -725,24 +744,29 @@ $result .= "

".$Day_Name[$last_wday]."

"; for my $entry_class (keys %new_entries_of) { - my $new_commands_section = make_new_entries_table("$entry_class", \@known_commands); - @known_commands = keys %CommandsFDistribution; - - my $table_caption = "Таблица ".$table_number++.". Новые ".$new_entries_of{$entry_class}. ". ".$Day_Name[$last_wday]; + my $new_commands_section = make_new_entries_table($entry_class=~/[0-9]+\s+(.*)/, \@known_commands); + my $table_caption = "Таблица " + . $table_number++ + . ". " + . $Day_Name[$last_wday] + . ". Новые " + . $new_entries_of{$entry_class}; if ($new_commands_section) { - $result .= "" - . "" - . "" + $result .= "
$table_caption
КомандаОписание
" + . "" + . "" + . "" + . "" + . "" + . "" . $new_commands_section . "
$table_caption
КомандаОписание
" - ; } } + @known_commands = keys %CommandsFDistribution; - #$result .= "\n"; $result .= $this_day_result; - #$result .= "
"; } return ($result, collapse_list (\@toc)); diff -r 44973d76ba4d -r d28dda8ea18f l3bashrc --- a/l3bashrc Sun Feb 19 16:02:42 2006 +0200 +++ b/l3bashrc Mon Feb 20 17:52:40 2006 +0200 @@ -17,6 +17,7 @@ _l3_start() { + echo $- | grep -q i || return 0 if _l3_is_running_here then _l3_env @@ -145,12 +146,15 @@ TIME=\"\`date +%s\`\" DIR=\"\" [ \"\${1#/}\" = \"\$1\" ] && DIR=\"\$PWD/\" - DIFFNAME=\"\$PPID_\${TIME}_\`echo \$DIR\$1| /bin/sed s@_@__@ | /bin/sed 's@/@_@g'\`.diff\" + DIFFNAME=\"\${L3_SESSION_ID}_\${TIME}\`echo \$DIR\$1| sed s@_@__@ | sed 's@/@_@g'\`.diff\" old_file=\"/tmp/l3-saved-\$\$.\$RANDOM.\$RANDOM\" /bin/cp -- \"\$1\" \"\$old_file\" 2> /dev/null $editor_file \"\$@\" || ERR=\$? - [ -e \"\$old_file\" ] && diff \"\$old_file\" \"\$1\" > \"\$L3_HOME/\$DIFFNAME\" 2> /dev/null \ - || diff /dev/null \"\$1\" > \"\$L3_HOME/\$DIFFNAME\" 2> /dev/null + [ -e \"\$old_file\" ] && diff \"\$old_file\" \"\$1\" > \"\$L3_HOME/\$DIFFNAME\" 2> /dev/null + if [ "$?" == 2 ] + then + diff /dev/null \"\$1\" > \"\$L3_HOME/\$DIFFNAME\" 2> /dev/null + fi /bin/rm \"\$old_file\" 2> /dev/null return \$ERR fi