S
sint
Доброго времени суток! Подскажите плиз как прописать в программе обработку команд?
Ситуация такая:
ОС Linux Runtu 3 ...
В моей сетке 4 компа, без домена: просто рабочая группа. Доступ в инет есть только на одном (на моём) )
и мне надо раздать доступ в нет для остальных 3х. Пробовал настроить squid-2.6.STABLE22, но не сумел,,,
Недавно нашел в нете код прокси-сервера на Perl,
вот он:
Теперь проблема: Как закрыть запущенный скрипт?
На первых же этапах настройки я его запустил и закрыл консоль,,,
Хочу вписать в скрипт хук на нажатие комбинации допустим "ctrl+shift+s", подскажите как?
Заранее благодарен!
Ситуация такая:
ОС Linux Runtu 3 ...
В моей сетке 4 компа, без домена: просто рабочая группа. Доступ в инет есть только на одном (на моём) )
и мне надо раздать доступ в нет для остальных 3х. Пробовал настроить squid-2.6.STABLE22, но не сумел,,,
Недавно нашел в нете код прокси-сервера на Perl,
вот он:
#!/usr/bin/perl -Tw
use HTTP:aemon;
use HTTP::Response;
use LWP::UserAgent;
use Compress::Zlib;
use CGI::Carp qw(fatalsToBrowser);
#Для автозаполнения форм и для записи запросов и ответов создадим лог файл PH
open(PH, ">>", "log.txt") or die "can't open 'log.txt': $!";
# Ниже список расширений (типов) файлов, которые мы не сжимаем
my @ext = qw(x-gtar x-gzip x-tar zip image zip z gz tz taz tgz lzh arj arc tar cab wmz yfs wsz exe uu xxe bhx b64 hqx mim);
#Список базовых url блокируемых ресурсов через пробел, например (все данные условны):
my @ext_url = qw(reklame.skazhem.net zloi-virus.com banner.von.ru tormoz.stat.ru);
#Наш ответ ненужным данным:
$block = HTTP::Response->new( "204", "No Content" );
# Номер порта нашего сервера, его мы указываем в настройках домашнего браузера
my $port = 8080;
# Если браузер внезапно отключится
$SIG{PIPE} = 'IGNORE';
# Создаем объект сервера
my $server = HTTP:aemon->new( LocalPort => $port ) or
die "Can't start server ($@)" unless defined $server;
# Создаем объект удаленного (серверного) браузера
my $ua = LWP::UserAgent->new;
# Ждем подключения нашего (домашнего) браузера
while (my $conn = $server->accept) {
# Дождавшись, получаем объект запроса в $request (вот тут мы его можем менять)
while (my $request = $conn->get_request) {
$conn->autoflush;
#Проверим url запрашиваемого ресурса на совпадение со списком блокировки:
if (grep { $request->uri =~ /\Q$_/g } @ext_url) {
#И в случае совпадения пошлем свой ответ "домашнему" браузеру:
$conn->send_response($block);
next;
}
# Например "сменим" браузер
$request->header(User_Agent => 'SuperPuper/v.9.14 Platinum');
# Перечислим все данные, которые мы можем получать, кроме flash (теперь нам flash не передадут)
$request->header(Accept =>
"text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1");
# Посылаем запрос через серверный браузер и получаем объект ответа в $resp
my $resp = $ua->simple_request($request);
# В переменной $c_cont содержание (данные) ответа
my $c_cont = $resp->content;
# Проверяем необходимость сжатия, если сжатие не нужно, тут же отправляем на домашний браузер
if ( $resp->content_encoding || (grep { $_ =~ /$resp->content_type/g } @ext) || length($c_cont) < 3000 ) {
$conn->send_response($resp);
}
else {
# Сжимаем данные
$c_cont_zip = Compress::Zlib::memGzip($c_cont);
# Устанавливаем сжатые данные в объект ответа
$resp->content($c_cont_zip);
# Устанавливаем признак сжатия в объект ответа
$resp->content_encoding('gzip');
# Посылаем ответ домашнему браузеру
$conn->send_response($resp);
}
}
print STDERR "Close: ", $conn->reason, "\n";
$conn->close;
undef $conn;
}
#Для автозаполнения форм и для записи запросов и ответов в лог файл PH
print PH $request->as_string, "\n";
print PH $resp->as_string, "\n";
Теперь проблема: Как закрыть запущенный скрипт?
На первых же этапах настройки я его запустил и закрыл консоль,,,
Хочу вписать в скрипт хук на нажатие комбинации допустим "ctrl+shift+s", подскажите как?
Заранее благодарен!