Entwickler-Dokumentation

Eigenes Hosting und Installation

CDPCaptcha ist dafür gebaut, auf Ihrem eigenen Server zu laufen.
Voraussetzungen: PHP 8.2 oder neuer mit pdo_mysql, mbstring und openssl;
MariaDB 10.6 oder neuer;
nginx oder Apache mit HTTPS.

Installation

Shell
git clone <your copy of the repository> /var/www/captcha.example.com
sudo bash /var/www/captcha.example.com/connect/install/cdp-install.sh --base-url https://captcha.example.com

Der Installer legt die Datenbank und ihren Benutzer an, schreibt /etc/cdpcaptcha/.env (0640 root:www-data) mit erzeugten Geheimnissen, spielt die Migrationen ein und legt die System-Sitekeys an.
Geheimnisse gibt er nie aus.
Führen Sie ihn nach Updates erneut aus: Er spielt nur neue Migrationen ein.

Webserver

Richten Sie das Document Root auf den Ordner;
jede Anfrage, die keine Datei unter /core/assets ist, geht an index.php.

nginx
server {
    listen 443 ssl http2;
    server_name captcha.example.com;
    root /var/www/captcha.example.com;
    index index.php;

    location /core/assets/ { expires 7d; add_header Cache-Control "public"; }
    location ~ ^/(config|connect|controller|components|migrations|tests|sdk|\.git)/ { return 404; }
    location / { try_files $uri /index.php$is_args$args; }
    location = /index.php {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

.env-Schlüssel

SchlüsselStandardBedeutung
BASE_URLÖffentliche Adresse, verwendet in Mails und Einbau-Codes.
DIFFICULTY_DEFAULT4Stufe 1 bis 10 für Sitekeys ohne eigene Einstellung.
PUZZLE_TTL1800Sekunden, die Rätsel und Lösung gültig bleiben.
PUZZLE_COUNT8Teilrätsel je Rätsel.
RATE_WINDOW / RATE_STEPS / RATE_PUZZLES_MAX600 / 10,30,100,300 / 600Anpassbare Schwierigkeit und Obergrenze je Adresse.
MAIL_MODE / MAIL_FROMsendmailSystemmails über den lokalen Mailserver; „file“ schreibt Mails für Tests nach MAIL_DIR.
CONTACT_TOEmpfänger des Kontaktformulars.
PLAYGROUND10 blendet den Playground aus.

Kommandozeile

Shell
php connect/install/cdp-install.php migrate
php connect/install/cdp-install.php system-sites
php connect/install/cdp-install.php site:add "Contact form" "example.com" 4
php connect/install/cdp-install.php site:list
php connect/install/cdp-install.php key:add "Server A"

Wartung

Es gibt keine Cronjobs.
Abgelaufene Rätsel werden bei normalen API-Aufrufen entfernt.
Sichern Sie die Datenbank und die .env-Datei;
der HMAC-Schlüssel darin signiert jedes Rätsel, eine Änderung macht also gerade laufende Rätsel ungültig (sonst nichts).