REST API selfhosted service
 
 
Go to file
acetone 27b7131450 updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
cpp-lib@6df0c4188b updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
systemd service typo 2022-04-24 12:34:33 -04:00
.gitignore Initial commit 2022-04-24 07:54:55 -04:00
.gitmodules module cpp-lib added 2022-04-24 08:04:38 -04:00
LICENSE Initial commit 2022-04-24 07:54:55 -04:00
README.md first readme 2022-04-24 11:58:59 -04:00
httpserver.cpp updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
httpserver.h updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
jsonanswer.cpp updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
jsonanswer.h updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
main.cpp updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
socketrunnable.cpp updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
socketrunnable.h updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00
zsc-daemon.pro updated to new generation of lib and simplify code base 2022-08-14 11:17:35 +03:00

README.md

ZSC API daemon

Zero Storage Captcha selfhosted REST API service

Compile

Qt5 and OpenSSL are required

sudo apt install git qt5-default libssl-dev
git clone --recursive https://github.com/ZeroStorageCaptcha/api-daemon.git zero-captcha-daemon
cd zero-captcha-daemon
qmake && make

Run

-a --address  Address to bind
-p --port     Port to bind (7697 by default)
-t --threads  Working threads (hardware value by default)

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?length= [>0] &difficulty= [0-5] &output= [base64|file] IF output=file: &filepath= [file system path]
    <- "token", IF output=base64: "png" (base64 encoded picture)
    
  2. Validate captcha

    -> /validate?answer= [user's answer] &token = [user's token]
    <- boolean "valid"
    
  3. Settings

    3.1 Tokens case sensitive to captcha answer:

     -> /settings?case_sensitive= [enable|disable]
    

    3.2 Only numbers mode:

    -> /settings?number_mode= [enable|disable]
    

Example

  1. Generate
    Client: /generate?length=4&difficulty=3&output=base64 
    Server: 
    {
      "png": "iVBORw0KGgoAAAANSU <...> AAAAAElFTkSuQmCC",
      "status": true,
      "token":" i2oefBw6mswaORIphgDcY7GwnS"
    }
    
  2. Validate
    Client: /validate?answer=iuda1&token=i2oefBw6mswaORIphgDcY7GwnS
    Server: 
    {
      "status": true,
      "valid": false
    }