Le jeudi 22 avril 2010 20:09:57, Amos Jeffries a écrit :
> Luis Daniel Lucio Quiroz wrote:
> > Le jeudi 22 avril 2010 15:49:55, Luis Daniel Lucio Quiroz a écrit :
> >> HI all
> >>
> >> As a requirement of one client, he wants to use joomla user database to
> >> let squid authenticate.
> >>
> >> I did patch squid_db_auth that Henrik has written in order to support
> >> joomla hash conditions.
> >>
> >> I did add one usefull option to script
> >>
> >> --joomla
> >>
> >> in order to activate joomla hashing. Other options are identical.
> >> Please test :)
> >>
> >> Ammos, I'd like if you can include this in 3.1.2
>
> Mumble.
>
> How do other users feel about it? Useful enough to cross the security
> bugs and regressions only freeze?
>
> >> LD
> >
> > I have a typo in
> > my salt
> >
> > should be
> > my $salt
> >
> > sorry
>
> Can you make the option --md5 instead please?
> Possibilities are not limited to Joomla and they may change someday.
>
> The option needs to be added to the documentation sections of the helper
> as well.
>
> Amos
I did fix some warnings
it works,
tested with joomla 1.5.14 :)
--- helpers/basic_auth/DB/squid_db_auth.in 2010-03-29 12:02:56.000000000 +0200
+++ helpers/basic_auth/DB/squid_db_auth.in.dlucio 2010-04-23 05:04:40.000000000 +0200
@@ -1,8 +1,9 @@
#...@perl@
-use strict;
+#use strict;
use DBI;
use Getopt::Long;
use Pod::Usage;
+use Digest::MD5 qw(md5 md5_hex md5_base64);
$|=1;
=pod
@@ -22,6 +23,8 @@
my $db_cond = "enabled = 1";
my $plaintext = 0;
my $persist = 0;
+my $isjoomla = 0;
+my $debug = 0;
=pod
@@ -62,6 +65,7 @@
=item B<--cond>
Condition, defaults to enabled=1. Specify 1 or "" for no condition
+If you use --joomla flag, this condition will be changed to block=0
=item B<--plaintext>
@@ -71,6 +75,10 @@
Keep a persistent database connection open between queries.
+=item B<--joomla>
+
+Tell helper that user database is joomla db. So salt hasing is understood.
+
=back
=cut
@@ -85,14 +93,18 @@
'cond=s' => \$db_cond,
'plaintext' => \$plaintext,
'persist' => \$persist,
+ 'joomla' => \$isjoomla,
+ 'debug' => \$debug,
);
-my ($_dbh, $_sth);
+$db_cond = "block = 0" if $isjoomla;
+
sub close_db()
{
return if !defined($_dbh);
$_dbh->disconnect();
+ $_sth->finish();
undef $_dbh;
undef $_sth;
}
@@ -113,10 +125,17 @@
{
my ($password, $key) = @_;
- return 1 if crypt($password, $key) eq $key;
+ if ($isjoomla){
+ my $salt;
+ my $key2;
+ ($key2,$salt) = split (/:/, $key);
+ return 1 if md5_hex($password.$salt).':'.$salt eq $key;
+ }
+ else{
+ return 1 if crypt($password, $key) eq $key;
- return 1 if $plaintext && $password eq $key;
-
+ return 1 if $plaintext && $password eq $key;
+ }
return 0;
}
@@ -155,8 +174,9 @@
=head1 COPYRIGHT
Copyright (C) 2007 Henrik Nordstrom <[email protected]>
+Copyright (C) 2010 Luis Daniel Lucio Quiroz <[email protected]> (Joomla support)
+
This program is free software. You may redistribute copies of it under the
terms of the GNU General Public License version 2, or (at youropinion) any
later version.
-
=cut