ejabberd-contrib/mod_ecaptcha/README.md

146 lines
3.7 KiB
Markdown
Raw Permalink Normal View History

mod_ecaptcha - Generate CAPTCHAs using ecaptcha
===============================================
Requires:
- ejabberd 23.xx or higher
- C compiler and makefile
- write access to ejabberd's priv dir
This small module uses the
[ecaptcha](https://github.com/seriyps/ecaptcha)
erlang library to generate CAPTCHA images suitable for ejabberd's
[CAPTCHA](https://docs.ejabberd.im/admin/configuration/basic/#captcha) feature.
Installing this module in a containerized ejabberd requires
some additional steps, please read below.
Basic Configuration
-------------------
The minimal configuration required to get this module working is:
```yaml
captcha_cmd: mod_ecaptcha
captcha_url: http://localhost:5280/captcha
listen:
-
port: 5280
module: ejabberd_http
request_handlers:
/captcha: ejabberd_captcha
modules:
mod_ecaptcha: {}
```
Options
-------
The configurable options match mostly the ones from ecaptcha library:
- `numchars`
Number of characters to include in the CAPTCHA image.
Default: `5`
- `effects`
List of effects to use to generate the CAPTCHA image.
Check [ecaptcha usage](https://github.com/seriyps/ecaptcha#usage)
for details.
Default: `[line, blur, filter, dots, reverse_dots]`
- `color`
This option defines the image's color. Valid values:
`black`, `red`, `orange`, `blue`, `pink` or `purple`.
Default: `black`
- `alphabet`
String containing all the characters that can be printed on the image
(duplicates are ok).
The default value includes: numbers, latin characters lower and upper case.
- `font`
String of one of the supported fonts.
Please notice that fonts are pre-rendered at NIF compile-time,
see the `deps/ecaptcha/c_src/fonts.h` and `FONTS` parameter in `deps/ecaptcha/c_src/Makefile`.
Default: `hplhs-oldstyle`
Example Configuration
---------------------
This example configuration setups CAPTCHA images that are simple to solve:
just 3 characters, only the vocals in lower and upper case.
It also setups `mod_register_web`, you can test the feature immediately
visiting `http://localhost:5280/register/`
```yaml
captcha_cmd: mod_ecaptcha
captcha_url: http://localhost:5280/captcha
listen:
-
port: 5280
module: ejabberd_http
request_handlers:
/captcha: ejabberd_captcha
/register: mod_register_web
modules:
mod_ecaptcha:
numchars: 3
effects: [line, dots]
color: red
alphabet: "aeiouAEIOU"
font: "hplhs-oldstyle"
```
Install in Container
--------------------
There are some additional steps to install this module in a containerized ejabberd.
For example, if using the container image available at GitHub Container Registry:
```
docker run --name ejabberd -it -p 5222:5222 -p 5280:5280 -p 5288:5288 ghcr.io/processone/ejabberd:23.01 live
```
Install the dependencies required to compile C code:
```
docker exec --user root ejabberd apk add git make g++ freetype-dev erlang-dev
```
It's a good idea to update specs and modules source code:
```
docker exec ejabberd ejabberdctl modules_update_specs
```
Install the module so it gets the Erlang dependencies,
then compile that dependency C code, and finally recompile it:
```
docker exec ejabberd ejabberdctl module_install mod_ecaptcha
docker exec ejabberd make -C .ejabberd-modules/sources/ejabberd-contrib/mod_ecaptcha/deps/ecaptcha/c_src
docker exec ejabberd ejabberdctl module_upgrade mod_ecaptcha
```
If using the Docker Hub Container, `ejabberdctl` is in a different path,
please use those commands instead:
```
docker exec ejabberd bin/ejabberdctl modules_update_specs
docker exec ejabberd bin/ejabberdctl module_install mod_ecaptcha
docker exec ejabberd make -C .ejabberd-modules/sources/ejabberd-contrib/mod_ecaptcha/deps/ecaptcha/c_src
docker exec ejabberd bin/ejabberdctl module_upgrade mod_ecaptcha
```