[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