информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 ФБР нашла русский след в атаках... 
 Массовый взлом SharePoint 
 Microsoft Authenticator прекращает... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
оно? 14.10.01 16:37  Число просмотров: 964
Автор: 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;
};
<programming>
[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