lilalo
changeset 115:9e6359b7ad55
Исправлена ошибка с смешением выводв сеансов
Добавлена поддержка таблуяции (tab completion)
l3config.pm перенесён в /etc/lilalo/ ; возможно не окончательно
Имя сервера для l3-upload не прописывается теперь жёстко в коде, а берётся из конфигурационного файла
Добавлена поддержка таблуяции (tab completion)
l3config.pm перенесён в /etc/lilalo/ ; возможно не окончательно
Имя сервера для l3-upload не прописывается теперь жёстко в коде, а берётся из конфигурационного файла
author | igor |
---|---|
date | Sun Mar 09 22:54:22 2008 +0200 (2008-03-09) |
parents | 658b4ea105c1 |
children | f45ba4b5dc7f |
files | install l3-agent l3-backend l3-cgi l3-cgi-lite l3-frontend l3-upload l3bashrc l3files/break.png l3files/tab.png |
line diff
1.1 --- a/install Sun Mar 09 02:38:56 2008 +0200 1.2 +++ b/install Sun Mar 09 22:54:22 2008 +0200 1.3 @@ -21,7 +21,8 @@ 1.4 url_lilalo="http://xgu.ru/lilalo" 1.5 url_l3bashrc="${url_lilalo}"/l3bashrc 1.6 url_l3agent="${url_lilalo}"/l3-agent 1.7 -url_l3config="${url_lilalo}"/l3config.pm 1.8 +url_l3config_pm="${url_lilalo}"/l3config.pm 1.9 +url_l3config="${url_lilalo}"/l3-config 1.10 url_l3prompt="${url_lilalo}"/l3prompt 1.11 url_perl_modules=${url_lilalo}/ 1.12 perl_modules="Term-VT102 Text-Iconv" 1.13 @@ -89,9 +90,11 @@ 1.14 do 1.15 user_home=`get_user_home "$user"` 1.16 mkdir -p ${user_home}/${lilalo_home} 1.17 - cp l3config.pm /usr/local/bin 1.18 + mkdir /etc/lilalo/ 1.19 + cp l3config.pm /etc/lilalo/ 1.20 cp l3-agent /usr/local/bin 1.21 - chmod 755 /usr/local/bin/l3-agent 1.22 + cp l3-config /usr/local/bin 1.23 + chmod 755 /usr/local/bin/l3-{agent,config} 1.24 cp l3bashrc ${user_home}/${lilalo_home} 1.25 cp l3prompt ${user_home}/${lilalo_home} 1.26 chmod 755 ${user_home}/${lilalo_home}/l3prompt 1.27 @@ -167,7 +170,7 @@ 1.28 step "Installing dependencies" apt_get_install_deps 1.29 step "Downloading l3bashrc" ${wget} ${url_l3bashrc} 1.30 step "Downloading l3prompt" ${wget} ${url_l3prompt} 1.31 -step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config}' 1.32 +step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3configpm}; ${wget} ${url_l3config}' 1.33 step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }' 1.34 step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }' 1.35 step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
2.1 --- a/l3-agent Sun Mar 09 02:38:56 2008 +0200 2.2 +++ b/l3-agent Sun Mar 09 22:54:22 2008 +0200 2.3 @@ -15,7 +15,7 @@ 2.4 use Time::Local 'timelocal_nocheck'; 2.5 use IO::Socket; 2.6 2.7 -use lib "/usr/local/bin"; 2.8 +use lib "/etc/lilalo"; 2.9 use l3config; 2.10 2.11 2.12 @@ -250,9 +250,7 @@ 2.13 my $cline_re2_v3 = qr/$cline_re2_v3_base$/sx; 2.14 2.15 2.16 - 2.17 - my $vt = Term::VT102->new ( 'cols' => $Config{"terminal_width"}, 2.18 - 'rows' => $Config{"terminal_height"}); 2.19 + my %vt; # Хэш виртуальных терминалов. По одному на каждый сеанс 2.20 my $cline_vt = Term::VT102->new ( 2.21 'cols' => $Config{"terminal_width"}, 2.22 'rows' => $Config{"terminal_height"}); 2.23 @@ -282,6 +280,12 @@ 2.24 $file =~ m@.*/([^/]*)\.script$@; 2.25 $local_session_id = $1; 2.26 2.27 + if (not defined($vt{$local_session_id})) { 2.28 + $vt{$local_session_id} = Term::VT102->new ( 2.29 + 'cols' => $Config{"terminal_width"}, 2.30 + 'rows' => $Config{"terminal_height"}); 2.31 + } 2.32 + 2.33 #Если файл только что появился, 2.34 #пытаемся найти и загрузить информацию о соответствующей ему сессии 2.35 if (!$Script_Files{$file}) { 2.36 @@ -413,7 +417,7 @@ 2.37 # Output 2.38 if (!$last_cl{"suppress_output"} || $last_cl{"err"}) { 2.39 for (my $i=0; $i<$Config{"terminal_height"}; $i++) { 2.40 - my $line= $vt->row_plaintext($i); 2.41 + my $line= $vt{$local_session_id}->row_plaintext($i); 2.42 next if !defined ($line) ; #|| $line =~ /^\s*$/; 2.43 $line =~ s/\s*$//; 2.44 $line .= "\n" unless $line =~ /^\s*$/; 2.45 @@ -424,7 +428,7 @@ 2.46 $last_cl{"output"}= ""; 2.47 } 2.48 2.49 - $vt->reset(); 2.50 + $vt{$local_session_id}->reset(); 2.51 2.52 2.53 # Save 2.54 @@ -538,7 +542,7 @@ 2.55 # Output 2.56 if (!$last_cl{"suppress_output"} || $last_cl{"err"}) { 2.57 for (my $i=0; $i<$Config{"terminal_height"}; $i++) { 2.58 - my $line= $vt->row_plaintext($i); 2.59 + my $line= $vt{$local_session_id}->row_plaintext($i); 2.60 next if !defined ($line) ; #|| $line =~ /^\s*$/; 2.61 $line =~ s/\s*$//; 2.62 $line .= "\n" unless $line =~ /^\s*$/; 2.63 @@ -549,7 +553,7 @@ 2.64 $last_cl{"output"}= ""; 2.65 } 2.66 2.67 - $vt->reset(); 2.68 + $vt{$local_session_id}->reset(); 2.69 2.70 2.71 # Changing encoding 2.72 @@ -575,7 +579,7 @@ 2.73 $last_output_length+=length($_); 2.74 #if (!$cl{"suppress_output"} || $last_output_length < 5000) { 2.75 if ($last_output_length < 50000) { 2.76 - $vt->process("$_"."\n") 2.77 + $vt{$local_session_id}->process("$_"."\n") 2.78 } 2.79 else 2.80 {
3.1 --- a/l3-backend Sun Mar 09 02:38:56 2008 +0200 3.2 +++ b/l3-backend Sun Mar 09 22:54:22 2008 +0200 3.3 @@ -1,7 +1,7 @@ 3.4 #!/usr/bin/perl 3.5 3.6 use strict; 3.7 -use lib '.'; 3.8 +use lib '/etc/lilalo/'; 3.9 use l3config; 3.10 use IO::Socket; 3.11 use POSIX qw(:sys_wait_h);
4.1 --- a/l3-cgi Sun Mar 09 02:38:56 2008 +0200 4.2 +++ b/l3-cgi Sun Mar 09 22:54:22 2008 +0200 4.3 @@ -6,7 +6,7 @@ 4.4 use utf8; 4.5 4.6 BEGIN { 4.7 - chdir("/home/devi/cvs/lilalo"); 4.8 + chdir("/etc/lilalo"); 4.9 require l3config; 4.10 l3config::init_config(); 4.11 };
5.1 --- a/l3-cgi-lite Sun Mar 09 02:38:56 2008 +0200 5.2 +++ b/l3-cgi-lite Sun Mar 09 22:54:22 2008 +0200 5.3 @@ -5,7 +5,7 @@ 5.4 use utf8; 5.5 5.6 BEGIN { 5.7 - chdir("/home/devi/cvs/lilalo"); 5.8 + chdir("/etc/lilalo/"); 5.9 require l3config; 5.10 l3config::init_config(); 5.11 };
6.1 --- a/l3-frontend Sun Mar 09 02:38:56 2008 +0200 6.2 +++ b/l3-frontend Sun Mar 09 22:54:22 2008 +0200 6.3 @@ -1,7 +1,7 @@ 6.4 #!/usr/bin/perl -w 6.5 6.6 use POSIX qw(strftime); 6.7 -use lib '.'; 6.8 +use lib '/etc/lilalo'; 6.9 use l3config; 6.10 use utf8; 6.11 6.12 @@ -380,6 +380,11 @@ 6.13 6.14 6.15 my $current_command=0; 6.16 + my $prev_i; 6.17 + 6.18 + my $tab_seq =0 ; # номер команды в последовательности tab-completion 6.19 + # отличен от нуля только для тех последовательностей, 6.20 + # где постоянно нажимается клавиша tab 6.21 6.22 COMMAND_LINE_PROCESSING: 6.23 for my $i (@Command_Lines_Index) { 6.24 @@ -390,6 +395,12 @@ 6.25 6.26 my $cl = \$Command_Lines[$i]; 6.27 6.28 + # Запоминаем предыщуюу команду 6.29 + # Она нам потребуется, в частности, для ввода tab_seq рпи обработке tab_completion 6.30 + my $prev_cl; 6.31 + $prev_cl = \$Command_Lines[$prev_i] if defined($prev_i); 6.32 + $prev_i = $i; 6.33 + 6.34 next if !$cl; 6.35 6.36 for my $filter_key (keys %filter) { 6.37 @@ -403,6 +414,7 @@ 6.38 6.39 $$cl->{err} ||=0; 6.40 6.41 + 6.42 # Класс команды 6.43 6.44 $$cl->{"class"} = $$cl->{"err"} eq 130 ? "interrupted" 6.45 @@ -460,6 +472,25 @@ 6.46 } 6.47 $$cl->{short_output} = $output; 6.48 6.49 +# Обработка команд с одинаковым временем 6.50 +# Скорее всего они набраны с помощью tab-completion 6.51 + if (defined($prev_cl)) { 6.52 + if ($$prev_cl->{time} == $$cl->{time}) { 6.53 + $tab_seq++; 6.54 + } 6.55 + else { 6.56 + $tab_seq=0; 6.57 + }; 6.58 + $$prev_cl->{tab_seq}=$tab_seq; 6.59 + 6.60 +# Обработка команд с одинаковым номером в истории 6.61 +# Скорее всего они набраны с помощью Ctrl-C 6.62 + if ($$prev_cl->{history} == $$cl->{history}) { 6.63 + $$prev_cl->{break}=1; 6.64 + } 6.65 + } 6.66 + 6.67 + 6.68 #Обработка пометок 6.69 # Если несколько пометок (notes) идут подряд, 6.70 # они все объединяются 6.71 @@ -588,12 +619,6 @@ 6.72 last if $current_command > $Config{"start_from_command"} + $Config{"commands_to_show_at_a_go"}; 6.73 6.74 6.75 -# Пропускаем команды, с одинаковым временем 6.76 -# Это не совсем правильно. 6.77 -# Возможно, что это команды, набираемые с помощью <completion> 6.78 -# или запомненные с помощью <ctrl-c> 6.79 - 6.80 - next if $Stat{LastCommand} == $cl->{time}; 6.81 6.82 # Пропускаем строки, которые противоречат фильтру 6.83 # Если у нас недостаточно информации о том, подходит строка под фильтр или нет, 6.84 @@ -760,7 +785,13 @@ 6.85 $this_day_result .= "<div class='cline'>" . $cline ; #cline 6.86 $this_day_result .= "<span title='Код завершения ".$cl->{"err"}."'>\n" 6.87 . "<img src='".$Config{frontend_ico_path}."/error.png'/>\n" 6.88 - . "</span>\n" if $cl->{"err"}; 6.89 + . "</span>\n" if ($cl->{"err"} and not $cl->{tab_seq} and not $cl->{break}); 6.90 + $this_day_result .= "<span title='Tab completion ".$cl->{tab_seq}."'>\n" 6.91 + . "<img src='".$Config{frontend_ico_path}."/tab.png'/>\n" 6.92 + . "</span>\n" if $cl->{tab_seq}; 6.93 + $this_day_result .= "<span title='Ctrl-C pressed'>\n" 6.94 + . "<img src='".$Config{frontend_ico_path}."/break.png'/>\n" 6.95 + . "</span>\n" if ($cl->{break} and not $cl->{tab_seq}); 6.96 $this_day_result .= "</div>\n"; #cline 6.97 6.98 # OUTPUT
7.1 --- a/l3-upload Sun Mar 09 02:38:56 2008 +0200 7.2 +++ b/l3-upload Sun Mar 09 22:54:22 2008 +0200 7.3 @@ -2,7 +2,7 @@ 7.4 # 7.5 7.6 use CGI; 7.7 -$upload_dir = "/var/www/xguru/l3shot"; 7.8 +$upload_dir = "/var/www/l3shot"; 7.9 $query = new CGI; 7.10 7.11 $filename = $query->param("photo");
8.1 --- a/l3bashrc Sun Mar 09 02:38:56 2008 +0200 8.2 +++ b/l3bashrc Sun Mar 09 22:54:22 2008 +0200 8.3 @@ -182,7 +182,6 @@ 8.4 unset `set | grep '^_l3_.*=' | sed 's/=.*//'` 8.5 } 8.6 8.7 - 8.8 l3shot() 8.9 { 8.10 if [ -x "`which xwd`" ] 8.11 @@ -193,7 +192,7 @@ 8.12 [ -d ${_l3_home} ] || mkdir -p ${_l3_home} 8.13 xwd -out "$_l3_home/$shot_name" \ 8.14 && echo Screenshot is written to ${_l3_home}/${shot_name} \ 8.15 - && curl -s -F photo=@$_l3_home/$shot_name http://xgu.ru/l3-upload 8.16 + && curl -s -F photo=@$_l3_home/$shot_name http://`l3-config backend_address`/l3-upload 8.17 else 8.18 { 8.19 echo 8.20 @@ -228,7 +227,7 @@ 8.21 cp $source /tmp/$target 8.22 fi 8.23 echo Uploaded file name is ${target} 8.24 - curl -s -F photo=@/tmp/$target http://xgu.ru/l3-upload && rm -f /tmp/$target 8.25 + curl -s -F photo=@/tmp/$target http://`l3-config backend_address`/l3-upload && rm -f /tmp/$target 8.26 fi 8.27 } 8.28
9.1 Binary file l3files/break.png has changed
10.1 Binary file l3files/tab.png has changed