[bcn-pm] otro toquecito en el wiki
Carlos Escribano
ces at tablinum.org
Tue Feb 15 16:30:37 PST 2005
Creo que el que ha introducido los enlaces porno en la página principal de
nuestro wiki lo ha hecho manualmente, porque sólo ha tocado una página; un
robot intentaría tocar todas, como lo hicieron en la otra ocasión.
No obstante, si quereis entrar en tocar el código que corre en nuestro wiki,
no es dificil, y seguro que podeis incorporarle las ideas que estais
exponiendo.
El captcha se crea mediante el módulo Kwiki-Scode [1]. El módulo entra en
acción mediante las reglas establecidas por la función 'register'. Las
que nos interesan son:
20 $reg->add(hook => 'edit:edit', post => 'generate_scode');
21 $reg->add(hook => 'edit:save', pre => 'check_scode');
que insertan después del método 'edit' de Kwiki::Edit [2] el método propio
'generate_scode' y antes del método 'save' de Kwiki::Edit [3] el método propio
'check_scode', como si fueran parte del proceso de edición de Kwiki.
El método 'generate_scode' modifica el formulario de Kwiki::Edit siguiendo
estos pasos:
- Fija un número aleatorio menor de 50 para dar nombre a un archivo
temporal ($code) [4].
- Guarda en ese archivo temporal otro número aleatorio [5].
- Añade al formulario de entrada de datos de Kwiki tres campos [6]:
* un campo input del tipo 'hidden' que envia code=$code
* un campo img con src="index.cgi?action=captcha&code=$code
* un campo input del tipo text que envia captcha=<texto introducido>
El captcha propiamente dicho se genera al visualizarse el formulario en el
browser mediante la url del campo img. El método 'captcha' [7] que se invoca
ha sido definido también en la función 'register'[8].
Este método es el responsable de la imagen en sí. Crea una instancia de
GD::Image [9] y va llenando sus propiedades hasta invocar[10] el método
'string' de GD [11]
El método a ejecutar tras la entrega del formulario, 'check_scode' [12] se
limita a comprobar que el valor del campo 'captcha' introducido sea el mismo
numero que contiene el archivo $code.
1. http://search.cpan.org/src/GUGOD/Kwiki-Scode-0.03/lib/Kwiki/Scode.pm
2. http://search.cpan.org/src/INGY/Kwiki-0.37/lib/Kwiki/Edit.pm, lineas 20-37
3. http://search.cpan.org/src/INGY/Kwiki-0.37/lib/Kwiki/Edit.pm, lineas 39-48
4. lineas 27-29.
5. línea 30, invocando el método scode_create (líneas 114-126) que
a su vez llama al método scode_generate (líneas 109-112).
6. lineas 31-34. Con los escalares ya definidos, obtiene el texto invocando el
método de Kwiki::Plugin 'template_process', con el template
tt2/scode_image.html
que se distribuye en el mismo archivo fuente que el módulo (líneas
207-211).
7 lineas 52-96
8 linea 19
9 linea 60
10 linea 83
11 http://search.cpan.org/~lds/GD-2.19/GD.pm#Character_and_String_Drawing
12 lineas 38-45, utilizando el método scode_granted (lineas 47-50) para la
verificación
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: signature
Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20050216/0a7ca8e7/attachment.bin
More information about the Barcelona-pm
mailing list