El Monday 06 April 2009 10:39:37 Antonio José García Lagar escribió:
> El Monday 06 April 2009 00:28:28 Diego R. Lopez escribió:
> > Hola,
> >
> > On 31 Mar 2009, at 13:22, Antonio José García Lagar wrote:
> > > El primero es una duda general: como puedo acceder desde el
> > > FormProcessor a
> > > valores que vengan en la aserción del AS.
> >
> > Cada atributo que viene en la asercion esta disponible en un array,
> > que esta
> > en $poa->{attrList}. El nombre del atributo esta en los elementos 2i y
> > el
> > valor en los 2i+1 (i va de 0 al numero de atributos).
> > Asi que poniendo en las expresiones $poa->{attrList}[X] deberias poder
> > accederlos.
>
> Gracias, esto ya había conseguido solucionarlo.
>
> > > Por otro lado estoy teniendo problemas en configurar el proxy para
> > > Proquest con
> > > el acceso a través del FormProcessor. Esta es mi configuración
> > >
> > > <Server name="proquest.papi.example.org" port="80"
> > > independent="false">
> > >        <Location path="/" id="proquest" filtered="true"
> > > independent="false">
> > >            <Hcook_DB>/usr/local/PAPI/etc/hcookdb</Hcook_DB>
> > >            <GPoA_URL>wayf:built-in</GPoA_URL>
> > >            <Req_DB>/usr/local/PAPI/etc/requestdb</Req_DB>
> > >            <Remote_URL>http://proquest.umi.com</Remote_URL>
> > >            <Form_Processor url="http://proquest.umi.com/pqdweb"
> > > form_index="2">
> > >                <Field name="COPT"></Field>
> > >                <Field name="Password">pass</Field>
> > >                <Field name="RQT">301</Field>
> > >                <Field name="UserId">user</Field>
> > >                <Field name="int">0</Field>
> > >                <Field name="lang">es</Field>
> > >            </Form_Processor>
> > >
> > >            <Eval_Proxy_Redirects>0</Eval_Proxy_Redirects>
> > >        </Location>
> > >    </Server>
> > >
> > > ¿Alquien que lo tenga funcionando aunque sea con la versión 1.4 podría
> > > enviarme su configuración o echarme una mano?
> > >
> > > Lo que quiero con la primera cuestión es que el usuario y la
> > > password vinieran
> > > en la aserción userid=user,password=pass guardada en el directorio
> > > LDAP y
> > > poder leerlo desde ahí.
> >
> > Me temo que nunca he configurado ese modo de acceso para ProQuest (ni
> > en 1.4 ni 1.5).
> > He echado un vistazo por el sitio y lo curioso es que usa un form para
> > el username
> > y otro para el password, con Javascript por medio. Esto puede hacer
> > que el parser del
> > proxy se haga un lio a la hora de llenar el form con los valores
> > adecuados, porque
> > puede que los valores "hidden" no los trate bien. Creo que lo mas
> > adecuado seria
> > analizar el trafico y ver lo que se envia realmente a traves del proxy.
>
> Respecto a esto, he conseguido poner el mod_perl en modo debug interactivo,
> y estoy bastante perdido. En la página como tu dices, hay dos formularios,
> pero de ambos, el Form_Processor solo identifica los campos tipo hidden:
>
> userIdForm:
> $VAR1 = bless( {
>                  'base' => undef,
>                  'link' => '/pqdweb',
>                  'selections' => {},
>                  'buttonvals' => {},
>                  'allfields' => [
>                                   'RQT',
>                                   'COPT',
>                                   'Passwd'
>                                 ],
>                  'name' => 'userIdForm',
>                  'fieldtypes' => {
>                                    'Passwd' => 'input/hidden',
>                                    'COPT' => 'input/hidden',
>                                    'RQT' => 'input/hidden'
>                                  },
>                  'checkboxstate' => {},
>                  'fieldvals' => {
>                                   'Passwd' => '',
>                                   'COPT' => '',
>                                   'RQT' => '301'
>                                 },
>                  'fields' => [],
>                  'upload' => 0,
>                  'debug' => undef,
>                  'buttontypes' => {},
>                  'method' => 'POST',
>                  'buttons' => []
>                }, 'HTTP::Request::Form' );
>
> mainform:
> $VAR1 = bless( {
>                  'base' => undef,
>                  'link' => '/pqdweb',
>                  'selections' => {},
>                  'buttonvals' => {},
>                  'allfields' => [
>                                   'RQT',
>                                   'COPT',
>                                   'UserId',
>                                   'int'
>                                 ],
>                  'name' => 'mainform',
>                  'fieldtypes' => {
>                                    'int' => 'input/hidden',
>                                    'UserId' => 'input/hidden',
>                                    'COPT' => 'input/hidden',
>                                    'RQT' => 'input/hidden'
>                                  },
>                  'checkboxstate' => {},
>                  'fieldvals' => {
>                                   'int' => '0',
>                                   'UserId' => '',
>                                   'COPT' => '',
>                                   'RQT' => '301'
>                                 },
>                  'fields' => [],
>                  'upload' => 0,
>                  'debug' => undef,
>                  'buttontypes' => {},
>                  'method' => 'POST',
>                  'buttons' => []
>                }, 'HTTP::Request::Form' );
>
> Para solucionar esto he escrito una rutina que lo que hace es que si no
> encuentra un campo en el formulario, que si haya sido definido en la
> configuración del PoA, lo crea para que el formulario tenga al final al
> menos todos los campos definidos en el PoA. Eso puede ayudar a procesar
> formularios que se ayuden del javascript para crear nuevos elementos al
> vuelo.
>
> Insertar en línea 282
>        for my $f (keys %{$formProc->{settings}}) {
>          my $field = $g->look_down("name",$f);
>          if($field == undef) {
>            my $h = HTML::Element->new('input', 'name' => $f, 'type' =>
> 'hidden' );
>            $g->push_content($h);
>          }
>        }
>
> Con esto ya consigo enviar a Proquest el formulario con toda la información
> necesaria. Aún así sigo con problemas porque siempre me responde con un
> header 302 que me lleva a un bucle infinito.
>
Ya lo tengo, tenía algún problema con las cookies, pero las he limpiado, he 
probado de nuevo y ya está. Como he dicho antes, creo que es una buena opción 
la de añadir al formulario al menos todos los campos que estén definidos en el 
PoA para evitar algunos problemas cuando la clase HTTP::Request::Form no 
identifica correctamente los campos del formulario.

Un saludo a todos!!

> > Se güeno,
> >
> > --
> > "Esta vez no fallaremos, Doctor Infierno"
> >
> > Dr Diego R. Lopez
> >
> > Red.es - RedIRIS
> > The Spanish NREN
> >
> > e-mail: [log in para visualizar]
> > jid:        [log in para visualizar]
> > Tel:    +34 955 056 621
> > Mobile: +34 669 898 094
> > -----------------------------------------