информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медГде водятся OGRыПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[Unix] начет редиректа aka datatpipe.c/pl... 13.10.01 15:15  
Автор: WingGod Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вощем люди такая трабла: мне нужно редиретиться на другой сервак скриптом datapipe(DP) (кто не знает - это такой скрипт котрой редиректить порт одной машины на порт дургой машины те прокся, есть весии на С и Перле) , но DP содает процесс а мне это не нужно, те мне надо отрыть редирект когда я конечусь а когда перестал - закрыть (те убить демона) :---)


Еси кто понял че мне надо ПОМОГИТЕ!
оно? 14.10.01 16:37  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> скрипт котрой редиректить порт одной машины на порт дургой
> машины те прокся, есть весии на С и Перле) , но DP содает
> процесс а мне это не нужно, те мне надо отрыть редирект
> когда я конечусь а когда перестал - закрыть (те убить
> демона) :---)

#!/usr/bin/perl

use Getopt::Long;
use Net::hostent;
use IO::Socket;
use POSIX ":sys_wait_h";

my (
%Children,
$REMOTE,
$LOCAL,
$SERVICE,
$proxy_server,
$ME,
);

($ME = $0) =~ s,.*/,,;

check_args();
start_proxy();
service_clients();
die "THIS SERVER IS NOT REACHED";


sub check_args{
GetOptions(
"remote=s" => \$REMOTE,
"local=s" => \$LOCAL,
"service=s" => \$SERVICE,
) or die <<EOUSAGE;
usage: $0 [ --remote host ] [ --local interface ] [ --service service]
EOUSAGE
die "Need romote" unless $REMOTE;
die "Need local or service" unless $LOCAL|$SERVICE;
}


sub start_proxy{
my @proxy_server_config = (
Proto => 'tcp',
Reuse => 1,
Listen = SOMAXCONN,
);
push @proxy_server_config, LocalPort => $SERVICE if $SERVICE;
push @proxy_server_config, LocalAddr => $LOCAL if $LOCAL;
$proxy_server = IO::Socket::INET->new(@proxy_server_config)
or die ""can't create proxy server: $@";
print "[Proxy server on ", ($LOCAL|$SERVICE), " started.]\n";
}


sub service_clients {
my(
$local_client,
$lc_info,
$remote_server,
@rs_config,
$rs_info,
$kid_pid,
);

$SIG{CHLD} = \&REAPER;

accepting();

while ($local_client = $proxy_server->accept()){
$lc_info = peerinfo($local_client);
set_state("servicing local $lc_info");
printf "[Connect from $lc_info]\n";

@rs_config = (
Proto => 'tcp',
PeerAddr => $REMOTE,
);
push(@rs_config, PeerPort => $SERVICE) if $SERVICE;
print "Connecting to $REMOTE...";
set_state("connecting to $REMOTE");
$remote_server = IO::Socket::INET->new(@rs_config)
or die "remote server: $@";
print "done]\n";

$rs_info = peerinfo($remote_server);
setstate("connected to $rs_info");

$kidpid = fork();
die "Cannot fork" unless defined $kidpid;
if ($kidpid){
$Children{$kidpid} = time();
close $remote_server;
close $local_client;
next;
}

close $proxy_server;

$kidpid = fork();
die "Cannot fotk" unless defined $kidpid;

if ($kidpid){
set_state("$rs_info --> $lc_info");
select($local_client);$= 1;
print while <$remote_server>;
kill('TERM',$kidpid);
}
else{
set_state("$rs_info <-- $lc_info");
select($remote_server); $|=1;
print while <$local_client>;
kill('TERM',getpid());
}
exit;
}
continue {
accepting();
}
}

sub peerinfo{
my $sock = shift;
my $hostinfo = gethostbyaddr($sock->peeraddr);
return sprintf("%s:%s",
$hostinfo->name|$sock->peerhost,
$sock->peerinfo,
);
}

sub set_state {
$0 = "$ME[@_]";
}

sub accepting{
set_state("accepting proxy for ".($REMOTE|$SERVICE));
}

sub REAPER{
my $child;
my $start;
while (($child = waitpid(-1,WHOHANG))>0){
if ($start = $Children{$child}){
my $runtime = time() - $start;
printf "Child $child ran %dm%ss\n";
$runtime/60, $runtime%60;
delete $Children{$child};
}
else{
print "Kid $child existed $?\n";
}
}
$SIG{CHLD} = \&REAPER;
};
[Unix] начет редиректа aka datatpipe.c/pl... 13.10.01 21:17  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Вощем люди такая трабла: мне нужно редиретиться на другой
> сервак скриптом datapipe(DP) (кто не знает - это такой
> скрипт котрой редиректить порт одной машины на порт дургой
> машины те прокся, есть весии на С и Перле) , но DP содает
> процесс а мне это не нужно, те мне надо отрыть редирект
> когда я конечусь а когда перестал - закрыть (те убить
> демона) :---)
>
>
> Еси кто понял че мне надо ПОМОГИТЕ!
Mne bol'she vsego eta chast' soobshenia ponravilas' :-))))
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach