Главная страница


ru.unix

 
 - RU.UNIX ----------------------------------------------------------------------
 From : Stas Vlasov                          2:5080/172.13  03 Apr 2001  11:27:09
 To : Eugene B. Berdnikov
 Subject : Re: Userspace FTP proxy need
 -------------------------------------------------------------------------------- 
 
 At Sat, 31 Mar 2001 22:03:44 +0600, Eugene B. Berdnikov wrote:
 
  LS>>>   if (STDIN_FILENO != dup2(STDIN_FILENO,clsock)) my_error_handler();
  LS>>>   if (STDOUT_FILENO != dup2(STDOUT_FILENO,clsock)) my_error_handler();
  LS>>>   if (clsock != STDIN_FILENO && clsock != STDOUT_FILENO)
 SV>> 
 SV>> Хм. Одно из двух, либо перл слабо подходит для этого, либо я не умею
 EBB> читать.
 SV>> Hо dup2 в перле отсутствует.
 
 EBB>  Присутствует неявно. Читать надо "perldoc -f open" и "man perlipc".
 EBB>  Там конструкции даже удобнее, чем возня с дупами. :)
 
 Поздно :-)
 Уже начал с дупами.
 
 Вот что у меня вышло:
 
 #!/usr/bin/perl
 
 use IO::Socket;
 use POSIX;
 
 $server_port = 58100;
 
 $server = IO::Socket::INET->new(LocalPort => $server_port,
                                 Type      => SOCK_STREAM,
                                 Reuse     => 1,
                                 Listen    => 10 )
     or die "Couldn't be a tcp server on port $server_port :$@\n";
                                                                                 
 
 while ($client = $server->accept()) {
     if ($client < 0) {
        printf "Socket error!\n";
        next;
     }
     $addr = $client->peerhost();
     if (($addr =~ /^192\.168\.47\./) || ($addr =~ /127.0.0.1/)) {
       $pid = fork();
       if ($pid < 0) { printf "Can't fork!\n" };
       if ($pid == 0) {
         close STDIN;
         close STDOUT;
         close STDERR;
         dup2(STDIN, $client);
         dup2(STDOUT, $client);
         if (!(STDIN == $client) && !(STDOUT == $client)) {
           close $client;
         }
         exec ("./ftp-gw");
         exit();
       } else {
         close $client;
       }
     } else {
       close $client;
     }
 }
 close($server);                                                                 
 При этом, ftp-gw (настроенный, отдельно работает) сообщает мне
 getpeername: Socket operation on non-socket
 
 -- 
 Стас.              stas%d1794n1@ekasb.sbank.e-burg.su
 --- tin/pre-1.4-19990805 ("Preacher Man") (UNIX) (Linux/2.4.1 (i686))
  * Origin: OSB 1794 (2:5080/172.13)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Userspace FTP proxy need   Stas Vlasov   03 Apr 2001 11:27:09 
 Userspace FTP proxy need   Eugene Korovin   05 Apr 2001 20:49:02 
 Re: Userspace FTP proxy need   Stas Vlasov   09 Apr 2001 15:17:23 
 Userspace FTP proxy need   Eugene Korovin   11 Apr 2001 22:38:42 
 Re: Userspace FTP proxy need   Valentin Nechayev   12 Apr 2001 14:06:33 
 Userspace FTP proxy need   Eugene Korovin   13 Apr 2001 23:26:58 
 Re: Userspace FTP proxy need   Valentin Nechayev   14 Apr 2001 23:24:47 
 Re: Userspace FTP proxy need   Stas Vlasov   12 Apr 2001 19:09:57 
Архивное /ru.unix/7631672741258.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional