2022-12-26 17:02:02 +01:00
|
|
|
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.
|
|
|
|
|
2023-01-25 16:33:17 +01:00
|
|
|
Installing this module in a containerized ejabberd requires
|
|
|
|
some additional steps, please read below.
|
|
|
|
|
2022-12-26 17:02:02 +01:00
|
|
|
|
|
|
|
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"
|
|
|
|
```
|
|
|
|
|
2023-01-25 16:33:17 +01:00
|
|
|
|
|
|
|
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
|
|
|
|
```
|