|
|||||||||||||||||||||||||||
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
|
||||||||||||||
|
||||||||||||||