Apache2-AuthenSecurID

 view release on metacpan or  search on metacpan

RCS/ace_initd,v  view on Meta::CPAN

my $rand;

while ( $server->recv($mesg, 1024) ) {
   $mesg = $crypt->decrypt_hex ( $mesg );
   my ( $rand, $request, $type, $username, $passcode ) = split /\:/, $mesg;
      eval {
       if ( ! $ACE{$request} ) {
       $ACE{$request} = new Authen::ACE;
       }
       if ( $type eq "check" ) {
       ($result,$info) = $ACE{$request}->Check($passcode,$username);
       }
       if ( $type eq "next" ) {
       ($result,$info) = $ACE{$request}->Next($passcode);
        }
       if ( $type eq "pin" ) {
       ($result,$info) = $ACE{$request}->PIN($passcode);
       }
       if ( $result != 5 && $result != 2 ) {
       delete $ACE{$request};
    } 
      };
   if ( $@@ ) {
    $result = 1;       
       syslog ( 'err', "$type $username $result via exception");
   }

    syslog ( 'info', "$type $username $result" );
    if ( $result ) {
           $mesg = "$rand:$result:$$info{system_pin}:$$info{min_pin_len}:$$info{max_pin_len}:$$info{alphanumeric}:$$info{user_selectable}";
    } else {
        $mesg = "$rand:$result:::::";
    }
   $mesg = $crypt->encrypt_hex ( $mesg );
   $server->send ($mesg);
}

sub write_pidfile {
    my $file = shift;
    return unless $file;
    open( PID, "> $file" )
        || die "could not open pidfile \"$pidfile\" for writing: $!";
    print PID $$;
    close PID;
}


__END__

=head1 NAME

ace_initd -  ACE Authentication daemon for Apache::AuthenSecurID::Auth 

=head1 SYNOPSIS

nohup ./ace_initd --listen=127.0.0.1 --facility=local2 --secret=123456 --port=1969 --var_ace=/var/ace

=head1 DESCRIPTION

This daemon handles the ACE authentication requests for the 
Apache::SecurID::Auth module.  It is a single threaded, single
fork server that listens on a specified UDP port.  Incoming requests
are decrypted and requests forwarded to the ACE server.  If a specific
request is in either in NEXT TOKEN MODE or SET PIN MODE the Authen::ACE
object is not deleted.  It is instead kept in memory to handle those
specific requests later.

=head1 LIST OF TOKENS


=item *
--var_ace

Specifies the location of the F<sdconf.rec> file.  It defaults to 
F<$ENV{VAR_ACE}> if this variable is not set.

=item *
--secret

The Blowfish key used to encrypt and decrypt the authentication cookie. 
It defaults to F<my secret> if this variable is not set.

=item *
--port

The port the that the Ace request daemon listens on.  It defaults to F<1969> 
if this variable is not set.

=item *
--facility

The syslog facility ace_initd logs to.  It defaults to F<local2> 
if this variable is not set.

=item *
--daemon

Break off from the shell and become a daemon.

=head1 CONFIGURATION

Either run from the command line;

prompt$ nohup ./ace_initd &

or write the appropriate scripts in the /etc/rc directories.

=head1 PREREQUISITES

ace_initd requires Crypt::Blowfish, Crypt::CBC and Authen::ACE.

=head1 SEE ALSO

L<Authen::ACE> L<Apache::AuthenSecurID> L<Apache::AuthenSecurID::Auth>

=head1 AUTHORS

=item *
mod_perl by Doug MacEachern <dougm@@osf.org>

=item *



( run in 0.727 second using v1.01-cache-2.11-cpan-39bf76dae61 )