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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Vladislav Breus                      2:5020/400     15 Jan 2001  14:09:55
 To : All
 Subject : STDIN, STDOUT...куда деваются данные   ?
 -------------------------------------------------------------------------------- 
 
 День добрый! Может, поможет кто-нибудь...
 задача следующая: приходит на почтовый адрес письмо с PGP-armored
 аттачем, скрипт сам его разкриптовывает (утилиткой) и отдает
 на другой адрес.
 
 т.е. в HOME юзера test в .forward
 прописано:
 "|/home/test/pgp.pl|/home/pgp1.pl"
 
 вот эти файлы :
 //==============================================================================
 =================
 
 file pgp.pl:
 #!/usr/bin/perl
 
 open(IN,"-") || die "can't open stdin !";
 @list = <IN>;
 $size = @list;
 $f = 0;
 open(OUT,">-") || die "can't open stdout !";
 select OUT; 
 $| = 1; # отключаем буфферизацию print
 
 for($i=0;$i<$size;$i++){
   if( @list[$i]=~/-----BEGIN PGP MESSAGE-----/ ){
     $f = 1;
     print OUT "YES\n";
     open(PGP,"|./pgpv -f -z 87654321") || die "Can't open pgpv !";
 #
 # запуск PGP-утилитки. Параметры стоят так, что принял на STDIN поток и
 отдал 
 # на STDOUT результат. ничего больше.
   }
 
   if($f==0){   printf OUT @list[$i];  }
   else{        print PGP @list[$i];   }
 
   if( @list[$i]=~/-----END PGP MESSAGE-----/ ){
     close(PGP);
     $f = 0;
   }
 }
 close(IN);
 close(OUT);
 
 //==============================================================================
 =================
 file pgp1.pl
 #!/usr/bin/perl
 
 open(OUT,"|/usr/bin/procmail");
 open(OUT1,">/home/test/out");
 open(IN,"-") || die "can't open stdin !";
  while(<IN>){
   print OUT "$_";
   print OUT1 "$_";
  } 
 close(IN);
 close(OUT);
 
 если я запускаю 
 %./pgp.pl < hello.asc | pgp1.pl
 где hello.asc pgp encrypted (ASCII) файл, то в "логе"
 файле /home/test/out вижу то, что нужно (т.е. работает).
 
 если я пишу письмо на этот форвард, то теряется PGP-кусок, и в мыле
 (которое мне возвращается через procmail) и в логе.
 (т.е. куска нет уже на стадии pgp1.pl !!)
 
 причем слово YES, я вижу всегда, то есть сам PGP-кусок есть, не
 теряется...
 
 Заранее ОЧЕHЬ благодарен.
 P.S. извиняюсь за непрофессиональный perl. :)
 -- 
 Vladislav Breus, SysAdmin
              ICQ#43644692
 --- ifmail v.2.15dev5
  * Origin: DTRADE (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 STDIN, STDOUT...куда деваются данные ?   Vladislav Breus   15 Jan 2001 14:09:55 
Архивное /ru.perl/9008704f8e9e.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional