Whoops I forgot to mention that I actually had to create the servlet code, but it's included in the JCaptcha example...

----- Original Message ----- From: "Oscar Picasso" <[EMAIL PROTECTED]>
To: "Tapestry users" <tapestry-user@jakarta.apache.org>
Sent: Monday, April 17, 2006 5:41 AM
Subject: Re: Looking for a CATCHPA


I'm going to try it in my application. Thanks.

Konstantin Ignatyev <[EMAIL PROTECTED]> wrote: Just did the following and it seems to work beautifully



public class JCaptchaServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   String captchaID = request.getSession(true).getId();

   // call the ManageableImageCaptchaService methods
   byte[] captchaChallengeAsJpeg = null;
   ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
   try {
     ImageCaptchaService srv = App.getCaptchaService();
BufferedImage challenge = srv.getImageChallengeForID(captchaID, request.getLocale()); Object challengeString = srv.getQuestionForID(captchaID, request.getLocale());
     // the output stream to render the captcha image as jpeg into

     // a jpeg encoder
JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);
     jpegEncoder.encode(challenge);
   } catch (IllegalArgumentException e) {
     // log a security warning and return a 404...
//            if (log.isWarnEnabled())
//            {
//                log.warn(
//                    "There was a try from "
//                        + request.getRemoteAddr()
//                        + " to render an URL without ID"
//                        + " or with a too long one");
//                theResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
     return;
//            }
   } catch (CaptchaServiceException e) {
     // log and return a 404 instead of an image...
//            log.warn(
//                "Error trying to generate a captcha and "
//                    + "render its challenge as JPEG",
//                e);
     response.sendError(HttpServletResponse.SC_NOT_FOUND);
     return;
   }

   captchaChallengeAsJpeg = jpegOutputStream.toByteArray();

   // render the captcha challenge as a JPEG image in the response
   response.setHeader("Cache-Control", "no-store");
   response.setHeader("Pragma", "no-cache");
   response.setDateHeader("Expires", 0);

   response.setContentType("image/jpeg");
   ServletOutputStream responseOutputStream =
       response.getOutputStream();
   responseOutputStream.write(captchaChallengeAsJpeg);
 }


}

------------
private static ImageCaptchaService captchaService;
 private static Object captchaGuard = new Object();

 public static ImageCaptchaService getCaptchaService() {
   synchronized (captchaGuard) {
     if (captchaService == null) {
captchaService = new EhcacheManageableImageCaptchaService( new SimpleListImageCaptchaEngine() , 180, 100000){

       };
     }
     return captchaService;
   }
 }

----------------------



Validation

@InjectObject( "service:tapestry.globals.HttpServletRequest")
 public abstract HttpServletRequest getHttpRequest();

............
if( App.getCaptchaService().validateResponseForID( getHttpRequest().getSession(true).getId(), getCaptchaAnswer() )){
       System.out.println("CAPTCHA - Pass");
     }else{



Oscar Picasso wrote: Do you have a code example of such an ImageCaptchaServlet?

Daniel Lydiard  wrote: I'm using Jcaptcha with my tapestry application.

1. Load the ImageCaptchaServlet in your web.xml.


jcaptcha

com.foo.ImageCaptchaServlet

1






jcaptcha

/jcaptcha




2. Do something like this in a component class method to get the captcha
question.
captchaId = getPage().getRequest().getSession(true).getId();
return CaptchaServiceSingleton.getInstance().getQuestionForID(captchaId);

3. Point to the servlet for the captchaimage in your component .

4.  To validate the user response
captchaId = getRequest().getSession(true).getId();

return
CaptchaServiceSingleton.getInstance().validateResponseForID(captchaId,
userResponse);


Hope this helps.


----- Original Message ----- From: "Oscar Picasso"
To: "Tapestry users"
Sent: Sunday, April 16, 2006 11:47 AM
Subject: Re: Looking for a CATCHPA


I have taken a look. But I have no idea where to start. The api javadoc has
only one class:  JCaptchaCommentAuthenticator. It seems there is a problem
with the site.

Have you worked with JCaptcha? And do you know where to start?

Oscar



J�r�me BERNARD  wrote: Have a loot at
http://jcaptcha.sourceforge.net/

Regards,
J�r�me.

On 4/16/06, Oscar Picasso  wrote:
Hi,

I'm looking for a CATCHPA library to use with my Tapestry application.
I'm looking for something easy to use and efficient.

I welcome any advice.

Oscar


---------------------------------
Blab-away for as little as 1�/min. Make PC-to-Phone Calls using Yahoo!
Messenger with Voice.



--
J�r�me BERNARD,
Kalixia, SARL.
http://weblog.kalixia.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------
Yahoo! Messenger with Voice. PC-to-Phone calls for ridiculously low rates.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com


Konstantin Ignatyev




PS: If this is a typical day on planet earth, humans will add fifteen million tons of carbon to the atmosphere, destroy 115 square miles of tropical rainforest, create seventy-two miles of desert, eliminate between forty to one hundred species, erode seventy-one million tons of topsoil, add 2,700 tons of CFCs to the stratosphere, and increase their population by 263,000

Bowers, C.A. The Culture of Denial: Why the Environmental Movement Needs a Strategy for Reforming Universities and Public Schools. New York: State University of New York Press, 1997: (4) (5) (p.206)


---------------------------------
New Yahoo! Messenger with Voice. Call regular phones from your PC and save big.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to