Re: [squid-users] custom auth not working

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Fri, 12 Jun 2009 04:11:51 +1200

Al - Image Hosting Services wrote:
> 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

Maybe all those print "...\n";

IIRC perl adds its own \n to the end for some outputs. Squid is
expecting only one.

Amos

-- 
Please be using
   Current Stable Squid 2.7.STABLE6 or 3.0.STABLE15
   Current Beta Squid 3.1.0.8 or 3.0.STABLE16-RC1
Received on Thu Jun 11 2009 - 16:11:59 MDT

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