Homepage: https://github.com/fsmunoz/recaptcha
Author: Frederico Munoz
Updated:
An Emacs Lisp interface to reCAPTCHA
This file contains an elisp interface to Google's reCAPTCHA service; two different areas are covered: 1) reCAPTCHA: verifies that the user as correctly introduced the CAPTCHA 2) reCAPTCHA mailhide: used to encrypt email addresses in webpages, and decrypt them after a successful CAPTCHA The main entry points are: recaptcha-html: outputs the HTML code that needs to be included in a webpage to display the CAPTCHA recaptcha-verify: takes as input the challenge (i.e. what the user wrote) and validates the CAPTCHA recaptcha-mailhide-html: outputs the HTML to show an email address. Several supporting functions exist that deal with specific tasks; the ones considered private adhere to the practice of being prefixed with recaptcha-- . The following code can be used to quickly test the code, it is based on elnode (and thus requires it of course). After evaluating it http://localhost:8009/recaptcha and http://localhost:8009/mailhide/ are listening, each testing a particular functionality. (defun root-handler (httpcon) (elnode-hostpath-dispatcher httpcon '(("^.*//recaptcha/\\(.*\\)" . recaptcha-handler) ("^.*//mailhide/\\(.*\\)" . mailhide-handler)))) (elnode-start 'root-handler :port 8009) (defun recaptcha-handler (httpcon) "Demonstration function" (elnode-http-start httpcon 200 '("Content-type" . "text/html")) (when (elnode-http-param httpcon "recaptcha_response_field") ;; Test reCAPTCHA (if (recaptcha-verify (process-contact httpcon :host) (elnode-http-param httpcon "recaptcha_challenge_field") (elnode-http-param httpcon "recaptcha_response_field")) (elnode-http-return httpcon "OK!") (elnode-http-return httpcon (recaptcha-html)))) (elnode-http-return httpcon (recaptcha-html))) (defun mailhide-handler (httpcon) "Demonstration function" (elnode-http-start httpcon 200 '("Content-type" . "text/html")) (elnode-http-return httpcon (recaptcha-mailhide-html "bart@example.com" "Bartolomeu Dias")))