api-daemon/README.md

100 lines
2.2 KiB
Markdown

# ZSC API daemon
Zero Storage Captcha selfhosted REST API service.
## Compile
Qt6 variant, **Debian 12**
```
sudo apt install git build-essential qt6-base-dev qmake6
git clone --recursive https://github.com/ZeroStorageCaptcha/api-daemon.git zero-captcha-daemon
cd zero-captcha-daemon
qmake6 && make
```
---
Qt5 variant, **Debian 11**
```
sudo apt install git build-essential qtdeclarative5-dev
git clone --recursive https://github.com/ZeroStorageCaptcha/api-daemon.git zero-captcha-daemon
cd zero-captcha-daemon
qmake && make
```
## Run
Argument list
```
-a --address Address to bind (127.0.0.1 by default)
-p --port Port to bind (7697 by default)
-t --threads Working threads (hardware value by default)
```
**Important note**: For running on non-gui system use "QT_QPA_PLATFORM=offscreen" in your environment.
For Linux systems with systemd check `systemd` folder which contains service file example.
## API
GET request, JSON response
**Each response contains a boolean "status" that indicates the logic success of the operation. If !status, read "message" field.**
1. Generate captcha
```
-> /generate
<- { "token": "CAPTCHA_TOKEN", "png": "BASE64_ENCODED_PICTURE" }
```
2. Validate captcha
```
-> /validate?answer=CAPTCHA_ANSWER&token=CAPTCHA_TOKEN
<- { "valid": true|false }
```
3. Settings
3.1 Tokens case sensitive to captcha answer (`disable` by default):
```
-> /settings?case_sensitive=enable|disable
```
3.2 Numbers only mode (`disable` by default):
```
-> /settings?number_mode=enable|disable
```
3.3 Difficulty (`1` by default):
```
-> /settings?difficulty=0|1|2
```
3.4 Text length (number greater than 0, `5` by default):
```
-> /settings?length=6
```
3.5 Cache capacity (`2048` by default, `0` for disable):
```
-> /settings?cache_capacity=4096
```
## Example
1. Generate
```
Client: /generate
Server:
{
"status": true,
"png": "iVBORw0KGgoAAAANSU <...> AAAAAElFTkSuQmCC",
"token":" i2oefBw6mswaORIphgDcY7GwnS_Aq"
}
```
2. Validate
```
Client: /validate?answer=iuda1&token=i2oefBw6mswaORIphgDcY7GwnS_Aq
Server:
{
"status": true,
"valid": false
}
```