Customizable & simple Pleroma/Kocaptcha-compatible CAPTCHA. (Mirror) https://hak.xwx.moe/jadedctrl/kaptchapelo

Jaidyn Ann 507db2bca0 Add girl_or_boy example CAPTCHA 8 months ago
captcha 507db2bca0 Add girl_or_boy example CAPTCHA 8 months ago
COPYING 367314d6c1 Add copy of the AGPLv3 8 months ago
README.md 507db2bca0 Add girl_or_boy example CAPTCHA 8 months ago
example.png 507db2bca0 Add girl_or_boy example CAPTCHA 8 months ago
kaptchapelo.asd a49878d3de Init 8 months ago
kaptchapelo.lisp 0d2d99ed1d Generate random session tokens 8 months ago
run-kaptchapelo.lisp 7840e72e41 Allow running in foreground 8 months ago

README.md

Kaptĉapelo

Kaptĉapelo is a simple Kocaptcha-compatible CAPTCHA server, to keep out robots and people with dubious intent. Rather than auto-generated challenges like Kocaptcha, though, Kaptĉapelo lets you create shiny, pretty, custom challenges.

Since Kaptĉapelo is a kinda-sorta drop-in replacement for Kocaptcha, you can use it as CAPTCHA for your Pleroma server.

Installation

Setup

Kaptĉapelo requires the following:

  • A Common Lisp implementation. I’d recommend Steel Bank Common Lisp, which is robust and available on many operating systems under the package-name sbcl.
  • Quicklisp, a “package-manager” for Common Lisp libraries.

To install these, you can run the following commands (replacing guix with your package-manager of choice)…

$ guix install sbcl
$ mkdir --parents ~/.local/lib/quicklisp/
$ wget https://beta.quicklisp.org/quicklisp.lisp
$ sbcl --load quicklisp.lisp

And then, in SBCL, run…

* (quicklisp-quickstart:install :path "~/.local/lib/quicklisp/")
* (ql:add-to-init-file)
* (quit)

Back in the shell, we can clone Kaptĉapelo…

$ cd ~/.local/lib/quicklisp/local-projects/
$ git clone https://notabug.org/jadedctrl/kaptchapelo

Execution

In the sources, you can find a script (run-kaptchapelo.lisp), which can be used like so:

$ # First, let’s make it executable…
$ chmod +x ~/.local/lib/quicklisp/local-projects/kaptchapelo/run-kaptchapelo.lisp
$ # … now we can run it…
$ ~/.local/lib/quicklisp/local-projects/kaptchapelo/run-kaptchapelo.lisp

Now, Kaptchapelo should be running and good to go; visit http://localhost:5001 and have a look!

Configuration

Reverse-proxy

You’ll probably be running Kaptchapelo through a reverse proxy; here’s how you can add it to an existing server definition with nginx:

server {
	[…]

	location /new {
		set $target http://localhost:5001;
		proxy_buffering off;
		proxy_pass http://localhost:5001;
	}

	location /captcha/ {
		set $target http://localhost:5001;
		proxy_buffering off;
		proxy_pass http://localhost:5001;
	}

	[…]
}

That is to say, you don’t need a dedicated subdomain!

Custom captchas

Making custom captchas is easy! A challenge is simply a PNG file (question) and a TXT file (answer). … that’s it! Literally.

Note that the PNG and TXT files should have the same name (bird.png and bird.txt, not bird2.png and bird1.txt), and that the TXT answer should consist of one line with no newline.

A peek through this repository’s example captchas (in ./captcha/) should give you the idea.

Captcha directory

It’s likely you’ll want to provide a custom directory in which to store your captchas; no problem! Just edit the aforementioned run-kaptchapelo.lisp script, which contains a line…

:captcha-directory #p"~/.local/lib/quicklisp/local-projects/kaptchapelo/captcha/"

… all you have to do is replace the path there with your own. In addition, you can also change the port and address by editing this script.

Misc. information

Author: Jaidyn Ann @jadedctrl@jam.xwx.moe
License: GNU AGPLv3