SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

2 gange stdin/stdout



Hej Nørder

Jeg har et problem (med squid authentifikation). Problemet består i at jeg
har en binær som skal bruges til at authentificere brugere i squid, men
desværre er squid og dette program ikke enige om seperatoren imellem
username og password. Så vidt jeg kan se, hælder squid et kolon imellem,
hvilket dette program ikke accepterer. Det vil have et mellemrum. Fint, det
må perl da kunne klare: Noget i retning af
s/\:/ /g;
vil løse problemet. Mit problem er blot: Hvordan håndterer jeg dette? Squid
forventer at auth programmet læser fra stdin og skriver på stdout. Det gør
mit binære program også, men hvordan får man et perlprogram ind imellem. Jeg
fandt ud af at open2 kunne løse mit problem:
<CUT>
#!/usr/bin/perl
require 'open2.pl'
select ( STDOUT ); $!=1;

$pid = &open2 ("OUTPUT","INPUT","/usr/local/bin/auth-program");

do
{
 $_=<STDIN>;
 s/\:/ /g;
 $data=$_;
 print INPUT "$data";
 $result=<OUTPUT>;
 print $result;
} while (1);
close (INPUT);
<CUT>

Problemet er egentlig bare at det virker - men kun nogle gange. Jeg kan også
kalde det i hånden og så vidt jeg kan konstatere virker det som om det
"lagger". Jeg har forsøgt med select (STDOUT) og $!=1 for at slå buffering
fra, men det giver intet. Iøvrigt virker programmet slet ikke hvis jeg gør
det på de andre handles.
Hmm, har I en ide ?
/Jeppe




 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:55
Denne side vedligeholdes af MHonArc .