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.
> 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
> -----------------------------------------
|