Hi Andreas,

good work! :) 

Is it free to put it into the OTRS framework?

Thanks for feedback!

 -Martin

On Mon, Aug 09, 2004 at 02:29:13PM +0200, Andreas Jobs wrote:
> 
> Hi list,
> 
> one may find Kernel::System::Auth::Radius useful. Here we go:
> 
> 
> # --
> # Kernel/System/Auth/Radius.pm - provides the radius authentification 
> # based on Martin Edenhofer's Kernel::System::Auth::DB
> # Copyright (C) 2004 Andreas Jobs <[EMAIL PROTECTED]>
> # --
> # $Id: Radius.pm,v 1.0 2004/08/07 00:50:36 jobsanzl Exp $
> # --
> # This software comes with ABSOLUTELY NO WARRANTY. For details, see 
> # the enclosed file COPYING for license information (GPL). If you 
> # did not receive this file, see http://www.gnu.org/licenses/gpl.txt.
> # --
> # Note: 
> # available objects are: ConfigObject, LogObject and DBObject
> # --
> 
> package Kernel::System::Auth::Radius;
> 
> use strict;
> use Authen::Radius;
> 
> use vars qw($VERSION);
> $VERSION = '$Revision: 1.0 $';
> $VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;
> 
> # --
> sub new {
>     my $Type = shift;
>     my %Param = @_;
> 
>     # allocate new hash for object
>     my $Self = {};
>     bless ($Self, $Type);
> 
>     # check needed objects
>     foreach (qw(LogObject ConfigObject DBObject)) {
>         $Self->{$_} = $Param{$_} || die "No $_!";
>     }
>  
>     # Debug 0=off 1=on
>     $Self->{Debug} = 0;
> 
>     # get user table
>     $Self->{RadiusHost} = $Self->{ConfigObject}->Get('RadiusHost')
>       || 'radiushost';
>     $Self->{RadiusSecret} = $Self->{ConfigObject}->Get('RadiusSecret')
>       || 'radiussecret';
> 
>     return $Self;
> }
> # --
> sub GetOption {
>     my $Self = shift;
>     my %Param = @_;
>     # check needed stuff
>     if (!$Param{What}) {
>         $Self->{LogObject}->Log(Priority => 'error', Message => "Need What!");
>         return;
>     } 
>     # module options
>     my %Option = (
>         PreAuth => 0,
>     );
>     # return option
>     return $Option{$Param{What}};
> }
> # --
> sub Auth {
>     my $Self = shift;
>     my %Param = @_;
>     # check needed stuff
>     if (!$Param{User}) {
>         $Self->{LogObject}->Log(Priority => 'error', Message => "Need User!");
>         return;
>     }
>     # get params
>     my $User = $Param{User} || ''; 
>     my $Pw = $Param{Pw} || '';
>     my $RemoteAddr = $ENV{REMOTE_ADDR} || 'Got no REMOTE_ADDR env!';
>     my $UserID = '';
>     my $GetPw = '';
> 
> 
>     # just in case for debug!
>     if ($Self->{Debug} > 0) {
>         $Self->{LogObject}->Log(
>           Priority => 'notice',
>           Message => "User: '$User' tried to login with Pw: '$Pw' ($RemoteAddr)",
>         );
>     }
>     # just a note
>     if (!$User) {
>         $Self->{LogObject}->Log(
>           Priority => 'notice',
>           Message => "No User given!!! (REMOTE_ADDR: $RemoteAddr)",
>         );
>         return;
>     }
>     # just a note 
>     if (!$Pw) {
>         $Self->{LogObject}->Log(
>           Priority => 'notice',
>           Message => "User: $User without Pw!!! (REMOTE_ADDR: $RemoteAddr)",
>         );
>         return;
>     }
> 
> 
>     # Create a radius object
>     my $Radius = new Authen::Radius (Host => $Self->{RadiusHost}, Secret => 
> $Self->{RadiusSecret});
>     my $AuthResult = $Radius->check_pwd ($User, $Pw);
>     
>     # login note
>     if (defined($AuthResult) && $AuthResult == 1) {
>         $Self->{LogObject}->Log(
>           Priority => 'notice',
>           Message => "User: $User logged in (REMOTE_ADDR: $RemoteAddr).",
>         );
>         return $User;
>     }
>     # just a note
>     else {
>         $Self->{LogObject}->Log(
>           Priority => 'notice',
>           Message => "User: $User with wrong Pw!!! (REMOTE_ADDR: $RemoteAddr)"
>         ); 
>         return;
>     }
> }
> # --
> 
> 1;
_______________________________________________
OTRS mailing list: dev - Webpage: http://otrs.org/
Archive: http://lists.otrs.org/pipermail/dev
To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/dev

Reply via email to