Search squid archive

Re: custom auth not working

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux