100 lines
2.2 KiB
Markdown
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
|
|
}
|
|
```
|