• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Squid-Authentifizierung

pooner

Newbie
Hallo Leute,
ich habe hier ein Problem und keine Idee warum es nicht funktioniert.

Also folgendes:

Ich habe ein Programm welches eine HSQL-DB für die Authentifizierung verwendet. Nun möchte ich Squid gegen dieselbe DB authentifizieren. Da das Java ist habe ich mir ein kleines Prog geschrieben welches übergebenen Benutzer und Passwort mit der DB abgleicht. Als Ergebnis kommt true or false. Nun habe ich mich ein bissel durchs Inet gewühlt und ein php-Skript gefunden welches die Authentifizierung vornimmt. Getestet und für gut befunden ;-) Nun einfach mein Programm integriert und als Ergebnis dann halt OK oder ERR.
Teste ich das Programm auf der Kommandozeile funktioniert alles wunderbar, ich bekomme die richtigen Werte zurück. Starte ich nun Squid kommt immer wieder die Benutzerabfrage und im Access-Log TCP_DENIED. Das aber nur bei den Benutzern die über die DB geprüft werden, nicht die Testuser (fo und hello )aus dem Skript.
Ausgabe Kommandozeile:

Code:
./squid_helper.php
fo bar
OK
root roter
OK
hello world
OK

Hier ist das Skript:
Code:
#!/usr/bin/php
<?
if (! defined(STDIN)) {
        define("STDIN", fopen("php://stdin", "r"));
}
while (!feof(STDIN)) {
        $line = trim(fgets(STDIN));
        $fields = explode(' ', $line);
        $username = rawurldecode($fields[0]); //1738
        $password = rawurldecode($fields[1]); //1738
        $last_line = exec("cd /root/bin/Ausgabe && java Ausgabe ".$username." ".$password,$output, $retval);

//       fwrite(STDOUT, $retval);
        if ($username == 'hello'
            and $password == 'world') {
                fwrite(STDOUT, "OK\n");
            //    fwrite(STDOUT, "eins\n");
        } else if ($username == 'fo'
            and $password == 'bar') {
                fwrite(STDOUT, "OK\n");
              //  fwrite(STDOUT, "zwei\n");
        } else if ($retval == 0) {
                fwrite(STDOUT, "OK\n");
               // fwrite(STDOUT, "drei\n");
        }else {
                fwrite(STDOUT, "ERR\n");
        }



//      if ($retval == 0) { fwrite(STDOUT, "OK\n"); }
  //      else { fwrite(STDOUT, "ERR\n"); }

}
?>

Ich habe keine Idee mehr und stehe auf dem Schlauch da ich im Skriptja nur den Rückgabewert prüfe und den ganuso handle wie die TestUSer im Skript. Wie gesagt auf der Kommandozeile funzt es ja. :irre:

Danke für Eure Hilfe
 
Oben