You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Dave Edsall - The Tauminator <ed...@iastate.edu> on 2000/07/27 18:48:10 UTC

Help with extensions


   Hello all,


   I am trying to convert a Web-based e-mail package ( MailMan with local 
modifications ) to run under mod_perl. The original author did a 
fantastic job of making the script mod_perl clean so we have only had to 
do a modicum of changes.

   Here is my problem. We run a site which uses Kerberos for 
authentication to our POP servers. We obtain a ticket granting ticket for 
the user and then we use the Authen::Krb4 package for obtaining a POP 
service ticket and authenticating the user to the POP server. This worked 
great using just plain old mod_cgi. When we ran this under mod_perl, it 
stopped working for some reason. Authen::Krb4 I believe is available 
through CPAN so I won't post it here. It is simply an XSUB extension to 
the Kerberos 4 C libraries. Some of the routines in Authen::Krb4 do work 
under mop_perl. It is the sendauth routine which does not (maybe this has 
to do with the socket?).

   I have read the first four chapters of the Eagle book, searched and 
read the guide, searched the mailing list archives and have even gone to 
Google (which usually ends up pointing me back to perl.apache.org). Can 
someone give me a clue as to why this may not be working?


Info:
-----

OS: Linux 2.2.14
mod_perl: 1.24
Apache: 1.3.9 configured with openssl 0.9.3


Configuration file:
-------------------

ScriptAlias     /cgi-bin        /local/www/apache_1.3.9/cgi-bin
Alias /cgi-perl /local/www/apache_1.3.9/cgi-bin
<Location /cgi-perl>
SetHandler perl-script
PerlHandler Apache::PerlRun    
PerlModule Authen::Krb4 CGI FileHandle Socket
Options +ExecCGI
allow from all
PerlSendHeader On
</Location>


Relevant code:

use FileHandle;
my($rServerSocket) = new FileHandle();     <---- This is done OUTSIDE of 
                                                 the subroutine which calls 
                                                 sendauth below


....


use Authen::Krb4;


...


    # Attempt to open a socket to the POP3 server.
    my($protocol) = 0;
    $protocol = getprotobyname('tcp');
    socket($rServerSocket,PF_INET,SOCK_STREAM,$protocol);
    my($remote_ip) = 0;
    $remote_ip = gethostbyname($mailman::strIncomingServer);


...


    $remote_sock = sockaddr_in(1109, $remote_ip);


...


    my($laddr)=0;
    my($faddr)=0;
    my($realm)=Authen::Krb4::realmofhost($mailman::strIncomingServer);
    my($phost)=Authen::Krb4::get_phost($mailman::strIncomingServer);
    my($service)='pop';
    my($ticket,$credentials,$schedule)=Authen::Krb4::sendauth(0,$rServerSocket,$
service,$phost,$realm,5,$laddr,$faddr,"AUTHV0.1");



   Many thanks in advance,


   Dave


----------------------------------
Dave Edsall
Systems Software
Academic Information Technologies
Iowa State University