[squid-users] custom auth not working

From: Al - Image Hosting Services <azick_at_zickswebventures.com>
Date: Thu, 11 Jun 2009 10:34:48 -0500 (CDT)

Hi,

I was not able to get the mysql authentication program to compile, after a
day of playing with it, it would still just give me an ld error. I found a
couple of examples of authentication software written in perl, so I
thought "why not custom write it". My oldest son does some programming so
he helped me with it, although both of us are at a loss as to why it
doesn't work. It always returns the right response from the command line,
either an OK or ERR. Maybe the response squid expects has changed. We have
it logging what is sent to the perl script from squid, so I know that it
is getting input from squid, but it doesn't look like it gives a response
back to squid or at least one that squid can understand, because after
putting in a username and password, the browser does nothing. Also,
ncsa_auth works with my current config, and I am just changing that line
in squid.conf to call custom_auth.pl.

Here is what we have:

#!/usr/bin/perl
use DBI;

# config
my $host = "localhost";
my $database = "filter";
my $tablename = "filteredusers";
my $user = "msyqlfilteruser";
my $pw = "faithhope";

# dbi connect
my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host", $user,
$pw, {'RaiseError' => 1});

while (<STDIN>) {
         chop $_;

         open $file, '>>/var/log/custom_auth.log';
         print $file "$_\n";
         close $file;

         # get email and password
         my @info = split(/ /, $_);
         my $email = $dbh->quote(shift(@info));
         my $pass = $dbh->quote(shift(@info));

         # query for user status
         my $sth = $dbh->prepare("SELECT stat FROM $tablename WHERE
email=$email AND passwd=$pass LIMIT 1");
         $sth->execute();

         # check
         if (my $ref = $sth->fetchrow_hashref()) {
                 if ($ref->{'stat'} =~ m/[AF]/) {
                         #$dbh->do("UPDATE $tablename SET
login_date='2010-06-15 00:00:00' WHERE id='2' LIMIT 1";
                         print "OK\n";
                 } else {
                         print "ERR\n";
                 }
         } else {
                 print "ERR\n";
         }

         $sth->finish();
}

$dbh->disconnect();

Of course, I changed the username and password that we are using for the
database. Also, the line that is supposed to update the database is not
working yet, but as you can see it is commented out. I was supposed to
have this working Monday and it is now Thursday, so any help would be
greatly appreciated.

Best Regards,
Al
Received on Thu Jun 11 2009 - 15:34:52 MDT

This archive was generated by hypermail 2.2.0 : Fri Jun 12 2009 - 12:00:03 MDT