**Motivations:** - Ensure all application directories have systemd services enabled at boot - Complete service installation for api-relay, filigrane-api, and clamav-api - Fix dependencies and import issues preventing clamav-api from starting **Root causes:** - Three services (api-relay, filigrane-api, clamav-api) had service files but were not installed in systemd - api-clamav had incorrect node-clamav version (0.12.1) that doesn't exist - api-clamav dependencies were not installed (node_modules missing) - ES module import syntax incompatible with CommonJS node-clamav package **Correctifs:** - Installed api-relay.service, filigrane-api.service, and clamav-api.service in /etc/systemd/system/ - Enabled all three services for automatic startup at boot - Updated api-clamav/package.json: changed node-clamav version from ^0.12.1 to ^1.0.11 - Installed npm dependencies for api-clamav - Fixed ES module import in api-clamav/src/routes/scan.js to use CommonJS-compatible syntax **Evolutions:** - All 7 application services now have systemd services enabled at boot - Complete service coverage: anchorage-api, faucet-api, signet-dashboard, userwallet, api-relay, filigrane-api, clamav-api - All services verified active and listening on their respective ports **Pages affectées:** - api-clamav/package.json - api-clamav/src/routes/scan.js - api-clamav/node_modules/ (new) - api-clamav/package-lock.json (new) - /etc/systemd/system/api-relay.service (new) - /etc/systemd/system/filigrane-api.service (new) - /etc/systemd/system/clamav-api.service (new)
API ClamAV - Antivirus pour Certificator
API de scan antivirus utilisant ClamAV pour vérifier les fichiers avant traitement.
Port
Port fixe : 3023
Le port est défini de manière fixe dans le code et ne peut pas être modifié.
Domaine
- Production :
antivir.certificator.4nkweb.com
Installation
Prérequis
- ClamAV doit être installé et configuré sur le serveur
- Le daemon ClamAV (
clamd) doit être en cours d'exécution sur le port 3310 (par défaut)
Installation des dépendances
cd api-clamav
npm install
Configuration
Créer un fichier .env (optionnel) :
CLAMAV_HOST=localhost
CLAMAV_PORT=3310
CLAMAV_TIMEOUT=30000
LOG_LEVEL=info
NODE_ENV=production
Démarrage
Manuel
./start.sh
Service systemd
sudo cp clamav-api.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable clamav-api
sudo systemctl start clamav-api
Vérifier le statut :
sudo systemctl status clamav-api
API Endpoints
GET /health
Vérifie l'état de santé de l'API.
Réponse :
{
"ok": true,
"service": "clamav-api",
"version": "1.0.0",
"timestamp": "2026-01-24T12:00:00.000Z"
}
POST /api/scan/buffer
Scanne un buffer de données (base64) pour détecter les virus.
Body :
{
"data": "base64_encoded_data",
"filename": "document.pdf" // optionnel
}
Réponse (fichier propre) :
{
"clean": true,
"infected": false,
"viruses": [],
"filename": "document.pdf",
"size": 12345
}
Réponse (fichier infecté) :
{
"clean": false,
"infected": true,
"viruses": ["Trojan.Example"],
"filename": "document.pdf",
"size": 12345
}
Codes de statut :
200: Scan réussi (fichier propre ou infecté)400: Requête invalide503: Service ClamAV indisponible500: Erreur interne
Intégration
Cette API est utilisée par :
api-filigrane: Scan des fichiers avant traitementapi-anchorage: (si nécessaire dans le futur)
Mode dégradé
Si ClamAV n'est pas disponible, l'API retourne une erreur 503. Les services qui utilisent cette API peuvent choisir de continuer en mode dégradé (comme api-filigrane) ou de rejeter la requête.
Sécurité
- Le service systemd utilise
NoNewPrivileges=trueetPrivateTmp=true - Les fichiers sont scannés en mémoire (pas de fichiers temporaires sur disque)
- Limite de taille : 100MB par défaut
Logs
Les logs sont envoyés vers journald via le service systemd :
sudo journalctl -u clamav-api -f
Auteur
Équipe 4NK